对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