gef中的属性视图小结
程序员文章站
2022-03-16 15:07:26
...
1.如果要实现在属性视图中编辑被选择的对象,则至少必须满足以下两个条件:
- 被选择的对象必须实现或者能够适配成IPropertySource接口对象。
- 被选择的对象必须能够被实现了ISelectionProvider接口的选择提供者提供属性视图
2.Eclipse中内置了一些实现了IPropertyDescriptor接口的类
- PropertyDescriptor 可以实现不可编辑的属性
- ColorPropertyDescriptor 会弹出颜色选择对话框
- ComboBoxPropertyDescriptor 可以通过下拉框选择需要的属性
- TextPropertyDescriptor 实现可编辑的属性
- StandardComboBoxPropertyDescriptor
3.实现属性栏打开自定义的对话框
可以参考在属性页中打开对话框 ,写得已经很详细了。
4.实现属性的显示顺序
在PropertySheetPage显示的属性中, 如果需要自定义属性显示的上下顺序, 就需要给PropertySheetPage添加一个PropertySheetSorter, 从而决定属性显示的上下顺序.
4.1 在Editor中加入如下代码:
...................
if (type.equals(IPropertySheetPage.class)) {
return new PropertySheetPage() {
public void createControl(Composite parent) {
// super.createControl(parent);
PropertySheetSorter sorter = new PropertySheetSorter() {
public int compare(IPropertySheetEntry entryA,
IPropertySheetEntry entryB) {
return getCollator().compare(
entryA.getDescription(),
entryB.getDescription());
}
};
this.setSorter(sorter);
super.createControl(parent);
}
};
}
return super.getAdapter(type);
}
4.2 在处理属性视图的类中加入以下代码
public IPropertyDescriptor[] getPropertyDescriptors() {
ArrayList<IPropertyDescriptor> properties = new ArrayList<IPropertyDescriptor>();
TextPropertyDescriptor name=new TextPropertyDescriptor(Node.PROPERTY_RENAME, "Name");
name.setDescription("01");//设置这个是为了排序
properties.add(name);//增加任务名
if (node instanceof TaskModel) {
TextPropertyDescriptor des=new TextPropertyDescriptor(TaskModel.PROPERTY_DESCRIPTION,
"Description");
des.setDescription("02");
properties.add(des);//增加任务描述
...........................
其实就是通过entryA.getDescription()来作为排序依据.
上一篇: 8核同频PK:锐龙7 3700X对比i9-9900K
下一篇: IText 生成PDF