GMF 教程 Mindmap 5
2019獨角獸企業重金招聘Python工程師標準>>>
這一部分主要實現的是:
使用擴展的Plug-in為我們的Diagram添加一個自定義動作
Creating a Customization Plug-in
盡管可以給生成的代碼添加備注@generated NOT來避免下次重新生成代碼時覆蓋我們修改的代碼,除此之外,還可以使用一個新的Plug-in工程來將自定制(擴展)與生成的工程分離。
1、創建一個新的Plug-in工程,命名為org.eclipse.gmf.examples.mindmap.diagram.custom,使用默認的設置,不要Activator類,也不用向導提供的任何模板。
Custom Actions
目前為止創建一個新的Subtopic的方法比較麻煩,需要頻繁點擊工具?,F在希望給Topic結點添加右擊菜單項Create Subtopic來實現這個操作,直接創建Subtopic結點,包括連線。
首先,我們要知道,org.eclipse.ui.bindings可以用來將Ctrl+I組合鍵(或者其他組合鍵)分配給我們的Action。可以通過修改diagram.custom工程的plugin.xml文件來實現。不過剛創建的新工程沒有這個文件,不過沒關系。
2、打開diagram.custom工程的MAINIFEST.MF,選擇標簽Extension,單擊Add,添加org.eclipse.ui.bindings擴展點:
3、其實之前單擊Add的時候,就會自動創建plugin.xml文件了。然后可以直接編輯這個文件,在<plugin>標簽之間添加內容:
<extension point="org.eclipse.ui.bindings"><key commandId="org.eclipse.gmf.examples.mindmap.insertSubtopic"sequence="M1+I" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" /> </extension>4、為了這個命令,需要使用org.eclipse.ui.command擴展點。在plugin.xml文件中添加如下內容:
<extension point="org.eclipse.ui.commands"><category name="Mindmap" description="Commands related to Mindmap diagrams."id="org.eclipse.gmf.category.mindmap" /><command categoryId="org.eclipse.gmf.category.mindmap"description="Inserts a new subtopic" id="org.eclipse.gmf.examples.mindmap.insertSubtopic"name="Insert Subtopic"></command> </extension> 5、現在,為了彈出菜單,要使用org.eclipse.ui.popupMenus擴展點 <extension point="org.eclipse.ui.popupMenus"><objectContribution adaptable="false"id="org.eclipse.gmf.examples.mindmap.diagram.ui.objectContribution.TopicEditPart1"objectClass="org.eclipse.gmf.examples.mindmap.diagram.edit.parts.TopicEditPart"><menu id="MindmapInsert" label="Insert" path="additions"><separator name="group1"></separator></menu><actionclass="org.eclipse.gmf.examples.mindmap.diagram.part.MindmapCreateSubtopicAction"definitionId="org.eclipse.gmf.examples.mindmap.insertSubtopic"enablesFor="1"id="org.eclipse.gmf.examples.mindmap.popup.MindmapCreateSubtopicActionID"label="Subtopic" menubarPath="MindmapInsert/group1"></action></objectContribution> </extension>6、不過,為了使生效,要在MAINIFEST.MF加入:
Import-Package: org.eclipse.gmf.examples.mindmap.diagram.edit.parts7、現在,如果運行程序,右擊Topic結點,可以看到上下文菜單多了Insert:
8、之后,要實現那個Action。
在diagram.custom工程的src下創建包org.eclipse.gmf.examples.mindmap.diagram.part,然后創建類MindmapCreateSubtopicAction,完整代碼在后邊的下載地址。
不過,要按照提示添加各種Import-package,參考下圖:
注意要添加左邊的org.eclipse.gmf.runtime.diagram.ui,否則程序會提示org.eclipse.gmf.runtime.notation.View cannot be resolved。
9、此時運行程序,先創建一個Topic結點,然后右擊,選擇Insert——Subtopic,會自動在右上方的創建一個Topic結點,并帶有連線:
Custom Layout
默認的布局并不適合mindmap。下面要實現的是給diagram添加一個自定義的布局,雖然很簡單,但是卻指明了方法。還是會使用擴展點來實現。
我們將會嘗試兩中布局:一個是繼承自
org.eclipse.gmf.runtime.diagram.ui.providers.LeftRightProvider另一個繼承自
org.eclipse.gmf.runtime.diagram.ui.providers.internal.RadialProvider10、在工程的dependancies中加入org.eclipse.gmf.runtime.diagram.ui.providers。
11、在plugin.xml中加入擴展:
<extension point="org.eclipse.gmf.runtime.diagram.ui.layoutProviders"><layoutProviderclass="org.eclipse.gmf.examples.mindmap.diagram.layout.MindmapDefaultLayoutProvider"><Priority name="Medium" /></layoutProvider> </extension> <extension point="org.eclipse.gmf.runtime.diagram.ui.layoutProviders"><layoutProviderclass="org.eclipse.gmf.examples.mindmap.diagram.layout.MindmapRadialLayoutProvider"><Priority name="Low" /></layoutProvider> </extension>12、然后創建包org.eclipse.gmf.examples.mindmap.diagram.layout,在包中創建兩個類MindmapDefaultLayoutProvider和MindmapRadialLayoutProvider,代碼見下載地址。
運行,但是我看不出來有什么效果。
Removing Tools from the Palette
13、如果不想要palette上的Notes和Zoom工具,可以在自定義的工程中使用paletteProvider擴展點來實現移除這些工具。在diagram.custom工程的plugin.xml加入:
<extension point="org.eclipse.gmf.runtime.diagram.ui.paletteProviders"><paletteProviderclass="org.eclipse.gmf.runtime.diagram.ui.providers.DefaultPaletteProvider"><Priority name="High" /><contribution><predefinedEntry id="standardGroup/selectionTool"remove="false" /><predefinedEntry id="standardGroup/zoomInTool"remove="true" /><predefinedEntry id="standardGroup/zoomOutTool"remove="true" /><predefinedEntry id="standardGroup/noteStack/noteTool"remove="true" /><predefinedEntry id="standardGroup/noteStack/textTool"remove="true" /><predefinedEntry id="standardGroup/noteStack/noteattachmentTool"remove="true" /></contribution><editorid="org.eclipse.gmf.examples.mindmap.diagram.part.MindmapDiagramEditorID"></editor></paletteProvider> </extension>
14、此時運行的話,會發現只有Select工具還在palette上,而原來的Note工具和縮放工具都移除了:
源碼:http://www.oschina.net/code/snippet_164134_19308
雙子座@開源中國:http://my.oschina.net/plumsoft
轉載于:https://my.oschina.net/plumsoft/blog/114354
總結
以上是生活随笔為你收集整理的GMF 教程 Mindmap 5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat 全攻略
- 下一篇: 【编译打包】tengine 1.5.2