Eclipse中的org.eclipse.core.resources.markers扩展点

原文:http://lizhensan.iteye.com/blog/1245129  http://blog.csdn.net/soszou/article/details/8030113

扩展点配置如下:
<extension
         id="my.marker.id"
         name="my.marker.name"
         point="org.eclipse.core.resources.markers">
      <persistent
            value="true">
      </persistent>
      <super
            type="org.eclipse.core.resources.problemmarker">
      </super>
</extension>

persistent代表是否将错误保存,如果false,重启就会消失
super 是父亲类型,有四种类型
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 —— 表示文件的位置,比如出现错误的位置。

  定义插件专用的记号是一种不错的选择。新记号的 ID 在 plugin.xml 文件(与 Eclipse 中的其他声明一样)重定义。清

单 1 显示了一个记号声明,定义了记号 ID( org.eclipse.core.resources.markers)的一个扩展。它还声明了新的记号,这

些记号分别从 problemmarker(显示在问题列表中)和 textmarker(为了记录行号)中继承而来。将记号声明为持久的是为了

在会话之间保存这些记号。

那么如何创建Marker?
IMarker myMarker = container.createMarker("org.eclipse.gef.examples.ediagram.my.marker.id");
myMarker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
myMarker.setAttribute(IMarker.MESSAGE, "my marker test");
myMarker.setAttribute(IMarker.SEVERITY , IMarker.SEVERITY_ERROR);

org.eclipse.gef.examples.ediagram 是插件ID,my.marker.id是marker ID,中间.号割开
container 是IResource类型.


2.创建marker

1)marker是为了描述资源的,所以也应该是在IResource中进行增加marker

2)针对某一个文件,每一次重新加载marker的时候,先把旧的marker清理掉

3)marker里面有很多属性可以进行设置,都是通过setAttribute方式进行设置的。而具体有哪些属性可以参考IMarker,自己也可以创建自己的属性。

4)由于继承了problemmarker,所以marker会在problem视图中显示

  1. publicstaticvoid addMarker(IResource resource, String message, 
  2.             int lineNumber,int severity,int priority)throws CoreException { 
  3.         if (resource !=null) { 
  4.             IMarker marker = resource.createMarker(PROBLEMS_MARKER_ID); 
  5.             if (message !=null
  6.                 marker.setAttribute(IMarker.MESSAGE, message); 
  7.             if (lineNumber >=0
  8.                 marker.setAttribute(IMarker.LINE_NUMBER, lineNumber); 
  9.             marker.setAttribute(IMarker.SEVERITY, severity); 
  10.             marker.setAttribute(IMarker.PRIORITY, priority); 
  11.         } 
  12.     }


.删除marker

  1. ResourcesPlugin.getWorkspace().getRoot().deleteMarkers( 
  2.            MARKER_ID, false, IResource.DEPTH_INFINITE); (在工程上添加marker) 
  3. ifile.deleteMarkers( MARKER_ID, false, IResource.DEPTH_INFINITE); (在file上添加marker) 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值