CheckboxTreeViewer 在不同分支中具有相同元素的多个实例

CheckboxTreeViewer with multiple instances of same element in different branches

我有一个 CheckboxTreeViewer,在不同的分支中有多个相同元素的实例。我的问题是在不同分支中实现 setSubtreeChecked 元素时,如果它们在不同分支中的相同元素下,则会被检查。结构如下:

-Parent1
    -MidLevel1
        -BottomLevel1
        -BottomLevel2
    -MidLevel2
        -BottomLevel1
        -BottomLevel2
- Parent2
     -MidLevel1
        -BottomLevel1
        -BottomLevel2
    -MidLevel2
        -BottomLevel1
        -BottomLevel2

因此检查Parent2 下的元素MidLevel1 将检查Parent1 下MidLevel1 下的所有元素。

同样在这种结构下,当使用 setChecked(element, false) 取消选中树中的所有内容时,当使用 getCheckedElements 获取元素时,并非每个元素都被取消选中。

您必须让您的内容提供者return编辑的对象看起来与树查看器不同。

您可以通过让您的内容提供者 return 为树中的每个对象设置一些唯一的对象(而不是为树的多个分支使用相同的对象)来做到这一点。

或者,您可以使用实现 IElementComparer 的 class 调用查看器 setComparer 方法。这让您可以提供

boolean equals(Object a, Object b);

int hashCode(Object element);

区分树中对象的方法。在这种情况下,这可能更难使用。