IDEADEV-41372: Artifacts: exception on right0clicking on just deleted library

This commit is contained in:
nik
2009-11-25 16:29:16 +03:00
parent 30a9b8e392
commit 5e7865b3cb
4 changed files with 36 additions and 8 deletions
@@ -122,7 +122,7 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se
myGlobalLibrariesConfig.init(myContext);
myModulesConfig.init(myContext);
myFacetStructureConfigurable.init(myContext);
myArtifactsStructureConfigurable.init(myContext);
myArtifactsStructureConfigurable.init(myContext, myModulesConfig, myProjectLibrariesConfig, myGlobalLibrariesConfig);
final PropertiesComponent propertiesComponent = PropertiesComponent.getInstance(myProject);
myUiState.lastEditedConfigurable = propertiesComponent.getValue("project.structure.last.edited");
@@ -23,14 +23,15 @@ import com.intellij.openapi.application.WriteAction;
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectBundle;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.ui.configuration.ModuleEditor;
import com.intellij.openapi.roots.ui.configuration.projectRoot.BaseStructureConfigurable;
import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
import com.intellij.openapi.roots.ui.configuration.projectRoot.*;
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement;
import com.intellij.openapi.ui.MasterDetailsStateService;
import com.intellij.packaging.artifacts.*;
@@ -40,7 +41,9 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @author nik
@@ -58,8 +61,8 @@ public class ArtifactsStructureConfigurable extends BaseStructureConfigurable {
MasterDetailsStateService.getInstance(project).register("ArtifactsStructureConfigurable.UI", this);
}
@Override
public void init(StructureConfigurableContext context) {
public void init(StructureConfigurableContext context, ModuleStructureConfigurable moduleStructureConfigurable,
ProjectLibrariesConfigurable projectLibrariesConfig, GlobalLibrariesConfigurable globalLibrariesConfig) {
super.init(context);
myPackagingEditorContext = new ArtifactsStructureConfigurableContextImpl(myContext, myProject, myDefaultSettings, new ArtifactAdapter() {
@Override
@@ -77,6 +80,26 @@ public class ArtifactsStructureConfigurable extends BaseStructureConfigurable {
}
}
});
final ItemsChangeListener listener = new ItemsChangeListener() {
public void itemChanged(@Nullable Object deletedItem) {
if (deletedItem instanceof Library || deletedItem instanceof Module) {
onElementDeleted();
}
}
public void itemsExternallyChanged() {
}
};
moduleStructureConfigurable.addItemsChangeListener(listener);
projectLibrariesConfig.addItemsChangeListener(listener);
globalLibrariesConfig.addItemsChangeListener(listener);
}
private void onElementDeleted() {
for (ArtifactEditorImpl editor : myPackagingEditorContext.getArtifactEditors()) {
editor.getSourceItemsTree().rebuildTree();
editor.queueValidation();
}
}
@Nls
@@ -251,7 +274,6 @@ public class ArtifactsStructureConfigurable extends BaseStructureConfigurable {
return null;
}
private class AddArtifactAction extends DumbAwareAction {
private final ArtifactType myType;
private final ArtifactTemplate myArtifactTemplate;
@@ -36,6 +36,8 @@ import com.intellij.packaging.ui.ManifestFileConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -215,6 +217,10 @@ public class ArtifactsStructureConfigurableContextImpl implements ArtifactsStruc
myArtifactElements.clear();
}
public Collection<? extends ArtifactEditorImpl> getArtifactEditors() {
return Collections.unmodifiableCollection(myArtifactEditors.values());
}
public void saveEditorSettings() {
myEditorSettings.clear();
for (ArtifactEditorImpl artifactEditor : myArtifactEditors.values()) {
@@ -260,7 +260,7 @@ public abstract class MasterDetailsComponent implements Configurable, Persistent
}
}
protected void addItemsChangeListener(ItemsChangeListener l) {
public void addItemsChangeListener(ItemsChangeListener l) {
myListners.add(l);
}