`
LuChar
  • 浏览: 74805 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

GEF原理及实现系列(八、选项板)

    博客分类:
  • GEF
阅读更多
选项板提供了用户选择模型元素,并提供相应的机制把模型和视图加入图形编辑器的能力。
1.选项板(PaletteRoot)的功能
    GEF是一个图形编辑框架,它的主编辑区域是一个图形的视图(类似与JFace的Viewer),另外,用户还可以选择选项板上相应的模型,把选择的模型对应的视图加入到图形编辑区域进行编辑。
    在GEF中,图形编辑器实现类的getPaletteRoot方法将返回一个PaletteRoot对象,用户可以在PaletteRoot中添加模型选 项入口项(ToolEntry)。例如,在选择板中加入一个连线模型的入口,可以加入“new ConnectionCreationToolEntry("连线", "Create a connection", null, null, null);”,ToolEntry的参数描述了选项板中选项的显示标签、显示图标、提示信息、模型的模板类及模型的创建工厂类等信息。
2.选项板的实现
    在选项板中创建模型的入口,能添加模型的选择项(ToolEntry)和模型分组项(PaletteDrawer),代码如下:
java 代码
 
  1. package com.example.tools;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.eclipse.gef.palette.CombinedTemplateCreationEntry;  
  7. import org.eclipse.gef.palette.ConnectionCreationToolEntry;  
  8. import org.eclipse.gef.palette.PaletteContainer;  
  9. import org.eclipse.gef.palette.PaletteDrawer;  
  10. import org.eclipse.gef.palette.PaletteGroup;  
  11. import org.eclipse.gef.palette.PaletteRoot;  
  12. import org.eclipse.gef.palette.SelectionToolEntry;  
  13. import org.eclipse.gef.palette.ToolEntry;  
  14. import org.eclipse.gef.requests.SimpleFactory;  
  15.   
  16. import com.example.model.Node;  
  17.   
  18. public class PaletteFactory {  
  19.     public static PaletteRoot createPalette() {  
  20.         //新建选项板  
  21.         PaletteRoot paletteRoot = new PaletteRoot();  
  22.         //添加选项板中的模型选项  
  23.         paletteRoot.addAll(createCategories(paletteRoot));  
  24.         return paletteRoot;  
  25.     }  
  26.   
  27.     private static List createCategories(PaletteRoot root) {  
  28.         List categories = new ArrayList();  
  29.         //添加分组选项  
  30.         categories.add(createControlGroup(root));  
  31.         categories.add(createComponentsDrawer());  
  32.   
  33.         return categories;  
  34.     }  
  35.   
  36.     private static PaletteContainer createControlGroup(PaletteRoot root) {  
  37.         PaletteGroup controlGroup = new PaletteGroup("Control Group");  
  38.   
  39.         List entries = new ArrayList();  
  40.         //添加取消模型选择项  
  41.         ToolEntry tool = new SelectionToolEntry();  
  42.         entries.add(tool);  
  43.         //设置SelectionToolEntry为默认选项  
  44.         root.setDefaultEntry(tool);  
  45.         //添加连线模型选项入口  
  46.         tool = new ConnectionCreationToolEntry("连线""Create a connection"nullnullnull);  
  47.         entries.add(tool);  
  48.   
  49.         controlGroup.addAll(entries);  
  50.         return controlGroup;  
  51.     }  
  52.   
  53.     private static PaletteContainer createComponentsDrawer() {  
  54.         //添加组件分组页  
  55.         PaletteDrawer drawer = new PaletteDrawer("Components");  
  56.   
  57.         List entries = new ArrayList();  
  58.         //添加Node模型选项入口  
  59.         ToolEntry tool = new CombinedTemplateCreationEntry("节点""创建一个节点", Node.classnew SimpleFactory(  
  60.                 Node.class), nullnull);  
  61.         entries.add(tool);  
  62.   
  63.         drawer.addAll(entries);  
  64.         return drawer;  
  65.     }  
  66. }  

上面代码加入了连线模型、分组项、取消选择项和一个节点项(Node模型)。建立的选项板如下图:

小结:
    最近由于项目需要,开始学习GEF。首先感谢八进制,我就是照着他写的GEF入门系列,再配合书本学习的。感觉GEF是很完善的图形编辑框架,能够用它构 造出功能非常强大的图形编辑器,但同时GEF还是比较复杂的,特别是对于没有接触过的初学者来说,很有可能里面的类都不知道是干什么的,更不了解类中的方 法;即使从字面上知道了类的作用,具体自己写的时候又不知道如何下手,本人也遇到了这些问题。我想先把GEF的原理搞清楚,再来细看里面的细节可能要好一 些。
分享到:
评论

相关推荐

    GEF原理的详细介绍+程序实例和程序源码

    **GEF原理** 主要包括以下几个关键部分: 1. **模型(Model)**:这是GEF应用程序的基础,包含了业务逻辑和数据。通常由EMF生成的Java类构成,它们定义了图形化元素的数据结构。 2. **视图(View)**:视图是模型在...

    eclipse gef原理的详细介绍PPT,很有参考价值

    **GEF(Graphical Editing Framework)深度解析** GEF,全称为Graphical Editing Framework,是Eclipse平台下用于构建图形编辑器的...通过深入理解GEF的原理和实践,开发者可以更高效地构建出功能丰富的图形编辑应用。

    GEF入门必读 GEF入门系列 GEF-whole-upload

    本资料集旨在为初学者提供一个全面的入门指南,帮助理解GEF的基础概念和实现方法。 GEF的核心功能是提供了一套强大的组件和API,用于创建可交互的、图形式的用户界面。通过使用GEF,开发者可以轻松地创建出具有拖放...

    GEF典型实现例子

    标题“GEF典型实现例子”指的是使用Graphical Editing Framework (GEF)的示例应用。GEF是Eclipse平台下的一个开源项目,主要用于构建图形化编辑工具,它提供了丰富的图形用户界面(GUI)组件和框架,帮助开发者创建...

    GEF实现拷贝粘贴

    标题“GEF实现拷贝粘贴”涉及到的是在软件开发中使用Graphical Editing Framework(GEF)进行图形界面编辑时,如何实现复制和粘贴功能的技术。GEF是Eclipse平台下用于构建图形化编辑器的框架,它提供了一套完整的...

    GEF入门教程 八进制版本的源代码

    这个教程将带你深入理解GEF的基本概念和核心功能,通过八进制版本的源代码学习如何实现图形的生成、缩放、直接编辑以及连接线等功能。 首先,我们来了解一下GEF的核心组件和架构。GEF主要由以下几个部分组成: 1. ...

    GEF理解系列三

    本篇文章将深入探讨GEF中的图形移动与缩放功能的实现。 首先,GEF的核心在于其事件处理机制。当用户在图形视图上执行操作(如点击、拖动等)时,SWT事件会被转换为请求(request),这些请求随后被发送到Controller...

    GEF入门系列 pdf 格式资料

    **GEF入门系列 PDF 格式资料** GEF(Graphical Editing Framework)是Eclipse开源组织推出的一个图形编辑框架,主要用于构建可视化的图形编辑工具。它为开发人员提供了丰富的API和设计模式,使得创建复杂的图形用户...

    GEF教程及demo源码

    **GEF教程及DEMO源码详解** GEF(Graphical Editing Framework)是Eclipse平台下的一个图形编辑框架,主要用于构建可自定义的图形化编辑工具。它为开发者提供了丰富的API和模型,使得开发人员可以方便地创建出复杂...

    GEF入门系列

    **GEF(Graphical Editing Framework)入门系列** GEF,全称为Graphical Editing Framework,是Eclipse项目中的一个核心组件,主要用于构建图形化编辑器。它提供了一个强大的框架,允许开发者创建可定制、灵活且...

    EMF_GEF_入门系列

    开发者可以通过实现GEF提供的接口和回调方法,轻松地定制自己的图形编辑器,用于创建流程图、网络拓扑图、UML模型等各种图形表示。 本入门系列将涵盖以下几个主要知识点: 1. **EMF基础**:首先会讲解EMF的核心...

    Eclipse插件开发:GEF入门系列宝典_gef_

    由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。

    GEF入门系列.rar

    GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...

    gef 转折线的相关方法实现和 GEF的API chm 格式

    在本篇文章中,我们将深入探讨gef转折线的相关方法实现以及GEF的API。 首先,让我们理解一下什么是转折线。在图形编辑中,转折线通常指的是具有多个折点的线条,这些折点可以由用户交互式地调整,以改变线条的形状...

    GEF中属性页面的实现

    在GEF(Graphical Editing Framework)中,属性视图(Property View)的实现是一个关键功能,它允许用户查看和编辑图形模型的属性。属性视图是数据源与用户界面之间的桥梁,确保图形模型和属性视图之间保持同步更新...

    GEF教程及demo源码GEF_RCP_DEMO.zip

    通过分析这些示例代码,开发者可以更深入地理解GEF的工作原理,学习如何在实际项目中应用。 9. **调试与测试** 学习如何利用Eclipse的调试工具进行GEF应用的调试,以及编写测试用例验证功能的正确性。 10. **扩展...

    Eclipse插件开发:GEF入门系列宝典

    在"GEF入门系列宝典"中,我们将深入探讨如何使用GEF进行Eclipse插件开发,以创建自定义的图形编辑器。以下是一些关键知识点: 1. **Eclipse插件体系结构**: - 插件是Eclipse的核心组成部分,它们通过OSGi模块系统...

    GEF简介及应用

    图形编辑框架,是Eclipse旗下的强有力的Tool Project。利用GEF可以轻松实现类似于Visual Editor的可视化图形编辑应用程序,即以图形化的方式展示和编辑模型。

Global site tag (gtag.js) - Google Analytics