java – 当用户单击标记时,如何创建一个显示不同上下文菜单项的Eclipse插件扩展?

这是一个专门针对Eclipse平台的插件开发的问题:

我想在右键单击一种IMarker时显示菜单添加一个菜单项(所有标记都是一个好的开始).

我在实现IMarkerResolution并在我的plugin.xml中引用它时取得了一些成功

但不是通过eclipse快速修复功能访问我的代码,我想添加自己的菜单文本而不是“快速修复”,而不必显示快速修复选项旁边的操作.通过(双击)标记来运行动作也是非常有用的.

我正在使用eclipse 3.5.2来完成我当前的项目.

提前致谢!

更新我已解决此问题:

mine whether the marker has been clicked using the ruler's mouse listener
private boolean markerHasBeenClicked(IMarker marker){
    return (marker.getAttribute(IMarker.LINE_NUMBER,0)) == (rulerInfo.getLineOfLastMouseButtonActivity() + 1);
}

//Get all My Markers for this source file
private IMarker[] getAllMarkers(){
    return ((FileEditorInput) editor.getEditorinput()).getFile()
        .findMarkers("defined.in.plugin.xml.mymarker",true,IResource.DEPTH_ZERO);
}

@Override
//Create a menu item for each marker on the line clicked on
public void fill(Menu menu,int index){
    for (final IMarker marker : markers){
        MenuItem menuItem = new MenuItem(menu,SWT.CHECK,index);
        menuItem.setText(marker.getAttribute(IMarker.MESSAGE,""));
        menuItem.addSelectionListener(createDynamicSelectionListener(marker));
    }
}

//Action to be performed when clicking on the menu item is defined here
private SelectionAdapter createDynamicSelectionListener(final IMarker marker){
    return new SelectionAdapter(){
        public void widgetSelected(SelectionEvent e){
            System.out.println(marker.getAttribute(IMarker.MESSAGE,""));
        }
    };
}
}
最佳答案
你应该在http://www.eclipse.org/articles/article.php?file=Article-action-contribution/index.html学习本教程.这是一篇关于基本UI内容的精彩文章.

如果单击标尺,则可以使用以下命令定义弹出菜单操作:

   compilationunitRulerContext"
            id="Q4098270.contribution1">
                     arator
                  name="group1">
            arator>
         

我目前没有时间的问题和待办事项是它不仅仅显示标记,而是显示标尺上的所有内容.

说明:
在eclipse菜单中,贡献本身就是扩展点.因此,如果右键单击以查看弹出菜单,系统将检查扩展点的所有实现者,并将检查哪些适用于给定对象或视图.

对未来有一些建议

由于Eclipse平台远非用户友好的记录,因此根据我的经验,寻找合适的扩展点是最复杂的.我总是从平台本身的现有解决方案开始.所以安装JADclipse,开始查找显示的文本.例如,在plugins文件夹中查找文本“Quick fix”.你会找到一个属性文件.你看到属性的关键,然后查找它所在的类或plugin.xml.然后你会看到一个活生生的例子来解决你的问题.这总是有效,甚至比谷歌更好:)

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...