-
Notifications
You must be signed in to change notification settings - Fork 4
/
QS2531_TableWithCheckboxColumn.java
136 lines (109 loc) · 3.9 KB
/
QS2531_TableWithCheckboxColumn.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.xored.q7.quality.mockups.issues.parts;
import static org.eclipse.swt.SWT.FILL;
import static org.eclipse.swt.SWT.NONE;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CellLabelProvider;
import org.eclipse.jface.viewers.CheckboxCellEditor;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import com.xored.q7.quality.mockups.issues.BaseMockupPart;
import com.xored.q7.quality.mockups.issues.internal.QualityIssuesPlugin;
public class QS2531_TableWithCheckboxColumn extends BaseMockupPart {
public QS2531_TableWithCheckboxColumn() {
}
@Override
public Control construct(Composite parent) {
checked = QualityIssuesPlugin.getImageDescriptor("icons/checked.gif")
.createImage();
unchecked = QualityIssuesPlugin.getImageDescriptor(
"icons/unchecked.gif").createImage();
Composite content = new Composite(parent, NONE);
GridDataFactory.swtDefaults().grab(true, true).align(FILL, FILL)
.applyTo(content);
GridLayoutFactory.swtDefaults().numColumns(1).applyTo(content);
TableViewer viewer = new TableViewer(content);
viewer.setContentProvider(new ArrayContentProvider());
GridDataFactory.swtDefaults().grab(true, true).align(FILL, FILL)
.applyTo(viewer.getTable());
TableViewerColumn column1 = new TableViewerColumn(viewer, NONE);
column1.getColumn().setText("Enabled");
column1.getColumn().setWidth(100);
column1.setLabelProvider(new QS2531LabelProvider(0));
column1.setEditingSupport(new QS2531EditingSupport(viewer));
TableViewerColumn column2 = new TableViewerColumn(viewer, NONE);
column2.getColumn().setText("Name");
column2.getColumn().setWidth(500);
column2.setLabelProvider(new QS2531LabelProvider(1));
viewer.getTable().setHeaderVisible(true);
viewer.setInput(data);
content.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
checked.dispose();
unchecked.dispose();
}
});
return content;
}
private Image checked = null;
private Image unchecked = null;
private static final Object[][] data = { { true, "Row1" },
{ false, "Row2" } };
private class QS2531EditingSupport extends EditingSupport {
private ColumnViewer viewer;
public QS2531EditingSupport(ColumnViewer viewer) {
super(viewer);
this.viewer = viewer;
}
@Override
protected CellEditor getCellEditor(Object element) {
return new CheckboxCellEditor();
}
@Override
protected boolean canEdit(Object element) {
return true;
}
@Override
protected Object getValue(Object element) {
return ((Object[]) element)[0];
}
@Override
protected void setValue(Object element, Object value) {
((Object[]) element)[0] = value;
viewer.update(element, null);
}
}
private class QS2531LabelProvider extends CellLabelProvider {
public QS2531LabelProvider(int column) {
this.column = column;
}
private int column;
private Object value(Object input) {
return ((Object[]) input)[column];
}
private Image getImage(Object element) {
Object val = value(element);
return val instanceof Boolean ? (Boolean) val ? checked : unchecked
: null;
}
private String getText(Object element) {
Object val = value(element);
return val instanceof Boolean ? "" : val.toString();
}
@Override
public void update(ViewerCell cell) {
cell.setText(getText(cell.getElement()));
cell.setImage(getImage(cell.getElement()));
}
}
}