diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java index deca30051b71..60f6f6981cc8 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/AbstractProjectWizard.java @@ -131,8 +131,11 @@ public abstract class AbstractProjectWizard extends AbstractWizard mySettingsSteps = new FactoryMap() { + @Nullable + @Override + protected ModuleWizardStep create(String key) { + return myModuleBuilder.modifySettingsStep(SelectTemplateStep.this); + } + }; private final ProjectTypesList myList; @@ -152,6 +160,9 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep @Override public void disposeUIResources() { Disposer.dispose(myList); + for (ModuleWizardStep step : mySettingsSteps.values()) { + step.disposeUIResources(); + } } @Override @@ -173,7 +184,7 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep restorePanel(myNamePathComponent, 4); restorePanel(myModulePanel, myWizardContext.isCreatingNewProject() ? 8 : 6); restorePanel(myExpertPanel, myWizardContext.isCreatingNewProject() ? 1 : 0); - mySettingsStep = myModuleBuilder == null ? null : myModuleBuilder.modifySettingsStep(this); + createSettingsStep(); String description = null; if (template != null) { @@ -197,6 +208,15 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep mySettingsPanel.repaint(); } + private void createSettingsStep() { + if (myModuleBuilder == null) { + mySettingsStep = null; + } + else { + mySettingsStep = mySettingsSteps.get(myModuleBuilder.getBuilderId()); + } + } + private static int restorePanel(JPanel component, int i) { int removed = 0; while (component.getComponentCount() > i) {