X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2Fwidgets%2FAbstractSwtPart.java;h=c3d11a181124774d66b63bc1912d9a833a2fb9d1;hb=43dc6cd030cab486347ffef4d339406bee7a8dec;hp=e846bb54e13db47886e04f34ac460590157b6d41;hpb=e168383bac50637131fef8c41e119db7eb2284a7;p=lgpl%2Fargeo-commons.git
diff --git a/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtPart.java b/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtPart.java
index e846bb54e..c3d11a181 100644
--- a/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtPart.java
+++ b/eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtPart.java
@@ -1,14 +1,45 @@
package org.argeo.cms.swt.widgets;
import org.argeo.cms.swt.CmsSwtUtils;
+import org.argeo.cms.ux.widgets.DataPart;
+import org.argeo.cms.ux.widgets.DataView;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Composite;
-public abstract class AbstractSwtPart {
- protected final Composite area;
+public abstract class AbstractSwtPart extends Composite implements DataView {
+ private static final long serialVersionUID = -1999179054267812170L;
- public AbstractSwtPart(Composite parent, int style) {
- area = new Composite(parent, style);
- area.setLayout(CmsSwtUtils.noSpaceGridLayout());
+ protected DataPart dataPart;
+
+ protected final SelectionListener selectionListener;
+
+ public AbstractSwtPart(Composite parent, int style, DataPart dataPart) {
+ super(parent, style);
+ setLayout(CmsSwtUtils.noSpaceGridLayout());
+
+ this.dataPart = dataPart;
+
+ selectionListener = new SelectionListener() {
+
+ private static final long serialVersionUID = 4334785560035009330L;
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if (dataPart.getOnSelected() != null)
+ dataPart.getOnSelected().accept((TYPE) e.item.getData());
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ if (dataPart.getOnAction() != null)
+ dataPart.getOnAction().accept((TYPE) e.item.getData());
+ }
+ };
+
+ dataPart.addView(this);
+ addDisposeListener((e) -> dataPart.removeView(this));
}
+ public abstract void refresh();
}