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=54dac5debb27cc585200b3117b99f3de0015efef;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(); }