7

IDecorationContextラベルの装飾に使用する例はありますか?

見た目では、IDecorationContextクラスはある種のコンテキスト装飾サポートを提供しているように見えますが、私の人生では、この機能を使用したサンプルコードを見つけることができません...

実際に装飾コンテキスト機能を使用した人はいますか? もしそうなら、それはどのようなユースケースを解決しましたか?


PS:オブジェクト ラベルに画像装飾を適用する方法を探しています。オブジェクトが表示される場所に応じて、基本アイコンのサイズは異なります (たとえば、テーブルおよびツリー アイテムの従来の「小さい」アイコンと、コンテンツ ヘッダーの大きいアイコン)。

元のアイコンに適用される装飾は、それに応じて適切なサイズの装飾を選択する必要があります。

IDecorationContext私が必要とするものには合っているようですが、ドキュメントはオープンソースライブラリのマイナーな機能から期待できるほどまばらで、例は見つかりません.

「IDecorationContext」をグーグルで調べても、興味深いことは何も明らかにならなかったので、質問を受けた次の人がより早く答えを得ることができることを期待して、StackOverflow 群衆の知恵に目を向けます ;)

4

1 に答える 1

7

IDecorationContextは使用しませんでしたが、で使用されていることがわかりますorg.eclipse.jface.viewers.LabelDecorator

それはこのスレッドでも議論されています(答えがない場合でも、少なくとも出発点を与えることができます)

私の現在のアプローチは、ILightweightLabelDecoratorを使用してorg.eclipse.ui.decoratorsを拡張し、それぞれのアイコンに置換オーバーレイを追加することです。

public class ProjectLabelDecorator extends LabelProvider 
   implements ILightweightLabelDecorator {

   ...

   public void decorate(Object element, IDecoration decoration) {
      if (element instanceof IFolder) {
         IFolder folder = (IFolder) element;
     try {
            if (folder.getProject().hasNature("rttdt.nature")) {
                if (ProjectNature.isTestcase(folder)) {
                   IDecorationContext context = 
                      decoration.getDecorationContext();
                   if (context instanceof DecorationContext) {
                      ((DecorationContext) context).putProperty(
                         IDecoration.ENABLE_REPLACE, Boolean.TRUE);
                   }
                   decoration.addOverlay(fTestcaseOverlay,
                      IDecoration.REPLACE);
                }
         } catch (CoreException e) {
         }
      }
   }

   ...
}
于 2010-01-08T13:55:59.060 に答える