From 5d31b6195a20e3f2aa6fa760850f4b8cc57ef151 Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 1 Feb 2016 21:37:01 +0300 Subject: [PATCH] 'Problems' view in 'Project Structure': properly extract navigatable part from error message to show hyperlinks not only for module names but for libraries and artifacts as well --- .../configuration/ErrorPaneConfigurable.java | 27 ++++++++++++------- .../GeneralProjectSettingsElement.java | 7 ++++- .../ui/configuration/ProjectConfigurable.java | 12 ++++++--- .../ArtifactProjectStructureElement.java | 2 +- .../BaseLibrariesConfigurable.java | 2 +- .../daemon/FacetProjectStructureElement.java | 7 ++++- .../LibraryProjectStructureElement.java | 2 +- .../daemon/ModuleProjectStructureElement.java | 2 +- .../daemon/ProjectConfigurationProblem.java | 7 ++++- .../daemon/ProjectStructureElement.java | 4 +++ .../ProjectStructureProblemDescription.java | 3 ++- .../daemon/SdkProjectStructureElement.java | 2 +- 12 files changed, 55 insertions(+), 22 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ErrorPaneConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ErrorPaneConfigurable.java index e3896f3949d4..b5536e76482b 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ErrorPaneConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ErrorPaneConfigurable.java @@ -20,6 +20,9 @@ import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectConfigurationProblem; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement; +import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureProblemDescription; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.*; @@ -28,6 +31,7 @@ import com.intellij.util.Alarm; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.update.MergingUpdateQueue; import com.intellij.util.ui.update.Update; +import com.intellij.xml.util.XmlStringUtil; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -156,16 +160,21 @@ public class ErrorPaneConfigurable extends JPanel implements Configurable, Dispo i++; if (i > 100) break; html.append("
  • "); - String description = error.getDescription(); - if (description.startsWith("") && description.endsWith("")) { - description = description.substring(6, description.length() - 7); + String description; + if (error instanceof ProjectConfigurationProblem) { + //todo[nik] pass ProjectStructureProblemDescription directly and get rid of ConfigurationError at all + ProjectStructureProblemDescription problemDescription = ((ProjectConfigurationProblem)error).getProblemDescription(); + description = problemDescription.getDescription(); + if (description == null) { + ProjectStructureElement place = problemDescription.getPlace().getContainingElement(); + description = place.getTypeName() + " " + place.getPresentableName() + ": " + problemDescription.getMessage(false); + } + else { + description = XmlStringUtil.stripHtml(description); + } } - if (description.startsWith("Module '")) { - final int start = 8; - final int end = description.indexOf("'", 9); - final String moduleName = description.substring(start, end); - description = "Module " + StringUtil.escapeXml(moduleName) + " " + description.substring( - end + 1); + else { + description = XmlStringUtil.stripHtml(error.getDescription()); } if (error.canBeFixed()) { description += " [Fix]"; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java index 337d3f2bd03a..d42789f1e194 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java @@ -48,10 +48,15 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { } @Override - public String getPresentableName() { + public String getPresentableText() { return "Project"; } + @Override + public String getPresentableName() { + return ProjectStructureConfigurable.getInstance(myContext.getProject()).getProjectConfig().getProjectName(); + } + @Override public String getTypeName() { return "Project"; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java index 3db5bf61e449..d134f8a78276 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java @@ -52,6 +52,7 @@ import com.intellij.ui.FieldPanel; import com.intellij.ui.InsertPathAction; import com.intellij.util.ui.JBUI; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -252,7 +253,7 @@ public class ProjectConfigurable extends ProjectStructureElementConfigurable