]> git.argeo.org Git - lgpl/argeo-commons.git/blob - swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java
Extract log method from asynchronous publisher
[lgpl/argeo-commons.git] / swt / org.argeo.cms.swt / src / org / argeo / cms / swt / widgets / AbstractSwtView.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.SWT;
7 import org.eclipse.swt.events.SelectionEvent;
8 import org.eclipse.swt.events.SelectionListener;
9 import org.eclipse.swt.widgets.Composite;
10
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;
14
15 protected DataPart<INPUT, TYPE> dataPart;
16
17 protected final SelectionListener selectionListener;
18
19 @SuppressWarnings("unchecked")
20 public AbstractSwtView(Composite parent, DataPart<INPUT, TYPE> dataPart) {
21 super(parent, SWT.NONE);
22 setLayout(CmsSwtUtils.noSpaceGridLayout());
23
24 this.dataPart = dataPart;
25
26 selectionListener = new SelectionListener() {
27
28 private static final long serialVersionUID = 4334785560035009330L;
29
30 @Override
31 public void widgetSelected(SelectionEvent e) {
32 if (dataPart.getOnSelected() != null)
33 dataPart.getOnSelected().accept((TYPE) e.item.getData());
34 }
35
36 @Override
37 public void widgetDefaultSelected(SelectionEvent e) {
38 if (dataPart.getOnAction() != null)
39 dataPart.getOnAction().accept((TYPE) e.item.getData());
40 }
41 };
42
43 dataPart.addView(this);
44 addDisposeListener((e) -> dataPart.removeView(this));
45 }
46
47 public abstract void refresh();
48 }