]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTabularPart.java
1 package org
.argeo
.cms
.swt
.widgets
;
3 import java
.util
.function
.Consumer
;
5 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
6 import org
.argeo
.cms
.ux
.widgets
.TabularPart
;
7 import org
.eclipse
.swt
.SWT
;
8 import org
.eclipse
.swt
.events
.SelectionEvent
;
9 import org
.eclipse
.swt
.events
.SelectionListener
;
10 import org
.eclipse
.swt
.widgets
.Composite
;
11 import org
.eclipse
.swt
.widgets
.Table
;
12 import org
.eclipse
.swt
.widgets
.TableItem
;
14 /** {@link TabularPart} implementation based on a {@link Table}. */
15 public class SwtTabularPart
implements TabularPart
{
16 private Composite area
;
18 private final Table table
;
20 private Consumer
<Object
> onSelected
;
21 private Consumer
<Object
> onAction
;
23 public SwtTabularPart(Composite parent
, int style
) {
24 area
= new Composite(parent
, style
);
25 area
.setLayout(CmsSwtUtils
.noSpaceGridLayout());
26 table
= new Table(area
, SWT
.VIRTUAL
| SWT
.BORDER
);
30 public void refresh() {
33 table
.addListener(SWT
.SetData
, event
-> {
34 TableItem item
= (TableItem
) event
.item
;
37 table
.setItemCount(getItemCount());
38 CmsSwtUtils
.fill(table
);
40 table
.addSelectionListener(new SelectionListener() {
41 private static final long serialVersionUID
= -5225905921522775948L;
44 public void widgetSelected(SelectionEvent e
) {
45 if (onSelected
!= null)
46 onSelected
.accept(e
.item
.getData());
50 public void widgetDefaultSelected(SelectionEvent e
) {
52 onAction
.accept(e
.item
.getData());
59 public void setInput(Object data
) {
65 public Object
getInput() {
66 return area
.getData();
69 protected void refreshItem(TableItem item
) {
73 protected int getItemCount() {
77 protected Table
getTable() {
81 public void onSelected(Consumer
<Object
> onSelected
) {
82 this.onSelected
= onSelected
;
85 public void onAction(Consumer
<Object
> onAction
) {
86 this.onAction
= onAction
;