我这里介绍两种方法
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());
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());