要实现在GEF中被选中图形上的右键菜单,每个action完成如下三项工作:
<!--[if !supportLists]-->1、
<!--[endif]-->action类定义,一般情况的action都会在选中图形后操作,所以,一般都会继承自org.eclipse.gef.ui.actions.SelectionAction
import org.eclipse.gef.ui.actions.SelectionAction;
import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeEditPart;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import dbdesigner.diagram.edit.parts.TableEditPart;
public class TableProAction extends SelectionAction{
private IWorkbenchPart part;
public TableProAction(IWorkbenchPart part) {
super(part);
setId("tablePro");
setText("属性");
this.part=part;
}
@Override
public void run() {
super.run();
IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
TableEditPart tableEditPart = (TableEditPart) getSelectedObjects().get(0);
TableProDialog tp = new TableProDialog(workbenchWindow.getShell(),tableEditPart);
tp.open();
}
@Override
protected boolean calculateEnabled() {
if (getSelectedObjects().size() == 1 && (getSelectedObjects().get(0) instanceof ShapeEditPart)) {
ShapeEditPart part = (ShapeEditPart) getSelectedObjects().get(0);
if(part instanceof TableEditPart)
return true;
}
return false;
}
}
<!--[if !supportLists]-->2、
<!--[endif]-->在DbdesignerDiagramEditor的createActions中将上述action注册到ActionRegistry,并设定和selectionaction的关系,这个类的是GEF生成的代码,只需要修改以下两个地方
prot protected void configureGraphicalViewer() {
super.configureGraphicalViewer();
IDiagramGraphicalViewer viewer = getDiagramGraphicalViewer();
// configure the context menu provider
ContextMenuProvider cmProvider = new MyDiagramContextMenuProvider(viewer, getActionRegistry());
viewer.setContextMenu(cmProvider);
getSite().registerContextMenu(cmProvider, viewer);
}
/**
* Create the actions
*/
protected void createActions() {
// Create the actions
super.createActions();
ActionRegistry ar = getActionRegistry();
//一组继承自selectionaction的action
IAction[] actions = new IAction[] { new TableProAction(this) // 编辑属性
};
for (IAction a : actions) {
ar.registerAction(a);
getSelectionActions().add(a.getId());
}
}
<!--[if !supportLists]-->3、
<!--[endif]-->在新增一个MyDiagramContextMenuProvider类,注册到右键菜单
public class MyDiagramContextMenuProvider extends ContextMenuProvider{
/** The editor's action registry. */
private ActionRegistry actionRegistry;
public MyDiagramContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) {
super(viewer);
if (registry == null) {
throw new IllegalArgumentException();
}
actionRegistry = registry;
}
public void buildContextMenu(IMenuManager menu) {
//添加用户自定义菜单项
menu.add(getAction("tablePro"));
}
// 过滤不需要的上下文菜单
public IContributionItem[] getItems() {
IContributionItem[] ic = super.getItems();
filterSystemPopMenu(ic);
return ic;
}
private void filterSystemPopMenu(IContributionItem[] ic)
{
for (int i=0;i
分享到:
相关推荐
标题“GEF实现拷贝粘贴”涉及到的是在软件开发中使用Graphical Editing Framework(GEF)进行图形界面编辑时,如何实现复制和粘贴功能的技术。GEF是Eclipse平台下用于构建图形化编辑器的框架,它提供了一套完整的...
在本篇文章中,我们将深入探讨gef转折线的相关方法实现以及GEF的API。 首先,让我们理解一下什么是转折线。在图形编辑中,转折线通常指的是具有多个折点的线条,这些折点可以由用户交互式地调整,以改变线条的形状...
在GEF中,模型是数据结构的抽象,用于存储和管理图形化编辑器所显示的信息。开发者需要定义自己的模型类,这些类通常继承自GEF提供的基础类,如`org.eclipse.gef.mvc.models.Model`。模型类中的属性和方法反映了图形...
在GEF(Graphical Editing Framework)中,属性视图(Property View)的实现是一个关键功能,它允许用户查看和编辑图形模型的属性。属性视图是数据源与用户界面之间的桥梁,确保图形模型和属性视图之间保持同步更新...
这两篇文章可能分别由CSDN博主和博客园博主分享了他们在使用GEF和相关技术,如Draw2D(用于在GEF中绘制2D图形的库)时的经验和技巧。 在深入理解GEF时,我们需要关注以下几个核心概念: 1. **模型-视图-控制器(MVC...
GEF中的视图由`GraphicalViewer`类实现,它管理着画布上的所有图形元素。 3. **编辑器(Editor)**: 编辑器是Eclipse插件开发中的一个关键组件,它提供了对模型的编辑功能。GEF编辑器通常基于`...
在互联网上以及相关书籍(如IBM Redbook)中找到的主要文档更多地集中在GEF的理论概念上,而非具体如何使用GEF类的实际应用案例。因此,本教程旨在通过实际操作指导读者逐步掌握GEF的核心技术和实践技巧。 #### 二...
GEF为开发者提供了一个完整的图形化建模解决方案,它不仅能够单独使用,还能与其他技术,如EMF(Eclipse Modeling Framework)或GMF(Graphical Modeling Framework)相连接,从而在应用开发中实现更高层次的抽象。...
**GEF(Graphical Editing Framework)** 是一个强大的开源框架,用于构建图形化编辑器,主要在Java平台上运行,由Eclipse基金会维护。这个框架提供了一整套工具,帮助开发者创建出具有专业级别的图形用户界面,特别...
在GEF(Graphical Editing Framework)中,理解其工作流程对于开发图形编辑工具至关重要。GEF主要用于构建基于SWT和JFace的图形用户界面,它提供了丰富的功能来处理图形元素的绘制、操作和交互。本篇文章将深入探讨...
“视图”在GEF中代表了一个图形化的显示区域,它展示了模型数据的某个方面或多个方面的可视化表示。一个视图可以包含多个层,每个层负责展示不同类型的图形元素。视图通常与Eclipse工作台中的其他组件一起使用,如...
这个项目旨在演示如何利用GEF进行图形界面开发,并且特别关注了通过适配器(Adapter)扩展点来实现属性页配置以及在非Editor的ViewPart中使用GEF。 GEF是Eclipse平台下的一个开源库,专门用于构建可自定义的、图形...
在本教程中,你将学习如何使用GEF构建基本的图形编辑器,包括: - 创建模型类和绑定到视图 - 实现基本的绘图元素和连接线 - 处理用户交互,如拖放、选择和修改元素 - 集成RCP环境,构建完整的图形编辑器应用 - 使用...
《Eclipse开发使用GEF和EMF》是IBM红皮书系列中的一部经典著作,主要探讨了如何在Eclipse环境中利用GEF(图形编辑框架)和EMF( Eclipse模型框架)进行图形化应用程序的开发。这两项技术是Eclipse平台上的核心组件,...
**GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台上广泛使用,特别是在开发复杂的图形用户界面和工具时。本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF...
总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的设计,还包括视图的绘制、用户交互的处理以及可撤销/重做机制的实现。通过实践,开发者可以...
在实际项目中,GEF被广泛应用于各种图形化编辑工具的开发中。无论是创建复杂的数据流图、UML图还是其他类型的图形编辑器,GEF都能提供坚实的基础框架。其丰富的API和高度可定制性,使开发者能够快速构建出既美观又...
通过这些资源,学习者可以深入理解GEF和Draw2D的工作原理,掌握如何在Eclipse环境中构建图形编辑器,并能够进行自定义图形编辑器的开发。这些文档涵盖了从安装、配置到实际编程的各个环节,对于提升图形界面开发能力...
在Android ADT中,GEF的作用主要体现在可视化布局编辑器上,它允许开发者通过拖放的方式设计XML布局文件,实时预览UI效果,以及方便地调整控件的属性和布局关系。此外,GEF还支持图元工厂(MetaFactory),可以生成...