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

gef编辑器中需要采用向导页

阅读更多

    在一般的gef编辑器中需要采用向导页,生成一个格式的gef编辑文件。例如JBPM中创建流程图过程。

 重点:

流程文件在编辑器中打开:

流程文件的保存:

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

import java.io.InputStream;

import org.eclipse.core.resources.IFile;

import org.eclipse.jface.viewers.IStructuredSelection;

import org.eclipse.jface.wizard.Wizard;

import org.eclipse.swt.widgets.Composite;

import org.eclipse.ui.INewWizard;

import org.eclipse.ui.IWorkbench;

import org.eclipse.ui.IWorkbenchPage;

import org.eclipse.ui.IWorkbenchWindow;

import org.eclipse.ui.dialogs.WizardNewFileCreationPage;

import org.eclipse.ui.part.FileEditorInput;

 

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

/**

 * 添加向导页

 * @author longgangbai

 *

 */

publicclass DiagramCreationWizard extends Wizard implements INewWizard {

 

   //向导页对象

   private WizardPage wizardPage;

   //选中对象

   private IStructuredSelection selection;

   //工作平台

   private IWorkbench workbench;

 

 

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

   // Abstract methods from IWorkbenchWizard

   @Override

   publicvoid init(IWorkbench workbench, IStructuredSelection currentSelection) {

      this.workbench = workbench;

      this.selection = currentSelection;

   }

 

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

   // Overridden from Wizard

   @Override

   publicvoid addPages() {

      // by default the superclass doesn't have any pages - here we add one

      this.wizardPage = new WizardPage(this.workbench, this.selection);

      addPage(this.wizardPage);

   }

 

 

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

  // Abstract methods from Wizard

  @Override

   publicboolean performFinish() {

      returnthis.wizardPage.finish();

   }

}

/**

 * 添加一个向导页面

 * (备注:此处给eclipse系统新建的基础上添加相关的向导继承WizardNewFileCreationPage

 * @author longgangbai

 *

 */

class WizardPage extends WizardNewFileCreationPage {

 

   private IWorkbench workbench;

 

   public WizardPage(IWorkbench aWorkbench, IStructuredSelection selection) {

      super("自定义流程向导", selection);

      this.setTitle("创建自定义流程文件");

      this.setDescription("创建自定义流程文件");

      this.workbench = aWorkbench;

   }

   publicboolean finish() {

       //创建一个新文件中

      IFile newFile = createNewFile();

      if (newFile == null)

         returnfalse; // ie.- creation was unsuccessful

 

      // Since the file resource was created fine, open it for editing

      // iff requested by the user

      try {

         IWorkbenchWindow dwindow = workbench.getActiveWorkbenchWindow();

         IWorkbenchPage page = dwindow.getActivePage();

         if (page != null)

         {

             page.openEditor(new FileEditorInput(newFile),DiagramEditor.ID);

         }

      }

      catch (org.eclipse.ui.PartInitException e) {

         e.printStackTrace();

         returnfalse;

      }

      returntrue;

   }

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

   // Overridden from WizardNewFileCreationPage

   @Override

   publicvoid createControl(Composite parent) {

      super.createControl(parent);

      this.setFileName("model.river");

      setPageComplete(validatePage());

   }

   @Override

   protected InputStream getInitialContents() {

      // by default the superclass returns null for this

      Diagram diagram = new Diagram();

      InputStream istream = null;

      try {

         istream = diagram.getAsStream();

      }

      catch (Exception e) {

         e.printStackTrace();

      }

      return istream;

   }

}

关于编辑器向导的plugin.xml配置如下:

   <extensionpoint="org.eclipse.ui.newWizards">

      <categoryid="com.easyway.plugin.gef.diagram.dev"name="diagram"/>

      <wizardid="com.easyway.plugin.gef.diagram.dev.wizard.new.file"

            name="River Model"

            icon="icons/river.gif"

            category="com.easyway.plugin.gef.diagram.dev"            class="com.easyway.plugin.gef.diagram.dev.ui.DiagramCreationWizard">

          <description>Wizard for creating a new River model.</description>

         <selectionclass="org.eclipse.core.resources.IResource">

        </selection>

     </wizard>

  </extension>

分享到:
评论

相关推荐

    GEF初学者开发样例

    - **创建编辑器项目**: 使用Eclipse的插件开发向导创建一个新的GEF编辑器项目。 - **定义模型**: 使用EMF生成模型类,并定义图形元素的数据结构。 - **实现视图和编辑器**: 根据模型生成视图和编辑器的初始代码,...

    GEF开发指南

    GEF的开发指南详细讲解了如何使用该框架进行图形编辑,内容涵盖了从创建RCP(Rich Client Platform)插件开始,到创建图形编辑器、与图形的交互、撤销/回复操作、缩放、快捷键设置、大纲视图、鸟瞰视图、环境菜单、...

    eclipse gef demo

    Eclipse GEF(Graphical Editing Framework)是一款强大的图形编辑框架,用于在Eclipse环境中开发图形化用户界面,尤其是用于创建可视化的建模工具和流程编辑器。本DEMO旨在指导开发者如何利用GEF来开发Eclipse插件...

    GEF-ALL-3.9.100.zip

    同时,Eclipse的插件系统使得开发者能够无缝地集成GEF编辑器到现有的Eclipse工作台环境中。 总的来说,"GEF-ALL-3.9.100.zip" 提供了一个完整的开发环境,帮助开发者利用GEF框架构建图形编辑工具,适用于各种领域,...

    Eclipse插件开发--gef开发指南与入门系列宝典

    GEF(Graphical Editing Framework)是Eclipse提供的一种图形编辑框架,专为创建富图形用户界面和模型编辑器而设计。本指南将深入探讨Eclipse插件开发中的GEF框架,帮助开发者快速入门并掌握相关知识。 首先,让...

    GEF-whole-upload.pdf

    GEF(Graphical Editing Framework)是Eclipse平台提供的一套用于构建图形编辑器的工具集。它支持复杂的图形编辑需求,如图表绘制、节点连接等功能,并能够与Eclipse的其他组件(例如Modeling Frameworks)无缝集成...

    GEF-SDK-3.1.zip

    在本压缩包 "GEF-SDK-3.1.zip" 中,包含的是 GEF 的 3.1 版本的 SDK,为开发者提供了在 Eclipse 环境下进行 web 开发时构建图形化编辑器的工具集。 **1. GEF 框架介绍** GEF 为开发者提供了模型-视图-控制器(MVC)...

    GEF开发实践

    - **步骤三**: 将`Editor`类与主应用程序关联起来,以便能够在应用中打开并使用该编辑器。 **4. 创建src包结构** - **建议**: 按照MVC(Model-View-Controller)模式组织代码,将模型、视图和控制器分离开来。 - `...

    Eclipse HTML编辑器插件(EclipseHTMLEditor)

    Eclipse HTML编辑器插件主要提供以下功能: - HTML/JSP/XML/CSS/DTD/JavaScript语法高亮 - HTML/JSP预览 - JSP/XML验证 - HTML标签,基于DTD的XML,以及JSP标签的内容输入补全 - HTML/JSP/XML创建向导 包含GEF-...

    eclipse-snippets.rar

    最后,"把GEF editor集成到Multi-page editor中.txt"和"GridLayoutFactory和GridDataFactory.txt"这两份文本文件,分别介绍了如何将GEF编辑器集成到多页编辑器中,以及如何使用GridLayoutFactory和GridDataFactory这...

    Eclipse插件开发 part2

    第24章“GEF实例”进一步深化了对GEF的理解,通过具体的示例展示如何设计和实现GEF编辑器。 第21章“Draw2d”是GEF的一部分,专注于2D图形绘制,提供了创建图形用户界面的基本元素,如线条、形状和文本。 第22章的...

    eclipse rcp 插件开发学习笔记.pdf 15-24章

    8. **第22章:GEF介绍与实现** - Graphical Editing Framework (GEF) 是Eclipse中的一个组件,用于构建图形化编辑器。本章可能介绍了GEF的基本概念,以及如何使用它来开发可视化的模型编辑器。 9. **第23章:插件...

    eclipse插件开发学习笔记(扫描版15-28章)

    9. **第20章 GEF介绍与实现**:GEF(Graphical Editing Framework)是Eclipse中的图形编辑框架,用于创建图形化编辑器。本章可能涉及了GEF的基本概念,以及如何利用它来构建可视化的编程或设计工具。 10. **第22章 ...

    visual editor的插件

    而GEF则是一个用于构建图形编辑器的框架,允许开发者创建自定义的图形用户界面。这两个框架相结合,使得VE能够为用户提供强大的可视化编辑能力。 **3. 配置Eclipse以使用Visual Editor** 要在Eclipse中启用Visual ...

    amateras-html-editor:用于HTMLJSPXMLJavaScript编辑的Eclipse插件

    它需要JDT和GEF。 它具有以下功能。 HTML / JSP / XML / CSS / DTD / JavaScript照明 HTML / JSP预览 JSP / XML验证 内容辅助(HTML标记/属性,基于DTD和JSP taglib的XML等) 创建HTML / JSP / XML文件的向导 ...

    lomboz 包2

    【GEF(Graphical Editing Framework)】是Eclipse的图形编辑框架,为开发人员提供了一套构建图形用户界面和图形编辑器的工具。GEF支持自定义图形表示和交互操作,常用于创建数据建模、流程图、网络拓扑等领域的可视...

    安装Visual Editor的注意事项

    Visual Editor (VE) 是一款用于Eclipse平台的图形化编辑器插件,它能够帮助开发者更直观地进行界面设计工作。本文将详细介绍安装VE插件的过程中需要注意的关键点,特别是针对Eclipse 3.5版本与VE 1.4版本的兼容性...

Global site tag (gtag.js) - Google Analytics