X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2Fwidgets%2FAbstractSwtView.java;fp=swt%2Forg.argeo.cms.swt%2Fsrc%2Forg%2Fargeo%2Fcms%2Fswt%2Fwidgets%2FAbstractSwtView.java;h=efdc45a8a3b41b43b3f1504e563d24ab7ee604b5;hb=fd46e1f55b8aa95e6218dabf84315adcc9c4957f;hp=0000000000000000000000000000000000000000;hpb=abdb7ad6f6275a90b407062578892b1f088fa9bd;p=lgpl%2Fargeo-commons.git diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java new file mode 100644 index 000000000..efdc45a8a --- /dev/null +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java @@ -0,0 +1,47 @@ +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; + +/** Base class for {@link DataView}s based on an SWT {@link Composite}. */ +public abstract class AbstractSwtView extends Composite implements DataView { + private static final long serialVersionUID = -1999179054267812170L; + + protected DataPart dataPart; + + protected final SelectionListener selectionListener; + + @SuppressWarnings("unchecked") + public AbstractSwtView(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(); +}