Я хочу указать пользовательский значок для маркера. К сожалению, значок, который я выбрал, не отображен.
Вот соответствующие части файла 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
как единственный супертип.
См. ошибка 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
означает предупреждение и т. Д.