Маркер затмения невидим - PullRequest
       6

Маркер затмения невидим

4 голосов
/ 17 сентября 2010

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

Вот фрагмент кода, который я использую

<extension
         id="HighPriority"
         name="High Priority problem"
         point="org.eclipse.core.resources.markers">
      <persistent value="true">
      </persistent>
      <super type="org.eclipse.core.resources.problemmarker"/>
      <super type="org.eclipse.core.resources.textmarker"/>
 </extension>

 <extension point="org.eclipse.ui.editors.annotationTypes">
      <type
         name="X.X.X.HighPriorityAnnotation"
         super="org.eclipse.ui.workbench.texteditor.warning"
         markerType="X.X.X.HighPriority"/>

 </extension>
 <extension point="X.X.X.markerAnnotationSpecification">
      <specification
            annotationType="X.X.X.HighPriorityAnnotation"
            icon="icons\img.gif"
       />

 </extension>

И код для создания маркера:

IMarker marker = markerNode.getTargetFile().createMarker(markerNode.getPriority().getMarkerName());

Map<String, Object> attributes = new HashMap<String,Object>();
attributes.put(IMarker.LINE_NUMBER, markerNode.getLineNumber());
attributes.put(IMarker.SEVERITY, Integer.valueOf(IMarker.SEVERITY_WARNING));
attributes.put(IMarker.MESSAGE, markerNode.getMessage());
attributes.put(IMarker.PRIORITY, Integer.valueOf(IMarker.PRIORITY_HIGH));
marker.setAttributes(attributes);

Чтобы открыть редактор, я использую следующий код

IDE.openEditor(this.getSite().getPage(), marker, OpenStrategy.activateOnOpen());

Нужно ли что-либо еще делать при открытии редактора ??

Любые предложения ... ??

Ответы [ 2 ]

2 голосов
/ 17 сентября 2010

Вы можете сравнить ваш код с теми, которые должны работать нормально, как написано в ошибка 73420 .
Контекст этой старой ошибки (eclipse 3.1) не совпадает с вашим, но может дать вам некоторую подсказку или идею о том, что попробовать.
Какую версию Eclipse и Java вы используете?

Извлечение из отчета об ошибке:

Этот код также отлично работает

IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

IMarker[] markers = root.findMarkers(IMarker.PROBLEM, false, IResource.DEPTH_ZERO);

for (int i = 0; i < markers.length; i++) {
  String message = (String) markers[i].getAttribute(IMarker.MESSAGE);

  if (message != null && message.startsWith("this is a test")) {
    markers[i].delete();
  }
}

//IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
Map attribs = new HashMap();
for (int i = 0; i < 8; i++) {
  attribs.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
  attribs.put(IMarker.MESSAGE, "this is a test " + i);
  attribs.put("bogus field", "some text");
  MarkerUtilities.createMarker(root, attribs, IMarker.PROBLEM);
}
0 голосов
/ 23 сентября 2010

Ранее я выбросил свой код в действие. Но после того, как я заменил его на конструктор проектов, он начал работать ...

Понятия не имею, что пошло не так ..:)

...