1 package org
.argeo
.cms
.swt
.widgets
;
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
.SWT
;
7 import org
.eclipse
.swt
.events
.SelectionEvent
;
8 import org
.eclipse
.swt
.events
.SelectionListener
;
9 import org
.eclipse
.swt
.widgets
.Composite
;
11 /** Base class for {@link DataView}s based on an SWT {@link Composite}. */
12 public abstract class AbstractSwtView
<INPUT
, TYPE
> extends Composite
implements DataView
<INPUT
, TYPE
> {
13 private static final long serialVersionUID
= -1999179054267812170L;
15 protected DataPart
<INPUT
, TYPE
> dataPart
;
17 protected final SelectionListener selectionListener
;
19 @SuppressWarnings("unchecked")
20 public AbstractSwtView(Composite parent
, DataPart
<INPUT
, TYPE
> dataPart
) {
21 super(parent
, SWT
.NONE
);
22 setLayout(CmsSwtUtils
.noSpaceGridLayout());
24 this.dataPart
= dataPart
;
26 selectionListener
= new SelectionListener() {
28 private static final long serialVersionUID
= 4334785560035009330L;
31 public void widgetSelected(SelectionEvent e
) {
32 if (dataPart
.getOnSelected() != null)
33 dataPart
.getOnSelected().accept((TYPE
) e
.item
.getData());
37 public void widgetDefaultSelected(SelectionEvent e
) {
38 if (dataPart
.getOnAction() != null)
39 dataPart
.getOnAction().accept((TYPE
) e
.item
.getData());
43 dataPart
.addView(this);
44 addDisposeListener((e
) -> dataPart
.removeView(this));
47 public abstract void refresh();