IDEA-120272 New Project wizard: java templates (JavaFX application, Command Line Application) are missing

This commit is contained in:
Dmitry Avdeev
2014-02-05 17:56:10 +04:00
parent dba7e9a86a
commit 06fb88cf8d
6 changed files with 31 additions and 24 deletions
@@ -20,7 +20,6 @@ import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -55,11 +54,6 @@ public abstract class ProjectCategory {
return createModuleBuilder().getGroupName();
}
@Nullable
public String getParentId() {
return null;
}
public FrameworkRole[] getAcceptableFrameworkRoles() {
return new FrameworkRole[] {createModuleBuilder().getDefaultAcceptableRole()};
}
@@ -473,14 +473,21 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable {
Disposer.dispose(this);
}
private static MultiMap<String, ProjectTemplate> loadLocalTemplates() {
private MultiMap<String, ProjectTemplate> loadLocalTemplates() {
ConcurrentMultiMap<String, ProjectTemplate> map = new ConcurrentMultiMap<String, ProjectTemplate>();
ProjectTemplateEP[] extensions = ProjectTemplateEP.EP_NAME.getExtensions();
for (ProjectTemplateEP ep : extensions) {
ClassLoader classLoader = ep.getLoaderForClass();
URL url = classLoader.getResource(ep.templatePath);
if (url != null) {
map.putValue(ep.projectType, new LocalArchivedTemplate(url, classLoader));
LocalArchivedTemplate template = new LocalArchivedTemplate(url, classLoader);
if (ep.category) {
TemplateBasedCategory category = new TemplateBasedCategory(template);
myTemplatesMap.putValue(new TemplatesGroup(category), template);
}
else {
map.putValue(ep.projectType, template);
}
}
}
return map;
@@ -15,42 +15,41 @@
*/
package com.intellij.ide.projectWizard;
import com.intellij.platform.templates.BuilderBasedTemplate;
import com.intellij.ide.util.projectWizard.ModuleBuilder;
import com.intellij.platform.templates.ArchivedProjectTemplate;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* @author Dmitry Avdeev
*/
public class ProjectCategoryTemplate extends BuilderBasedTemplate {
public class TemplateBasedCategory extends ProjectCategory {
private final ProjectCategory myCategory;
private final ArchivedProjectTemplate myTemplate;
public ProjectCategoryTemplate(ProjectCategory category) {
super(category.createModuleBuilder());
myCategory = category;
public TemplateBasedCategory(ArchivedProjectTemplate template) {
myTemplate = template;
}
@NotNull
@Override
public String getName() {
return myCategory.getDisplayName();
public String getDisplayName() {
return myTemplate.getName();
}
@Override
public Icon getIcon() {
return myCategory.getIcon();
return myTemplate.getIcon();
}
@Nullable
@Override
public String getDescription() {
return myCategory.getDescription();
return myTemplate.getDescription();
}
public ProjectCategory getCategory() {
return myCategory;
@NotNull
@Override
public ModuleBuilder createModuleBuilder() {
return myTemplate.createModuleBuilder();
}
}
@@ -154,6 +154,11 @@ public class TemplateModuleBuilder extends ModuleBuilder {
return myTemplate.getIcon();
}
@Override
public boolean isTemplateBased() {
return true;
}
@NotNull
@Override
public Module createModule(@NotNull ModifiableModuleModel moduleModel)
@@ -33,4 +33,6 @@ public class ProjectTemplateEP extends AbstractExtensionPointBean {
@Attribute("templatePath")
public String templatePath;
@Attribute("category")
public boolean category;
}
@@ -51,7 +51,7 @@
<renamePsiElementProcessor implementation="org.jetbrains.plugins.javaFX.JavaFxRenameAttributeProcessor" order="before xmlAttribute"/>
<completion.contributor implementationClass="org.jetbrains.plugins.javaFX.fxml.refs.JavaFxCompletionContributor" language="XML" order="before xmlNonFirst"/>
<manifest.parser.provider implementation="org.jetbrains.plugins.javaFX.manifest.JavaFxManifestHeaderParsers"/>
<projectTemplate projectType="Java" templatePath="resources/projectTemplates/Java/JavaFX Application.zip"/>
<projectTemplate projectType="Java FX" templatePath="resources/projectTemplates/Java/JavaFX Application.zip" category="true"/>
</extensions>
<actions>