GEF를 사용하여 파일 간의 종속성을 시각화하는 도구를 만듭니다. 노드 간 연결을 성공적으로 관리했으며 ManhattenConnectionRouter
을 사용하는 기능을 전환 할 수도 있습니다.Eclipse GEF FanRouter
그러나 FanRouter
을 사용하는 데 문제가 있습니다.
GEF에서 제공하는 논리 예제를 따라했으나 여전히 문제가 있습니다. 불행하게도 FanRouter
을 구현하는 방법을 보여주는 다른 튜토리얼은 없습니다. 구현의 FreeformLayer
기본 클래스 :
public class DependencyGraphPart extends AbstractGraphicalEditPart implements LayerConstants {
private DependencyGraphAdapter adapter;
public DependencyGraphPart(){
super();
adapter = new DependencyGraphAdapter();
}
@Override protected IFigure createFigure() {
FreeformLayer layer = new FreeformLayer();
layer.setLayoutManager(new FreeformLayout());
layer.setBorder(new LineBorder(1));
return layer;
}
@Override protected void refreshVisuals(){
ConnectionLayer cLayer = (ConnectionLayer) getLayer(CONNECTION_LAYER);
cLayer.setAntialias(SWT.ON);
AutomaticRouter frouter = new FanRouter();
cLayer.setConnectionRouter(frouter);
}
그리고 여기 내 ConnectionClass :
여기 내 코드의 발췌 나는 ManhattenConnectionRouter
I를 구현하기 위해 노력
public class DCDependencyPart extends AbstractConnectionEditPart{
private DCDependencyAdapter adapter;
private Label label;
public DCDependencyPart() {
super();
adapter = new DCDependencyAdapter();
}
@Override protected void createEditPolicies() {
installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new ConnectionEndpointEditPolicy());
}
@Override
protected IFigure createFigure(){
PolylineConnection conn = new PolylineConnection();
conn.setLineWidth(conn.getLineWidth()*2);
conn.setConnectionRouter(new FanRouter());
conn.setTargetDecoration(new PolylineDecoration());
conn.setToolTip(new TooltipFigure());
label = new Label("1");
label.setOpaque(true);
label.setBackgroundColor(ColorConstants.buttonLightest);
label.setBorder(new LineBorder());
conn.add(label, new MidpointLocator (conn, 0));
return conn;
}
그것을 Connection 클래스에 추가하는 것만으로는 아무런 문제가 없었다. (DependencyGraphPart
의 수정 없음)
이들은 두 곳에서 활발하게 사용합니다 (Router
). 불행히도 나는 내 문제를 찾기에 충분할만큼 draw2d 및/또는 GEF를 모른다.
, 나는 당신의 예와 같이의 EditPart 클래스에'BendpointConnectionRouter을()'추가했습니다. 이러한 것들을 Connection 클래스에도 추가해야합니까, 아니면 라우팅을 완전히 제거해야합니까? 또한 모델에 저장하지 않으려면 BendpointEditPolicy가 필요합니까? – stklik
아니요, 원하지 않는 절곡 점을 편집 할 수 있으므로 절곡 점에 대한 편집 정책이 필요하지 않습니다. 라우팅은 연결 계층에 설정되므로 모든 연결에 대해 설정됩니다. 연결 숫자에 수동으로 추가 된 라우터 설정을 제거하십시오. – aboyko