Eclipse JFace から IDecorationContext API を使用するにはどうすればよいですか
質問
使用例はありますか IDecorationContext
ラベルの装飾用?
見た目からすると、 IDecorationContext
このクラスは、ある種のコンテキスト装飾サポートを提供しているようですが、この機能を使用したサンプルコードは一生見つかりません...
実際にデコレーション コンテキスト機能を使用した人はいますか?もし使用している場合、それによってどのようなユースケースが解決されましたか?
追伸: 画像の装飾をオブジェクトラベルに適用する方法を探していますが、オブジェクトが表示される場所に応じて、基本アイコンのサイズが異なります(例:テーブルおよびツリー項目の従来の「小さい」アイコンと、コンテンツ ヘッダーの大きいアイコン)。
元のアイコンに適用される装飾は、それに応じて適切なサイズの装飾を選択する必要があります。
IDecorationContext
私が必要とするものには合っているように思えますが、オープンソースライブラリのマイナーな機能から予想されるようにドキュメントはまばらで、例も見つかりません。
グーグルで検索してみると、 「I装飾コンテキスト」 興味深いものは何も明らかにされなかったので、次に質問を受けた人がより早く答えを得ることができることを期待して、StackOverflow の群衆の知恵に目を向けます ;)
解決
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) {
}
}
}
...
}