给editor加右键菜单

xiaoxiao2026-08-08  9

我这里介绍两种方法 1: 在initializeGraphicalViewer方法中添加如下代码: MenuManager menuManager = new MenuManager(); menuManager.add(new Action("创建") { @Override public void run() { CreateNetunitDialog create = new CreateNetunitDialog(); create.open(); } }); menuManager.add(new Action("修改") { @Override public void run() { // System.out.println(tree.getSelection()[0].getText()); // // if("".equals(tree.getSelection()[0].getText())){ // // MessageDialog.openInformation(null, "提示", "请选择网元IP地址进行修改"); // return; // // } } }); menuManager.add(new Action("删除") { @Override public void run() { handle.toWrite("正在删除网元..."); MessageDialog dialog = new MessageDialog(null, "提示", null, "确定删除吗?", MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.CANCEL_LABEL }, 0); int result = dialog.open(); switch(result){ case 0: //yes HandleXML hand = new HandleXML(); Object o = ((IStructuredSelection) viewer.getSelection()).getFirstElement(); NetNodeEntity node = (NetNodeEntity) o; int i = hand.toDelete(node.getIP()); if(0 == i){ SendMessage send = new SendMessage(); send.write("删除网元"+node.getIP() +"成功"); Display.getDefault().syncExec(new Runnable() { public void run() { DeviceTreeViewer viewPart = (DeviceTreeViewer) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DeviceTreeViewer.ID);; TreeViewer viewer = viewPart.getTreeViewer(); viewer.setInput(NodeFactory.createInputData()); } }); handle.toWrite("删除网元成功"); view.getTableViewer().setInput(LogDateFactory.createTableData()); MessageDialog.openInformation(null, "提示", "删除成功!"); } // // case 1: //no // break; case 1: //cancel handle.toWrite("取消删除网元"); view.getTableViewer().setInput(LogDateFactory.createTableData()); break; default: break; } } }); Menu menu = menuManager.createContextMenu(viewer.getControl()); viewer.getControl().setMenu(menu); 2: 新建CbmEditorContextMenuProvider 类继承ContextMenuProvider 内容如下: public class CbmEditorContextMenuProvider extends ContextMenuProvider { private ActionRegistry actionRegistry; private ActionRegistry getActionRegistry() { return actionRegistry; } public void setActionRegistry(ActionRegistry registry) { actionRegistry = registry; } public CbmEditorContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) { super(viewer); actionRegistry = registry; } public void buildContextMenu(IMenuManager menu) { // Add standard action groups to the menu GEFActionConstants.addStandardActionGroups(menu); // Add actions to the menu menu.appendToGroup(GEFActionConstants.GROUP_UNDO,getActionRegistry().getAction(GEFActionConstants.REDO)); menu.appendToGroup(GEFActionConstants.GROUP_UNDO,getActionRegistry().getAction(GEFActionConstants.REDO)); menu.appendToGroup(GEFActionConstants.GROUP_UNDO,getActionRegistry().getAction(GEFActionConstants.REDO)); menu.appendToGroup(GEFActionConstants.GROUP_UNDO,getActionRegistry().getAction(GEFActionConstants.REDO)); menu.appendToGroup(GEFActionConstants.GROUP_UNDO,getActionRegistry().getAction(GEFActionConstants.REDO)); menu.appendToGroup(GEFActionConstants.GROUP_UNDO,getActionRegistry().getAction(GEFActionConstants.REDO)); } } 然后在configureGraphicalViewer方法中添加如下代码: //添加上下文菜单 ContextMenuProvider provider = new CbmEditorContextMenuProvider(getGraphicalViewer(), getActionRegistry()); getGraphicalViewer().setContextMenu(provider); getSite().registerContextMenu( "gef.examples.shapes.editor.contextmenu", //$NON-NLS-1$ provider, getGraphicalViewer());
转载请注明原文地址: https://www.6miu.com/read-5050906.html

最新回复(0)