`
liugang594
  • 浏览: 978352 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

GEF理解系列六(1)

    博客分类:
  • GEF
这一节我们主要讲结点和连接的删除,另外就是连接的重定向。 一、连接线的选中与重定向 因为和系列五还有点扯,所以先讲一下连接的重定向。 在上一节中,我们创建了一个用来新建连接的Policy:HelloWorldGraphicalNodeEditPolicy,它还有两个方法在上一节中一直没有提到:       @Override       protected Command getReconnectSourceCommand(ReconnectRequest request) {             // TODO Auto-generated method stub ...

GEF理解系列五(2)

    博客分类:
  • GEF
二、新建连接模型 新建连接模型,过程大同小异。此时需要在结点模型上安装Policy,Policy的类型为:GraphicalNodeEditPolicy。 在HelloWorldEditPart的createEditPolicies()方法里追加: installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new HelloWorldGraphicalNodeEditPolicy()); 其中HelloWorldGraphicalNodeEditPolicy是我们的Policy实现类。还是一样,先完成Command,再回过头来完成Pol ...

GEF理解系列五(1)

    博客分类:
  • GEF
到目前为止,我们已经有了一些模型和一些调色析工具箱了。 但是我们的工具箱还不能真正的创建出新的模型来。这一节我们就要实现创建模型操作。 一、新建模型结点 首先我们看一下创建结点模型操作。以我们HelloWorldModel为例。每个HelloWorldModel只有加到了作为Editor的content的DiagramRootContent对象上才能被显示出来。因此,我们要想再追加显示一个HelloWorldModel对象,实际上就是要给这个content对象加一个HelloWorldModel子模型。所以我们可以得出:这里的操作是安放在content模型对象上的,也就是:Diagra ...

GEF理解系列四(2)

    博客分类:
  • GEF
二、添加调色板 到现在为止,我们完成的都是静态创建模型。还没动态创建过。要动态创建就要用到调色板了。所以现在是时候添加调色板元素了。 要添加调色板,我们就要回到Editor类里,看Editor中默认要实现的另一个方法:getPaletteRoot()。 这个方法就是用来完成调色板内容的。这个没什么可以多讲的。这里直接给出例子:       @Override       protected PaletteRoot getPaletteRoot() {             PaletteRoot root = new PaletteRoot();
在开始之前,我们先讲一点预备的(我自己的理解,如果有错不能怪我)。 1.      GEF中,一个连接线模型要成功创建,则这个模型必须有个源和目标。大家可以试一下连接一个源,再把目的随便在某个点一下,线是不会出来的(当然如果任务一个点都可以是目标的话,那就另论了)。 2.      GEF中,一个连接线模型即使已经被附着到了源和目的上,也不一定会被显示出来。这就要提到AbstractGraphicalEditPart的两个方法:getModelSourceConnections()和getModelTargetConnections()。在前面讲getModelChildren()方法时 ...

GEF理解系列三

    博客分类:
  • GEF
经过以上步骤,我们已经有办法显示多个图形了。还是重提一下:Editor的初始状态由initializeGraphicalViewer()方法决定。不过在我们已经完成的过程,我们会发现,初始状态,也是最终状态,我们甚至不能移动任何一个图,当然了也 ...
系列一中,我们完成了一个MVC结构,并初步构造了一个Editor,不过到现在Editor里什么东西都还没有,这节中我们要给它加一点东西。 一、配置和初始化Editor 要想让Editor真正开始工作,我们就需要做一些基础工作了。我们可以看到,当我们写了一个继承自GraphicalEditorWithPalette类的editor时,默认有几个方法需要实现。其中有一个方法:initializeGraphicalViewer()。看名字就知道这是一个用来初始化editor的方法。比如说editor一打开有什么内容等等就是在这里做的,我们可以给它加一个HelloWorldModel。另外,我们在系 ...
这两天又重新看了一下GEF。现在理解起来感觉比以前要容易的多了。这里就把一些心得整理一下,写了一个系列,以期与大家共同探讨。 一、创建Editor       一般来说GEF都是用来实现一个Editor的。因此这里我也以Editor为例来说明。首先要做的一点就是实现一个Editor的扩展。具体怎么实现这里就不讨论,不明白的可以去找一个关于Eclipse插件开发方面的文章看看就知道了。       可以有两种运行方式:一个种是插件方式;一种是RCP方式。具体到Editor本身来说,在这两种实现方式上运行的效果都是一样的。因此在后面的过程中,我们就忽略具体的运行方式,根据自己的喜好选择。   ...
Global site tag (gtag.js) - Google Analytics