📄 diagrampart.java
字号:
/*
* Created on 2005-1-24
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.example.parts;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
import org.eclipse.draw2d.ChopboxAnchor;
import org.eclipse.draw2d.ConnectionAnchor;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FreeformLayer;
import org.eclipse.draw2d.FreeformLayout;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.XYAnchor;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.ConnectionEditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.NodeEditPart;
import org.eclipse.gef.Request;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.eclipse.gef.requests.CreateConnectionRequest;
import org.eclipse.gef.requests.ReconnectRequest;
import com.example.model.Diagram;
import com.example.model.Node;
import com.example.policies.DiagramGraphicalNodeEditPolicy;
import com.example.policies.DiagramLayoutEditPolicy;
/**
* @author zhanghao
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class DiagramPart extends AbstractGraphicalEditPart implements PropertyChangeListener, NodeEditPart {
private XYAnchor sourceAnchor = null;
private XYAnchor targetAnchor = null;
protected List getModelChildren() {
return ((Diagram) this.getModel()).getNodes();
}
public void activate() {
super.activate();
((Diagram) getModel()).addPropertyChangeListener(this);
}
public void deactivate() {
super.deactivate();
((Diagram) getModel()).removePropertyChangeListener(this);
}
public void propertyChange(PropertyChangeEvent evt) {
String prop = evt.getPropertyName();
if (Diagram.PROP_NODE.equals(prop))
refreshChildren();
if (evt.getPropertyName().equals(Node.PROP_LOCATION))
refreshVisuals();
else if (evt.getPropertyName().equals(Node.PROP_NAME))
refreshVisuals();
else if (evt.getPropertyName().equals(Node.PROP_INPUTS))
refreshTargetConnections();
else if (evt.getPropertyName().equals(Node.PROP_OUTPUTS))
refreshSourceConnections();
}
protected IFigure createFigure() {
Figure figure = new FreeformLayer();
figure.setLayoutManager(new FreeformLayout());
return figure;
}
//NodeEditPart
protected void createEditPolicies() {
installEditPolicy(EditPolicy.LAYOUT_ROLE, new DiagramLayoutEditPolicy());
installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new DiagramGraphicalNodeEditPolicy());
}
public ConnectionAnchor getSourceConnectionAnchor(ConnectionEditPart arg0) {
// TODO 用来被connectionEditPart调用
return sourceAnchor;
}
public ConnectionAnchor getSourceConnectionAnchor(Request req) {
// TODO 被policy调用(GraphicalNodeEditPolicy&ConnectionEndpointEditPolicy)
if(req instanceof CreateConnectionRequest)
sourceAnchor = new XYAnchor(((CreateConnectionRequest) req).getLocation());
else if(req instanceof ReconnectRequest)
sourceAnchor = new XYAnchor(((ReconnectRequest) req).getLocation());
return sourceAnchor;
}
public ConnectionAnchor getTargetConnectionAnchor(ConnectionEditPart arg0) {
// TODO Auto-generated method stub
return targetAnchor;
}
public ConnectionAnchor getTargetConnectionAnchor(Request req) {
// TODO Auto-generated method stub
if(req instanceof CreateConnectionRequest)
targetAnchor = new XYAnchor(((CreateConnectionRequest) req).getLocation());
else if(req instanceof ReconnectRequest)
targetAnchor = new XYAnchor(((ReconnectRequest) req).getLocation());
return targetAnchor;
}
//override
protected List getModelSourceConnections(){
return ((Diagram) this.getModel()).getOutgoingConnections();
}
protected List getModelTargetConnections(){
return ((Diagram) this.getModel()).getOutgoingConnections();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -