2011-11-14 4 views
0

현재 Eclipse GEF로 편집기를 작성 중입니다. 편집기를 통해 새 파트를 추가하고 이름을 바꿀 수 있습니다.GEF 편집기의 요소 이동이 작동하지 않습니다.

그러나 요소 이동에 약간 문제가 있습니다. 마우스로 드래그 할 때 마우스를 놓으면 움직이지 않으며 요소가 다른 것과 충돌하지 않습니다.
요소의 위치는 EMap에 저장됩니다 (모델은 EMF로 작성). 보기의 변경 사항은 put지도의 방법으로 저장됩니다.

디버거를 사용하면서 명령이 실행되었지만보기가 아직 새로 고쳐지지 않은 것으로 나타났습니다.

모델에 어댑터를 추가했지만 시스템에서 notifyChanged을 호출하지 않았습니다.

public class ViewAdapter implements Adapter { 
    @Override 
    public void notifyChanged(Notification notification) { 
     refreshVisuals(); 
    } 
} 

ViewAdapterEditPart의 활성화 방법에 등록된다.

무엇이 될 수 있습니까?

답변

2

지도로 작업 할 때 정상적인 Adapter 인터페이스는 작동하지 않습니다.지도 엔트리의 추가 또는 제거 만 듣기 때문입니다.

당신이지도 요소의 변화에 ​​듣고 싶은 경우에, 당신은 사용해야 EContentAdapter 대신 :

public class ViewAdapter extends EContentAdapter { 
    @Override 
    public void notifyChanged(Notification notification) { 
     refreshVisuals(); 
     super.notifyChanged(notification); 
    } 
} 

이 맵 항목의 알림을지도에 forwared되도록 당신이 슈퍼 메소드를 호출하는 것이 중요합니다 그 자체.