RCP GMF 扩展Action

       在采用GMF开发图形编辑程序时,我经常要自己扩展GMF生成的应用程序。本文围绕如何添加自定义的Action做个详细的介绍。希望对大家有所帮助:

GMF生成的代码其实就是一个RCP应用程序,扩展Action有两种途径:

第一种就是通过扩展点  org.eclipse.ui.actionSets来添加action,

其中每个action都有一些属性其中重要的属性有:

id :标示该action的唯一标示符。

label:action显示时的名称,该属性一般可以采用占位符的方式定义,在action启动时Eclipse Platform会自动去查找plugin.properties文件中的相应字段来加载具体的文字。例如:如果你将其定义为%newDiagramActionLabel时,那么在你的plugin.properties文件中就应该有newDiagramActionLabel=你要显示的名字;

menubarPath:用来定义在菜单栏中显示路径;

toolbarPath:用来定义在工具栏中显示的路径;

class:具体实现的类,在该类中你要实现重写run方法来完成你要得操作。整个流程定义完成后你会在plugin.xml文件中得到如下所示的内容:

   <extension
         id="rcp-actions"
         point="org.eclipse.ui.actionSets">
      <actionSet
            id="com.ibm.crl.pipesimulator.diagram.ActionSet"
            label="%applicationActionSetLabel"
            visible="true">    
         <action
               class="pipesimulator.diagram.application.DiagramEditorActionBarAdvisor$OpenAction"
               definitionId="com.ibm.crl.pipesimulator.diagram.OpenCommand"
               id="com.ibm.crl.pipesimulator.diagram.OpenAction"
               label="%openActionLabel"
               menubarPath="file/additions">
         </action>
      </actionSet>
   </extension>

当然最简单的方式是通过plugin.xml文件的编辑器来编辑,双击该文件打开它。如图:


点击add按钮添加actionSet扩展点,在actionset扩展点下新建一个action并在右边填写action的属性如图所示


你可以点击class即可打开新建action向导。

第二种方法:通过代码添加,你可以在DiagramEditorActionBarAdvisor类中的

protected void makeActions(IWorkbenchWindow window)添加如图:


但这种方法使用于所有的RCP程序,那么我们既然选择了GMF就让我们来看一看GMF生得代码在哪里可以扩展吧,如图所示:


这个类的名字会因你的应用不同而不同但后半部分是不变的,所以找到他打开。在该文件的

public void init(IActionBars bars, IWorkbenchPage page)方法中我们添加实现代码如下所示,相信你应该可以理解

生成后的效果图如下图所示:






发布了40 篇原创文章 · 获赞 59 · 访问量 25万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章