要实现在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中property view 页面的实现!介绍了其实现的步骤方法!还结合了实例进行讲解!
gef 绘图折线的实现方法。 gef API chm 格式
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...
GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很多,例如:UML类图编辑器、图形化XML编辑器、界面设计工具以及图形化...
SVG(Scalable Vector Graphics)是一种基于XML开放标准的矢量图形描述语言,支持对图形、图像、文字、透明效果和动画描述,并提供极强的交互性,被广泛使用在各应用系统中。但是,由于SVG源码可读性差,编写需时长,易...
dudu翻译的GEF中文教程,入门最佳资料。附每章代码。
这是我自己在学习GEF的时候做的一些总结。 1、GEF中的概念比如Command,Tool,Request等等。 2、GEF中使用到的几种设计模式。 3、GEF中对鼠标键盘事件处理的机制、流程。
实现一个典型的图形化应用程序,例如UML类图编辑器,这些预定义的Request基本够用了。然而很多需求不太符合约定俗成的使用习惯,因此实现起来更多依赖开发人员的编码,而不是开发框架带来的便利。在这种情况下,我们...
GEF: Graphical Editing Framework <br>GEF是一套MVC Framework,它能帮你比较容易的建立图形化的编辑器,V(View)的部分常常是基于SWT的Draw2D,因此Draw2D也看作是GEF的一部分。依赖:org.eclipse.gef***, org...
一个GEF的例子,例子中展示了利用GEF往画布上添加节点 删除节点,以及树形展现等得荣
这是我参考了一些其他资料,自己写的一个GEF示例...1. 在你的Eclipse中要有GEF, Draw2d的包 2. 将此压缩包中的eclipse project引入到你的Eclipse环境中 3. 运行这个插件 4. 看到界面后,点击 Tools -- Open GEF Editor
在Package Explorer的工程目录里点击右键菜单->Other里会多出一项ModelGoon Diagrams,可以建立class diagram,interaction diagram,package dependencies diagram,建好一个diagram文件后,直接将.java文件拖到图内...
实现gef模型连线间锚点的定位实现鼠标位置定位,就是鼠标在哪里,他的锚点就会在哪里!
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
GEF图形编辑框架使用指南,从新手到入门,详细的讲解了如何使用GEF进行图形编辑
GEF入门实例代码2《Eclipse插件开发》中实例
eclipse中emf,gef,ve的安装
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload
GEF小组的ppt,展示了如何将GEF应用到Web上的一些思路和做法。