Java Eclipse Properties查看“显示高级属性”的实现

时间:2016-03-23 13:25:22

标签: java eclipse view properties

我有一个带有Object的TreeViewer,我希望在Eclipse中的默认PropertiesView中显示信息。 我创建了一个AdapterFactory,它使用覆盖方法实现IAdapterFactory接口:

@Override
public Object getAdapter(Object adaptableObject, Class adapterType)
{
    if(adapterType == IPropertySource.class && adaptableObject instanceof UATreeNode)
    {
        return new UATreeNodeAdapter((UATreeNode) adaptableObject);
    }
    return null;
}

然后我创建了一个适配器,用我自己的IPropertySource实现PropertyDescriptors接口,例如:

public static final String OBJECT_ID_ACCESSLEVEL = "Obj.accessLevel";
private static final String OBJECT_LABEL_ACCESSLEVEL = "AccessLevel";

protected PropertyDescriptor objectAccessLevelDescriptor = new PropertyDescriptor(OBJECT_ID_ACCESSLEVEL, OBJECT_LABEL_ACCESSLEVEL);

@Override
public IPropertyDescriptor[] getPropertyDescriptors()
{
    return new IPropertyDescriptor[] { objectAccessLevelDescriptor };
}

@Override
public Object getPropertyValue(Object id)
{
    if(id.equals(OBJECT_ID_ACCESSLEVEL))
        return uaTreeNode.getAccessLevel();
}

我获得了更多PropertyDescriptors,现在我只想在PropertiesView中的“显示高级属性”菜单按钮被激活时显示其中一些。

所以我的问题是,这是否可行,如果是这样的话,只有在激活“显示高级属性”时我才能实现显示我的属性?

1 个答案:

答案 0 :(得分:0)

调用PropertyDescriptor.setFilterFlags方法设置专家过滤器属性:

PropertyDescriptor desc = ...

desc.setFilterFlags(new String [] {IPropertySheetEntry.FILTER_ID_EXPERT});