• 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

  • 相关阅读:
    线段树
    5709 01背包
    JavaEE Tutorials (19)
    洛谷 P3385 【模板】负环
    洛谷 P3388 【模板】割点(割顶)
    洛谷 P3387 【模板】缩点
    洛谷 P3386 【模板】二分图匹配
    洛谷 P3371 【模板】单源最短路径
    洛谷 P3370 【模板】字符串哈希
    洛谷 P3366 【模板】最小生成树
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3243791.html
Copyright © 2020-2023  润新知