Eclipse插件开发菜单篇

  • 介绍

在Eclipse中,菜单是非常重要的一个角色,下面就介绍如何自定义菜单。 菜单包括有主菜单、视图菜单、上下文菜单。 Eclipse提供了两种方式扩展菜单,分别是通过org.eclipse.ui.commands和org.eclipse.ui.actionSets。

  • 扩展点org.eclipse.ui.actionSets

[codesyntax lang="xml"]

1<extension point="org.eclipse.ui.actionSets"> 2<actionSet label="EasyShell Action Set" 3 visible="true" 4 id="org.suren.easyshell.actionSet"> 5 <menu label="Explorer &amp;Menu" 6 id="suren.menu"> 7 <separator 8 name="surenGroup"> 9 </separator> 10 </menu> 11 <action label="&amp;Explorer Action" 12 icon="icons/fldr_obj.gif" 13 class="org.suren.easyshell.actions.ExplorerAction" 14 tooltip="Explorer Resources" 15 menubarPath="suren.menu/surenGroup" 16 toolbarPath="surenGroup" 17 id="org.suren.easyshell.actions.ExplorerAction"> 18 </action> 19</actionSet> 20</extension>

[/codesyntax]

  • org.eclipse.ui.actionSets实现类

可以实现接口org.eclipse.ui.IWorkbenchWindowActionDelegate 这种方式并没有把界面和实现分离,而下面的commands的方式确做到了分离的效果。

  • 扩展点org.eclipse.ui.commands

[codesyntax lang="xml"]

1<extension point="org.eclipse.ui.commands"> 2 <command categoryId="org.suren.easyshell.command.category" 3 id="org.suren.easyshell.command.shellExplore" 4 name="Easy Shell Explore" /> 5</extension> 6 7<extension point="org.eclipse.ui.handlers"> 8 <handler class="org.suren.easyshell.command.EasyShellCommand" 9 commandId="org.suren.easyshell.command.command.shellExplore"> 10 </handler> 11</extension> 12 13<extension point="org.eclipse.ui.menus"> 14 <command 15 categoryId="org.suren.easyshell.command.command.category1" 16 id="org.suren.easyshell.command.command.shellExplore" 17 name="Easy Shell Explore"> 18 </command> 19 20 <menuContribution locationURI="popup:org.eclipse.ui.popup.any?before=additions"> 21 <menu id="com.tetrade.eclipse.plugins.easyshell.menu" 22 label="Easy Shell"> 23 <command 24 commandId="org.suren.easyshell.command.command.shellExplore" 25 icon="icons/fldr_obj.gif" 26 label="Explore..." 27 style="push"> 28 </command> 29 </menu> 30 </menuContribution> 31 32 <menuContribution 33 locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"> 34 <toolbar id="org.suren.easyshell.toolbars.shellExplore"> 35 <command commandId="org.suren.easyshell.command.command.shellExplore" 36 icon="icons/fldr_obj.gif" 37 tooltip="Explore..." 38 id="org.suren.easyshell.toolbars.shellExplore.cmd"> 39 </command> 40 </toolbar> 41 </menuContribution> 42</extension>

[/codesyntax] menuContribution的语法:locationURI="[scheme]:[id]?[argument-list]" scheme表明了菜单应该出现的区域——menu为视图的下拉菜单,toolbar为视图的工具栏 id为菜单区域的id argument-list为该菜单项出现在菜单的位置,这里的参数常见的如:after=additions。如果你想要把你的菜单项放到一个确切的菜单项后面的话,把additions修改为那个菜单项的id即可。

  • org.eclipse.ui.commands实现类

步骤如下:

  1. 通过org.eclipse.ui.commands来扩展命令(类别category)
  2. 通过org.eclipse.ui.menus来指定命令在哪里出现
  3. 通过org.eclipse.ui.handlers指定命令的实现类

[codesyntax lang="java"]

1package org.suren.easyshell.actions; 2 3import org.eclipse.jface.action.IAction; 4import org.eclipse.jface.viewers.ISelection; 5import org.eclipse.ui.IWorkbenchWindow; 6import org.eclipse.ui.IWorkbenchWindowActionDelegate; 7import org.eclipse.jface.dialogs.MessageDialog; 8 9public class ExplorerAction implements IWorkbenchWindowActionDelegate { 10 private IWorkbenchWindow window; 11 public ExplorerAction() { 12 } 13 14 public void run(IAction action) { 15 MessageDialog.openInformation( 16 window.getShell(), 17 "SEasyshell", 18 "Hello, Eclipse world"); 19 } 20 21 public void selectionChanged(IAction action, ISelection selection) { 22 } 23 24 public void dispose() { 25 } 26 27 public void init(IWorkbenchWindow window) { 28 this.window = window; 29 } 30}

[/codesyntax] 要实现上下文的菜单扩展的话,要使用org.eclipse.ui.popupMenus来实现。

  • 参考

http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-menuext/ http://www.fengfly.com/plus/view-179398-1.html

点赞
收藏

评论区

加载中...

相关推荐

Vue + ElementUI 实现侧边菜单点击时加载一个动态菜单在横向位置

引传统的左侧菜单的操作方式,在进行比对操作时并不是一个好的体验,下面讲到的实现是左侧菜单每次点击都会动态加载一个动态的横向菜单,而非仅左侧菜单一个入口!(https://oscimg.oschina.net/oscnet/up383c609ea74aab24450c6f6693b9456121c.png)!(https://osci

Foxnic-Web 代码生成 (10) —— 生成菜单与授权

模块代码生成之后,我们需要为配置菜单。配置菜单是一系列的过程,包括创建资源、创建菜单并关联资源,并将菜单授权给指定的角色。

PHP Laravel5实现的RBAC权限管理操作示例

根据不同的权限,在菜单栏显示不同的功能,只对菜单进行了限制,若对路由也进行限制,可以根据菜单的例子,请自行完善,开发。下面请认真学习一下laravel的RBAC设计1、建表(用户表、角色表、权限表、用户角色表、角色权限表)1CREATETABLEIFNOTEXISTSmr_role2(3id

Eclipse插件开发HelloWorld篇

介绍Eclipse插件开发初体验,通过下面的步骤,可以很快地得到一个HelloWorld版本的Eclipse插件。该示例的最终效果,是会通过点击新增加的一个按钮或者菜单弹出一个提示框(内容是HelloWorld)。这是一篇Eclipse插件开发入门的教程,本站还有其他很多的教程,但不要忘记最好的老师就是Eclipse本身。建议大家多多查看Ecl

10 个非常酷的基于jQuery的菜单效果插件

除了直观的界面效果外,炫酷的网站导航菜单或右键菜单也能为访问者带来眼前一亮的感觉。本文为你带来10个非常酷的基于jQuery的菜单效果插件。 1. 右击菜单 一个创建右击菜单的插件,简洁且易用。 !(http://static.oschina.net/uploads/img/201112/20185535_

Eclipse转IntelliJ IDEA迅速上手

1.偏好设置在哪?用eclipse都习惯了在菜单Window下找到preferences进行一些设置。Idea里叫Settings,在File菜单下,即第一个菜单。可以用快捷键CtrlAltS调出。!(http://static.oschina.net/uploads/space/2015/0120/134204_dazv