Плагин Eclipse: Пользовательский значок для Маркера

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

Вот соответствующие части файла plugin.xml (идентификатор "x" проекта):

<extension
      id="xmlProblem"
      name="XML Problem"
      point="org.eclipse.core.resources.markers">
   <super type="org.eclipse.core.resources.problemmarker"/>
   <persistent
         value="true">
   </persistent>
</extension>

<extension
      point="org.eclipse.ui.ide.markerImageProviders">
   <imageprovider
         markertype="x.xmlProblem"
         icon="icons/marker.png"
         id="xmlProblemImageProvider">
   </imageprovider>
</extension>

Я также пытался указать класс (реализация IMarkerImageProvider) вместо значка, но этого getImagePath() метод класса не становится названным.

Какие-либо мысли о том, как заставить пользовательские значки маркера работать?

Отчаянно, Ваш.

- Itay

Обновление

Решение VonC в значительной степени правильно, за исключением того, что Вы не должны указывать org.eclipse.core.resources.problemmarker как супертип Вашего маркера. Это работало только, когда я использовал org.eclipse.core.resources.textmarker как единственный супертип.

5
задан Itay Maman 23 May 2010 в 05:17
поделиться

1 ответ

См. ошибка 260909 «точка расширения markerImageProviders не работает» ( найдено после прочтения этой ветки )

Tod Creasey 21.01.2009 07:32:38 EST

У нас никогда не было толчка, чтобы сделать этот API, потому что он обладает некоторой негибкостью, которая сделала его в целом не расходуемый - он был написан на ранней стадии для включения первых представлений маркеров для трех уровней серьезности, которые мы используем, и в результате не использовался markerSupport, поскольку это не был API.

Сбивает с толку то, что у нас есть внутренняя точка расширения (обычно мы не делаем что), но его удаление, скорее всего, сломает кого-нибудь без предупреждения.

[EDIT by Itay]

Следуя указателям Вонка, мне в конце концов удалось заставить эту штуку работать. Вот соответствующие фрагменты из моего plugin.xml (при условии, что имя плагина abc )

  <extension point="org.eclipse.core.resources.markers"   
        id="myMarker">
     <super type="org.eclipse.core.resources.textmarker"/>         
     <persistent value="true"/>
  </extension>

  <extension point="org.eclipse.ui.editors.annotationTypes">
     <type
        super="org.eclipse.ui.workbench.texteditor.warning"
        markerType="a.b.c.myMarker"
        name="a.b.c.myAnnotation"
        markerSeverity="1"/>
  </extension>

  <extension point="org.eclipse.ui.editors.markerAnnotationSpecification">
     <specification
        annotationType="a.b.c.myAnnotation"
        icon="icons/marker.png"
        verticalRulerPreferenceKey="myMarkerIndicationInVerticalRuler"
        verticalRulerPreferenceValue="true"/>
  </extension>

Ловушки

  • Супертип маркера должен быть установлен на org.eclipse.core.resources.textmarker . Любое другое значение предотвратит использование вашего пользовательского значка.
  • При создании маркера в коде убедитесь, что его серьезность соответствует значению серьезности, указанному в атрибуте markerSeverity в точке расширения org.eclipse.ui.editors.annotationTypes . 1 означает предупреждение и т. Д.
  • Убедитесь, что папка значков указана в вашем файле build.properties (или на вкладке «build» в редакторе плагинов).
  • В приведенном выше объявлении указывается только пользовательский значок. Если вы хотите настроить другие атрибуты (цвет индикации на обзорной линейке и т. Д.), Следуйте примеру из здесь , на котором основано это решение.
4
ответ дан 15 December 2019 в 00:52
поделиться
Другие вопросы по тегам:

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