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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章