在採用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)方法中我們添加實現代碼如下所示,相信你應該可以理解
生成後的效果圖如下圖所示: