2011-03-08 2 views
0

GEF와 Draw2d를 사용하여 그래프를 만듭니다.GEF/draw2d 라인 라우팅 알고리즘

나는 의미 내가 보여주고 싶은 3 단계 구조를 가지고 있습니다

RootEditPart
/
Level1EditPart
/
Level2EditPart
/
레벨 2는 여러가 Level3EditPart

어린이.

나는 (A 레벨 2 컨테이너 내에서)를 Level3EditParts 사이의 연관성을합니다. 나는에 대한 혼란 스러워요 무엇

내가 이러한 연결에 대한 알고리즘을 라우팅 라인을 설정 곳이며, 그것은 부모/자녀의 EditPart/그림 계층 구조를 통해 상속되는 방식.

이상적으로, 나는 ShortestPathConnectionRouter를 사용하고 싶습니다. Level2EditPart의 그림을 사용하여 연결 계층의 연결 라우터로 설정하여이 기능을 사용하려고했습니다. 내 이해는 피할 수있는 장애물로이 그림의 아이들을 사용할 것입니다 (그래서 다른 레벨 3를 통해 선을 그 으려하지는 않지만 피하기 위해 노력하십시오).

ShortestPathRoutingAlgorithm과 같이 보이는 코드를 디버깅 할 때 Connection Figures에 대한 하나의 좌표 시스템 (연결 레이어에 대해 좌표계를 추측하고 있음)을 사용하면 작동하지 않습니다. , Level3 Figures (Level2 Figure의 부모 좌표계 인 Level2 Figure)에 대한 또 다른 항목입니다. 이것은 내 레벨 3 중 하나와 교차 할 때 결코 운동하지 못하므로 결코 피하려고 시도하지 않는다는 것을 의미합니다.

그래서 나는 어느 ShortestPathConnectionRouter의 기능을 오해거야 아니면 내가 잘못을 설정했습니다. 아무도 나에게 도움을 줄 수 있습니까? 당신이 그것을 생성자에서 부모 그림을 제공해야하기 때문에

답변

0

당신은 연결 층의 라우터로 ShortestPathConnectionRouter을 설정할 수 없습니다. 당신은 당신이 그것을 사용하고자하는 모든 연결을 설정해야합니다,이 라우터를 사용하려면, 당신은 쉽게 다음과 같이 검색 할 수 있습니다 부모 그림을 제공해야합니다

if(getSource().getParent() instanceof MyNodeEditPart) { 
    MyNodeEditPart parent = (MyNodeEditPart) getSource().getParent(); 
    conn.setConnectionRouter(new ShortestPathConnectionRouter(parent.getFigure())); 
} 

가 작동이 방법.