일단 마무리를 지어야 할 것 같습니다.
구현은 다 했지만 테스트를 하기 위한 환경이 갖추어 지지 않았네요..
painter 쪽, 즉, 컨트롤러 쪽이 리팩토링을 해야 할 시기가 온것 같습니다..
오늘의 코딩 시나리오를 알려 드리죠.ㅋㅋ
redo undo가 구현이 완료 되어서 history에 언제 넣는지 결정하고 소스의 해당부분에 코드를 집어
넣으려고 했습니다. painter가 redoUndomanager와 symbolManager를 모두 갖고 있었기 때문에
코드는 redoUndoManager.add(symbolManager.createMemento()); 였습니다.
하지만, 굳이 painter가 redoUndoManager를 가질 필요가 없다고 생각하여 symbolManager가
redoUndoManager를 갖고 내부적으로 symbol들의 상태를 저장해야될 필요가 있을때
redoUndoManager의 add함수를 호출 하는 식으로 루틴을 변경했습니다. 하지만, 이렇게 하면
세밀한 history를 저장하지 못하고, 불필요한 history를 저장할 수 밖에 없는 상화이 오므로 다시 원래
대로 복구 했습니다. 이렇게 하는데 또다른 추가 사항이 생겼습니다.
속성창을 통해서 속성을 변경하게 된다면, 이것도 history에 저장해햐 하는데 propertyManager는
undoManager와 symbolManger와 painter를 모르기 때문에 속성이 바뀐것에 대한 history저장을
할 수 없다는 것을 알게 되었습니다. 물론, property manager가 위의 것들을 알면 되지만 이렇게 되면
너우 서로 의존도가 심하기 때문에 결굴 모든것을 중단하고 painter, symbolManger,
redoundoManager, propertyManager, 간의 중재를 해주는 무언가를 두어 리팩토링을 해야 겠다는
결론을 내렸습니다. 어떻게 할까 생각 하던중, 그렇다면, painter에 있는 버튼 그룹도 추가하여 서로 중
재해주면 되겠다는 생각을 추가하게 되었고, 더이상 머리가 복잡해지고, 이미 집중력의 한계와 늦은 시
간이 되었기 때문에 마무리를 하게 되었습니다.
헥헥헥.....
일단 쉬었다가 좋은 정신력으로 제대로 된 설계를 해야 하겠습니다.
그럼 안녕히 주무세요....~~