[Eclipse]GEF入门系列(序) - 编程入门网
[Eclipse]GEF入门系列(序)时间:2011-04-19 cnblogs bjzhanghao由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以 用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设 计器、UML类图编辑器等等。其实一年多来我们做的项目都是和它有关的,只是之前我具体负 责的事情和它没什么关系。那时也看过黄老大写的代码,EMF和GEF混在一起特别晕,没能坚 持看下去。这次自己要动手做了,正好趁此机会把它搞明白,感觉GEF做出来的东西给人很专 业的感觉,功能也很强大,应该挺有前途的。此外,GEF里用到了很多经典模式,最突出的如 大量应用Command模式,方便的实现Undo/Redo功能等等,通过学习GEF,等于演练了这些模式 ,比只是看看书写几个类那种学习方式的效果好很多。 现在网上关于GEF的文章和教程还不是很多(比起一年前还是增加了几篇),基本上都是 eclipse.org上的那些,其中少数几篇有中文版,中文的原创就属于凤毛麟角了,市场上似乎 也没有这方面的成书。GEF SDK里自带的文档则比较抽象,不适合入门。我觉得最好的入门方 法是结合具体的例子,一边看代码,一边对照文档,然后自己再动手做一做。当然这个例子 要简单点才好,像GEF的那个logic的例子就太复杂了,即使是flow(运行界面见下图)我觉 得也有点大;另外例子要比较规范的,否则学成错误的路子以后还要花时间改就不值得了。 用GEF编写的流程编辑器 GEF的结构决定了GEF应用程序的复杂性,即使最最简单的GEF程序也包含五六个包和十几 个类,刚开始接触时有点晕是很正常的。我找到一个还不错的例子,当然它很简单了,如果 你现在就想自己试试GEF,可以点这里下载一个zip包(若已无法下载请用这个链接),展开 后是六个项目(pt1,pt2,…,pt6),每一个是在前面一个的基础上增加一些功能得到的,pt1 是最简单的一个,这样你就可以看到那些典型的功能(例如DirectEdit、Palette等等)在 GEF里应该怎样实现了。关于这个例子的更多信息请看作者blog上的说明: [Eclipse]GEF入门系列(序)(2)时间:2011-04-19 cnblogs bjzhanghao“Back in March, I talked a little about my initial attempts writing an Eclipse Graphical Editor Framework (GEF) application. I wanted, then, to write a tutorial that essentially walked the reader through the various stages of the development of my first application. I even suggested some kind of versioned literate programming approach to writing the tutorial and the code at the same time. I haven''t had time since then to make any progress, but I did get the GEF application to the stage where I had put together a snapshot at each of six milestones. A few people have written to me over the last six months asking the status of my tutorial and I''ve sent them my six snapshots as a starting point. It makes sense for me to just to offer them here. You can download a ZIP file with the six snapshots at http://jtauber.com/2004/gef/gef.zip. Hopefully they are still useful, even without a surrounding tutorial.” 需要注意一点,这个例子应该是在Eclipse 2.1里写的,所以如果你想在Eclipse 3里运行 这个例子,要修改plugin.xml里的dependencies为:
再修改一下DiagramCreationWizard这个类finish()方法里page.openEditor(newFile);这 句改为page.openEditor(new FileEditorInput(newFile),"com.jtauber.river.editor");, 还有一些warning不太影响,可以不用管。 或者如果你不是特别着急的话,留意我这个半新手写的GEF入门系列帖子,说不定能引起 你更多的共鸣,也是一个办法吧。 GEF的学习周期是比较长的,学之前应该有这个心理准备。特别是如果你没有开发过 Eclipse插件,那么最好先花时间熟悉一下Eclipse的插件体系结构,这方面的文章还是很多 的,也不是很难,基本上会开发简单的Editor就可以了,因为GEF应用程序一般都是在Editor 里进行图形编辑的。另外,绝大多数GEF应用程序都是基于Draw2D的,可以说GEF离不开 Draw2D,而后者有些概念很难搞明白,加上其文档比GEF更少,所以我会从Draw2D开始说起, 当然不能讲得很深入,因为我自己也是略知皮毛而已。 说实话,我对写这个系列不太有信心,因为自己也是刚入门而已。但要是等到几个月后再 写,很多心得怕是讲不出来了。所以还是那句话,有什么写错的请指正,并且欢迎交流。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |