建议从CheckedTreeSelectionDialog中获取所选元素

时间:2012-02-22 15:25:21

标签: java eclipse-plugin

我正在使用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”并查看其中哪些子被选中。

我这样做了吗?

谢谢!

1 个答案:

答案 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);
        }
    }