Eclipse插件开发如何在问题视图里定位

BrandoLv 2014-02-26 11:00:52
我想通过插件调用Eclipse里面的问题(ProblemsView)视图. 在视图里面添加自己的问题. 现在问题视图的问题能够添加了. 但是我看Eclipse里产生的问题如果你双击. 都可以打开相应的编辑器. 并且定位到某一行. 所以我想我自己添加的问题也能有这样的功能. 自己添加一个问题. 到使用用户双击问题. 跳转到编辑器. 让用户进行改正.
这个就是问题视图: 想单机某一行就进行跳转.
...全文
501 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hduqinyunhao 2014-06-03
  • 打赏
  • 举报
回复
感谢,解决了我的问题,Resource和Path确实是自动添加的
BrandoLv 2014-02-28
  • 打赏
  • 举报
回复
谢谢斑竹的讲解. 我获取到了Ifile对象. 但是使用IFile对象一调用createMarker方法就会报错. 说找不到资源. 但是我的IFIle是有对象的. 我的Ifile对象的文件名称都能打印出来.


报错图:


这个文件确实存在的. 在Eclipse调试插件时启动的那个调试Elcipse的工作空间, 创建了这个项目的,


哎. 这个问题已经搞得我无法再爱了.
BrandoLv 2014-02-27
  • 打赏
  • 举报
回复
我是在网上找的一个静态方法, 来把数据添加到Marker上面去的:

这个是代码.

而我的编辑器是继承的TextEditor. 这个编辑器是支持IGotoMarker的.

你所的把Marker打到一个resource上. 这个不是很理解怎么操作.
霜之哀伤 2014-02-27
  • 打赏
  • 举报
回复
记错了,那两个不是属性设置的,而是根据marker所在的资源自动决定的 你是怎么把你的marker弄到视图上的? 标准的做法是把一个marker打到某个resource上,视图就自动显示,这样也就自然会有资源和路径信息。 有了资源信息路径信息以后,双击这条marker的时候,自动用编辑器打开对应的资源(文件)。 然后调用编辑器的getAdapter方法向编辑器要一个IGotoMarker的实例,如果编辑器没有返回空,那么就调用这个实例的gotomarker方法。 如果编辑器是你自己写的,那么就是说你要修改你的编辑器的getAdapter方法;如果编辑器不是你的,你没有什么可做的,只有看原来的编辑器是不是支持gotomarker了,如果支持,你什么都不用做,不支持,你也什么都做不了
BrandoLv 2014-02-27
  • 打赏
  • 举报
回复
大神, 能不能说得在详细一点. 主要是我才入门. 可能你给我说的是精髓. 但是我经验不足. 明白了一些东西. 但是还是不知道从哪里下手. 而且资源和路径那两项. 我看了IMarker接口里所有的属性. 不知道哪些才是这两项的属性. 有些我设置了没有用. 比如这些: marker.setAttribute(IMarker.CHAR_END, "2"); marker.setAttribute(IMarker.CHAR_START, "1"); marker.setAttribute(IMarker.DONE, "DONE"); marker.setAttribute(IMarker.USER_EDITABLE, "USER_EDITABLE"); marker.setAttribute(IMarker.SOURCE_ID, "SOURCE_ID"); 而且也不知道怎么和你说的IGotoMarker关联起来.
霜之哀伤 2014-02-27
  • 打赏
  • 举报
回复
必须用Eclipse的ResourceAPI来获取一个IFile对象,可以参考一下eclipse help里的
Platform Plug-in Developer Guide > Programmer's Guide >Resources overview
BrandoLv 2014-02-27
  • 打赏
  • 举报
回复
我现在把他改好了. 没有使用Input了. 而是使用一个文件来打开Editor. 但是我还是不知道这个怎么关联起来. TextEditor里面也没有IRsource对象之类的东西. 怎么把这个设置进去. 还真是个问题.
霜之哀伤 2014-02-27
  • 打赏
  • 举报
回复
那问题就在这里了,Resource一般需要对应编辑器打开的文件,也就是IFile类型。 如果你的编辑器不是基于这个input的话,恐怕难以实现了
BrandoLv 2014-02-27
  • 打赏
  • 举报
回复
有信息. 我是这样打开ProplemsView视图的. 我能设置信息去问题视图. 但是只有几个能显示出来.

我Resource使用的是ResourcesPlugin.getWorkspace().getRoot(). 其实我是不知道怎么获取IResource对象. 随便找的一个能返回IResource对象的方法来使用. 是不是需要我的数据源来提供IResource接口.
我的编辑器TextEditor. input是实现IStorageEditorInput接口.
霜之哀伤 2014-02-27
  • 打赏
  • 举报
回复
那基本上就是这样了,resource.createmarker就是说这个resource上面添加错误标记 但看你视图上似乎没有信息的样子,你的resource用的是什么?
霜之哀伤 2014-02-26
  • 打赏
  • 举报
回复
首先你的marker里要添加资源信息,就是图上第二三列的那个,具体的key自己查找吧 然后,你的编辑器需要能够适配到IGotoMarker(就是编辑器的getAdapter方法里),返回一个IGotoMarker的实现,具体你可以看别人怎么使用的

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧