diff options
Diffstat (limited to 'xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java')
-rw-r--r-- | xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java | 70 |
1 files changed, 40 insertions, 30 deletions
diff --git a/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java b/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java index 11fb4a784c42..271fd5b6ff3d 100644 --- a/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java +++ b/xml/impl/src/com/intellij/xml/util/documentation/HtmlDocumentationProvider.java @@ -15,8 +15,11 @@ */ package com.intellij.xml.util.documentation; +import com.intellij.lang.Language; +import com.intellij.lang.LanguageDocumentation; import com.intellij.lang.documentation.DocumentationProvider; import com.intellij.lang.documentation.DocumentationUtil; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiManager; import com.intellij.psi.PsiWhiteSpace; @@ -36,22 +39,19 @@ import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; +import java.util.Locale; /** * @author maxim */ public class HtmlDocumentationProvider implements DocumentationProvider { - private static DocumentationProvider ourStyleProvider; + private DocumentationProvider myStyleProvider = null; private static DocumentationProvider ourScriptProvider; @NonNls public static final String ELEMENT_ELEMENT_NAME = "element"; @NonNls public static final String NBSP = ": "; @NonNls public static final String BR = "<br>"; - public static void registerStyleDocumentationProvider(DocumentationProvider documentationProvider) { - ourStyleProvider = documentationProvider; - } - @Override @Nullable public String getQuickNavigateInfo(PsiElement element, PsiElement originalElement) { @@ -63,10 +63,10 @@ public class HtmlDocumentationProvider implements DocumentationProvider { @Override public List<String> getUrlFor(PsiElement element, PsiElement originalElement) { - String result = getUrlForHtml(element, PsiTreeUtil.getParentOfType(originalElement,XmlTag.class,false)); - - if (result == null && ourStyleProvider !=null) { - return ourStyleProvider.getUrlFor(element, originalElement); + String result = getUrlForHtml(element, PsiTreeUtil.getParentOfType(originalElement, XmlTag.class, false)); + DocumentationProvider styleProvider = getStyleProvider(); + if (result == null && styleProvider != null) { + return styleProvider.getUrlFor(element, originalElement); } return result != null ? Collections.singletonList(result) : null; @@ -126,7 +126,7 @@ public class HtmlDocumentationProvider implements DocumentationProvider { key = nameElement.getText(); } - key = (key != null)?key.toLowerCase():""; + key = StringUtil.notNullize(key).toLowerCase(Locale.US); int dotIndex = key.indexOf('.'); if (dotIndex > 0) { @@ -155,8 +155,9 @@ public class HtmlDocumentationProvider implements DocumentationProvider { final XmlTag tag = PsiTreeUtil.getParentOfType(originalElement, XmlTag.class, false); String result = generateDocForHtml(element, false, tag, originalElement); - if (result == null && ourStyleProvider !=null) { - result = ourStyleProvider.generateDoc(element, originalElement); + DocumentationProvider styleProvider = getStyleProvider(); + if (result == null && styleProvider !=null) { + result = styleProvider.generateDoc(element, originalElement); } if (result == null && ourScriptProvider !=null) { @@ -170,15 +171,11 @@ public class HtmlDocumentationProvider implements DocumentationProvider { return result; } - public String generateDocForHtml(PsiElement element) { - return generateDocForHtml(element,true, null, null); - } - - protected String generateDocForHtml(PsiElement element, boolean ommitHtmlSpecifics, XmlTag context, PsiElement originalElement) { + protected String generateDocForHtml(PsiElement element, boolean omitHtmlSpecifics, XmlTag context, PsiElement originalElement) { final EntityDescriptor descriptor = findDocumentationDescriptor(element,context); if (descriptor!=null) { - return generateJavaDoc(descriptor, ommitHtmlSpecifics, originalElement); + return generateJavaDoc(descriptor, omitHtmlSpecifics, originalElement); } if (element instanceof XmlEntityDecl) { final XmlEntityDecl entityDecl = (XmlEntityDecl)element; @@ -188,11 +185,11 @@ public class HtmlDocumentationProvider implements DocumentationProvider { return null; } - private static String generateJavaDoc(EntityDescriptor descriptor, boolean ommitHtmlSpecifics, PsiElement element) { + private static String generateJavaDoc(EntityDescriptor descriptor, boolean omitHtmlSpecifics, PsiElement element) { StringBuilder buf = new StringBuilder(); - final boolean istag = descriptor instanceof HtmlTagDescriptor; + final boolean isTag = descriptor instanceof HtmlTagDescriptor; - if (istag) { + if (isTag) { DocumentationUtil.formatEntityName(XmlBundle.message("xml.javadoc.tag.name.message"),descriptor.getName(),buf); } else { DocumentationUtil.formatEntityName(XmlBundle.message("xml.javadoc.attribute.name.message"),descriptor.getName(),buf); @@ -200,10 +197,10 @@ public class HtmlDocumentationProvider implements DocumentationProvider { buf.append(XmlBundle.message("xml.javadoc.description.message")).append(NBSP).append(descriptor.getDescription()).append(BR); - if (istag) { + if (isTag) { final HtmlTagDescriptor tagDescriptor = (HtmlTagDescriptor)descriptor; - if (!ommitHtmlSpecifics) { + if (!omitHtmlSpecifics) { boolean hasStartTag = tagDescriptor.isHasStartTag(); if (!hasStartTag) { buf.append(XmlBundle.message("xml.javadoc.start.tag.could.be.omitted.message")).append(BR); @@ -227,7 +224,7 @@ public class HtmlDocumentationProvider implements DocumentationProvider { char dtdId = descriptor.getDtd(); boolean deprecated = dtdId == EntityDescriptor.LOOSE_DTD; if (deprecated) { - buf.append(XmlBundle.message("xml.javadoc.deprecated.message", deprecated)).append(BR); + buf.append(XmlBundle.message("xml.javadoc.deprecated.message", true)).append(BR); } if (dtdId == EntityDescriptor.LOOSE_DTD) { @@ -240,7 +237,7 @@ public class HtmlDocumentationProvider implements DocumentationProvider { buf.append(XmlBundle.message("xml.javadoc.defined.in.any.dtd.message")); } - if (!istag) { + if (!isTag) { ColorSampleLookupValue.addColorPreviewAndCodeToLookup(element,buf); } @@ -255,8 +252,9 @@ public class HtmlDocumentationProvider implements DocumentationProvider { public PsiElement getDocumentationElementForLookupItem(PsiManager psiManager, Object object, PsiElement element) { PsiElement result = createNavigationElementHTML(psiManager, object.toString(),element); - if (result== null && ourStyleProvider !=null) { - result = ourStyleProvider.getDocumentationElementForLookupItem(psiManager, object, element); + DocumentationProvider styleProvider = getStyleProvider(); + if (result== null && styleProvider !=null) { + result = styleProvider.getDocumentationElementForLookupItem(psiManager, object, element); } if (result== null && ourScriptProvider !=null) { result = ourScriptProvider.getDocumentationElementForLookupItem(psiManager, object, element); @@ -271,8 +269,9 @@ public class HtmlDocumentationProvider implements DocumentationProvider { public PsiElement getDocumentationElementForLink(PsiManager psiManager, String link, PsiElement context) { PsiElement result = createNavigationElementHTML(psiManager, link, context); - if (result== null && ourStyleProvider !=null) { - result = ourStyleProvider.getDocumentationElementForLink(psiManager, link,context); + DocumentationProvider styleProvider = getStyleProvider(); + if (result== null && styleProvider !=null) { + result = styleProvider.getDocumentationElementForLink(psiManager, link, context); } if (result== null && ourScriptProvider !=null) { result = ourScriptProvider.getDocumentationElementForLink(psiManager, link,context); @@ -281,7 +280,7 @@ public class HtmlDocumentationProvider implements DocumentationProvider { } public PsiElement createNavigationElementHTML(PsiManager psiManager, String text, PsiElement context) { - String key = text.toLowerCase(); + String key = text.toLowerCase(Locale.US); final HtmlTagDescriptor descriptor = HtmlDescriptorsTable.getTagDescriptor(key); if (descriptor != null && !isAttributeContext(context) ) { @@ -332,4 +331,15 @@ public class HtmlDocumentationProvider implements DocumentationProvider { public static void registerScriptDocumentationProvider(final DocumentationProvider provider) { ourScriptProvider = provider; } + + @Nullable + private DocumentationProvider getStyleProvider() { + if (myStyleProvider == null) { + Language cssLanguage = Language.findLanguageByID("CSS"); + if (cssLanguage != null) { + myStyleProvider = LanguageDocumentation.INSTANCE.forLanguage(cssLanguage); + } + } + return myStyleProvider; + } } |