`
longgangbai
  • 浏览: 7331000 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

gef中添加可折叠调色板原理以及实现(一)

阅读更多

   最近心情不好,写点博客解闷?这不项目使用eclipse插件开发,使用点rcp,jface,gef,draw2d就总结一下。gef的学习主要看八进制blog学习的:http://www.cnblogs.com/bjzhanghao

gef中添加可折叠调色板原理以及实现:

实现可折叠的调色板的编辑器必须继承自GraphicalEditorWithPaletteGEF 3.0提供了一个功能更加丰富的编辑器父类:GraphicalEditorWithFlyoutPalette,继承它的编辑器具有一个可以折叠的工具条,并且能够利用Eclipse自带的调色板视图,当调色板视图显示时,工具条会自动转移到这个视图中。

与以前的GraphicalEditorWithPalette相比,继承 GraphicalEditorWithFlyoutPalette的编辑器要多做一些工作。首先要实现getPalettePreferences() 方法,它返回一个FlyoutPreferences实例,作用是把调色板的几个状态信息(位置、大小和是否展开)保存起来,这样下次打开编辑器的时候就可以自动套用这些设置。下面使用偏好设置的方式保存和载入这些状态,你也可以使用其他方法,比如保存为.properties文件:

/**

* By default, this method returns a FlyoutPreferences object that stores

*the flyout  settings in the GEF plugin.  Sub-classes may override.

* @returnthe FlyoutPreferences object used to save the flyout

* palette's preferences

*/

@Override

protected FlyoutPreferences getPalettePreferences() {

        returnnew FlyoutPreferences(){

           @Override

           publicint getDockLocation() {

            return Activator.getDefault().getPreferenceStore().getInt(IConstants.PRE_PALETTE_DOC_LOCATION);

           }

           @Override

           publicint getPaletteState() {

              // TODO Auto-generated method stub

               return 0;

           }

           @Override

           publicint getPaletteWidth() {

              // TODO Auto-generated method stub

              return 0;

           }

           @Override

           publicvoid setDockLocation(int location) {              Activator.getDefault().getPreferenceStore().setValue(IConstants.PRE_PALETTE_DOC_LOCATION,location);

           }

 

           @Override

           publicvoid setPaletteState(int state) {

              // TODO Auto-generated method stub

             

           }

 

           @Override

           publicvoid setPaletteWidth(int width) {

              // TODO Auto-generated method stub

             

           }

          

       };

    }

然后要覆盖缺省的createPaletteViewerProvider()实现,在这里为调色板增加拖放支持,即指定调色板为拖放源(之所以用这样的方式,原因是在编辑器里没有办法得到它对应的调色板实例),在以前这个工作通常是在initializePaletteViewer ()方法里完成的,而现在这个方法已经不需要了:

 

    /**

     * 创建可折叠的调色板提供者

     */

    @Override

    protected PaletteViewerProvider createPaletteViewerProvider() {

       returnnew PaletteViewerProvider(getEditDomain()){

           protectedvoid configurePaletteViewer(PaletteViewer viewer)

           {

                super.configurePaletteViewer(viewer);

                viewer.addDragSourceListener(new TemplateTransferDragSourceListener(viewer));

           }

       };

    }

GEF 3.0还允许用户对调色板里的各种工具进行定制,例如隐藏某个工具,或是修改工具的描述等等,这是通过给PaletteViewer定义一个 PaletteCustomizer实例实现的,但由于时间关系,这里暂时不详细介绍了,如果需要这项功能你可以参考Logic例子中的实现方法。

分享到:
评论

相关推荐

    GEF中属性页面的实现

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

    GEF实现拷贝粘贴

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

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

    - `org.eclipse.gef.commands.Command`:命令模式在GEF中用于执行可撤销/重做的操作,如添加、删除或修改图形元素。 - `org.eclipse.gef.requests.Request`:表示用户或系统对编辑域的某种请求,如创建新对象或选择...

    GEF中文教程+代码

    - **Step 1-3**:基础概念和环境设置,讲解如何创建第一个GEF编辑器,包括模型定义、EditPart实现以及与Eclipse IDE的集成。 - **Step 4-5**:深入探讨模型-视图映射,包括图形元素的布局和连接线的绘制。 - **Step ...

    GEF典型实现例子

    源码标签表明内容可能包含了实际的代码示例,这对于学习和理解GEF的工作原理和如何在实际项目中应用非常有帮助。工具标签则暗示了这个例子可能涉及到了使用GEF作为开发工具或者集成到其他工具链中的情况。 文件名...

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

    7. **调色板查看器**:允许用户从一个可定制的调色板中选择图形元素。 **教程目标与资源** 该教程的目标是介绍GEF和Draw2d,强调其主要特性,教导如何快速找到解决方案,并提供实践经验,帮助避免常见错误。参与者...

    RCP与GEF课件,介绍RCP和GEF各组成部分和工作原理

    **GEF(Graphical Editing Framework)** 是Eclipse中的一个图形编辑框架,它为开发图形化编辑器提供了基础。GEF支持创建各种图形用户界面,包括绘图工具、流程图和模型编辑器。 GEF的主要组件包括: 1. **Model**...

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

    **GEF(Graphical Editing Framework)** 是一个用于构建图形化编辑器的开源框架,它在Eclipse平台中被广泛使用。GEF提供了一套全面的API和模型,帮助开发者快速构建可定制的、交互式的图形用户界面。该框架的核心...

    GEF入门学习例子

    这个入门学习例子旨在帮助初学者理解GEF的基本用法和核心概念,通过实例展示如何利用GEF实现工具栏、菜单栏、属性栏以及图形的交互功能,如移动、删除、撤销、连线等,并涵盖了大纲视图和鹰眼功能的实现。...

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

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

    GEF 入门版中文教程 源码

    GEF提供了基础框架来实现这一转换,允许用户与模型进行交互。 3. **编辑器(Editor)**:在RCP环境中,编辑器是包含视图的工作空间,它处理用户的输入并更新模型。GEF提供了一套机制来创建和管理编辑器。 4. **命令...

    GEF快速入门教程和EMF教程

    通过本教程,您应该能够理解GEF的基本结构和工作原理,以及如何在Eclipse RCP应用中集成GEF。此外,还介绍了如何设置项目依赖、创建编辑器以及实现GEF的基本组件。这些步骤不仅适用于本教程的示例,也是构建更复杂...

    一个GEF的简单例子

    在提供的"GEFApp"压缩包中,包含了一个基于GEF的简单应用实例。这个应用可能展示了一个基本的图形编辑环境,用户可能可以创建、移动和删除图形元素,以及通过连线连接不同的元素。源代码分析可以帮助我们理解GEF的...

    GEF入门实例代码2《Eclipse插件开发》中实例

    总之,通过这个"GEF入门实例代码2",开发者可以了解到如何在Eclipse中构建一个基于GEF的图形编辑器,这不仅涉及数据模型的设计,还包括视图的绘制、用户交互的处理以及可撤销/重做机制的实现。通过实践,开发者可以...

    一个GEF绘图的简单例子

    6. **命令类**: 实现具体操作的命令,如添加、删除、移动图形元素,必须遵循GEF的命令模式。 **使用步骤** 1. **创建模型**: 设计数据模型,定义图形元素的属性和关系。 2. **定义图元**: 创建自定义的Figure子类...

    自己下的GEF资源打包

    描述进一步说明了这个包中包含的具体内容,如“GEF_Tutorial”、“GEF实例”、“入门教程”以及“GEF-whole-upload”,这些都暗示了这是一个全面的学习资源,旨在帮助用户从基础到实践全方位掌握GEF。 GEF,全称为...

    GEF 入门教程 中文版

    - 添加新的图形元素是GEF中最常见的操作之一。 - 这些元素可以是节点、边、形状等。 **知识点2:实现步骤** 1. **定义新元素模型**:使用Java定义新元素的模型类。 2. **创建新元素视图**:使用GEF提供的绘图工具...

    GEF_Demo_Code20170307

    - `test.gef.demo`:可能是一个更复杂的示例,展示了如何在ViewPart中集成GEF,以及适配器扩展点的实现,可能包含属性页配置的逻辑。 通过学习这个示例代码,开发者可以了解如何在Eclipse RCP环境中有效地使用GEF...

    GEF开发指南

    GEF为开发者提供了一个完整的图形化建模解决方案,它不仅能够单独使用,还能与其他技术,如EMF(Eclipse Modeling Framework)或GMF(Graphical Modeling Framework)相连接,从而在应用开发中实现更高层次的抽象。...

Global site tag (gtag.js) - Google Analytics