그래프에 그려진 figure 들의 사이즈 조절이라던가 위치 이동이 이번 파트의 목적입니다.
Command 와 EditPolicy
이 부분에 대해서는 아직까지 짧은 지식으로는 설명이 어렵습니다. 나중에 더 알게된다면 추가적으로 설명을 달아놓겠습니다.
우선 layout 이 변경될 경우를 처리하는 command 클래스를 하나 생성합니다.
ElementChangeLayoutCommand
:
ElementBase
의 layout 의 변경을 명령??
위의 command 를 관리하는 EditPolicy 를 생성합니다.
ElementEditLayoutPolicy
:
실행할 command 를 반환해주는
createChangeConstraintCommand()
메소드를 구현합니다.
이러한 정책을 등록을 해야하는데
EditPart
의
createEditPolicies()
메소드에서 등록을 합니다.
이 상태에서 테스트 application 을 띄우게 되면 SimpleElementFIgure 를 선택할 수 있고 이동이나 사이즈 조절을 할 수 있게 되는데 실제로는 변경이 되지 않습니다.
PropertyChangeSupport 의 이용
layout 변경만 처리할 뿐이지 실제로 변경에 대한 통지를 받지 못하는 것인데 다음과 같은 간단한 구현으로 해당 사항을 처리할 수 있습니다.
ElementBase 클래스에서 PropertyChangeSupport 를 이용해서 리스너들을 관리하고 실제로 모델의 layout 에 변경이 있을 경우 리스너에 프로퍼티의 변경을 통지하여 figure 가 다시 그려질 수 있도록 하는 것입니다.
ElementBase
클래스에 리스너 관리자와 프로퍼티를 추가합니다.
실제로 변경을 통지받고 처리를 할 EditPart 에 PropertyChangeListener 를 구현하고 약간의 로직을 추가합니다.
ElementPartBase
클래스를 수정합니다.
활성화시(
activate 메소드
) 리스너를 추가해서 프로퍼티의 변경이 이루어질 경우(
propertyChange 메소드
) 다시 그려주게(
refreshVisuals 메소드
) 됩니다. 비활성화(
deactivate 메소드
) 시에는 모델에서 리스너를 제거합니다.
여기까지 작성이 완료되게 되면 돌려봐야겠죠~
아직도 무작정 따라할 것이 많이 남았습니다.
역시 만만치 않아효~
댓글
댓글 쓰기