天天看点

5.15日 重新审视hellogef程序(2)

对hellogef.model进行了修改。

原来的程序中model有:

              AbstractModel.java

              ConnectionModel.java

              Diagram.java

              NodeModel.java

现在的程序中model增加了:LeftModel.java   RightModel.java    

MoveModel.java   StartModel.java  StopModel.java

并且上述几个都继承自抽象类NodeModel。

所做的修改:

nodemodel --> nodepart--> nodefigure --> partfactory -->

palettefactroy

Model部分:

将nodemodel改为了抽象类,并且新建了几个model,比如Movemodel。

public class MoveModel extends NodeModel {

       public MoveModel(){

          this.name = "移动";

     }

}

public abstract class NodeModel extends AbstractModel {

//public NodeModel(){

                //this.name =

"节点";

    //}

EditPart部分:

将nodepart改为了抽象类,并且新建了几个part,比如Movepart。

protected abstract IFigure createFigure() ;

public class MovePart extends NodePart {

     protected IFigure createFigure() {

      return new MoveFigure();

    }

//我觉得这个可以修改下,能不能install其他的policy呢,改后的变化又是什么?

        //protected void

createEditPolicies() {

 //installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new

NodeDirectEditPolicy());

 //installEditPolicy(EditPolicy.COMPONENT_ROLE, new

NodeEditPolicy());

//installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new

NodeGraphicalNodeEditPolicy());

      //}

//需要重写吗?其中的node什么需要改成move么?

//先试一下不重写,效果是什么。如果将nodefigure和movefigure设置的不一样,那么refresh之后到底出现的是谁的图,还是bug?

          //protected

void refreshVisuals() {

              //NodeModel node = (NodeModel)

getModel();

            //Point loc =

node.getLocation();

             //Dimension size = new

Dimension(150, 40);

             //Rectangle rectangle = new

Rectangle(loc, size);

             //((NodeFigure)

this.getFigure()).setName(((NodeModel)

this.getModel()).getName());

   //((GraphicalEditPart) getParent()).setLayoutConstraint(this,

getFigure(), rectangle);

  //}

Figure部分:

将nodefigure改为了抽象类,并且新建了几个figure,比如Movefigure。

public abstract class NodeFigure extends Shape

public class MoveFigure extends NodeFigure {

 }

暂时未改。

partfactory部分:            

public class PartFactory implements EditPartFactory {

public EditPart createEditPart(EditPart context, Object model) {

      EditPart part = null;

        if

(model instanceof Diagram)

            part =

new DiagramPart();

       else if (model instanceof

ConnectionModel)

            part = new

ConnectionPart();

       else

        part = new MovePart();

        part.setModel(model);

    return part;

}暂时只试一下movepart。

palettefactory部分:

private static PaletteContainer createComponentsDrawer() {

         PaletteDrawer drawer = new

PaletteDrawer("节点组");

         List entries = new

ArrayList();

         ToolEntry tool = new

CombinedTemplateCreationEntry("Move", "创建一个节点",

MoveModel.class, new

SimpleFactory(MoveModel.class), null, null);

       entries.add(tool);

   ToolEntry tooltwo = new CombinedTemplateCreationEntry("Left",

"创建一个节点", LeftModel.class, new

SimpleFactory(LeftModel.class), null, null);

       entries.add(tooltwo);

     drawer.addAll(entries);

 return drawer;

         }

 还有几个功能没完成,editor的界面太短,不能往下翻。不能放大缩小。节点没有图标。

最重要的一个功能:属性设置,到底是弹出框还是在属性页显示呢?不同的model的属性如何定义,速度、位移等。