ok 。上代码

模型类

package testgef.model;

public class HelloModel {
private String text = "Hello word";

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}

}

这个不多说。提供一个文本hellowold

下一步。控制器。GEF中主要的控制器就是EditPart。这里继承一个AbstractGraphicalEitPart派生。注意。继承的时候会看到报错说找不到这个类。这个是没有导包的原因自己手动添加并且注意下导包是否正确

package testgef.controller;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.Label;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;

import testgef.model.HelloModel;
//控制器
public class HelloEditorPart extends AbstractGraphicalEditPart{

@Override
protected IFigure createFigure() {
// TODO Auto-generated method stub
HelloModel model=(HelloModel)getModel();
Label label=new Label();
label.setText(model.getText());
return label;
}

@Override
protected void createEditPolicies() {
// TODO Auto-generated method stub

}

}

然后分析下这个类。createFigure()方法故名思意肯定是创建一个图形。getmodel获取这个模型。然后。在次方法里创建一个i额Label图形。ok。把model放入这个控件中。返回这个控件。

继续:工厂类。连接模型跟控制器。

package testgef.controller;

import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;

import testgef.model.HelloModel;

public class PartFactory implements EditPartFactory {

@Override
public EditPart createEditPart(EditPart context, Object model) {
// TODO Auto-generated method stub
EditPart part = getPartForElement(model);
part.setModel(model);
return part;
}

private EditPart getPartForElement(Object modelElement) {

if (modelElement instanceof HelloModel)

// TODO Auto-generated method stub
return new HelloEditorPart();
throw new RuntimeException("cant't create part for model element");

}

}

继续View注意id要跟plugin.xml里面的id

package hellowoldgef.editors;

import hellowoldgef.controller.PartFactory;
import hellowoldgef.model.HelloModel;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.ui.parts.GraphicalEditor;

public class HelloWoldEditor extends GraphicalEditor {
public static final String ID = "hellowoldgef.editors.HelloWoldEditor";
GraphicalViewer viewer;

public HelloWoldEditor() {
setEditDomain(new DefaultEditDomain(this));
}

protected void configureGraphicalViewer() {
super.configureGraphicalViewer();
viewer = getGraphicalViewer();
viewer.setEditPartFactory(new PartFactory());
}

//设置内容
@Override
protected void initializeGraphicalViewer() {
// TODO Auto-generated method stub
viewer.setContents(new HelloModel());
}

@Override
public void doSave(IProgressMonitor monitor) {
// TODO Auto-generated method stub

}

}

over。运行工程。在运行平台上随便新建一个java工程。在src新建一个文件。后缀名为hellowordgef。ok。亲爱的hello出来了

好吧。做完HelloWord的GEF出来之后。得出一个结论。嗯。够绕。不过总算最最基础的流程走了下。下面慢慢来吧。

提供一个这个小demo的下载地址。记得可能有导包的问题哦。

http://download.csdn.net/detail/wm198966/5884511

Gef最简单入门-HelloWold(2)的更多相关文章

  1. 用IntelliJ IDEA创建Gradle项目简单入门

    Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...

  2. [原创]MYSQL的简单入门

    MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...

  3. Okio 1.9简单入门

    Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...

  4. emacs最简单入门,只要10分钟

    macs最简单入门,只要10分钟  windwiny @2013    无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...

  5. 【java开发系列】—— spring简单入门示例

    1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...

  6. Docker 简单入门

    Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737

  7. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  8. git简单入门

    git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...

  9. 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

    本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...

随机推荐

  1. 使用 scm-manager 搭建 git/svn 代码管理仓库(一)

    1.在官网上下载scm-manager 下载地址  https://www.scm-manager.org/download/ 选择下载文件 2. 配置java 环境 参照文章:https://jin ...

  2. springboot整合rabbitmq客户端连接报超时异常问题解决:An unexpected connection driver error occured java.net.SocketException: Socket Closed,java.util.concurrent.TimeoutException

    我用的是springboot2.0.6版本,对应的ampq也是2.0.6版本,然后启动一直报: 还有java.util.concurrent.TimeoutException, 用户授权什么的都对,很 ...

  3. 【转载】linux ls -l命令详解

    Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loca ...

  4. 『记录』Android参考资料

    欢迎留言推荐好的教程.资料.博客及作者等. 『记录』Android参考资料 1.前期环境 Android Studio使用Git Android Studio快捷键总结 Android Studio及 ...

  5. XShell 使用方法

    XShell是一款Windows下非常优秀的远程连接Linux主机的工具,是平常使用不可缺少的工具.复制和粘贴由于在linux的Shell下,Ctrl+c是中断当前指令,这个快捷键和win系统下的复制 ...

  6. (windows下)安装mysql

    一.先从mysql的官网上下载对应版本的mysql zip包(适用于windows下的) 二.解压zip包放到自定义的文件夹下(我放的是e盘,路径为E:\mysql-5.6.40-winx64) 三. ...

  7. node.js开发web

    1.安装express框架 使用npm install -g express安装express后,在命令行中执行express,提示没有此命令 原因是在新版的express中命令行需要单独安装 npm ...

  8. MediatR 中介模式

    使用MediatR完成基于内存级别的消息发布订阅 在微服务架构中领域驱动模型中处理领域事件的相关操作 在区分好领域模型后,就拿代码中来说嘛,用户领域中添加用户操作可能或存在跟用户相关的一些领域事件,在 ...

  9. vSphere Web Client 6.5 如何上传ISO文件

    vSphere Web Client 6.5 如何上传ISO文件? 1,先开启SSH功能. WEB登陆管理端,选中一台主机,配置-安全配置文件-服务编辑-SSH项-起动. 2,用SFTP上传ISO文件 ...

  10. 017 jquery中对样式的操作

    1.样式操作 2.css-dom操作 3.程序 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...