关于marker的使用
描述:在eclipse中marker是用来代码级别的各种状态信息的一个框架,使用marker可以轻松的浏览和定位文件中的错误或其他的一些信息。
1.定义marker,在eclipse中已经定义了一些marker,但是在我们使用的时候,也有可能需要定义自己marker。
如下是eclipse中已经存在的marker:
org.eclipse.core.resources.marker —— 记号层次结构的根。
org.eclipse.core.resources.problemmarker —— 表示问题或错误消息,出现在问题列表中。
org.eclipse.core.resources.taskmarker —— 表示待办事项,出现在任务列表中。
org.eclipse.core.resources.bookmark —— 表示文件,比如搜索结果。
org.eclipse.core.resources.textmarker —— 表示文件的位置,比如出现错误的位置。
- <extension
- id="my.marker"
- name="My Marker"
- point="org.eclipse.core.resources.markers">
- <persistent
- value="true">
- </persistent>
- <super
- type="org.eclipse.core.resources.problemmarker">
- </super>
- </extension>
<extension
id="my.marker"
name="My Marker"
point="org.eclipse.core.resources.markers">
<persistent
value="true">
</persistent>
<super
type="org.eclipse.core.resources.problemmarker">
</super>
</extension>
super:通过super进行继承已有的marker的能力。
persistent:为true的时候,marker信息被持久,下次打开的时候记录依然会出现
定义一个marker只是原则上这个这种marker类型存在了,但是还需要进行真正的使用
2.创建marker
1)marker是为了描述资源的,所以也应该是在IResource中进行增加marker
2)针对某一个文件,每一次重新加载marker的时候,先把旧的marker清理掉
3)marker里面有很多属性可以进行设置,都是通过setAttribute方式进行设置的。而具体有哪些属性可以参考IMarker,自己也可以创建自己的属性。
4)由于继承了problemmarker,所以marker会在problem视图中显示
- publicstaticvoid addMarker(IResource resource, String message,
- int lineNumber,int severity,int priority)throws CoreException {
- if (resource !=null) {
- IMarker marker = resource.createMarker(PROBLEMS_MARKER_ID);
- if (message !=null)
- marker.setAttribute(IMarker.MESSAGE, message);
- if (lineNumber >=0)
- marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
- marker.setAttribute(IMarker.SEVERITY, severity);
- marker.setAttribute(IMarker.PRIORITY, priority);
- }
- }
public static void addMarker(IResource resource, String message,
int lineNumber, int severity, int priority) throws CoreException {
if (resource != null) {
IMarker marker = resource.createMarker(PROBLEMS_MARKER_ID);
if (message != null)
marker.setAttribute(IMarker.MESSAGE, message);
if (lineNumber >= 0)
marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
marker.setAttribute(IMarker.SEVERITY, severity);
marker.setAttribute(IMarker.PRIORITY, priority);
}
}
3.删除marker
- ResourcesPlugin.getWorkspace().getRoot().deleteMarkers(
- MARKER_ID, false, IResource.DEPTH_INFINITE); (在工程上添加marker)
- ifile.deleteMarkers( MARKER_ID, false, IResource.DEPTH_INFINITE); (在file上添加marker)
ResourcesPlugin.getWorkspace().getRoot().deleteMarkers(
MARKER_ID, false, IResource.DEPTH_INFINITE); (在工程上添加marker)
ifile.deleteMarkers( MARKER_ID, false, IResource.DEPTH_INFINITE); (在file上添加marker)