X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2Fwidgets%2FSwtTabularPart.java;fp=eclipse%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2Fwidgets%2FSwtTabularPart.java;h=2f10cac75ef0765b94fe19f22f87247c2250b554;hb=43dc6cd030cab486347ffef4d339406bee7a8dec;hp=8fd4065ad92bce617dbcd2f195da80ddf6a49320;hpb=54dac5debb27cc585200b3117b99f3de0015efef;p=lgpl%2Fargeo-commons.git diff --git a/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTabularPart.java b/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTabularPart.java index 8fd4065ad..2f10cac75 100644 --- a/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTabularPart.java +++ b/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTabularPart.java @@ -1,7 +1,5 @@ package org.argeo.cms.swt.widgets; -import java.util.function.Consumer; - import org.argeo.api.cms.ux.CmsIcon; import org.argeo.cms.swt.CmsSwtTheme; import org.argeo.cms.swt.CmsSwtUtils; @@ -9,7 +7,6 @@ import org.argeo.cms.ux.widgets.Column; import org.argeo.cms.ux.widgets.TabularPart; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; @@ -17,22 +14,22 @@ import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; /** {@link TabularPart} implementation based on a {@link Table}. */ -public class SwtTabularPart implements TabularPart { - private Composite area; - +public class SwtTabularPart extends AbstractSwtPart { + private static final long serialVersionUID = -1114155772446357750L; private final Table table; - - private Consumer onSelected; - private Consumer onAction; + private TabularPart tabularPart; private CmsSwtTheme theme; - public SwtTabularPart(Composite parent, int style) { + public SwtTabularPart(Composite parent, int style, TabularPart tabularPart) { + super(parent, style, tabularPart); theme = CmsSwtUtils.getCmsTheme(parent); - area = new Composite(parent, style); - area.setLayout(CmsSwtUtils.noSpaceGridLayout()); - table = new Table(area, SWT.VIRTUAL | SWT.BORDER); + + table = new Table(this, SWT.VIRTUAL | SWT.BORDER); table.setLinesVisible(true); + table.setLayoutData(CmsSwtUtils.fillAll()); + + this.tabularPart = tabularPart; } @Override @@ -43,50 +40,29 @@ public class SwtTabularPart implements TabularPart { TableItem item = (TableItem) event.item; refreshItem(item); }); - table.setItemCount(getItemCount()); + table.setItemCount(tabularPart.getItemCount()); + for (int i = 0; i < tabularPart.getColumnCount(); i++) { + TableColumn swtColumn = new TableColumn(table, SWT.NONE); + swtColumn.setWidth(tabularPart.getColumn(i).getWidth()); + } CmsSwtUtils.fill(table); - table.addSelectionListener(new SelectionListener() { - private static final long serialVersionUID = -5225905921522775948L; - - @Override - public void widgetSelected(SelectionEvent e) { - if (onSelected != null) - onSelected.accept(getDataFromEvent(e)); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - if (onAction != null) - onAction.accept(getDataFromEvent(e)); - } - }); + table.addSelectionListener(selectionListener); } protected Object getDataFromEvent(SelectionEvent e) { Object data = e.item.getData(); if (data == null) - data = getData(getTable().indexOf((TableItem) e.item)); + data = tabularPart.getData(getTable().indexOf((TableItem) e.item)); return data; } - @Override - public void setInput(Object data) { - area.setData(data); - refresh(); - } - - @Override - public Object getInput() { - return area.getData(); - } - protected void refreshItem(TableItem item) { int row = getTable().indexOf(item); - for (int i = 0; i < item.getParent().getColumnCount(); i++) { - Column column = (Column) item.getParent().getColumn(i).getData(); - Object data = getData(row); + for (int i = 0; i < tabularPart.getColumnCount(); i++) { + Column column = tabularPart.getColumn(i); + T data = tabularPart.getData(row); item.setData(data); String text = data != null ? column.getText(data) : ""; if (text != null) @@ -99,36 +75,8 @@ public class SwtTabularPart implements TabularPart { } } - protected int getItemCount() { - return 0; - } - - protected Object getData(int row) { - return null; - } - protected Table getTable() { return table; } - public void onSelected(Consumer onSelected) { - this.onSelected = onSelected; - } - - public void onAction(Consumer onAction) { - this.onAction = onAction; - } - - @Override - public void addColumn(Column column) { - TableColumn swtColumn = new TableColumn(table, SWT.NONE); - swtColumn.setWidth(column.getWidth()); - swtColumn.setData(column); - - } - - public Composite getArea() { - return area; - } - }