`
longgangbai
  • 浏览: 7331264 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

gef 上下文菜单的应用

阅读更多

  gef的编辑器视图中添加相关的上下文菜单,经常需要是实现org.eclipse.gef.ContextMenuProvider的类。在gef编辑器中注册。操作类似公共的快捷键设置。在编辑器视图的protected void configureGraphicalViewer()方法中添加相关的配置:

    ContextMenuProvider provider = new LogicContextMenuProvider(viewer, getActionRegistry());

viewer.setContextMenu(provider);

getSite().registerContextMenu(

"org.eclipse.gef.examples.logic.editor.contextmenu",

     provider, viewer);

viewer.setKeyHandler(new GraphicalViewerKeyHandler(viewer)

           .setParent(getCommonKeyHandler()));

关于ContextMenuProvider的实现类LogicContextMenuProvider代码如下:

package com.easyway.plugin.gef.diagram.logicdesigner;

import org.eclipse.gef.EditPartViewer;

import org.eclipse.gef.ui.actions.ActionRegistry;

import org.eclipse.gef.ui.actions.GEFActionConstants;

import org.eclipse.jface.action.IAction;

import org.eclipse.jface.action.IMenuManager;

import org.eclipse.jface.action.MenuManager;

import org.eclipse.jface.action.Separator;

import org.eclipse.ui.IWorkbenchActionConstants;

import com.easyway.plugin.gef.diagram.logicdesigner.actions.IncrementDecrementAction;

/**

 * 上下文菜单提供者的使用

 * @author longgangbai

 *

 */

publicclass LogicContextMenuProvider  extends org.eclipse.gef.ContextMenuProvider

{

 

private ActionRegistry actionRegistry;

 

public LogicContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) {

    super(viewer);

    setActionRegistry(registry);

}

 

/**

 * 创建上下文菜单

 */

publicvoid buildContextMenu(IMenuManager manager) {

    GEFActionConstants.addStandardActionGroups(manager);

 

    IAction action;

 

    action = getActionRegistry().getAction(GEFActionConstants.UNDO);

    manager.appendToGroup(GEFActionConstants.GROUP_UNDO, action);

 

    action = getActionRegistry().getAction(GEFActionConstants.REDO);

    manager.appendToGroup(GEFActionConstants.GROUP_UNDO, action);

 

    action = getActionRegistry().getAction(IWorkbenchActionConstants.PASTE);

    if (action.isEnabled())

       manager.appendToGroup(GEFActionConstants.GROUP_EDIT, action);

 

    action = getActionRegistry().getAction(IWorkbenchActionConstants.DELETE);

    if (action.isEnabled())

       manager.appendToGroup(GEFActionConstants.GROUP_EDIT, action);

 

    action = getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT);

    if (action.isEnabled())

       manager.appendToGroup(GEFActionConstants.GROUP_EDIT, action);

 

    action = getActionRegistry().getAction(IncrementDecrementAction.INCREMENT);

    if (action.isEnabled())

       manager.appendToGroup(GEFActionConstants.GROUP_REST, action);

 

    action = getActionRegistry().getAction(IncrementDecrementAction.DECREMENT);

    if (action.isEnabled())

       manager.appendToGroup(GEFActionConstants.GROUP_REST, action);

   

    // Alignment Actions

    MenuManager submenu = new MenuManager(LogicMessages.AlignmentAction_AlignSubmenu_ActionLabelText);

 

    action = getActionRegistry().getAction(GEFActionConstants.ALIGN_LEFT);

    if (action.isEnabled())

       submenu.add(action);

 

    action = getActionRegistry().getAction(GEFActionConstants.ALIGN_CENTER);

    if (action.isEnabled())

       submenu.add(action);

 

    action = getActionRegistry().getAction(GEFActionConstants.ALIGN_RIGHT);

    if (action.isEnabled())

       submenu.add(action);

      

    submenu.add(new Separator());

   

    action = getActionRegistry().getAction(GEFActionConstants.ALIGN_TOP);

    if (action.isEnabled())

       submenu.add(action);

 

    action = getActionRegistry().getAction(GEFActionConstants.ALIGN_MIDDLE);

    if (action.isEnabled())

       submenu.add(action);

 

    action = getActionRegistry().getAction(GEFActionConstants.ALIGN_BOTTOM);

    if (action.isEnabled())

       submenu.add(action);

 

    if (!submenu.isEmpty())

       manager.appendToGroup(GEFActionConstants.GROUP_REST, submenu);

 

    action = getActionRegistry().getAction(IWorkbenchActionConstants.SAVE);

    manager.appendToGroup(GEFActionConstants.GROUP_SAVE, action);

 

}

 

private ActionRegistry getActionRegistry() {

    returnactionRegistry;

}

 

privatevoid setActionRegistry(ActionRegistry registry) {

    actionRegistry = registry;

}

 

}

分享到:
评论

相关推荐

    GEF 入门教程 中文版

    **知识点1:上下文菜单的重要性** - 上下文菜单是在用户右键点击某个元素时弹出的菜单。 - 它可以根据用户的操作上下文提供相关的选项。 **知识点2:实现上下文菜单** 1. **定义菜单项**:使用GEF提供的API来定义...

    GEF入门系列.rar

    GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF...提供上下文菜单和键盘命令; 提供图形的缩放功能; 提供一个大纲视图,显示编辑区域的缩略图,或是树状模型结构; 支持撤消/重做功能;

    GEF开发指南

    环境菜单的创建指导开发者如何在GEF中添加自定义的上下文菜单,为用户提供更加丰富的交互方式。此外,还有创建自定义操作、属性页和添加新的图形元素等重要知识点。 GEF指南还详细讲解了拖放(Drag and Drop, DnD)...

    GEF入门详解DOC文档

    GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许...提供上下文菜单和键盘命令; 提供图形的缩放功能; 提供一个大纲视图,显示编辑区域的缩略图,或是树状模型结构; 支持撤消/重做功能; 等等。

    GEF研究总结

    5. **上下文菜单和键盘命令**:提供快捷操作方式。 6. **缩放功能**:支持图形的放大和缩小,方便查看细节。 7. **大纲视图**:显示编辑区域的缩略图或树状结构,便于整体把握。 8. **撤销/重做功能**:确保用户能...

    GEF中文帮助实例

    环境菜单是指在图形元素上右键点击时出现的上下文菜单。开发者可以自定义这个菜单,添加各种操作,如复制、粘贴、删除等,以适应特定的应用场景。 **十、创建用户自定义操作** GEF允许开发者定义和注册自定义的操作...

    eclipse插件开发学习笔记

    - 在SWT中,开发者可以通过设置上下文菜单来为容器增加额外的功能,比如添加剪切、复制、粘贴等操作。 **5.5 容器颜色、背景和鼠标指针设置** - 开发者可以自定义容器的颜色、背景和鼠标指针,以提升用户体验。 **...

    Eclipse SDK Undoable Operation Support

    每个操作可以属于一个或多个撤销上下文(`IUndoContext`),这些上下文定义了操作的历史范围,可以实现全局、局部或集成的撤销管理。 撤销上下文(`IUndoContext`)允许开发者创建不同范围的撤销历史,比如全局撤销...

Global site tag (gtag.js) - Google Analytics