Gef最简单入门-HelloWold(2)
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)的更多相关文章
- 用IntelliJ IDEA创建Gradle项目简单入门
Gradle和Maven一样,是Java用得最多的构建工具之一,在Maven之前,解决jar包引用的问题真是令人抓狂,有了Maven后日子就好过起来了,而现在又有了Gradle,Maven有的功能它都 ...
- [原创]MYSQL的简单入门
MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...
- Okio 1.9简单入门
Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...
- emacs最简单入门,只要10分钟
macs最简单入门,只要10分钟 windwiny @2013 无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Docker 简单入门
Docker 简单入门 http://blog.csdn.net/samxx8/article/details/38946737
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...
随机推荐
- 在一台win10上启动多个mysql
1.因为项目需要用一个已经有数据的mysql,而我之前已经安装了一个mysql(之前的mysql上面也是有东西,不想删除) 想办法.... mysqld.exe --defaults-file=D: ...
- poj1521
霍夫曼编码,建树 #include <cstdio> #include <cstring> #include <queue> using namespace std ...
- pandas 合并数据
1. pandas 的merge,join 就不说了. 2. 神奇的: concat append 参考: PANDAS 数据合并与重塑(concat篇) 3.
- php如何优雅地把数组传递给前端js脚本?
比如说http://echarts.baidu.com/demo...这个例子中,一般里面的timeData数组都是数据库的所有记录的单独某一个列的集合,而例子中第149行的 data:[ 1,2,3 ...
- Workman启动失败的解决方法 stream_socket_server() has been disabled for security reasons
1.报如下错误,问题是php版本太低 php -ini 看下你的版本 http://doc2.workerman.net/how-distributed.html 参考: https://blog.c ...
- jdk678910新特性地址
jdk678910新特性地址 https://blog.csdn.net/f641385712/article/details/81289401 每篇一句:每个人受到的尊重从来都不是应得的,而是赢得的 ...
- wpf image 指定Stretch="None" 不拉伸的时候,仍然拉伸的解决办法
I think TI82 is right on this issue. The image become bigger than you expect because its dpi doesn't ...
- CF1064A 【Make a triangle!】
要让这个三角形合法,只需满足三角形不等式 即$a+b>c$,设$c=max\left\{a,b,c\right\}$,上式转化为$c<a+b$ 如果已经满足,不需消耗代价 否则消耗$c-a ...
- Excel学习笔记:sumif、sumifs、countifs函数使用方法
本篇纯粹记录一下sumif.sumifs.countifs函数的使用方法. 一.sumif函数 按条件求和 使用格式:=sumif(条件区域,求和条件,实际求和区域) =SUMIF($B$7:$B$1 ...
- Angular2 CLI安装
官方文档: https://angular.cn/docs/ts/latest/cli-quickstart.html 实现步骤: 1.设置开发环境 2.创建新项目以及应用的骨架 3.启动开启服务 4 ...