]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - eclipse/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTabularPart.java
9872551be31546742f86287f520442915c53f43f
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
.Column
;
7 import org
.argeo
.cms
.ux
.widgets
.TabularPart
;
8 import org
.eclipse
.swt
.SWT
;
9 import org
.eclipse
.swt
.events
.SelectionEvent
;
10 import org
.eclipse
.swt
.events
.SelectionListener
;
11 import org
.eclipse
.swt
.widgets
.Composite
;
12 import org
.eclipse
.swt
.widgets
.Table
;
13 import org
.eclipse
.swt
.widgets
.TableColumn
;
14 import org
.eclipse
.swt
.widgets
.TableItem
;
16 /** {@link TabularPart} implementation based on a {@link Table}. */
17 public class SwtTabularPart
implements TabularPart
{
18 private Composite area
;
20 private final Table table
;
22 private Consumer
<Object
> onSelected
;
23 private Consumer
<Object
> onAction
;
25 public SwtTabularPart(Composite parent
, int style
) {
26 area
= new Composite(parent
, style
);
27 area
.setLayout(CmsSwtUtils
.noSpaceGridLayout());
28 table
= new Table(area
, SWT
.VIRTUAL
| SWT
.BORDER
);
29 table
.setLinesVisible(true);
33 public void refresh() {
36 table
.addListener(SWT
.SetData
, event
-> {
37 TableItem item
= (TableItem
) event
.item
;
40 table
.setItemCount(getItemCount());
41 CmsSwtUtils
.fill(table
);
43 table
.addSelectionListener(new SelectionListener() {
44 private static final long serialVersionUID
= -5225905921522775948L;
47 public void widgetSelected(SelectionEvent e
) {
48 if (onSelected
!= null)
49 onSelected
.accept(e
.item
.getData());
53 public void widgetDefaultSelected(SelectionEvent e
) {
55 onAction
.accept(e
.item
.getData());
62 public void setInput(Object data
) {
68 public Object
getInput() {
69 return area
.getData();
72 protected void refreshItem(TableItem item
) {
73 int row
= getTable().indexOf(item
);
74 for (int i
= 0; i
< item
.getParent().getColumnCount(); i
++) {
75 Column
<Object
> column
= (Column
<Object
>) item
.getParent().getColumn(i
).getData();
76 Object data
= getData(row
);
77 String text
= data
!= null ? column
.getText(data
) : "";
78 item
.setText(i
, text
);
82 protected int getItemCount() {
86 protected Object
getData(int row
) {
90 protected Table
getTable() {
94 public void onSelected(Consumer
<Object
> onSelected
) {
95 this.onSelected
= onSelected
;
98 public void onAction(Consumer
<Object
> onAction
) {
99 this.onAction
= onAction
;
103 public void addColumn(Column
<?
> column
) {
104 TableColumn swtColumn
= new TableColumn(table
, SWT
.NONE
);
105 swtColumn
.setWidth(column
.getWidth());
106 swtColumn
.setData(column
);
110 public Composite
getArea() {