GMF生成的图形编辑器功能还算强大,有很多工具栏和菜单,但是这些工具栏实在是太多了,有时候还真得给它们瘦瘦身。
1. 去除右键菜单项
在DiagramEditorContextMenuProvider类里的buildContextMenu的方法中可以去除:
TransactionUtil.getEditingDomain(
(EObject) getViewer().getContents().getModel())
.runExclusive(new Runnable() {
public void run() {
ContributionItemService
.getInstance()
.contributeToPopupMenu(
DiagramEditorContextMenuProvider.this,
part);
menu.remove(ActionIds.ACTION_DELETE_FROM_MODEL);
menu.remove(ActionIds.ACTION_DELETE_FROM_DIAGRAM); // 删除
menu.appendToGroup("editGroup", deleteAction);
}
});
2. 去除ToolBar和menu项
在XXXDiagramActionBarContributor类的init方法里去除:
IMenuManager fileMenu = bars.getMenuManager().findMenuUsingPath(
IWorkbenchActionConstants.M_FILE);
assert fileMenu != null;
fileMenu.remove("pageSetupAction"); //$NON-NLS-1$
IToolBarManager toolBarManager = bars.getToolBarManager();
toolBarManager.remove("fontNameContributionItem"); //删除
toolBarManager.remove("fontSizeContributionItem"); //删除
3. 去除PopupToolBar
在图形相应的XXXeditpart类里的createDefaultEditPolicies方法去除:
protected void createDefaultEditPolicies() {
super.createDefaultEditPolicies();
installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE,
new DiagramItemSemanticEditPolicy());
installEditPolicy(EditPolicyRoles.CANONICAL_ROLE,
new DiagramCanonicalEditPolicy());
installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE,
new DropObjectEditPolicy());
removeEditPolicy(EditPolicyRoles.POPUPBAR_ROLE); //删除
}