mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
do not process builders twice
This commit is contained in:
@@ -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<ModuleWizardStep> myCommonSteps = new ArrayList<ModuleWizardStep>();
|
||||
private final List<ModuleWizardStep> myCommonFinishingSteps = new ArrayList<ModuleWizardStep>();
|
||||
private final Map<String, List<ModuleWizardStep>> mySpecificSteps = new HashMap<String, List<ModuleWizardStep>>();
|
||||
private final MultiMap<String, ModuleWizardStep> mySpecificSteps = new MultiMap<String, ModuleWizardStep>();
|
||||
@NonNls private List<String> myTypes = new ArrayList<String>();
|
||||
private List<ModuleWizardStep> mySelectedSteps;
|
||||
|
||||
@@ -48,13 +52,15 @@ public class StepSequence {
|
||||
myCommonFinishingSteps.add(step);
|
||||
}
|
||||
|
||||
public void addSpecificStep(String type, ModuleWizardStep step) {
|
||||
List<ModuleWizardStep> list = mySpecificSteps.get(type);
|
||||
if (list == null) {
|
||||
list = new ArrayList<ModuleWizardStep>();
|
||||
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<ModuleWizardStep> getSelectedSteps() {
|
||||
@@ -62,10 +68,8 @@ public class StepSequence {
|
||||
mySelectedSteps = new ArrayList<ModuleWizardStep>();
|
||||
mySelectedSteps.addAll(myCommonSteps);
|
||||
for (String type : myTypes) {
|
||||
final List<ModuleWizardStep> steps = mySpecificSteps.get(type);
|
||||
if (steps != null) {
|
||||
mySelectedSteps.addAll(steps);
|
||||
}
|
||||
Collection<ModuleWizardStep> steps = mySpecificSteps.get(type);
|
||||
mySelectedSteps.addAll(steps);
|
||||
}
|
||||
mySelectedSteps.addAll(myCommonFinishingSteps);
|
||||
ContainerUtil.removeDuplicates(mySelectedSteps);
|
||||
@@ -105,9 +109,7 @@ public class StepSequence {
|
||||
public List<ModuleWizardStep> getAllSteps() {
|
||||
final List<ModuleWizardStep> result = new ArrayList<ModuleWizardStep>();
|
||||
result.addAll(myCommonSteps);
|
||||
for (List<ModuleWizardStep> 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);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-7
@@ -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;
|
||||
}
|
||||
|
||||
+1
-12
@@ -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<String, ProjectTemplate> 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);
|
||||
|
||||
Reference in New Issue
Block a user