`

给editor加右键菜单

    博客分类:
  • GEF
gef 
阅读更多
我这里介绍两种方法
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());
2
0
分享到:
评论

相关推荐

    ListControl支持右键菜单动态添加、删除行

    在本话题中,我们将深入探讨如何实现`ListControl`支持右键菜单动态添加和删除行的功能,以及如何进行编辑(edit)和使用下拉框(Combox)选择。 首先,`ListControl`通常被用作`CListView`类的一部分,它是MFC框架...

    PowerPoint幻灯片右键添加菜单

    3. **注册右键菜单**:使用`CustomUIEditor`工具(可能需要从Office开发工具包安装),编辑` Ribbons.xml` 文件,定义新的上下文菜单项。 4. **实现逻辑**:在C#代码中,实现菜单项点击事件的逻辑,如调用其他方法或...

    TEXT中的右键菜单屏蔽或显示

    在计算机软件领域,尤其是文本编辑器或处理文本的程序中,右键菜单是用户与软件交互的重要途径之一。右键菜单通常包含了一系列快捷操作,如复制、粘贴、查找、替换等,方便用户快速执行常见任务。然而,在某些特定...

    快速注册DLL、OCX右键菜单

    2. 创建注册表项,将这些命令绑定到右键菜单。在REG文件中,你需要编写类似以下的键值对: ``` Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.dll\Shell\Register] @="注册DLL" [HKEY_CLASSES_...

    增加windows右键菜单项.zip

    在Windows操作系统中,右键菜单是用户访问常用功能和快捷方式的一个重要途径。"增加windows右键菜单项.zip"这个压缩包文件显然旨在帮助用户自定义Windows系统的右键菜单,以便在文件或文件夹上点击右键时快速执行...

    添加右键菜单

    本教程将详细讲解如何通过注册表编辑器(Registry Editor)来添加和删除自定义的右键菜单项,以实现标题所提及的“添加右键菜单”功能。 一、注册表编辑器简介 注册表是Windows系统中的核心数据库,存储了系统和...

    RCP自定义透视图切换按钮的右键菜单

    本教程将详细介绍如何通过`org.eclipse.ui.presentationFactories`扩展点来实现这一目标,以及如何去除Editor的右键菜单和关闭按钮,提升用户体验。 透视图是Eclipse RCP中的一个重要概念,它定义了工作台窗口中各...

    在XP系统上右键菜单增加使用记事本打开

    在Windows XP系统中,右键菜单是我们经常使用的功能,它提供了快速访问常用操作的途径。在某些情况下,用户可能希望自定义这个菜单,比如添加“使用记事本打开”选项,以便快速用记事本编辑文件。这尤其适用于处理...

    给右键菜单添加“用记事本打开”.reg

    标题中的“给右键菜单添加‘用记事本打开’.reg”指的是在Windows操作系统中,通过注册表编辑器(Registry Editor)添加一个自定义的右键菜单项,使得用户能够直接用记事本(Notepad)程序打开任何文件。这个过程...

    右键菜单中添加显示隐藏系统文件及扩展名

    本教程将详细讲解如何在Windows的右键菜单中添加一个快捷方式,以便快速开启或关闭显示隐藏的系统文件及扩展名。 首先,我们需要了解Windows中的文件和文件夹隐藏机制。Windows提供了一种保护机制,可以将特定的...

    右键菜单_新建——管理

    标题“右键菜单_新建——管理”涉及到的是Windows操作系统中一个常见的用户界面功能,即右键快捷菜单的管理和优化。这个话题主要关注如何管理和减少在“新建”子菜单中过多的项目,这些项目通常是由安装的软件添加的...

    右键菜单命令提示符

    "右键菜单命令提示符" 是一种自定义右键菜单的方式,它允许用户在任意文件夹上直接通过右键菜单启动命令提示符(CMD),从而快速进入该文件夹并执行命令行操作。这种定制可以极大地提高工作效率,尤其是对于经常需要...

    带闪烁和右键菜单功能的VC6托盘程序

    "带闪烁和右键菜单功能的VC6托盘程序"是一个使用Microsoft Visual C++ 6.0(简称VC6)开发的项目,它具有两个主要特性:图标闪烁提示和右键菜单。 1. **图标闪烁提示**: - 当应用程序有重要信息或事件需要用户...

    对话框中添加右键菜单

    在Windows编程中,特别是在使用Microsoft Visual C++ (VC++)开发应用程序时,添加右键菜单是一项常见的需求。右键菜单提供了一种用户友好的交互方式,允许用户通过鼠标右键点击来执行特定的操作。本示例程序将展示...

    绿色vim及添加右键快捷方式

    在描述中提到的“添加右键快捷方式”,是指在Windows操作系统中为绿色Vim创建一个桌面快捷方式,并通过右键菜单将其集成。这样,用户可以直接在文件或文件夹上右键点击,然后选择“用Vim打开”来快速启动编辑器并...

    右键菜单扩展显示 隐藏 系统文件 扩展名

    2. **第三方软件**:例如“Context Menu Editor”,“ShellMenuView”等工具可以帮助用户轻松添加、删除和管理右键菜单项,而无需直接编辑注册表。 3. **自定义右键菜单**:开发者也可以为自己的应用程序添加右键...

    Unity扩展Hierachry的右键菜单

    Unity扩展Hierachry的右键菜单 Unity的Hierachry右键菜单是游戏开发中一个非常重要的功能,它可以帮助开发者快速创建GameObject对象,并对其进行编辑和设置。然而,默认的Hierachry右键菜单功能较少,无法满足...

    添加【使用Unity打开工程】到文件夹右键菜单

    为了方便快捷,我们可以将“使用Unity打开工程”这一功能添加到文件夹的右键菜单中,这样只需轻轻一点,就能直接启动Unity并加载项目。本教程将详细介绍如何实现这一功能。 首先,你需要了解`.reg`文件。`.reg`文件...

    右键菜单添加新建txt文档

    在Windows操作系统中,右键菜单是用户快速执行常用操作的便捷途径。然而,有时由于各种原因,例如系统更新、软件冲突或恶意软件清除,右键菜单可能会失去某些功能,比如“新建”项下的“文本文档”。这会给用户在...

    恢复去除ATI显卡右键菜单注册表项

    然而,有些用户可能并不需要或者希望移除这些额外的右键菜单项,以简化操作界面。本教程将详细介绍如何恢复或去除ATI显卡右键菜单的注册表项。 首先,我们需要理解注册表在Windows系统中的作用。注册表是Windows...

Global site tag (gtag.js) - Google Analytics