簡體   English   中英

Eclipse PDE - 如何在Standard Propeties視圖中對Properties進行排序

[英]Eclipse PDE - How to sort the Properties in the Standard Propeties view



我正在開發一個Eclipse 3.6插件,並且有一個包含TreeViewer 選擇此TreeViewer的項目后,其屬性將顯示在標准“屬性”視圖中。 默認情況下,屬性按字母順序排序。
我想以不同的方式訂購這些房產。

似乎其他人也有這個問題:
http://www.eclipse.org/forums/index.php/m/393029/

默認生成的編輯器的“屬性”視圖中的屬性按字母順序排序。 我想問一下如何修改和排列不同的訂單。

建議的解決方案是:

您的編輯器需要從getAdapter(Class)方法提供PropertySheetPage。 如果它沒有提供,則屬性表將使用默認的PropertySheetPage,它使用標准collat​​or生成排序順序。 您的getAdapter()方法需要提供PropertySheetPage的專用子類,以便為您設置排序器。

所以我需要setSorter PropertySheetPage ,覆蓋setSorter方法,一切都應該沒問題。

出現兩個問題:

  1. 為什么它在文檔中寫道:

    這個類可以實例化; 它不打算被子類化。

  2. 在哪里可以在標准屬性視圖和PropertySheetPage的子類之間建立鏈接?
    我不是在我的情況下使用編輯器,但只是有一個TreeViewer ,當選擇一個項目時它提供屬性。

    任何支持表示贊賞!

我遇到了同樣的事情並找到了解決方案。

我所做的是在我所貢獻的屬性頁面的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方法,以實例化我在contribType是屬性時創建的ContributionComparator:

@Override
public ContributionComparator getComparatorFor(String contributionType) {
    ContributionComparator cc;

    if (contributionType.equals(IContributionService.TYPE_PROPERTY)) {
        cc = new MyContributionComparator();
    } else {
        cc = super.getComparatorFor(contributionType);
    }

    return cc;
}

現在,屬性頁按我希望的順序顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM