对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的属性如何定义,速度、位移等。
5.15日 重新审视hellogef程序(2),布布扣,bubuko.com
原文地址:http://www.cnblogs.com/liyuhui20093357/p/3730924.html