X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=inline;f=eclipse%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2Fwidgets%2FSwtTabularPart.java;h=8fd4065ad92bce617dbcd2f195da80ddf6a49320;hb=55d1a78150b6be0004f6bcb28703bcdd6daf55a1;hp=9872551be31546742f86287f520442915c53f43f;hpb=5c9bae758b5bb13ff3b046ad680886ae540865e8;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 9872551be..8fd4065ad 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 @@ -2,12 +2,15 @@ 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; 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; import org.eclipse.swt.widgets.TableColumn; @@ -22,7 +25,10 @@ public class SwtTabularPart implements TabularPart { private Consumer onSelected; private Consumer onAction; + private CmsSwtTheme theme; + public SwtTabularPart(Composite parent, int style) { + theme = CmsSwtUtils.getCmsTheme(parent); area = new Composite(parent, style); area.setLayout(CmsSwtUtils.noSpaceGridLayout()); table = new Table(area, SWT.VIRTUAL | SWT.BORDER); @@ -46,18 +52,25 @@ public class SwtTabularPart implements TabularPart { @Override public void widgetSelected(SelectionEvent e) { if (onSelected != null) - onSelected.accept(e.item.getData()); + onSelected.accept(getDataFromEvent(e)); } @Override public void widgetDefaultSelected(SelectionEvent e) { if (onAction != null) - onAction.accept(e.item.getData()); + onAction.accept(getDataFromEvent(e)); } }); } + protected Object getDataFromEvent(SelectionEvent e) { + Object data = e.item.getData(); + if (data == null) + data = getData(getTable().indexOf((TableItem) e.item)); + return data; + } + @Override public void setInput(Object data) { area.setData(data); @@ -74,8 +87,15 @@ public class SwtTabularPart implements TabularPart { for (int i = 0; i < item.getParent().getColumnCount(); i++) { Column column = (Column) item.getParent().getColumn(i).getData(); Object data = getData(row); + item.setData(data); String text = data != null ? column.getText(data) : ""; - item.setText(i, text); + if (text != null) + item.setText(i, text); + CmsIcon icon = column.getIcon(data); + if (icon != null) { + Image image = theme.getSmallIcon(icon); + item.setImage(i, image); + } } }