Eclipse标记是不可见的

时间:2010-09-17 10:47:04

标签: java eclipse eclipse-plugin eclipse-rcp

我在添加自定义eclipse标记时遇到了一个奇怪的问题。场景是在添加标记时,当资源(我需要添加标记的标记)打开时,标记图标可见。但是,如果资源未打开,则添加标记,但图标不可见。

以下是我正在使用的代码片段

<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 个答案:

答案 0 :(得分:2)

您可以将代码与应该正常工作的代码进行比较,如 bug 73420 中所示。
那个旧bug(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);
}

答案 1 :(得分:0)

早些时候我已将我的代码转储到行动中。但在我用项目构建器替换它后,它开始工作......

我不知道出了什么问题.. :)