扩展点总结之org.eclipse.ui.newWizards

本文详细介绍了如何使用组织扩展点org.eclipse.ui.newWizards注册资源创建向导,以创建特定类型的AIR项目,包括HTML、Flex项目以及相关文件。通过自定义向导类和配置属性,可以实现创建项目时的个性化需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建向导扩展点:org.eclipse.ui.newWizards
描述:此扩展点用来注册资源创建向导扩展。创建向导作为“新建对话框”中的选项出现,该向导通常用于创建文件夹或文件。
class:实现org.eclipse.ui.INewWizard的java类实例 
project - 指示向导将创建 IProject 资源的可选属性。还导致向导作为“新建项目对话框”中的选项出
现。 
finalPerspective - 标识在 IProject 资源创建完成时要激活的透视图的可选属性。 
preferredPerspectives - 指定用逗号分隔的透视图标识列表的可选属性。如果当前透视图在此列表


eg:
<extension
         point="org.eclipse.ui.newWizards">
      <category
            id="net.sf.amateras.air.category"
            name="AIR GEAR"/>
      <wizard
            category="net.sf.amateras.air.category"
            class="net.sf.amateras.air.wizards.project.NewAIRHTMLProjectWizard"
            icon="icons/airgear.gif"
            id="net.sf.amateras.air.wizards.NewAIRHTMLProjectWizard"
            finalPerspective="net.sf.amateras.air.perspective"
   preferredPerspectives="net.sf.amateras.air.perspective"
            name="AIR Project(HTML)"
            project="true"/>
      <wizard
            category="net.sf.amateras.air.category"
            class="net.sf.amateras.air.wizards.project.NewAIRFlexProjectWizard"
            icon="icons/airgear.gif"
            id="net.sf.amateras.air.wizards.NewAIRFlexProjectWizard"
            finalPerspective="net.sf.amateras.air.perspective"
   preferredPerspectives="net.sf.amateras.air.perspective"
            name="AIR Project(Flex)"
            project="true"/>
       <wizard
            category="net.sf.amateras.air.category"
            class="net.sf.amateras.air.wizards.file.WizardNewMXMLFileCreation"
            icon="icons/mxml.gif"
            id="net.sf.amateras.air.wizards.file.WizardNewMXMLFileCreation"
            finalPerspective="net.sf.amateras.air.perspective"
   preferredPerspectives="net.sf.amateras.air.perspective"
            name="MXML file"
            project="true"/>
       <wizard
            category="net.sf.amateras.air.category"
            class="net.sf.amateras.air.wizards.file.WizardNewASFileCreation"
            icon="icons/as.gif"
            id="net.sf.amateras.air.wizards.file.WizardNewASFileCreation"
            finalPerspective="net.sf.amateras.air.perspective"
   preferredPerspectives="net.sf.amateras.air.perspective"
            name="ActionScript file"
            project="true"/>
   </extension>
  
  
   eg:
   /**
 *
 * @author Naoki Takezoe
 */
public class NewAIRHTMLProjectWizard extends AbstractNewAIRProjectWizard {

 public NewAIRHTMLProjectWizard() {
  setWindowTitle("New AIR HTML Project");
 }

 @Override
 protected void addProjectSpecificParameters(Map<String, String> params) {
  String mainHTML = ((AIRHTMLProjectPropertiesWizardPage) page2).getMainHTML();
  params.put(DescriptorContextType.CONTENT, mainHTML);
 }

 @Override
 protected AIRProjectWizardPage createPage1() {
  AIRProjectWizardPage page = new AIRProjectWizardPage("New HTML AIR Application Project",
    AIRProjectWizardPage.HTML_PROJECT);
  page.setTitle("New HTML AIR Application Project");
  page.setDescription("Create new HTML based AIR application project.");
  return page;
 }

 @Override
 protected AbstractAIRProjectPropertiesWizardPage createPage2() {
  AIRHTMLProjectPropertiesWizardPage page = new AIRHTMLProjectPropertiesWizardPage("HTML Project Properties");
  page.setTitle("HTML Project Properties");
  page.setDescription("Input your project properties.");
  return page;
 }

 @Override
 protected void createProjectSpecificResources(IProject project, String descriptorTemplateName,
   Map<String, String> params, IProgressMonitor monitor) throws Exception {
  // make application descriptor
  createFile(project, "application.xml", getTemplateContents(descriptorTemplateName), params, monitor);

  // make main html
  createFile(project, params.get(DescriptorContextType.CONTENT), NewAIRHTMLProjectWizard.class
    .getResourceAsStream("main.html"), params, monitor);

  // copy JavaScript
  IPreferenceStore store = AIRPlugin.getDefault().getPreferenceStore();
  String sdkPath = store.getString(AIRPlugin.PREF_AIR_SDK_PATH);
  File javaScript = new File(sdkPath, "frameworks/AIRAliases.js");
  if (!javaScript.exists()) {
   javaScript = new File(sdkPath, "frameworks/libs/air/AIRAliases.js");
  }
  if (javaScript.exists()) {
   createFile(project, "AIRAliases.js", new FileInputStream(javaScript), null, monitor);
  }
 }

 @Override
 protected String getNatureId() {
  return AIRHTMLProjectNature.NATURE_ID;
 }

}


/**
 * The wizard page to input AIR project name.
 *
 * @author Naoki Takezoe
 */
public class AIRProjectWizardPage extends AbstractProjectWizardPage {

 public static final int HTML_PROJECT = 0;
 public static final int FLEX_PROJECT = 1;
 public static final int FLEX3_PROJECT = 3;

 private int projectType;

 /**
  * Constructor.
  *
  * @param pageName the page name
  * @param projectType {@link AIRProjectWizardPage#HTML_PROJECT} or
  *     {@link AIRProjectWizardPage#FLEX_PROJECT}
  */
 public AIRProjectWizardPage(String pageName, int projectType) {
  super(pageName);
  this.projectType = projectType;
 }

 @Override
 protected void modifyTextToProjetName() {
  AbstractAIRProjectPropertiesWizardPage nextPage = (AbstractAIRProjectPropertiesWizardPage) getNextPage();
  if (nextPage != null) {
   nextPage.projectNameChanged(getProjectName());
  }
 }

 @Override
 protected boolean validatePage() {
  IPreferenceStore store = AIRPlugin.getDefault().getPreferenceStore();
  if (projectType == HTML_PROJECT) {
   if (store.getString(AIRPlugin.PREF_AIR_SDK_PATH).length() == 0) {
    setErrorMessage(AIRPlugin.getResourceString("NOT_AIR_SDK_SETTING"));
    setPageComplete(false);
    return false;
   }
  } else if (projectType == FLEX_PROJECT || projectType == FLEX3_PROJECT) {
   if (store.getString(AIRPlugin.PREF_FLEX_SDK_PATH).length() == 0) {
    setErrorMessage(AIRPlugin.getResourceString("NOT_FLEX_SDK_SETTING"));
    setPageComplete(false);
    return false;
   }
  }
  return super.validatePage();
 }

}

 


/**
 * The wizard page to input AIR project name.
 *
 * @author Naoki Takezoe
 */
public abstract class AbstractProjectWizardPage extends WizardNewProjectCreationPage {

 /**
  * Constructor.
  *
  * @param pageName the page name
  * @param projectType {@link AbstractProjectWizardPage#HTML_PROJECT} or
  *     {@link AbstractProjectWizardPage#FLEX_PROJECT}
  */
 public AbstractProjectWizardPage(String pageName) {
  super(pageName);
 }

 @Override
 public void createControl(Composite parent) {
  super.createControl(parent);

  Text text = (Text) ReflectionUtil.getField(this, "projectNameField");
  text.addModifyListener(new ModifyListener() {
   public void modifyText(ModifyEvent evt) {
    modifyTextToProjetName();
   }
  });

  validatePage();
 }

 protected abstract void modifyTextToProjetName();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值