随笔分类 - GEF

eclipse.org/gef
摘要:利用org.eclipse.draw2d.SWTGraphics类和org.eclipse.swt.graphics.ImageLoader类可以实现把画布导出到图片文件的功能,原理是在内存里创建一个空白的Image,然后把Diagram画到它上面,最后保存到指定文件和格式。 阅读全文
posted @ 2007-08-01 00:01 八进制 阅读(10752) 评论(59) 推荐(1) 编辑
摘要:GEF已经为我们提供了很多种类的Request,如CreateRequest、CreateConnectionRequest和SelectionRequest等等。实现一个典型的图形化应用程序,例如UML类图编辑器,这些预定义的Request基本够用了。然而很多需求不太符合约定俗成的使用习惯,因此实现起来更多依赖开发人员的编码,而不是开发框架带来的便利。在这种情况下,我们也许要借助自定义Request来实现。 阅读全文
posted @ 2007-06-21 23:35 八进制 阅读(13395) 评论(79) 推荐(0) 编辑
摘要:要准确的计算文字在画布上占据的空间,可以利用org.eclipse.swt.graphics.GC的stringExtent()方法 阅读全文
posted @ 2007-04-14 01:03 八进制 阅读(6128) 评论(25) 推荐(0) 编辑
摘要:就像在swt里我们使用layout来控制各个控件的摆放位置一样,在Draw2D里最好也把这个工作交给LayoutManager来做。除非是在自己实现的Layout里,一般程序里自己不要轻易使用setBounds()、setLocation()和setSize()这些方法控制图形的位置和大小,而应该在为每个图形设置了适当的LayoutManager后,通过setConstraint()和setPreferredSize()等方法告诉layoutmanager如何布局。 阅读全文
posted @ 2006-09-05 21:36 八进制 阅读(9116) 评论(31) 推荐(1) 编辑
摘要:在GEF应用程序里打开对话框 阅读全文
posted @ 2006-07-07 23:13 八进制 阅读(7243) 评论(21) 推荐(0) 编辑
摘要:利用DirectedGraphLayout实现自动布局 阅读全文
posted @ 2006-07-02 17:56 八进制 阅读(8693) 评论(28) 推荐(0) 编辑
摘要:使用非矩形图形节点,并通过覆盖LayoutEditPolicy的createChildEditPolicy()方法实现相应的选择框和控制柄。 阅读全文
posted @ 2006-06-26 23:15 八进制 阅读(7127) 评论(53) 推荐(0) 编辑
摘要:通过添加Bendpoint实现自身连接(Self Connection) 阅读全文
posted @ 2006-06-22 11:05 八进制 阅读(5805) 评论(16) 推荐(0) 编辑
摘要:从直线连接转换到可以任意增减转折点的折线连接的过程 阅读全文
posted @ 2006-06-22 00:47 八进制 阅读(6973) 评论(19) 推荐(0) 编辑
摘要:通过添加Layer为图形编辑器设置背景图片 阅读全文
posted @ 2006-06-21 17:04 八进制 阅读(8689) 评论(23) 推荐(0) 编辑
摘要:Draw2D里的Label不支持自动换行,虽然可以插入换行符手动换行。用TextFlow和适当的Layout可以实现文字的自动换行。 阅读全文
posted @ 2006-03-23 11:08 八进制 阅读(6147) 评论(33) 推荐(0) 编辑
摘要:最近有朋友问使用EMF作为GEF模型时,如何在选中editpart时在属性页里显示属性的问题。这里提供一个解决方法,不过并不完美。 阅读全文
posted @ 2005-10-24 21:34 八进制 阅读(7770) 评论(36) 推荐(0) 编辑
摘要:其实可以放在任何Composite上,当然也就可以放在视图里了。关键任务是创建GraphicalViewer、RootEditPart、EditDomain和EditPartFactory这些对象,下面的代码是我从别处拷来的,稍微修改了一下。 阅读全文
posted @ 2005-10-21 20:26 八进制 阅读(8657) 评论(33) 推荐(0) 编辑
摘要:两天前GEF发布了3.1M7版本,但使用下来发现和M6没有什么区别,是不是主要为了和Eclipse版本相配套?希望3.1正式版早日发布,应该会新增不少内容。上一篇帖子介绍了如何实现表格功能,在开发过程中,另一个经常用到的功能就是树,虽然SWT提供了标准的树控件,但使用它完成如组织结构图这样的应用还是不够直观和方便。在目前版本(3.1M7)的GEF中虽然没有直接支持树的实现,但Draw2D提供的例子程序里却有我们可以利用的代码(org.eclipse.draw2d.examples.tree.TreeExample,运行界面见下图),通过它可以节约不少工作量。 阅读全文
posted @ 2005-05-27 00:09 八进制 阅读(13045) 评论(79) 推荐(0) 编辑
摘要:在目前的GEF版本(3.1M6)里,可用的LayoutManager还不是很多,在新闻组里经常会看到要求增加更多布局的帖子,有人也提供了自己的实现,例如这个GridLayout,相当于SWT中GridLayout的Draw2D实现,等等。虽然可以肯定GEF的未来版本里会增加更多的布局供开发者使用(可能需要很长时间),然而目前要用GEF实现表格的操作还没有很直接的办法,这里说说我的做法,仅供参考。 阅读全文
posted @ 2005-05-20 10:14 八进制 阅读(14374) 评论(60) 推荐(1) 编辑
摘要:当一个GEF应用程序实现了大部分必需的业务功能后,为了能让用户使用得更方便,我们应该在易用性方面做些考虑。从3.0版本开始,GEF增加了更多这方面的新特性,开发人员很容易利用它们来改善自己的应用程序界面。这篇帖子将介绍主要的几个功能,它们有些在GEF 2.1中就出现了,但因为都是关于易用性的而且以前没有提到,所以放在这里一起来说。(下载示例代码) 阅读全文
posted @ 2005-04-21 11:21 八进制 阅读(17513) 评论(112) 推荐(0) 编辑
摘要:GEF的设计没有对模型部分做任何限制,也就是说,我们可以任意构造自己的模型,唯一须要保证的就是模型具有某种消息机制,以便在发生变化时能够通知GEF(通过EditPart)。在以前的几个例子里,我们都是利用java.beans包中的PropertyChangeSupport和PropertyChangeListener来实现消息机制的,这里将介绍一下如何让GEF利用EMF构造的模型(下载例子,可编辑.emfsubject文件,请对比之前功能相同的非EMF例子),假设你对EMF是什么已经有所了解。 阅读全文
posted @ 2005-04-15 18:13 八进制 阅读(17214) 评论(43) 推荐(0) 编辑
摘要:前面的帖子里曾说过如何使用布局,当时主要集中在ToolbarLayout和FlowLayout(统称OrderedLayout),还有很多应用程序使用的是可以自由拖动子图形的布局,在GEF里称为XYLayout,而且这样的应用多半会需要在图形之间建立一些连接线,比如下图所示的情景。连接的出现在一定程度上增加了模型的复杂度,连接线的刷新也是GEF关注的一个问题,这里就主要讨论这类应用的实现,并将特别讨论一下展开/折叠(expand/collapse)功能的实现。请点这里下载本篇示例代码。 阅读全文
posted @ 2005-04-11 15:16 八进制 阅读(13601) 评论(59) 推荐(1) 编辑
摘要:我发现一旦稍稍体会到GEF的妙处,就会很自然的被它吸引住。不仅是因为用它做出的图形界面好看,更重要的是,UI中最复杂和细微的问题,在GEF的设计中无不被周到的考虑并以适当的模式解决,当你了解了这些,完全可以把这些解决方法加以转换,用来解决其他领域的设计问题。去年黄老大在一个GEF项目结束后,仍然没有放弃对它的继续研究,现在甚至利用业余时间开发了基于GEF的SWT/JFace增强软件包,Eclipse和GEF的魅力可见一斑。我相信在未来的两年里,由于RCP/GEF等技术的成熟,Java Standalone应用程序必将有所发展,在B/S模式难以实现的那部分领域里扮演重要的角色。 阅读全文
posted @ 2005-03-30 17:25 八进制 阅读(22472) 评论(84) 推荐(2) 编辑
摘要:虽然很多GEF应用程序里都会用到连接(Connection),但也有一些应用是不需要用连接来表达关系的,我们目前正在做的这个项目就是这样一个例子。在这类应用中,模型对象间的关系主要通过图形的包含来表达,所以大多是一对多关系。本文结合具体实例讲解了如何在GEF中使用ToolbarLayout以及自定义简单的布局管理器。 阅读全文
posted @ 2005-03-24 00:23 八进制 阅读(15437) 评论(62) 推荐(0) 编辑