Как можно было бы использовать IDecorationContext api от Eclipse JFace

Есть ли пример там для использования IDecorationContext для художественных оформлений маркировки?

Взглядами его, IDecorationContext класс, кажется, оказывает своего рода контекстную поддержку художественного оформления, но ни за что в жизни, я не могу найти пример кода, использующий эту функцию...

Кто-либо на самом деле использовал функцию контекста художественного оформления и если так, какие варианты использования она решала?


PS: Я ищу способ применить художественные оформления изображения к меткам объектов и в зависимости от того, где объект отображен, основной размер значков варьируется (например, традиционные "маленькие" значки в таблице - и элементы дерева и большие значки для заголовков содержания).

Художественные оформления относились к исходным значкам, должен выбрать соответствующие художественные оформления размера соответственно.

IDecorationContext кажется, отвечает всем требованиям для того, для чего я нуждаюсь в нем, но документация так редка, как можно ожидать от незначительной функции библиотеки с открытым исходным кодом и нет никаких примеров, которые будут найдены.

Поиск с помощью Google для "IDecorationContext" не показал ничего интересного также, таким образом, я обращаюсь к мудрости толпы StackOverflow в надеждах, следующий парень, получающий вопросу, смог бы получить их ответ быстрее ;)

7
задан Roland Tepp 8 January 2010 в 12:57
поделиться

1 ответ

Я не использовал IDecorationContext, но вы можете увидеть его использование в org.eclipse.jface.viewers.LabelDecorator.

Это также обсуждается в этой теме (даже если нет ответа, который может дать вам хотя бы отправную точку)

Мой текущий подход заключается в расширении декораторов org.eclipse.ui.decorator с использованием ILightweightLabelDecorator для добавления заменяющего оверлея к соответствующему иконки:

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

   ...
}
7
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: