在我们实现一个gef编辑器的时候,会重新configureGraphicalViewer()方法,在这个方法里面我们会为GraphicalViewer设置一个RootEditPart,一般是ScalableFreeformRootEditPart。
RootEditPart接口:这个接口定义了几个方法,主要是用于获取当前的EditPartViewer,在gef中EditPartViewer才是我们在界面看到的一个个有效单元,而EditPart只是它的一个控制器。
1.FreeformGraphicalRootEditPart:一个gef默认提供的类,它是一个RootEditPart,它默认的建立了N个Layer,用分层展示的方式,展示编辑器中的界面元素,所有的layer都放在FreeformViewport里面。
关于创建layer的代码:
protected void createLayers(LayeredPane layeredPane) {
layeredPane.add(createGridLayer(), GRID_LAYER);
layeredPane.add(getPrintableLayers(), PRINTABLE_LAYERS);
layeredPane.add(new FreeformLayer(), HANDLE_LAYER);
layeredPane.add(new FeedbackLayer(), FEEDBACK_LAYER);
layeredPane.add(new GuideLayer(), GUIDE_LAYER);
}
protected LayeredPane createPrintableLayers() {
FreeformLayeredPane layeredPane = new FreeformLayeredPane();
layeredPane.add(new FreeformLayer(), PRIMARY_LAYER);
layeredPane.add(new ConnectionLayer(), CONNECTION_LAYER);
return layeredPane;
}
除了添加layer,FreeformGraphicalRootEditPart还对GridLayer做了一些处理:
if (property.equals(SnapToGrid.PROPERTY_GRID_ORIGIN)
|| property.equals(SnapToGrid.PROPERTY_GRID_SPACING)
|| property.equals(SnapToGrid.PROPERTY_GRID_VISIBLE))
refreshGridLayer();
我们可以在Editor中设置这三个属性的值,来改变GridLayer现实的状态:
getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE,
false);
getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_ENABLED,
false);
getGraphicalViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED,
true);
ScalableFreeformRootEditPart:是FreeformGraphicalRootEditPart的子类,它里面增加了一个ZoomManager的功能。
RulerRootEditPart:为编辑提供游标功能的EditPart,主要被gef默认提供的封装组件RulerComposite使用。RulerComposite大家肯定熟悉,是用于实现游标的那个功能的。
ScalableRootEditPart:能够缩放,但是不自由伸展。
分享到:
相关推荐
在本教程中,我们将深入探讨GEF的基本概念、设计原则以及如何使用它来开发自己的图形编辑器。 **1. GEF简介** GEF的设计目标是将图形编辑器的实现细节抽象化,让开发者能够专注于业务逻辑和模型设计,而不是底层的...
RCP是Eclipse组织提供的一种用于构建桌面应用的框架,而GEF则是用于创建图形化编辑器的工具包。本教程由法语版翻译而来,经过精心整理,以中文形式呈现,确保了国内开发者能够更方便地理解和学习。 GEF的核心概念...
安装完成后,开发者就可以在Eclipse的工作空间中创建新的GEF项目,利用提供的模板和类库开始设计图形编辑器。 GEF的核心概念包括: 1. **Model**:这是编辑器所表示的数据结构,通常是一个Java对象模型,用于存储...
标题中的“GEF资源打包”指的是一个集合了关于GEF(Graph Edit Framework)的各种学习资料的压缩文件。这个资源包可能包含了对理解、学习和使用GEF非常有帮助的材料。描述进一步说明了这个包中包含的具体内容,如...
在本篇文章中,我们将深入探讨gef转折线的相关方法实现以及GEF的API。 首先,让我们理解一下什么是转折线。在图形编辑中,转折线通常指的是具有多个折点的线条,这些折点可以由用户交互式地调整,以改变线条的形状...
`GEF`(Graphical Editing Framework)是Eclipse开源组织提供的一款强大的图形编辑框架,用于构建图形用户界面(GUI)应用,特别是那些需要进行图形绘制、编辑和操作的软件。这个入门学习例子旨在帮助初学者理解GEF的...
在Eclipse插件开发中,GEF提供了一套强大的框架,使得开发者可以方便地构建出功能丰富的图形用户界面(GUI),特别是用于绘制图表、流程图等可视化编辑场景。 1. **GEF基本概念** GEF包含了一系列的类和接口,如...
在Eclipse中,GEF(图形编辑框架)提供了一套用于构建图形编辑器的框架,使得开发者可以轻松地创建出复杂的图形用户界面,如流程图、网络拓扑图等。GEF提供了丰富的图形操作和交互机制,包括拖放、选择、连接线绘制...
在这个"GEF-Update-3.7.1.zip"压缩包中,包含了以下关键文件: 1. **content.jar**:这是一个包含GEF库核心内容的Java档案文件,里面封装了GEF框架的核心类和接口,以及相关的资源和配置。开发者可以通过导入这个...
本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF的基础概念和实现方法。 GEF的核心功能是提供了一套强大的组件和API,用于创建可交互的、图形式的用户界面。通过使用GEF,开发者可以轻松地创建出具有拖放...
在图形编辑框架(GEF,Graphical Editing Framework)中,锚点(Anchor)是一个关键概念,它是连接模型元素之间的连接线在元素上的固定点。在GEF中,锚点的定位直接影响到连接线的形状和行为,特别是当用户通过鼠标...
在实际项目中,GEF被广泛应用于各种图形化编辑工具的开发中。无论是创建复杂的数据流图、UML图还是其他类型的图形编辑器,GEF都能提供坚实的基础框架。其丰富的API和高度可定制性,使开发者能够快速构建出既美观又...
3. "如何在Eclipse3.3.1.1中安装VE,emf,GEF插件.doc" 提供了在特定版本的Eclipse中安装相关插件的步骤,这对于搭建开发环境至关重要。 4. "GEF_Tutorial.pdf" 和 "GEF_zh(1).pdf"、"GEF_zh.pdf" 是GEF的教程,可能...
在实际应用中,可以根据需求扩展属性视图,添加更多的属性描述符,支持不同的数据类型和交互方式,以提供更丰富的用户界面和编辑功能。通过理解并掌握GEF中的属性视图机制,开发者可以构建出强大的图形编辑工具,...
它提供了一套全面的API和工具,使得开发者可以方便地创建出复杂的图形用户界面,特别是针对模型驱动工程(MDE)中的图形化建模工具。本教程是针对想要学习和掌握GEF技术的开发者,通过实例教学,深入浅出地介绍GEF的...
在Java环境中,GEF常与SWT(Standard Widget Toolkit)结合使用,提供强大的图形渲染和交互功能。 本教程主要涉及以下几点关键知识点: 1. **GEF基础概念** GEF的核心是其五层架构,包括Model(模型)、View...
标题中的"GEF.rar"可能是指“Graph Editor Framework”的压缩包文件,这通常与软件开发,尤其是图形用户界面(GUI)的设计和实现有关。GEF(Graph Editor Framework)是Eclipse项目的一部分,它提供了一个用于构建...
GEF(Graphical Editing Framework)是Eclipse项目中的一个重要组成部分,它为开发图形化编辑器提供了强大的支持。在标题“GEF-SDK-3.6.2 jar”中,"GEF"即指代这一框架,"SDK"表示软件开发工具包,"3.6.2"则是该...