Java Wizard Dialog

[Dev/Java] 2007. 12. 8. 03:25
이 프로그램은  Wizard Dialog 에서 소개하는 프레임워크를 다듬어서 좀 더 깔끔하게 개량했습니다. 기본적인 사용방식은 엮인글을 보시면 되고 여기에서는 사용방법을 설명하기 위해 만든 간단한 test program 의 실행 모습을 캡쳐했습니다.
 
이 구현은 이클립스의 마법사 대화창에서 모티브를 얻었는데, 똑같이 구현했다고 보시면 되겠습니다. ^^
 
대화창은 사용자와 동적으로 메세지를 주고 받으면서 일련의 작업들을 순차적으로 수행해나갑니다. 이를 위해서 원래의 Wizard Dialog 프레임워크에 없던 TitlePanel 을 도입해서 프레임워크에 추가시켰습니다. 현재 열려진 Panel 의 제목과 기본적인 설명을 보여주고 사용자의 입력이 맞지 않으면 적절한 에러 메세지를 보여줌으로써 직관성을 높였습니다.
 
 
프로그램 실행 후 버튼을 눌러서 대화창을 활성화시킨 후 나타나는 화면입니다.
 
사용자 삽입 이미지
첫번째 Panel 에 해당하는 코드는 아래와같습니다.
 
    TestDescriptor1 desc1 = new TestDescriptor1("desc1", // key
                          new JScrollPane(tree),                      // Panel
                          DialogWizard.FIRST_STATE,               // Button State
                          "Test Descriptor",                            // 제목
                          "this text is test description. you can see the detail "+
                                  "of what you are doing in the dialog.",   // 설명
                          null);            // 오른쪽 가장자리에 보여질 이미지
 
두번째 Panel 에서는 Panel 이 대화창 프레임워크를 제어하는 모습을 보여줍니다.
 
사용자 삽입 이미지
        TestPanel2 panel2 = new TestPanel2();
        TestDescriptor2 desc2 = new TestDescriptor2("desc2",
                        panel2, DialogWizard.PAUSE_STATE,
                        "Test Descriptor2",
                        "This is the second Descriptor Message",
                        null);
        panel2.addCheckBoxListener(desc2);
 
Panel 에 대한 참조를 갖고 있는 PanelDescriptor를 구현할 때 Panel 내의 Component가 요구하는 Listener 를 구현함으로써 사용자가 Panel 내의 컴포넌트를 조작할 때 이벤트를 전달받아서 적절한 operation을 수행하게 됩니다.
 
 
마지막 세번째 창은 잘못된 사용자 operation 에 대해서 에러 메세지를 보여주는 화면입니다. 사용자의 적절한 입력을 보고 다음 페이로 넘어갈 수 있는지를 결정합니다.

두번째 Panel과 마찬가지로 PanelDescriptor 가 TextField의 DocumentListener를 구현해서 현재 입력이 올바른지를 판단합니다.
 
사용자 삽입 이미지
 
 
아래와같이 숫자를 넣고 Finish 버튼을 눌러서 작업을 끝냅니다.
 
사용자 삽입 이미지
 
 
이것은 대화창으로부터 얻어낸 결과....
 
사용자 삽입 이미지
 

아래의 그림의 Wizard Dialog의 클래스 다이어그램입니다.

자세한 내용은 첨부된 코드의 test 디렉토리에 있는 예제 코드를 참조하시길...

사용자 삽입 이미지

만들어놓고나서 개인적으로 평가하자면... 일단 인터페이스가 깔끔하지 못한 듯..

인터페이스가 깔끔하지 못하다는건 불필요한 부분이 많이 노출되었다는 뜻이기도 하다.

조만간 시간내서 설계를 더 가다듬고 사용하기 편하게 인터페이스를 개량해야 할듯..

'Dev > Java' 카테고리의 다른 글

[ Swing ] JTree 의 Tooltip 구현 변경하기  (1) 2007.12.12
Java System Properties  (0) 2007.12.08
Advanced Socket Programming  (0) 2007.12.03
Posted by yeori
,