48 |
48 |
private Button btnSelectAllChildren;
|
49 |
49 |
private Button btnSelectDirectChildren;
|
50 |
50 |
|
|
51 |
private boolean allowTopLevelSelection = false;
|
|
52 |
|
51 |
53 |
public CheckBoxTreeComposite(Composite parent, ITreeContentProvider contentProvider, IBaseLabelProvider labelProvider, int style) {
|
52 |
54 |
super(parent, style);
|
53 |
55 |
GridLayout layout = new GridLayout();
|
... | ... | |
92 |
94 |
tree.addListener(SWT.Selection, event -> {
|
93 |
95 |
if (event.detail == SWT.CHECK) {
|
94 |
96 |
TreeItem item = (TreeItem) event.item;
|
|
97 |
if(!allowTopLevelSelection && item.getParentItem()==null){
|
|
98 |
// top level selection not allowed
|
|
99 |
item.setChecked(false);
|
|
100 |
return;
|
|
101 |
}
|
95 |
102 |
updateItem(item);
|
96 |
103 |
}
|
97 |
104 |
});
|
... | ... | |
154 |
161 |
return viewer;
|
155 |
162 |
}
|
156 |
163 |
|
|
164 |
public void setAllowTopLevelSelection(boolean allowTopLevelSelection) {
|
|
165 |
this.allowTopLevelSelection = allowTopLevelSelection;
|
|
166 |
}
|
|
167 |
|
157 |
168 |
/**
|
158 |
169 |
* Checks the tree items corresponding to the given elements.<br>
|
159 |
170 |
* @param elements
|
... | ... | |
194 |
205 |
}
|
195 |
206 |
else if(e.widget == btnSelectAllChildren){
|
196 |
207 |
Widget item = viewer.testFindItem(firstElement);
|
197 |
|
boolean checked = false;
|
198 |
|
Object[] checkedElements = viewer.getCheckedElements();
|
199 |
|
for (Object checkedElement : checkedElements) {
|
200 |
|
if(checkedElement.equals(firstElement)){
|
201 |
|
checked = true;
|
202 |
|
break;
|
203 |
|
}
|
204 |
|
}
|
205 |
208 |
if(item instanceof TreeItem){
|
206 |
209 |
viewer.expandToLevel(firstElement, AbstractTreeViewer.ALL_LEVELS);
|
207 |
|
viewer.setSubtreeChecked(firstElement, !checked);
|
|
210 |
viewer.setSubtreeChecked(firstElement, !((TreeItem) item).getFont().equals(FONT_BOLD));
|
208 |
211 |
TreeItem parent = getRoot((TreeItem) item);
|
209 |
212 |
updateItem(parent);
|
|
213 |
((TreeItem) item).setChecked(false);
|
210 |
214 |
}
|
211 |
215 |
}
|
212 |
216 |
}
|
ref #7912 Add flag to allow selection of top level nodes