Eclipse的flow插件开发
工作需要,让研究eclipse的flow插件开发,通过搜索资料发现在05-06年期间eclipse插件开发曾经火过一段时间,很多优秀的教程都是在那时出现的.不过现在貌似已经没落了.想想也是eclipse插件的整个体系比较庞大,同时也有很多优秀框架.但是学插件干嘛呢?一般公司不会用,除非专业出这样产品的公司,这样算下来市场的需求量确实是少之又少, 同事又缺乏像样的教程和书籍(英文的很多,中文的稀少……)。可是公司既然这样要求了也只有硬着头皮上了。下面介绍正文:
前面可以参见《八进制》的博客
http://bjzhanghao.cnblogs.com/archive/2005/02/19/106000.html
05年的教程,不得不说八进制写的很好.
实现了基本的添加,删除,拖拽,连线,属性显示等功能.但缺少非常关键的save与load方法(绘制的图像保存为xml,或图片,读取是回显上次编辑的内容)。
下面就将先实现save方法(将编辑后的东东保存为xml和png图片):
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.MF的Runtime页签,在右下角的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
分享到:
相关推荐
GEF简易教程-学习GEF的入门教程,不错的gef入门教程
RCP与GEF的课件,简单的介绍了RCP和GEF中的各组件的功能,已经工作流程
gef 绘图折线的实现方法。 gef API chm 格式
这是我参考了一些其他资料,自己写的一个GEF示例程序。 在这个demo中你可以看到以下的功能: 1. 往画布上添加多种节点 2. 节点之间的连线 3. 节点内容的编辑功能 4. 删除连线 5. 删除节点 6. 对节点的拖动以改变...
GEF的helloword的入门级手把手教,教程文档和源代码示例,源代码可以直接跑
GEF入门必读 GEF入门系列 GEF-whole-upload 感谢八进制
一个GEF的简单例子,简单的做了一下,包括源码。
学习GEF的入门资料,简单地介绍了GEF使用过程中用到的基本类和函数的用法。
GEF入门系列,八进制 的GEF入门系列教程, 由社区经作者授权后整理而成GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很...
这里要讲的GEF 例子,还是从任何学习编程的最普通例子HelloWorld 开始。我们要用GEF 这把牛刀来处理HelloWorld 这个小菜。
GEF eclipse 插件
我下的资源的打包,希望有帮助,包括:GEF_Tutorial,GEF实例,入门教程,GEF-whole-upload
gef开发实例 gef开发的好例子,比较简单的实现了MVC的架构
详细讲述了emf和gef的用法,和模型开发过程,有很多实例的
GEF: Graphical Editing Framework <br>...Draw2D应用为GEF的View,但又不仅仅限于此。依赖:org.eclipse.draw2d*** 本软件GEF-ALL-3.2.2完整版包含(Draw2D, GEF and Zest) 大小:6.6M 请用于Eclipse3.2.2环境下.
GEF 入门系列 GEF
GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很多,例如:UML类图编辑器、图形化XML编辑器、界面设计工具以及图形化...
GEF理解之第三部分,学习gef必备文档资料啊,值得下载
GEF理解之第一部分,学习gef必备文档资料啊,值得下载
GEF Example Source Code,