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