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

gef中拖动拽动原理以及实现(一)

阅读更多

gef中拖动拽动原理以及实现

 

 

方案一:

创建拖拽对象的工厂

package com.easyway.plugin.gef.diagram.dev.model;

import org.eclipse.gef.requests.CreationFactory;

/**

 * 创建对象工厂

 * @author longgangbai

 *

 */

publicclass ElementFactory implements CreationFactory {

       private Object template;

       public ElementFactory(Object template) {

          this.template = template;

       }

       /**

        * 创建对象

        * @see org.eclipse.gef.requests.CreationFactory#getNewObject()

        */

       @Override

       public Object getNewObject() {

          try {

             return ((Class) template).newInstance();

          }

          catch (Exception e) {

             returnnull;

          }

       }

       /**

        *  创建对象工厂

        * @see org.eclipse.gef.requests.CreationFactory#getObjectType()

        */

       @Override

       public Object getObjectType() {

          returntemplate;

       }

    }

创建一个相关的拖动的类:用于实现拖动的功能。

package com.easyway.plugin.gef.diagram.dev.dnd;

import org.eclipse.gef.EditPartViewer;

import org.eclipse.gef.dnd.TemplateTransferDropTargetListener;

import org.eclipse.gef.requests.CreationFactory;

import com.easyway.plugin.gef.diagram.dev.model.ElementFactory;

/**

 * 设置相关的拖动转换模板为监听器

 * @author longgangbai

 *

 */

publicclass DiagramTemplateTransferDropTargetListener extends TemplateTransferDropTargetListener {

 

   /**

    *

    * @param viewer

    */

   public DiagramTemplateTransferDropTargetListener(EditPartViewer viewer) {

      super(viewer);

   }

   //------------------------------------------------------------------------

   // Abstract methods from TemplateTransferDropTargetListener

  /**

   * 注入相关的工厂的信息

   */

   protected CreationFactory getFactory(Object template) {

      returnnew ElementFactory(template);

   }

}

使用如下:

在相关的GraphicalEditorWithPalette类中使用代码如下:

   //------------------------------------------

   // Abstract methods from GraphicalEditor

   protectedvoid initializeGraphicalViewer() {

      // this uses the PartFactory set in configureGraphicalViewer

      // to create an EditPart for the diagram and sets it as the

      // content for the viewer

      getGraphicalViewer().setContents(this.diagram);     

      getGraphicalViewer().addDropTargetListener(new DiagramTemplateTransferDropTargetListener(getGraphicalViewer()));

   }

   // Overridden methods from GraphicalEditorWithPalette

   protectedvoid initializePaletteViewer() {

      super.initializePaletteViewer();

      getPaletteViewer().addDragSourceListener(

         new TemplateTransferDragSourceListener(getPaletteViewer()));

   }

 

 

分享到:
评论

相关推荐

    GEF的动态变化二

    在这个场景中,可能是讨论如何在GEF环境中实现图形元素的动态行为或者交互。 在描述中提到了一个博客链接,虽然内容没有给出,但我们可以推测博主可能在文章中详细解释了如何利用GEF进行图形动画或动态更新。在图形...

    GEF中属性页面的实现

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

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

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

    GEF典型实现例子

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

    自己下的GEF资源打包

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

    GEF中文教程+代码

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

    GEF实现拷贝粘贴

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

    GEF_Demo_Code20170307

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

    gef all 3.5.2 源码

    Gef All 3.5.2 是一款针对GDB(GNU调试器)的增强插件,旨在提供更加丰富和用户友好的交互式调试体验。这款源码包包含了开发和理解Gef All 3.5.2 功能所需的所有代码,对于想要深入学习调试工具或者想要参与开源项目...

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

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

    GEF 入门版中文教程 源码

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

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

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

    GEF入门学习例子

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

    一个GEF的简单例子

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

    一个GEF绘图的简单例子

    源码中会展示如何初始化模型,创建EditParts,定义适配器,以及如何实现DirectEdit和命令。 通过学习这个例子,开发者可以深入理解GEF的工作原理,进一步利用GEF开发复杂的图形编辑应用。同时,这也是一个很好的...

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

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

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

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

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

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

    GEF 入门教程 中文版

    在互联网上以及相关书籍(如IBM Redbook)中找到的主要文档更多地集中在GEF的理论概念上,而非具体如何使用GEF类的实际应用案例。因此,本教程旨在通过实际操作指导读者逐步掌握GEF的核心技术和实践技巧。 #### 二...

Global site tag (gtag.js) - Google Analytics