Plug-in 菜单

来源:互联网 发布:用友政务软件 编辑:程序博客网 时间:2024/06/06 09:20

Plug-in 菜单

首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。

1、工具栏菜单

(1) 扩展点【org.eclipse.ui.actionSets】
在【Extensions】中添加【org.eclipse.ui.actionSets】。
在【org.eclipse.ui.actionSets】中添加【Menu】和【seperator】,并创建【action】。
<extensionpoint="org.eclipse.ui.actionSets"><actionSetid="com.plugin.blog.demo.actionSet"label="DemoActionSet"visible="true"><menuid="com.plugin.blog.demo.actionSet.menu"label="DemoMenu"path="additions"><separatorname="actionSet.menu.seperator"></separator></menu><actionclass="com.plugin.blog.demo.actions.OpenViewAction"icon="icons/icon_choice.png"id="com.plugin.blog.demo.actions.OpenViewAction"label="OpenViewAction"menubarPath="com.plugin.blog.demo.actionSet.menu/actionSet.menu.seperator"style="push"toolbarPath="additions"></action></actionSet></extension>
(2) 【action】配置
在"menubarPath"中定义菜单位置,添加到自定义的DemoMenu菜单下。
在"toolbarPath"中定义工具栏位置。
在"class"中定义操作,该类必须继承IWorkbenchWindowActionDelegate接口。



OpenViewAction类

public class OpenViewAction implements IWorkbenchWindowActionDelegate {private IWorkbenchWindow mWindow;@Overridepublic void run(IAction action) {MessageBox mb = new MessageBox(mWindow.getShell());mb.setText("消息");mb.setMessage("打开视图");mb.open();}@Overridepublic void selectionChanged(IAction action, ISelection selection) {}@Overridepublic void dispose() {}@Overridepublic void init(IWorkbenchWindow window) {this.mWindow = window;}}
(3) 添加【action】到原有菜单中
在"menubarPath"中定义"file/new/additions"可以添加到原有菜单中,"definitionId"指定快捷方式。

<actionSetid="com.plugin.blog.demo.actionSet"label="DemoActionSet"><actionclass="com.plugin.blog.demo.actions.NewDemoAction"definitionId="com.plugin.blog.demo.command.newDemo"icon="icons/icon_sample.gif"id="com.plugin.blog.demo.actions.NewDemoAction"label="NewDemoAction"menubarPath="file/new/additions"style="push"toolbarPath="additions"></action></actionSet>
NewDemoAction类
public class NewDemoAction implements IWorkbenchWindowActionDelegate {private IWorkbenchWindow mWindow;@Overridepublic void run(IAction action) {MessageBox mb = new MessageBox(mWindow.getShell());mb.setText("消息");mb.setMessage("新建Demo操作");mb.open();}@Overridepublic void selectionChanged(IAction action, ISelection selection) {}@Overridepublic void dispose() {}@Overridepublic void init(IWorkbenchWindow window) {this.mWindow = window;}}
显示如下

(4) 工具栏中也添加了两个新的菜单。


2、绑定命令

(1) 在【Extensions】中添加【org.eclipse.ui.commands】。
在【org.eclipse.ui.commands】中创建【command】。

<extensionpoint="org.eclipse.ui.commands"><commandid="com.plugin.blog.demo.command.newDemo"name="NewDemoCommand"></command></extension>
(2) 在【Extensions】中添加【org.eclipse.ui.bindings】。
在【org.eclipse.ui.bindings】中创建【key】。在【key】中,"commandId"对应上面创建的【command】。

<extensionpoint="org.eclipse.ui.bindings"><keycommandId="com.plugin.blog.demo.command.newDemo"contextId="org.eclipse.ui.contexts.window"schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"sequence="CTRL+SHIFT+D"></key></extension>
(3) 在NewDemoAction的配置中添加"definitionId"
运行CTRL+SHIFT+D命令,直接调用NewDemoAction。