选项板提供了用户选择模型元素,并提供相应的机制把模型和视图加入图形编辑器的能力。
1.选项板(PaletteRoot)的功能
GEF是一个图形编辑框架,它的主编辑区域是一个图形的视图(类似与JFace的Viewer),另外,用户还可以选择选项板上相应的模型,把选择的模型对应的视图加入到图形编辑区域进行编辑。
在GEF中,图形编辑器实现类的getPaletteRoot方法将返回一个PaletteRoot对象,用户可以在PaletteRoot中添加模型选 项入口项(ToolEntry)。例如,在选择板中加入一个连线模型的入口,可以加入“new ConnectionCreationToolEntry("连线", "Create a connection", null, null, null);”,ToolEntry的参数描述了选项板中选项的显示标签、显示图标、提示信息、模型的模板类及模型的创建工厂类等信息。
2.选项板的实现
在选项板中创建模型的入口,能添加模型的选择项(ToolEntry)和模型分组项(PaletteDrawer),代码如下:
java 代码
- package com.example.tools;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
- import org.eclipse.gef.palette.ConnectionCreationToolEntry;
- import org.eclipse.gef.palette.PaletteContainer;
- import org.eclipse.gef.palette.PaletteDrawer;
- import org.eclipse.gef.palette.PaletteGroup;
- import org.eclipse.gef.palette.PaletteRoot;
- import org.eclipse.gef.palette.SelectionToolEntry;
- import org.eclipse.gef.palette.ToolEntry;
- import org.eclipse.gef.requests.SimpleFactory;
-
- import com.example.model.Node;
-
- public class PaletteFactory {
- public static PaletteRoot createPalette() {
-
- PaletteRoot paletteRoot = new PaletteRoot();
-
- paletteRoot.addAll(createCategories(paletteRoot));
- return paletteRoot;
- }
-
- private static List createCategories(PaletteRoot root) {
- List categories = new ArrayList();
-
- categories.add(createControlGroup(root));
- categories.add(createComponentsDrawer());
-
- return categories;
- }
-
- private static PaletteContainer createControlGroup(PaletteRoot root) {
- PaletteGroup controlGroup = new PaletteGroup("Control Group");
-
- List entries = new ArrayList();
-
- ToolEntry tool = new SelectionToolEntry();
- entries.add(tool);
-
- root.setDefaultEntry(tool);
-
- tool = new ConnectionCreationToolEntry("连线", "Create a connection", null, null, null);
- entries.add(tool);
-
- controlGroup.addAll(entries);
- return controlGroup;
- }
-
- private static PaletteContainer createComponentsDrawer() {
-
- PaletteDrawer drawer = new PaletteDrawer("Components");
-
- List entries = new ArrayList();
-
- ToolEntry tool = new CombinedTemplateCreationEntry("节点", "创建一个节点", Node.class, new SimpleFactory(
- Node.class), null, null);
- entries.add(tool);
-
- drawer.addAll(entries);
- return drawer;
- }
- }
上面代码加入了连线模型、分组项、取消选择项和一个节点项(Node模型)。建立的选项板如下图:
小结:
最近由于项目需要,开始学习GEF。首先感谢八进制,我就是照着他写的GEF入门系列,再配合书本学习的。感觉GEF是很完善的图形编辑框架,能够用它构 造出功能非常强大的图形编辑器,但同时GEF还是比较复杂的,特别是对于没有接触过的初学者来说,很有可能里面的类都不知道是干什么的,更不了解类中的方 法;即使从字面上知道了类的作用,具体自己写的时候又不知道如何下手,本人也遇到了这些问题。我想先把GEF的原理搞清楚,再来细看里面的细节可能要好一 些。
分享到:
相关推荐
**GEF原理** 主要包括以下几个关键部分: 1. **模型(Model)**:这是GEF应用程序的基础,包含了业务逻辑和数据。通常由EMF生成的Java类构成,它们定义了图形化元素的数据结构。 2. **视图(View)**:视图是模型在...
**GEF(Graphical Editing Framework)深度解析** GEF,全称为Graphical Editing Framework,是Eclipse平台下用于构建图形编辑器的...通过深入理解GEF的原理和实践,开发者可以更高效地构建出功能丰富的图形编辑应用。
本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF的基础概念和实现方法。 GEF的核心功能是提供了一套强大的组件和API,用于创建可交互的、图形式的用户界面。通过使用GEF,开发者可以轻松地创建出具有拖放...
标题“GEF典型实现例子”指的是使用Graphical Editing Framework (GEF)的示例应用。GEF是Eclipse平台下的一个开源项目,主要用于构建图形化编辑工具,它提供了丰富的图形用户界面(GUI)组件和框架,帮助开发者创建...
标题“GEF实现拷贝粘贴”涉及到的是在软件开发中使用Graphical Editing Framework(GEF)进行图形界面编辑时,如何实现复制和粘贴功能的技术。GEF是Eclipse平台下用于构建图形化编辑器的框架,它提供了一套完整的...
这个教程将带你深入理解GEF的基本概念和核心功能,通过八进制版本的源代码学习如何实现图形的生成、缩放、直接编辑以及连接线等功能。 首先,我们来了解一下GEF的核心组件和架构。GEF主要由以下几个部分组成: 1. ...
本篇文章将深入探讨GEF中的图形移动与缩放功能的实现。 首先,GEF的核心在于其事件处理机制。当用户在图形视图上执行操作(如点击、拖动等)时,SWT事件会被转换为请求(request),这些请求随后被发送到Controller...
**GEF入门系列 PDF 格式资料** GEF(Graphical Editing Framework)是Eclipse开源组织推出的一个图形编辑框架,主要用于构建可视化的图形编辑工具。它为开发人员提供了丰富的API和设计模式,使得创建复杂的图形用户...
**GEF教程及DEMO源码详解** GEF(Graphical Editing Framework)是Eclipse平台下的一个图形编辑框架,主要用于构建可自定义的图形化编辑工具。它为开发者提供了丰富的API和模型,使得开发人员可以方便地创建出复杂...
**GEF(Graphical Editing Framework)入门系列** GEF,全称为Graphical Editing Framework,是Eclipse项目中的一个核心组件,主要用于构建图形化编辑器。它提供了一个强大的框架,允许开发者创建可定制、灵活且...
开发者可以通过实现GEF提供的接口和回调方法,轻松地定制自己的图形编辑器,用于创建流程图、网络拓扑图、UML模型等各种图形表示。 本入门系列将涵盖以下几个主要知识点: 1. **EMF基础**:首先会讲解EMF的核心...
由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...
在本篇文章中,我们将深入探讨gef转折线的相关方法实现以及GEF的API。 首先,让我们理解一下什么是转折线。在图形编辑中,转折线通常指的是具有多个折点的线条,这些折点可以由用户交互式地调整,以改变线条的形状...
在GEF(Graphical Editing Framework)中,属性视图(Property View)的实现是一个关键功能,它允许用户查看和编辑图形模型的属性。属性视图是数据源与用户界面之间的桥梁,确保图形模型和属性视图之间保持同步更新...
通过分析这些示例代码,开发者可以更深入地理解GEF的工作原理,学习如何在实际项目中应用。 9. **调试与测试** 学习如何利用Eclipse的调试工具进行GEF应用的调试,以及编写测试用例验证功能的正确性。 10. **扩展...
在"GEF入门系列宝典"中,我们将深入探讨如何使用GEF进行Eclipse插件开发,以创建自定义的图形编辑器。以下是一些关键知识点: 1. **Eclipse插件体系结构**: - 插件是Eclipse的核心组成部分,它们通过OSGi模块系统...
图形编辑框架,是Eclipse旗下的强有力的Tool Project。利用GEF可以轻松实现类似于Visual Editor的可视化图形编辑应用程序,即以图形化的方式展示和编辑模型。