]> git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtPart.java
Refactor SWT UX.
[lgpl/argeo-commons.git] / eclipse / org.argeo.cms.swt / src / org / argeo / cms / swt / widgets / AbstractSwtPart.java
1 package org.argeo.cms.swt.widgets;
2
3 import org.argeo.cms.swt.CmsSwtUtils;
4 import org.argeo.cms.ux.widgets.DataPart;
5 import org.argeo.cms.ux.widgets.DataView;
6 import org.eclipse.swt.events.SelectionEvent;
7 import org.eclipse.swt.events.SelectionListener;
8 import org.eclipse.swt.widgets.Composite;
9
10 public abstract class AbstractSwtPart<INPUT, TYPE> extends Composite implements DataView<INPUT, TYPE> {
11 private static final long serialVersionUID = -1999179054267812170L;
12
13 protected DataPart<INPUT, TYPE> dataPart;
14
15 protected final SelectionListener selectionListener;
16
17 public AbstractSwtPart(Composite parent, int style, DataPart<INPUT, TYPE> dataPart) {
18 super(parent, style);
19 setLayout(CmsSwtUtils.noSpaceGridLayout());
20
21 this.dataPart = dataPart;
22
23 selectionListener = new SelectionListener() {
24
25 private static final long serialVersionUID = 4334785560035009330L;
26
27 @Override
28 public void widgetSelected(SelectionEvent e) {
29 if (dataPart.getOnSelected() != null)
30 dataPart.getOnSelected().accept((TYPE) e.item.getData());
31 }
32
33 @Override
34 public void widgetDefaultSelected(SelectionEvent e) {
35 if (dataPart.getOnAction() != null)
36 dataPart.getOnAction().accept((TYPE) e.item.getData());
37 }
38 };
39
40 dataPart.addView(this);
41 addDisposeListener((e) -> dataPart.removeView(this));
42 }
43
44 public abstract void refresh();
45 }