我有一个带有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
中的“显示高级属性”菜单按钮被激活时显示其中一些。
所以我的问题是,这是否可行,如果是这样的话,只有在激活“显示高级属性”时我才能实现显示我的属性?
答案 0 :(得分:0)
调用PropertyDescriptor.setFilterFlags
方法设置专家过滤器属性:
PropertyDescriptor desc = ...
desc.setFilterFlags(new String [] {IPropertySheetEntry.FILTER_ID_EXPERT});