首页 > 代码库 > 5.15日 重新审视hellogef程序(2)

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的属性如何定义,速度、位移等。