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