project structure dialog: allow to apply quickfixes for artifacts from project-wide error messages

This commit is contained in:
nik
2011-09-29 12:06:30 +04:00
parent 91edd21b18
commit ef68b69e40
2 changed files with 22 additions and 6 deletions
@@ -18,30 +18,46 @@ package com.intellij.openapi.roots.ui.configuration.artifacts;
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ConfigurationErrorQuickFix;
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureProblemDescription;
import com.intellij.packaging.elements.PackagingElement;
import com.intellij.packaging.ui.ArtifactEditor;
import com.intellij.packaging.ui.ArtifactProblemQuickFix;
import com.intellij.ui.navigation.Place;
import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.List;
/**
* @author nik
*/
public class ArtifactProblemDescription extends ProjectStructureProblemDescription {
private List<ArtifactProblemQuickFix> myQuickFixes;
private List<PackagingElement<?>> myPathToPlace;
private final List<ArtifactProblemQuickFix> myQuickFixes;
private final List<PackagingElement<?>> myPathToPlace;
public ArtifactProblemDescription(@NotNull String message,
@NotNull Severity severity,
@Nullable List<PackagingElement<?>> pathToPlace,
@NotNull List<ArtifactProblemQuickFix> quickFixes, @NotNull Place place) {
super(message, null, severity, place, Collections.<ConfigurationErrorQuickFix>emptyList());
@NotNull List<ArtifactProblemQuickFix> quickFixes,
@NotNull Place place,
@NotNull ArtifactEditor artifactEditor) {
super(message, null, severity, place, convertQuickFixed(quickFixes, artifactEditor));
myPathToPlace = pathToPlace;
myQuickFixes = quickFixes;
}
private static List<ConfigurationErrorQuickFix> convertQuickFixed(List<ArtifactProblemQuickFix> quickFixes, final ArtifactEditor artifactEditor) {
final List<ConfigurationErrorQuickFix> result = new SmartList<ConfigurationErrorQuickFix>();
for (final ArtifactProblemQuickFix fix : quickFixes) {
result.add(new ConfigurationErrorQuickFix(fix.getActionName()) {
@Override
public void performFix() {
fix.performFix(artifactEditor);
}
});
}
return result;
}
@NotNull
public List<ArtifactProblemQuickFix> getQuickFixes() {
return myQuickFixes;
@@ -48,7 +48,7 @@ public class ArtifactProblemsHolderImpl extends ArtifactProblemsHolderBase {
final ProjectStructureProblemDescription.Severity severity, @NotNull ArtifactProblemQuickFix... quickFixes) {
final ArtifactEditorContext context = getContext();
final Place place = ProjectStructureConfigurable.getInstance(context.getProject()).createArtifactPlace(context.getArtifact());
myProblemsHolder.registerProblem(new ArtifactProblemDescription(message, severity, pathToPlace, Arrays.asList(quickFixes), place));
myProblemsHolder.registerProblem(new ArtifactProblemDescription(message, severity, pathToPlace, Arrays.asList(quickFixes), place, context.getThisArtifactEditor()));
}
public void registerWarning(@NotNull String message,