我正在使用CheckedTreeSelectionDialog来实现某种重构。重构是在一大组对象上执行的,因此选择树的每个根节点都是一个对象,并且每个对象都有一个建议的修改作为子节点。例如,
CheckedTreeSelectionDialog:
ObjectA
---------- Remove attribute attA1
---------- Remove attribute attA2
Object B
---------- Remove attribute attB1
.
.
.
我以这种方式获得所选元素:
Object[] result = dialog.getResult();
并且,如果我选择之前显示的所有5个元素,我将获得列表:
ObjectA
attA1
attA2
ObjectB
attB1
我想我会得到某种树,例如,在那里我可以获得对象“ObjectA”并查看其中哪些子被选中。
我这样做了吗?
谢谢!
答案 0 :(得分:3)
或者,您可以获取树查看器,然后从中获取已选中的元素。
Map<Object, List<Object>> mapOfCheckedElements = new HashMap<Object, List<Object>>();
for (TreeItem level1 : checkBoxTreeViewer.getTree().getItems()) {
if (level1.getChecked()) {
List<Object> checkedChildren = new ArrayList<Object>();
for (TreeItem level2 : level1.getItems()) {
if (level2.getChecked()) {
checkedChildren.add(level2);
}
}
mapOfCheckedElements.put(level1, checkedChildren);
}
}