在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;
}
}
相关推荐
**知识点1:上下文菜单的重要性** - 上下文菜单是在用户右键点击某个元素时弹出的菜单。 - 它可以根据用户的操作上下文提供相关的选项。 **知识点2:实现上下文菜单** 1. **定义菜单项**:使用GEF提供的API来定义...
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF...提供上下文菜单和键盘命令; 提供图形的缩放功能; 提供一个大纲视图,显示编辑区域的缩略图,或是树状模型结构; 支持撤消/重做功能;
环境菜单的创建指导开发者如何在GEF中添加自定义的上下文菜单,为用户提供更加丰富的交互方式。此外,还有创建自定义操作、属性页和添加新的图形元素等重要知识点。 GEF指南还详细讲解了拖放(Drag and Drop, DnD)...
GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许...提供上下文菜单和键盘命令; 提供图形的缩放功能; 提供一个大纲视图,显示编辑区域的缩略图,或是树状模型结构; 支持撤消/重做功能; 等等。
5. **上下文菜单和键盘命令**:提供快捷操作方式。 6. **缩放功能**:支持图形的放大和缩小,方便查看细节。 7. **大纲视图**:显示编辑区域的缩略图或树状结构,便于整体把握。 8. **撤销/重做功能**:确保用户能...
环境菜单是指在图形元素上右键点击时出现的上下文菜单。开发者可以自定义这个菜单,添加各种操作,如复制、粘贴、删除等,以适应特定的应用场景。 **十、创建用户自定义操作** GEF允许开发者定义和注册自定义的操作...
- 在SWT中,开发者可以通过设置上下文菜单来为容器增加额外的功能,比如添加剪切、复制、粘贴等操作。 **5.5 容器颜色、背景和鼠标指针设置** - 开发者可以自定义容器的颜色、背景和鼠标指针,以提升用户体验。 **...
每个操作可以属于一个或多个撤销上下文(`IUndoContext`),这些上下文定义了操作的历史范围,可以实现全局、局部或集成的撤销管理。 撤销上下文(`IUndoContext`)允许开发者创建不同范围的撤销历史,比如全局撤销...