memory leak

This commit is contained in:
Dmitry Avdeev
2013-10-23 16:41:51 +04:00
parent b7654b27ca
commit f27422e7c3
2 changed files with 26 additions and 3 deletions
@@ -131,8 +131,11 @@ public abstract class AbstractProjectWizard extends AbstractWizard<ModuleWizardS
}
protected void dispose() {
for (ModuleWizardStep step : mySteps) {
step.disposeUIResources();
StepSequence sequence = getSequence();
if (sequence != null) {
for (ModuleWizardStep step : sequence.getAllSteps()) {
step.disposeUIResources();
}
}
super.dispose();
}
@@ -43,6 +43,7 @@ import com.intellij.ui.HideableDecorator;
import com.intellij.ui.IdeBorderFactory;
import com.intellij.ui.components.JBLabel;
import com.intellij.ui.components.JBList;
import com.intellij.util.containers.FactoryMap;
import com.intellij.util.containers.MultiMap;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -93,6 +94,13 @@ public class SelectTemplateStep extends ModuleWizardStep implements SettingsStep
private final StepSequence mySequence;
@Nullable
private ModuleWizardStep mySettingsStep;
private FactoryMap<String, ModuleWizardStep> mySettingsSteps = new FactoryMap<String, ModuleWizardStep>() {
@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) {