From bd244bac62f74fb723b219da9ff3bbe5eb53cf88 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Mon, 12 Nov 2012 11:00:44 +0400 Subject: [PATCH] do not process builders twice --- .../util/newProjectWizard/StepSequence.java | 38 ++++++++----------- .../modes/CreateFromScratchMode.java | 9 +---- .../modes/CreateFromTemplateMode.java | 13 +------ 3 files changed, 19 insertions(+), 41 deletions(-) diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/StepSequence.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/StepSequence.java index 7f9b97146af2..4d7f47a31cba 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/StepSequence.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/StepSequence.java @@ -20,9 +20,13 @@ */ package com.intellij.ide.util.newProjectWizard; +import com.intellij.ide.util.projectWizard.ModuleBuilder; import com.intellij.ide.util.projectWizard.ModuleWizardStep; +import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.module.ModuleType; +import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -32,7 +36,7 @@ import java.util.*; public class StepSequence { private final List myCommonSteps = new ArrayList(); private final List myCommonFinishingSteps = new ArrayList(); - private final Map> mySpecificSteps = new HashMap>(); + private final MultiMap mySpecificSteps = new MultiMap(); @NonNls private List myTypes = new ArrayList(); private List mySelectedSteps; @@ -48,13 +52,15 @@ public class StepSequence { myCommonFinishingSteps.add(step); } - public void addSpecificStep(String type, ModuleWizardStep step) { - List list = mySpecificSteps.get(type); - if (list == null) { - list = new ArrayList(); - mySpecificSteps.put(type, list); + public void addStepsForBuilder(ModuleBuilder builder, WizardContext wizardContext, ModulesProvider modulesProvider) { + String id = builder.getBuilderId(); + if (!mySpecificSteps.containsKey(id)) { + mySpecificSteps.put(id, Arrays.asList(builder.createWizardSteps(wizardContext, modulesProvider))); } - list.add(step); + } + + public void addSpecificStep(String type, ModuleWizardStep step) { + mySpecificSteps.putValue(type, step); } public List getSelectedSteps() { @@ -62,10 +68,8 @@ public class StepSequence { mySelectedSteps = new ArrayList(); mySelectedSteps.addAll(myCommonSteps); for (String type : myTypes) { - final List steps = mySpecificSteps.get(type); - if (steps != null) { - mySelectedSteps.addAll(steps); - } + Collection steps = mySpecificSteps.get(type); + mySelectedSteps.addAll(steps); } mySelectedSteps.addAll(myCommonFinishingSteps); ContainerUtil.removeDuplicates(mySelectedSteps); @@ -105,9 +109,7 @@ public class StepSequence { public List getAllSteps() { final List result = new ArrayList(); result.addAll(myCommonSteps); - for (List steps : mySpecificSteps.values()) { - result.addAll(steps); - } + result.addAll(mySpecificSteps.values()); result.addAll(myCommonFinishingSteps); ContainerUtil.removeDuplicates(result); return result; @@ -116,12 +118,4 @@ public class StepSequence { public ModuleWizardStep getFirstStep() { return myCommonSteps.get(0); } - - public void addFrom(StepSequence from, String common) { - for (ModuleWizardStep step : from.myCommonSteps) { - addSpecificStep(common, step); - } - myCommonFinishingSteps.addAll(from.myCommonFinishingSteps); - mySpecificSteps.putAll(from.mySpecificSteps); - } } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java index 00f0f54c9216..78f909d19de5 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromScratchMode.java @@ -56,15 +56,10 @@ public class CreateFromScratchMode extends WizardMode { myBuildersMap.put(builder.getBuilderId(), builder); } myBuildersMap.put(ModuleType.EMPTY.getId(), new EmptyModuleBuilder()); - return addSteps(context, modulesProvider, new StepSequence(), builders); - } - - static StepSequence addSteps(WizardContext context, - ModulesProvider modulesProvider, - StepSequence sequence, ModuleBuilder[] builders) { + StepSequence sequence = new StepSequence(); for (ModuleBuilder builder : builders) { - CreateFromTemplateMode.addStepsForBuilder(builder, context, modulesProvider, sequence); + sequence.addStepsForBuilder(builder, context, modulesProvider); } return sequence; } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java index bd2a8be4cfe6..a20356605ade 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromTemplateMode.java @@ -18,7 +18,6 @@ package com.intellij.ide.util.newProjectWizard.modes; import com.intellij.ide.util.newProjectWizard.SelectTemplateStep; import com.intellij.ide.util.newProjectWizard.StepSequence; import com.intellij.ide.util.projectWizard.ModuleBuilder; -import com.intellij.ide.util.projectWizard.ModuleWizardStep; import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; @@ -82,16 +81,6 @@ public class CreateFromTemplateMode extends WizardMode { return sorted; } - static void addStepsForBuilder(ModuleBuilder builder, - WizardContext context, - ModulesProvider modulesProvider, - StepSequence sequence) { - final String id = builder.getBuilderId(); - for (ModuleWizardStep step : builder.createWizardSteps(context, modulesProvider)) { - sequence.addSpecificStep(id, step); - } - } - @NotNull @Override public String getDisplayName(WizardContext context) { @@ -115,7 +104,7 @@ public class CreateFromTemplateMode extends WizardMode { MultiMap map = getTemplatesMap(context); StepSequence sequence = new StepSequence(); for (ProjectTemplate template : map.values()) { - addStepsForBuilder(template.createModuleBuilder(), context, modulesProvider, sequence); + sequence.addStepsForBuilder(template.createModuleBuilder(), context, modulesProvider); } mySelectTemplateStep = new SelectTemplateStep(context, sequence, map); sequence.addCommonStep(mySelectTemplateStep);