Плагин Eclipse: пользовательский значок для маркера - PullRequest
5 голосов
/ 22 мая 2010

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

Вот соответствующие части файла 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 в качестве только супертипа.

1 Ответ

4 голосов
/ 22 мая 2010

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

Tod Creasey 2009-01-21 07.и в результате не использовался markerSupport, так как он не был API.

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

[EDIT by Itay]

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

  <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" в редакторе плагинов)
  • Объявление выше будет толькоукажите пользовательский значок.Если вы хотите настроить другие атрибуты (цвет индикации на линейке обзора и т. Д.), Следуйте примеру из здесь , на котором основано это решение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...