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);
  }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值