擴充點總結之org.eclipse.ui.newWizards

來源:互聯網
上載者:User

建立嚮導擴充點: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();

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.