我正在开发一个Eclipse 3.6插件,并且有一个包含TreeViewer
的视图。
选择此TreeViewer
中的项目后,其属性将显示在标准“属性”视图中。默认情况下,属性按字母顺序排序。
我想以不同的方式订购这些属性。
似乎其他人也有这个问题:
http://www.eclipse.org/forums/index.php/m/393029/
默认生成的编辑器的“属性”视图中的属性 按字母顺序排序。我想问一下如何修改 并以不同的顺序安排他们。
建议的解决方案是:
您的编辑需要提供PropertySheetPage getAdapter(Class)方法。如果它没有提供一个属性表 将使用默认的PropertySheetPage,它使用标准 collator生成排序顺序。你的getAdapter()方法需要 提供PropertySheetPage的专门子类,为您设置 而是分拣机。
所以我需要继承PropertySheetPage,覆盖setSorter
方法,一切都应该没问题。
出现两个问题:
这个类可以实例化;它不打算被子类化。
PropertySheetPage
的子类之间的链接?
TreeViewer
,当选择一个项目时,它会提供属性。
答案 0 :(得分:3)
我遇到了同样的事情并找到了解决方案。
我所做的是在我所贡献的属性页面的id中添加一个排序序列前缀(基本上是一个3位数字)并创建一个ContributionComparator,它取得了id的前3位数并执行了基本操作排序
代码看起来像这样:
@Override
public int compare(IComparableContribution c1,
IComparableContribution c2) {
int result = super.compare(c1, c2);
IPluginContribution pc1 = (IPluginContribution)c1;
IPluginContribution pc2 = (IPluginContribution)c2;
String id1 = pc1.getLocalId().substring(0,3);
String id2 = pc2.getLocalId().substring(0,3);
result = id1.compareTo(id2);
return result;
}
然后,在我的WorkbenchAdvisor中,我覆盖getComparitorFor方法以实例化我创建的ContributionComparator,如果contribType是属性:
@Override
public ContributionComparator getComparatorFor(String contributionType) {
ContributionComparator cc;
if (contributionType.equals(IContributionService.TYPE_PROPERTY)) {
cc = new MyContributionComparator();
} else {
cc = super.getComparatorFor(contributionType);
}
return cc;
}
现在,属性页按我希望的顺序显示。