/
CustomComboCellEditPart.java
187 lines (154 loc) · 5.5 KB
/
CustomComboCellEditPart.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package com.xored.q7.quality.mockups.swt.table;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.resource.FontRegistry;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.ICellEditorListener;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.FontData;
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.SampleTreeContentProvider;
import com.xored.q7.quality.mockups.issues.internal.SampleTreeNode;
import com.xored.quality.mockups.jface.celleditors.GCheckboxCellEditor;
import com.xored.quality.mockups.jface.celleditors.GComboBoxCellEditor;
public class CustomComboCellEditPart extends BaseMockupPart {
FontRegistry reg = new FontRegistry();
public String getLabel() {
return "Dialog CellEdit Table Test";
}
public Control construct(Composite section) {
GridLayoutFactory.swtDefaults().numColumns(1).applyTo(section);
final TableViewer viewer = new TableViewer(section, SWT.MULTI
| SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
GridDataFactory.fillDefaults().grab(true, true)
.applyTo(viewer.getControl());
createCol1(viewer);
createCol2(viewer);
createCol3(viewer);
final int colCount = viewer.getTable().getColumnCount();
for (int i = colCount; i <= 10; ++i) {
TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
column.setLabelProvider(new ColumnLabelProvider() {
public String getText(Object element) {
return "";
}
});
column.getColumn().setText("column" + i);
column.getColumn().setWidth(100);
}
addMouseListener(viewer, colCount);
reg.put("sans", new FontData[] { new FontData("sans", 26, 0) });
// viewer.getTree().setFont(reg.get("sans"));
viewer.getTable().setHeaderVisible(true);
viewer.setInput(SampleTreeNode.createSample());
return viewer.getControl();
}
protected void addMouseListener(final TableViewer viewer, final int colCount) {
}
private void createCol2(final TableViewer viewer) {
TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE);
col2.getColumn().setText("column2");
col2.setEditingSupport(new EditingSupport(viewer) {
protected void setValue(Object element, Object value) {
if (value instanceof String) {
((SampleTreeNode) element).column2 = (String) value;
}
else if( value instanceof Integer) {
((SampleTreeNode) element).column2 = "" + (Integer) value;
}
viewer.update(element, null);
}
protected Object getValue(Object element) {
return ((SampleTreeNode) element).column2;
}
protected CellEditor getCellEditor(final Object element) {
final GComboBoxCellEditor editor = new GComboBoxCellEditor(
viewer.getTable(), new String[] { "One", "Two", "Tree" }, SWT.SIMPLE | SWT.DROP_DOWN);
editor.addListener(new ICellEditorListener() {
public void editorValueChanged(boolean oldValidState,
boolean newValidState) {
}
public void cancelEditor() {
}
public void applyEditorValue() {
if (!editor.isDirty()) {
setValue(element, editor.getValue());
editor.deactivate();
}
}
});
return editor;
}
protected boolean canEdit(Object element) {
return true;
}
});
col2.setLabelProvider(new ColumnLabelProvider() {
public String getText(Object element) {
return ((SampleTreeNode) element).column2;
}
});
col2.getColumn().setWidth(300);
}
private void createCol1(final TableViewer viewer) {
viewer.setContentProvider(new SampleTreeContentProvider());
TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE);
col1.setLabelProvider(new ColumnLabelProvider() {
public String getText(Object element) {
return ((SampleTreeNode) element).column1;
}
});
col1.getColumn().setText("column1");
col1.getColumn().setWidth(200);
}
private void createCol3(final TableViewer viewer) {
viewer.setContentProvider(new SampleTreeContentProvider());
TableViewerColumn col = new TableViewerColumn(viewer, SWT.NONE);
col.setLabelProvider(new ColumnLabelProvider() {
public String getText(Object element) {
return ((SampleTreeNode) element).column3;
}
});
col.getColumn().setText("column3");
col.getColumn().setWidth(100);
col.setEditingSupport(new EditingSupport(viewer) {
@Override
protected void setValue(Object element, Object value) {
((SampleTreeNode) element).column3 = (String) value;
viewer.update(element, null);
}
@Override
protected Object getValue(Object element) {
return ((SampleTreeNode) element).column3;
}
@Override
protected CellEditor getCellEditor(final Object element) {
final GCheckboxCellEditor editor = new GCheckboxCellEditor(viewer.getTable(),
((SampleTreeNode) element).column3);
editor.addListener(new ICellEditorListener() {
@Override
public void editorValueChanged(boolean oldValidState, boolean newValidState) {
}
@Override
public void cancelEditor() {
}
@Override
public void applyEditorValue() {
setValue(element, editor.getValue());
}
});
return editor;
}
@Override
protected boolean canEdit(Object element) {
return true;
}
});
}
}