你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
使用Eclipse向导进行快速开发(9)
 
更改 plugin.xml 的目的是让 Eclipse 知道 NewSiteProjectWizard 类是可以由 Eclipse 调用的向导。它也被归到先前讨论的 NewXHTMLFileWizard 类所在的类别下。project="true" 属性告诉 Eclipse 它是一个项目,因此它将被显示在相应的上下文中。

  addPages() 方法

  Eclipse API 包括一些向导类和向导页面类,如果您要执行基本功能并且不需要进行定制,则这些类将十分有用。从技术上讲,NewSiteProjectWizard 可以扩展 BasicNewProjectResourceWizard —— 用于创建基本项目的已有项目向导 —— 虽然设计者在 JavaDoc 中注明不适于创建该类的子类。要获得基本的项目信息(如项目名称),可以使用 BasicNewProjectResourceWizard 所使用的同一个向导页面 —— WizardNewProjectCreationPage 类,如下所示:

  清单 18. addPages() 方法  public void addPages() {
   /*
    * Unlike the custom new wizard, we just add the pre-defined one and
    * don't necessarily define our own.
    */
   wizardPage = new WizardNewProjectCreationPage(
      "NewExampleComSiteProject");
   wizardPage.setDescription("Create a new Example.com Site Project.");
   wizardPage.setTitle("New Example.com Site Project");
   addPage(wizardPage);
  }

  此方法将创建页面类的新实例,设定描述和标题,然后将其添加为向导页面。

  performFinish() 方法

  像 NewXHTMLFileWizard 类一样,NewSiteProjectWizard 也有 performFinish() 方法(如清单 19 所示),该方法将在用户完成向导中的步骤并单击了 Finish 时执行。此方法将调用执行 createProject() 方法的过程,该方法将执行大部分繁琐的创建工作,如创建项目、文件夹和文件。

清单 19. performFinish() 方法  @Override
  public boolean performFinish() {
    if (project != null) {
      return true;
    }
    final IProject projectHandle = wizardPage.getProjectHandle();
    URI projectURI = (!wizardPage.useDefaults()) ? wizardPage
        .getLocationURI() : null;
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    final IProjectDescription desc = workspace
        .newProjectDescription(projectHandle.getName());
    desc.setLocationURI(projectURI);
    /*
     * Just like the ExampleWizard, but this time with an operation object
     * that modifies workspaces.
     */
    WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
      protected void execute(IProgressMonitor monitor)
          throws CoreException {
        createProject(desc, projectHandle, monitor);
      }
    };
    /*
     * This isn't as robust as the code in the BasicNewProjectResourceWizard
     * class. Consider beefing this up to improve error handling.
     */
    try {
      getContainer().run(true, true, op);
    } catch (InterruptedException e) {
      return false;
    } catch (InvocationTargetException e) {
      Throwable realException = e.getTargetException();
      MessageDialog.openError(getShell(), "Error", realException
          .getMessage());
      return false;
    }
    project = projectHandle;
    if (project == null) {
      return false;
    }
    BasicNewProjectResourceWizard.updatePerspective(config);
    BasicNewProjectResourceWizard.selectAndReveal(project, workbench
        .getActiveWorkbenchWindow());
    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