天天看點

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