你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
使用Eclipse向导进行快速开发(2)
 
图 5. New Wizard Options 窗口

  使用Eclipse向导进行快速开发

  单击 Finish。Eclipse 将给新项目添加必要的类和库。

  虽然还没完成,但是已经有了很好的开端并且准备好开始在向导背后添加一些实现。

  Wizard 类和 INewWizard 接口

  现在项目中有三个类:NewXHTMLFileWizard、NewXHTMLFileWizardPage 和 Activator。下面的部分将处理 NewXHTMLFileWizard 类。该类如清单 1 所示,不过没有显示方法中的所有代码。

  清单 1. NewXHTMLFileWizard 类public class NewXHTMLFileWizard extends Wizard implements INewWizard {
  private NewXHTMLFileWizardPage page;
  private ISelection selection;
  public NewXHTMLFileWizard() {
    // snipped...
  }
  
  public void addPages() {
    // snipped...
  }
  public boolean performFinish() {
    // snipped...
  }
  
  private void doFinish(
    // snipped...
  }
  
  private InputStream openContentStream() {
    // snipped...
  }
  private void throwCoreException(String message) throws CoreException {
    // snipped...
  }
  public void init(IWorkbench workbench, IStructuredSelection selection) {
    // snipped...
  }
}

  实现 INewWizard 接口必须使用最后一个方法 init()。接下来,本文将介绍此方法以及此模板中自动包括的其余方法。

addPages() 方法

  addPages() 方法将把页面添加到向导中。清单 2 中所示的方法将把单个页面添加到向导 NewXHTMLFileWizardPage 中。

  清单 2. addPages() 方法将把页面添加到向导中  /**
   * Adding the page to the wizard.
   */
  public void addPages() {
    page = new NewXHTMLFileWizardPage(selection);
    // You can add more pages here...
    addPage(page);
  }

  NewXHTMLFileWizardPage 类包含为用户提供指定页面名称功能的控件。您可以稍后把控件添加到页面中,使最终用户可以输入更多信息。

  performFinish() 方法

  当用户单击向导中的 Finish 按钮时将调用 performFinish() 方法。在执行一些检查之后,它将使用 IRunnableWithProgress 接口调用 doFinish() 方法。使用此接口意味着在执行 doFinish() 方法时(在本例中需要花很长时间运行)不必编写显示进度条的所有 UI 元素。下面完整地列出了该方法。

  清单 3. performFinish() 方法  /**
   * This method is called when 'Finish' button is pressed in
   * the wizard. We will create an operation and run it
   * using wizard as execution context.
   */
  public boolean performFinish() {
    final String containerName = page.getContainerName();
    final String fileName = page.getFileName();
    IRunnableWithProgress op = new IRunnableWithProgress() {
      public void run(IProgressMonitor monitor) throws InvocationTargetException {
        try {
          doFinish(containerName, fileName, monitor);
        } catch (CoreException e) {
          throw new InvocationTargetException(e);
        } finally {
          monitor.done();
        }
      }
    };
    try {
      getContainer().run(true, false, op);
    } catch (InterruptedException e) {
      return false;
    } catch (InvocationTargetException e) {
      Throwable realException = e.getTargetException();
      MessageDialog.openError(getShell(), "Error", realException.getMessage());
      return false;
    }
    return true;
  }

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089