2010년 2월 26일 금요일

JFace Wizard Dialog 열기

Eclipse Plugin으로 Wizard를 만드는 경우에는 File --> New 에 Wizard가 자동으로 등록되기 때문에 Wizard Dialog가 어떻게 작동하는지 알지 못해도 상관이 없지만,
버튼을 클릭하는 경우와 같이 별도의 이벤트를 받아서 다이얼로그를 띄워야 할 경우에는 프로그램적으로 WizardDialog를 띄워줘야 한다.

물론 Wizard와 Wizard 안에 포함되어야 하는 WizardPage 들은 WizardDialog가 어떤 방식으로 호출되든 상관없이 미리 개발되어 있어야 한다.

아래의 예제는 Eclipse에서 가장 많이 사용하게 되는 Wizard 중에 하나인 클래스 생성 Wizard를 이벤트를 받아서 띄우는 예제다.



    NewClassCreationWizard wizard = new NewClassCreationWizard(project, isInter, value);
    WizardDialog dialog = new WizardDialog(PDEPlugin.getActiveWorkbenchShell(), wizard);

    dialog.create();
    SWTUtil.setDialogSize(dialog, 400, 500);
    
    if (dialog.open() == Window.OK) {
        return wizard.getQualifiedName();
    }


if (dialog.open() == Window.OK) { 안에는 Wizard의 Finish 버튼이 클릭된 후 처리되어야 하는 로직을 작성해 주면 된다.

참고로 WizardPage는 createControl 메소드 내에서 반드시 setControl() 메소드를 호출해 주어야 한다.
이렇게 하지 않으면 다이얼로그 창을 생성할 때 에러가 발생한다.



  @Override
  public void createControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    
    setControl(container);
  }

댓글 없음:

댓글 쓰기