Eclipse JFace Binding/绑定 (2)

前文《Eclipse JFace Binding/绑定 (1)》介绍了JavaBean的事件机制,Eclipse的绑定利用了这种机制,(据说Eclipse Binding的下一个目标是Pojo对象的双向绑定,利用asm这样的字节码操作库)。

绑定针对对象实例而不是类型

在深入之前,需要明确的是,在Java中绑定永远是针对对象实例的绑定,而不是针对对象类型的绑定。也就是说下面的代码会使model之前注册的监听器失效。 Continue reading

Eclipse JFace Binding/绑定 (1)

binding这个词挺有意思的,中文意译为“绑定”,音译也可以是”绑定“,但是“绑定”这个词看起来又不是像“巴士”这样的词一样属于外来词。我深深地感觉第一个把binding翻译成“绑定”的人当时一定感觉很好。

为什么需要“绑定”

在MVC架构中,View(GUI)上的控件的值来源于Model,用户在View上的操作也需要更新到Model。由于桌面应用程序的实时响应特性,后台服务(如数字校验、根据单价和数量计算总价)对Model的更新也需要实时通过View反馈给用户。
Continue reading

一步一步实现GEF – 9

很长一段时间没有继续写了,很多东西都快忘记了,赶紧捡起来

让你的GEF图元可以拖动和缩放

拖动算是最简单的用户交互吧,不过麻雀虽小,肝胆俱全,不理解其原理和设计思路,很难谈得上去应用,但是要理解这一整套交互模型又有相当的难度,本文虽重在实践,这里也略做介绍。后文中所述图元指EditPart对象实例。
Continue reading

一步一步实现GEF – 8

将View中的图形移到编辑器中

在View中是不能对图形进行移动、修改大小的,需要对图形进行修改必须使用Editor,因此,我们首先创建一个GEF编辑器,然后将图形显示在编辑器中。

创建编辑器

打开plugin.xml,打开Extensions标签页,添加org.eclipse.ui.editors扩展,然后添加一个Editor,Name为Nodes GEF Editor,Extensions为gef,如下图所示:
Continue reading

一步一步实现GEF – 7

添加Tooltips

我们希望用户将鼠标移动到图元上时,能够友好的显示图元的一些详细信息,可以通过Tooltip的方法实现。GEF中Figure类中定义了图元的Tooltip,其类型为IFigure,因此我们可以创建一个Label,然后将Label作为图元的Tooltip显示。
在NodeFigure类中添加一个私有方法createToolTip(),将结点的位置和背景的颜色显示给用户。
Continue reading

一步一步实现GEF – 6

添加连接线

要在两个结点(Node)之间显示连接线,需要在模型上添加连接线,修改showDiagram()函数,在node和node2之间添加一个Connection对象,为了方便,先在Connection类中添加connection()方法,如下所示:

public void connect(Node source, Node target){
	setSource(source);
	setTarget(target);
	source.addOutgoingConnection(this);
	target.addIncomingConnection(this);
}

Continue reading