最开始的时刻,都是使用org.eclipse.ui.popupMenus (上下文菜单)和org.eclipse.ui.actionSets(视图菜单,主菜单)来创建Eclipse菜单。
原来都是使用下面的方式来创建菜单:
<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="com.xyz.C1" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.java"> <menu id="com.xyz.xyzMenu" path="additions" label="&XYZ Java Tools"> <separator name="group1"/> </menu> <action id="com.xyz.runXYZ" label="&Run XYZ Tool" style="push" menubarPath="com.xyz.xyzMenu/group1" icon="icons/runXYZ.gif" helpContextId="com.xyz.run_action_context" class="com.xyz.actions.XYZToolActionDelegate" enablesFor="1" /> </objectContribution>
同样Eclipse也提供了Commands Framework框架来创建菜单,使用CommandsFramework需要用到3个扩展点:
org.eclipse.ui.commands
org.eclipse.ui.handlers
org.eclipse.ui.menus
org.eclipse.ui.commands
命令定义。
· id 该command的唯一标识,在handler和menu都会用到这个id。
· name 该命令的名字,可以起到一个翻译解释的作用。如果在menu的label属性没有定义时,在界面上会显示该name的值。
· defaultHandler 默认处理类,如果该commandId没有被绑定到handler扩展点,那么就会调用该defaultHandler处理类(这个属性还与IExecutableExtension有联系)。
<extension point="org.eclipse.ui.commands"> <command defaultHandler="com.winse.eclipse.examples.handler.HelloHandler" id="com.winse.eclipse.examples.command.hellocmdusedefault" name="Hello CMD use DefaultHandler"> </command> <command id="com.winse.eclipse.examples.command.hellocmd" name="Hello CMD"> </command> </extension>
当menus扩展点中没有定义label属性时,会在界面中显示command的name属性。
org.eclipse.ui.handlers
这个用于设置处理类。需要处理的对象可以通过HandleUtil获得。
· commandId 绑定到的command,既上面的org.eclipse.ui.commands扩展点设置的id。
· class 处理类
<extension point="org.eclipse.ui.handlers"> <handler class="com.winse.eclipse.examples.handler.HelloHandler" commandId="com.winse.eclipse.examples.command.hellocmd"> </handler> </extension>
public class HelloHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { MessageDialog.openInformation( HandlerUtil.getActiveWorkbenchWindow(event).getShell(), "Hello.", "my first eclise command framework example."); return null; } }
org.eclipse.ui.menus
定义命令出现的位置。
· locationURI 定义menu节点的插入点。这个重点难点,这个参数请参考最后的链接。
· id 菜单(menu或command)的标识,可以用于locationURI的after与before来进行菜单的排序。
· label 菜单的显示名称(可选,如果没有填写,会使用命令的name属性,但推荐在这里定义)。
· commandId 需要执行的命令Id。
<extension point="org.eclipse.ui.menus"> <menuContribution allPopups="false" locationURI="menu:org.eclipse.ui.main.menu"> <menu id="fileMenu" label="file"> <command commandId="com.winse.eclipse.examples.command.hellocmd" label="Hello" style="push"> </command> <command commandId="com.winse.eclipse.examples.command.hellocmdusedefault" id="hellodefault" style="push"> </command> </menu> </menuContribution> </extension>
完成上面三个扩展点的定义后,就可以来进行测试了。
我们的命令放置在主菜单栏上(menu:org.eclipse.ui.main.menu),所以,我们可以看到如图效果:
传统的actionSets, editorAction这些扩展点的方式与命令框架的CommandFramework之间其实没有太多的比较可言了。但CommandFramework提供了菜单创建的统一方式locationURI,不需要去学习很多扩展点的使用;同时,我们Command可以复用,我们甚至可以无需知道命令是怎么实现的,例如退出eclipse的exit命令,我们只需要定义一个menus,然后复用这个command即可(我觉得这个是它最大的优势);还有就是可以很方便的绑定快捷键bindings。
<menuContribution locationURI="menu:org.eclipse.ui.main.menu"> <menu label="File"> <command commandId="org.eclipse.ui.file.exit" label="Exit"> </command> </menu> </menuContribution>
参考资料:
1 研读 http://wiki.eclipse.org/Menu_Contributions#Menu_URIs 一文,从中获取如何使用 menuContribution, locationURI 。
2 阅读 http://wiki.eclipse.org/Command_Core_Expressions 一文,理解 Eclipse Command 表达式的用途。
3 深入理解菜单(Menu)功能及其扩展点 http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-menuext/index.html
4 http://www.vogella.com/articles/EclipseCommandsAdvanced/article.html
5 http://www.vogella.com/articles/EclipseCommands/article.html
相关推荐
- **定义**: Eclipse Commands Framework 是一种用于创建和管理Eclipse应用中命令、菜单和工具栏的机制。 - **功能**: - 创建命令(Command)。 - 定义命令处理程序(Handler)。 - 将命令集成到菜单和工具栏中。 - ...
使用C#,开发者可以创建.NET Framework上的dll(动态链接库),这些库可以被SolidWorks PDM调用,执行用户定义的命令。 4. **创建过程**: - 首先,设置开发环境,安装Visual Studio和SolidWorks SDK,后者提供了...
这可能包括使用ADO.NET或Entity Framework等技术,连接到数据库,执行SQL语句来创建、读取、更新和删除数据。 这个应用程序结合了Windows窗体界面设计和GIS功能,同时涉及数据库操作,为用户提供了一种交互式的地图...
- 使用`Windows -> Customize Perspective -> Commands` 将Lomboz Action添加到工具栏。 完成上述步骤后,你已经成功地搭建了一个Eclipse + Lomboz + Tomcat + Jboss的开发环境,可以开始进行Java EE应用的开发了...
Wechat Framework(微信开发框架,简称WTF)能帮助开发者快速搭建微信公众号开发环境,开发者在自己的微信公众号开发项目中引入本框架后,仅需简单的几步配置即可获得消息接收、解析、回复等功能,同时还有菜单创建...
总结来说,Eclipse插件开发涉及了插件项目的创建、扩展点和扩展的使用、UI元素的定制、模型和服务的设计以及调试和部署等多个方面。通过学习和实践,开发者能够根据实际需求定制属于自己的Eclipse开发环境,提升开发...
- **创建菜单**:在MenuStrip中添加菜单项,例如文件(File)、编辑(Edit)、查看(View)等。 - **添加子菜单**:为每个菜单项添加子菜单项,例如文件菜单下的打开(Open)、保存(Save)等。 **知识点8:事件处理** - **...
- 更多关于模板的详细信息,请参考[Ionic官方文档](https://ionicframework.com/docs/cli/commands/start)。 #### 五、框架目录结构 - 创建的新项目通常会有一个标准的目录结构,包括但不限于: - `src`:存放所有...
There are 7 types of commands, which are language commands, form style commands, security level commands, enhanced repairing commands, c++ repairing configuration commands, DirectDraw configuration ...
在本文中,我们将深入探讨如何使用JavaScript来创建Sublime Text 3插件。Sublime Text是一款广受欢迎的代码编辑器,支持多种编程语言,并且拥有强大的可扩展性,用户可以通过编写插件来增强其功能。JavaScript是...
一旦掌握了基础,你就可以继续探索更复杂的插件开发,如使用PDE(Plug-in Development Environment)工具集、使用RCP(Rich Client Platform)创建桌面应用程序,甚至参与Eclipse社区的开源项目。
Fluent.Ribbon是一个.NET Framework的开源库,它允许开发人员在WPF(Windows Presentation Foundation)应用程序中轻松创建和自定义Ribbon界面。 首先,Fluent.Ribbon库的核心是Fluent.dll,这是一个专门为WPF设计...
- **菜单和工具栏**:学习如何在Eclipse RCP应用中创建和定制菜单及工具栏。 #### 十七、增加菜单练习 - **添加菜单**:实践如何在Eclipse RCP应用中添加菜单项。 - **上下文菜单**:了解如何为表格等UI元素添加上...
在这种情况下,可以通过实现`org.eclipse.core.commands.ICompoundOperation`接口来创建复合操作。复合操作可以包含多个子操作,当它被撤销或重做时,其所有子操作都会一起撤销或重做。 此外,Eclipse还提供了命令...
接下来,我们将逐步介绍如何使用Spring Rich Client创建一个简单的富客户端应用。 #### Spring Rich Client框架快速解析 ##### 富客户端应用程序结构 Spring Rich Client中的应用程序通常包含以下几个关键部分: ...
- **主窗口(Main Window Features)**:QT提供了主窗口类,它包含了菜单栏、工具栏等常见的窗口组件,使得开发者可以轻松创建具有完整功能的应用程序主界面。 - **对话框(Dialogs)**:除了主窗口外,QT还支持多种类型...
主窗口通常是应用程序的主要入口点,它包含菜单栏、工具栏、状态栏以及其他一些重要的小部件。Qt 提供了丰富的 API 来定制这些元素,使开发者能够轻松地创建功能强大的用户界面。 **3.2 对话框 (Dialogs)** 对话框...
- **QMenu**:用于创建下拉菜单,可以包含多个选项。 - **QToolBar**:用于放置工具按钮和其他常用操作,通常位于主窗口顶部。 - **QStatusBar**:显示简短的信息或状态提示。 - **Actions**:表示可以执行的操作,...