IDEA-45342 Breadcrumbs are not shown for XML file

This commit is contained in:
Alexey Pegov
2010-11-10 17:16:55 +03:00
parent 07f297c2cc
commit 4ba2f445eb
6 changed files with 22 additions and 5 deletions
@@ -136,6 +136,7 @@ fix.html.family=Fix Html
xml.options=XML Options
xml.editor.options.breadcrumbs.title=Show HTML breadcrumbs (Reopen editor for changes to take effect)
xml.editor.options.breadcrumbs.for.xml.title=Show breadcrumbs for XML files
xml.editor.options.misc.title=XML/HTML
invalid.url.title=Invalid URL
@@ -26,6 +26,7 @@ public class WebEditorAppearanceConfigurable extends BeanConfigurable<WebEditorO
public WebEditorAppearanceConfigurable() {
super(WebEditorOptions.getInstance());
checkBox("breadcrumbsEnabled", XmlBundle.message("xml.editor.options.breadcrumbs.title"));
checkBox("breadcrumbsEnabledInXml", XmlBundle.message("xml.editor.options.breadcrumbs.for.xml.title"));
checkBox("showCssColorPreviewInGutter", "Show CSS Color preview icon in gutter");
}
}
@@ -39,6 +39,7 @@ import java.io.File;
public class WebEditorOptions implements PersistentStateComponent<WebEditorOptions>, ExportableComponent {
private boolean myBreadcrumbsEnabled = true;
private boolean myBreadcrumbsEnabledInXml = false;
private boolean myShowCssColorPreviewInGutter = true;
private boolean myAutomaticallyInsertClosingTag = true;
private boolean myAutomaticallyInsertRequiredAttributes = true;
@@ -59,6 +60,14 @@ public class WebEditorOptions implements PersistentStateComponent<WebEditorOptio
return myBreadcrumbsEnabled;
}
public void setBreadcrumbsEnabledInXml(boolean b) {
myBreadcrumbsEnabledInXml = b;
}
public boolean isBreadcrumbsEnabledInXml() {
return myBreadcrumbsEnabledInXml;
}
public boolean isShowCssColorPreviewInGutter() {
return myShowCssColorPreviewInGutter;
}
@@ -44,7 +44,8 @@ public class BreadcrumbsLoaderComponent extends AbstractProjectComponent {
}
private static boolean isEnabled() {
return WebEditorOptions.getInstance().isBreadcrumbsEnabled();
final WebEditorOptions webEditorOptions = WebEditorOptions.getInstance();
return webEditorOptions.isBreadcrumbsEnabled() || webEditorOptions.isBreadcrumbsEnabledInXml();
}
private static class MyFileEditorManagerListener implements FileEditorManagerListener {
@@ -15,7 +15,9 @@
*/
package com.intellij.xml.breadcrumbs;
import com.intellij.application.options.editor.WebEditorOptions;
import com.intellij.lang.Language;
import com.intellij.lang.xml.XMLLanguage;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
@@ -252,8 +254,11 @@ public class BreadcrumbsXmlWrapper implements BreadcrumbsItemListener<Breadcrumb
static BreadcrumbsInfoProvider findInfoProvider(@Nullable FileViewProvider viewProvider) {
BreadcrumbsInfoProvider provider = null;
if (viewProvider != null) {
final WebEditorOptions webEditorOptions = WebEditorOptions.getInstance();
final Language baseLang = viewProvider.getBaseLanguage();
provider = getInfoProvider(baseLang);
if (!webEditorOptions.isBreadcrumbsEnabledInXml() && baseLang == XMLLanguage.INSTANCE) return null;
if (!webEditorOptions.isBreadcrumbsEnabled() && baseLang != XMLLanguage.INSTANCE) return null;
if (provider == null) {
for (final Language language : viewProvider.getLanguages()) {
provider = getInfoProvider(language);
@@ -44,7 +44,7 @@ public class XmlLanguageBreadcrumbsInfoProvider extends BreadcrumbsInfoProvider
}
public Language[] getLanguages() {
return new Language[]{XHTMLLanguage.INSTANCE, HTMLLanguage.INSTANCE};
return new Language[]{XMLLanguage.INSTANCE, XHTMLLanguage.INSTANCE, HTMLLanguage.INSTANCE};
}
@NotNull
@@ -77,7 +77,7 @@ public class XmlLanguageBreadcrumbsInfoProvider extends BreadcrumbsInfoProvider
@Nullable
public String getElementTooltip(@NotNull final PsiElement e) {
final XmlTag tag = (XmlTag)e;
final StringBuffer result = new StringBuffer("<");
final StringBuffer result = new StringBuffer("&lt;");
result.append(tag.getName());
final XmlAttribute[] attributes = tag.getAttributes();
for (final XmlAttribute each : attributes) {
@@ -85,10 +85,10 @@ public class XmlLanguageBreadcrumbsInfoProvider extends BreadcrumbsInfoProvider
}
if (tag.isEmpty()) {
result.append("/>");
result.append("/&gt;");
}
else {
result.append(">...</").append(tag.getName()).append(">");
result.append("&gt;...&lt;/").append(tag.getName()).append("&gt;");
}
return result.toString();