`

GEF简单工作流,保存为xml和图片

    博客分类:
  • GEF
阅读更多


 Eclipse
flow插件开发

工作需要,让研究eclipseflow插件开发,通过搜索资料发现在05-06年期间eclipse插件开发曾经火过一段时间,很多优秀的教程都是在那时出现的.不过现在貌似已经没落了.想想也是eclipse插件的整个体系比较庞大,同时也有很多优秀框架.但是学插件干嘛呢?一般公司不会用,除非专业出这样产品的公司,这样算下来市场的需求量确实是少之又少, 同事又缺乏像样的教程和书籍(英文的很多,中文的稀少……)。可是公司既然这样要求了也只有硬着头皮上了。下面介绍正文:

 

 

前面可以参见《八进制》的博客

http://bjzhanghao.cnblogs.com/archive/2005/02/19/106000.html

05年的教程,不得不说八进制写的很好.

 

实现了基本的添加,删除,拖拽,连线,属性显示等功能.但缺少非常关键的saveload方法(绘制的图像保存为xml,或图片,读取是回显上次编辑的内容)

下面就将先实现save方法(将编辑后的东东保存为xmlpng图片):

 

 

1.在实现GraphicalEditorWithPalette的类中找到doSave()方法,每次保存是都会调用该方法

2.要保存为图片,并且在本目录下,首先要获取本次打开的文件

IFile file =((IFileEditorInput)getEditorInput()).getFile();

File currentFile = file.getLocation().toFile();

String fileName = currentFile.getName();

String filePath = currentFile.getPath();

 

关于getEditorInput有这样一句解释:

当你在Resource Navigator里双击打开一个文件时,这个文件就和editor关联上了,因此可以通过editorInput得到文件。

 

3.保存为图片,添加export方法

 

 

public void export(GraphicalViewer viewer, String location, int format) 

    { 

        try 

        { 

           IFigure figure = ((AbstractGraphicalEditPart) viewer.getRootEditPart()).getFigure(); 

       

       

           File file = new File(location); 

           if (file.exists()) 

           { 

               if (!MessageDialog.openQuestion(null, "系统提示", 

               "该文件已经存在. 要重新覆盖它吗 ?")) 

               { 

                   return; 

               }

           } 

           else 

           { 

           file.createNewFile(); 

           } 

       

       

           FileOutputStream fos = new FileOutputStream(file); 

       

       

           if (figure instanceof Viewport) 

           { 

           // Reinit the figure 

           ((Viewport) figure).setViewLocation(0, 0); 

           } 

       

       

           Dimension size = figure.getPreferredSize(); 

           Image image = new Image(Display.getDefault(), size.width, size.height); 

           GC gc = new GC(image); 

           SWTGraphics graphics = new SWTGraphics(gc); 

           figure.paint(graphics); 

       

       

           ImageLoader loader = new ImageLoader(); 

           loader.data = new ImageData[] {image.getImageData()}; 

           loader.save(fos, format); 

           fos.close();

           

        } 

        catch (Exception e) 

        { 

       //记录该异常

//         ModelerPlugin.displayDialog(null, "An error occured during export. See the error log for more details.", IStatus.ERROR); 

//         ModelerPlugin.log(e); 

        }finally{

            

        }

    }

 

  

 

 

4.添加保存xml的方法xmlSave():

public void xmlSave(IProgressMonitor progressMonitor) {

          editorSaving = true;

          Platform.run(new SafeRunnable() {

          public void run() throws Exception {

            

          //以下存储xml文件

            

          Document document = DocumentHelper.createDocument();

          

          Element logicDiagramElement = document.addElement("LogicDiagram");

          /*中间是你的xml*/

          try{

            

          OutputFormat format = OutputFormat.createPrettyPrint();

//        IFile file = ((IFileEditorInput)getEditorInput()).getFile();

//        final IFile file = (IFile) ((DiagramEditorInput)getEditorInput()).getFile();

          IFile file =((IFileEditorInput)getEditorInput()).getFile(); 

          File f = file.getLocation().toFile();

          System.out.println("fileName:"+f.getName()); 

          XMLWriter output = new XMLWriter(new FileOutputStream( f ), format);

          

          output.write( document );   

          output.close();

          } catch(IOException e){

          System.out.println(e.getMessage());

          }

          getCommandStack().markSaveLocation();

          }

          });

          editorSaving = false;

}

  

 

 

 

5.doSave()中调用:

 

//保存为 xml

        xmlSave(monitor);

//保存为图片export(getGraphicalViewer(),filePath+".png",SWT.IMAGE_PNG);

 

  

 

 

 

问题:保存xml使用的是dom4j这个外部jar,但是插件的寻包机制又和普通项目不同,所以需要处理一下:

a.  在项目下新建lib目录存放外部jar

b.  MANIFEST.MFRuntime页签,在右下角的classpath中添lib/dom4j-1.6.1.jar



 

c.  在左上角exported package中添加需要用到的包

 

d.  添加选中工程,buildPath中添加lib中的jar

在当前工程目录下添加lib文件夹,将用到的第三方jar包放入lib文件夹中。在runtime右下角的classpath中添加/lib/*.jar,最后在runtime左上角的exported package中添加需要用到的包

 

 

  • 大小: 32.5 KB
  • 大小: 9.4 KB
2
0
分享到:
评论
2 楼 washingj 2013-09-22  
editorSaving = true;  和editorSaving = false;是什么啊?
1 楼 cxw640560 2013-06-19  
editorSaving = true;  和editorSaving = false;  从哪里来的,在哪里使用, 文章中貌似没有说明! 请说明一下,谢谢!

相关推荐

    GEF简易教程-学习GEF的入门教程

    对于初学者而言,建议优先掌握Editor的使用,因为其提供了更完整的工作流支持。 #### 五、GEF编辑器的逐步开发 创建Editor后,接下来是对Editor进行定制化开发。这包括但不限于: - **自定义图形元素**:通过...

    GEF入门系列

    - **流程图编辑器**:设计工作流或业务流程时,GEF可以帮助构建图形化的流程表示。 - **UML建模工具**:支持创建和编辑类图、序列图等多种UML模型。 5. **扩展与自定义** - **Zest图表库**:作为GEF的一个扩展,...

    \GEF-SDK-3.4.1.zip

    它可以将不同服务组合成一个协调的工作流,便于管理和执行跨系统的业务操作。 3. **Eclipse插件**:GEF-SDK-3.4.1.zip内的“eclipse”文件很可能是Eclipse插件,使得开发者能够在Eclipse IDE内直接进行BPEL流程设计...

    eclipse gef 插件 最新版本

    - **流程图**:流程控制图、工作流编辑器等。 - **网络拓扑**:网络设备配置和管理工具。 5. **开发流程** - **定义模型**:首先定义数据模型,描述编辑器将要处理的对象。 - **创建EditParts**:根据模型创建...

    win--eclipse3.4.2 安装VE插件所需插件(emf, gef ,ve)

    它提供了一组基础类和API,使得开发者可以快速地创建出交互式的图表和工作流编辑器。GEF支持拖放操作、连接线、缩放和平移等功能,为构建图形用户界面(GUI)提供了强大的支持。 VE插件是Eclipse的视觉编辑器,它是...

    eclipse3.3 图形界面开发插件(两个)

    这种组合在开发图形化工作流、系统配置工具或者可视化数据管理系统时特别有用。 在实际应用中,开发者首先会使用EMF创建数据模型,定义数据对象的结构和关系。然后,通过SDO Runtime将这些模型映射到实际的数据源,...

    基于Flex的Web流程设计器开发

    在开发 Web 流程设计器之前,公司的工作流产品的流程设计器是 Eclipse 插件形式的,流程设计器的定位是给开发人员和客户的 IT 人员使用的。但是,客户希望部门秘书也可以自定义流程。这就出现了问题,因为部门秘书...

    dotSource Workflow Tool:Eclipse工作流程工具-开源

    基于图形编辑软件JaWE(Java工作流程编辑器)的功能以及对自定义XML方言的必需解释(Eclipse无法解释),dotSource GmbH开发了解释工作流工具。 这样可以节省时间,简化应用程序,从而节省成本。 工作流工具是IBM...

    Eclipse资料.rar

    这个框架允许开发者记录和重播用户操作,为用户提供撤销/重做功能。通过命令模型,开发者可以定义命令,绑定它们到菜单、工具栏按钮或者快捷键,从而增强Eclipse的用户交互性。 文档《实现内容助理(1. 自动完成)....

    Eclipse及其插件下载网址大全

    4. **Properties Editor**: 该插件专为编辑Java属性文件设计,支持Unicode格式保存,使属性文件管理更加方便。 5. **Colorer**: 提供了对上百种文件类型的语法高亮显示,增强了代码阅读体验。 6. **XMLBuddy**: ...

    jbpm5安装DEMO

    ### jBPM5安装与配置详解 #### 一、引言 jBPM5是一款开源的工作流和业务流程管理(BPM)框架,基于...通过以上步骤,用户可以顺利完成jBPM5的安装和基本配置,为进一步探索和利用其强大的工作流功能打下坚实的基础。

    使用Eclipse+Lomboz+Tomcat+Jboss搭建环境.doc

    在本文档中,我们将探讨如何使用Eclipse集成开发环境(IDE),配合Lomboz插件、Tomcat服务器和Jboss应用服务器来搭建一个完整的Java EE开发环境。这是一份详细的步骤指南,旨在帮助开发者顺利配置所需环境。 首先,...

    Eclipse平台入门.pdf

    Eclipse平台入门通常包括了解和熟悉其工作区(workspace)和项目(project)的概念,学习如何进行项目配置和管理,掌握使用Eclipse提供的各种视图(view)和透视图(perspective),以及如何使用代码编辑器、调试器...

    Eclipse插件下载地址

    VE-Visual Editor则为用户提供了一个可视化的编辑器来绘制和编辑图表。 ##### 2. lomboz J2EE, JSP, EJB - **下载地址**:[http://forge.objectweb.org/projects/lomboz]...

    eclipse插件大全介绍.

    - **GEF (Graphical Editor Framework)**:GEF 提供了一组工具和组件,用于创建复杂的图形编辑器,如流程图编辑器等。 - **UML2**:UML2 插件为 Eclipse 提供了 UML 建模的支持。 - **VE (Visual Editor)**:VE 是一...

    MyEclipse插件介绍与下载

    - **PropertiesEditor**:用于编辑Java属性文件,并可自动保存为Unicode格式。 - **ColorerTake**:为多种文件类型提供语法高亮。 - **XMLBuddy**:专门用于编辑XML文件。 - **CodeFolding**:增强代码折叠功能。 - ...

    JBPM5 安装

    JBPM (Business Process Management) 是一款开源的工作流引擎,用于创建、管理和执行业务流程。本文档旨在提供一个详尽的JBPM5安装步骤指南,包括安装所需的先决条件、安装过程及其注意事项。 #### 一、先决条件 ...

Global site tag (gtag.js) - Google Analytics