GEF,EMF,RCP,Eclipse"s plugin的几个问题(2) Propertes View中的Property(Category)排序问题

王朝java/jsp·作者佚名  2006-12-17
宽屏版  字体: |||超大  

GEF,EMF,RCP,Eclipse"s plugin的几个问题(2) Propertes View中的Property(Category)排序问题

GEF,EMF,RCP,Eclipse"s plugin的几个问题(2) Propertes View中的Property(Category)排序问题 正常情况下,Properties View中的propety(category)是按照字母排序的,跟我们要求

不相符,效果不好,可以有如下办法解决:

新建一个Class 继承 PropertySheetSorter,分别实现compare和compareCategories

方法,让两个方法都return 0,这样,原来的自动排序就失效了,就可以按照property

添加时候的顺序排列,达到我们要求的效果.

package com.companyname.projectname.modulename.model.properties;

import org.eclipse.ui.views.properties.IPropertySheetEntry;

import org.eclipse.ui.views.properties.PropertySheetSorter;

public class MyPropertySheetSorter extends

PropertySheetSorter {

public int compare(IPropertySheetEntry entryA, IPropertySheetEntry entryB) {

return 0;

}

public int compareCategories(String categoryA, String categoryB) {

return 0;

}

}

新建一个Class 继承 PropertySheetPage,在constructor中设置setSorter()即可.例如下:

package com.companyname.projectname.modulename.model.properties;

import org.eclipse.ui.views.properties.PropertySheetPage;

public class MyPropertySheetPage extends PropertySheetPage {

public MyPropertySheetPage(){

this.setSorter(new MyPropertySheetSorter());

}

}

有了自定义的以上两个类,就可以Editor(例如:NodesEditor)的getAdatper方法中设置该

Sorter,具体如下:

private PropertySheetPage propertySheetPage;

public Object getAdapter(Class type) {

//-->

if (type == IPropertySheetPage.class){

propertySheetPage = new MyPropertySheetPage();

//下边这句话非常必要,如果不设置,Properties View更新时候,资源不能自动更新...

propertySheetPage.setRootEntry(new UndoablePropertySheetEntry(this.getCommandStack()));

return propertySheetPage;

}

//<--

if (type == IContentOutlinePage.class)

return new ServicesOutlinePage(new TreeViewer());

if (type == ZoomManager.class)

return getGraphicalViewer().getProperty(ZoomManager.class.toString());

return super.getAdapter(type);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有