From cd39c84585582324074ede68a940507a910b5a77 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 20 Feb 2014 12:10:52 +0400 Subject: [PATCH] remote templates --- .../ide/projectWizard/ChooseTemplateStep.java | 4 ++++ .../ide/projectWizard/NewProjectWizard.java | 6 +++++- .../ide/projectWizard/ProjectTypeStep.java | 14 ++++---------- .../templates/RemoteTemplatesFactory.java | 18 ++++-------------- 4 files changed, 17 insertions(+), 25 deletions(-) diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java b/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java index 8532bfdd9c26..edc6a019a29c 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/ChooseTemplateStep.java @@ -73,4 +73,8 @@ public class ChooseTemplateStep extends ModuleWizardStep { myWizardContext.setProjectTemplate(myTemplateList.getSelectedTemplate()); } } + + public ProjectTemplateList getTemplateList() { + return myTemplateList; + } } diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/NewProjectWizard.java b/java/idea-ui/src/com/intellij/ide/projectWizard/NewProjectWizard.java index 12007df25f2c..e7e172c0c117 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/NewProjectWizard.java +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/NewProjectWizard.java @@ -47,11 +47,15 @@ public class NewProjectWizard extends AbstractProjectWizard { myWizardContext.setNewWizard(true); ProjectTypeStep projectTypeStep = new ProjectTypeStep(myWizardContext, this, modulesProvider); mySequence.addCommonStep(projectTypeStep); - mySequence.addCommonStep(new ChooseTemplateStep(myWizardContext, projectTypeStep)); + ChooseTemplateStep chooseTemplateStep = new ChooseTemplateStep(myWizardContext, projectTypeStep); + mySequence.addCommonStep(chooseTemplateStep); mySequence.addCommonFinishingStep(new ProjectSettingsStep(myWizardContext), null); for (ModuleWizardStep step : mySequence.getAllSteps()) { addStep(step); } + if (myWizardContext.isCreatingNewProject()) { + projectTypeStep.loadRemoteTemplates(chooseTemplateStep); + } super.init(); } diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java index ffabcb9e9980..2c8ac124a2f4 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java @@ -114,7 +114,6 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable { }; private final Map myCustomSteps = new HashMap(); private final MultiMap myTemplatesMap; - private boolean myRemoteTemplatesLoaded; private String myCurrentCard; public ProjectTypeStep(WizardContext context, NewProjectWizard wizard, ModulesProvider modulesProvider) { @@ -459,13 +458,6 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable { } } - @Override - public void updateStep() { - if (myContext.isCreatingNewProject() && !myRemoteTemplatesLoaded) { - loadRemoteTemplates(); - } - } - @Override public boolean validate() throws ConfigurationException { ModuleWizardStep step = getCustomStep(); @@ -519,12 +511,13 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable { return map; } - private void loadRemoteTemplates() { + void loadRemoteTemplates(final ChooseTemplateStep chooseTemplateStep) { ProgressManager.getInstance().run(new Task.Backgroundable(myContext.getProject(), "Loading Templates") { @Override public void run(@NotNull ProgressIndicator indicator) { try { myTemplatesList.setPaintBusy(true); + chooseTemplateStep.getTemplateList().setPaintBusy(true); RemoteTemplatesFactory factory = new RemoteTemplatesFactory(); String[] groups = factory.getGroups(); for (String group : groups) { @@ -545,12 +538,13 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable { if (group == null) return; Collection templates = myTemplatesMap.get(group); setTemplatesList(group, templates, true); + chooseTemplateStep.updateStep(); } }); } finally { myTemplatesList.setPaintBusy(false); - myRemoteTemplatesLoaded = true; + chooseTemplateStep.getTemplateList().setPaintBusy(false); } } }); diff --git a/java/idea-ui/src/com/intellij/platform/templates/RemoteTemplatesFactory.java b/java/idea-ui/src/com/intellij/platform/templates/RemoteTemplatesFactory.java index f62333ce30b2..dd30f52a5386 100644 --- a/java/idea-ui/src/com/intellij/platform/templates/RemoteTemplatesFactory.java +++ b/java/idea-ui/src/com/intellij/platform/templates/RemoteTemplatesFactory.java @@ -55,8 +55,6 @@ import java.util.zip.ZipInputStream; public class RemoteTemplatesFactory extends ProjectTemplatesFactory { private static final String URL = "http://download.jetbrains.com/idea/project_templates/"; - public static final String SAMPLES_GALLERY = "Samples Gallery"; - private static final Namespace NAMESPACE = Namespace.getNamespace("http://www.jetbrains.com/projectTemplates"); public static final String INPUT_FIELD = "input-field"; public static final String TEMPLATE = "template"; @@ -113,20 +111,12 @@ public class RemoteTemplatesFactory extends ProjectTemplatesFactory { @SuppressWarnings("unchecked") public static MultiMap createFromText(String text) throws IOException, JDOMException { - Element rootElement = JDOMUtil.loadDocument(text).getRootElement(); - List groups = rootElement.getChildren("group", NAMESPACE); MultiMap map = new MultiMap(); - if (groups.isEmpty()) { // sample gallery by default - map.put(SAMPLES_GALLERY, createGroupTemplates(rootElement, Namespace.NO_NAMESPACE)); + Element rootElement = JDOMUtil.loadDocument(text).getRootElement(); + List templates = createGroupTemplates(rootElement, Namespace.NO_NAMESPACE); + for (ArchivedProjectTemplate template : templates) { + map.putValue(template.getCategory(), template); } - else { - for (Element group : groups) { - if (checkRequiredPlugins(group, NAMESPACE)) { - map.put(group.getChildText("name", NAMESPACE), createGroupTemplates(group, NAMESPACE)); - } - } - } - return map; }