描述:此扩展点用来注册资源创建向导扩展。创建向导作为“新建对话框”中的选项出现,该向导通常用于创建文件夹或文件。
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();
}