From 85733c22fe7c03177ff9362b5c7d0bc9d96a7c1c Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Tue, 17 Jul 2012 17:25:51 +0400 Subject: [PATCH] ManuallySetupExtResourceAction becomes an intention --- .../src/META-INF/XmlPlugin.xml | 6 +++++ .../after.xml.template | 1 + .../before.xml.template | 0 .../description.html | 5 ++++ ...XsiSchemaLocationForExtResourceAction.java | 20 -------------- .../impl/quickfix/BaseExtResourceAction.java | 27 +++++++++++++------ .../impl/providers/URLReference.java | 3 +-- 7 files changed, 32 insertions(+), 30 deletions(-) create mode 100644 xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/after.xml.template create mode 100644 xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/before.xml.template create mode 100644 xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/description.html diff --git a/platform/platform-resources/src/META-INF/XmlPlugin.xml b/platform/platform-resources/src/META-INF/XmlPlugin.xml index f0ce976e2508..6340ee08e1d9 100644 --- a/platform/platform-resources/src/META-INF/XmlPlugin.xml +++ b/platform/platform-resources/src/META-INF/XmlPlugin.xml @@ -372,10 +372,16 @@ XML com.intellij.codeInsight.daemon.impl.analysis.AddSchemaPrefixIntention + XML com.intellij.codeInsight.daemon.impl.quickfix.AddXsiSchemaLocationForExtResourceAction + + XML + com.intellij.codeInsight.daemon.impl.quickfix.ManuallySetupExtResourceAction + + XML com.intellij.codeInsight.daemon.impl.analysis.ConvertSchemaPrefixToDefaultIntention diff --git a/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/after.xml.template b/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/after.xml.template new file mode 100644 index 000000000000..8b137891791f --- /dev/null +++ b/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/after.xml.template @@ -0,0 +1 @@ + diff --git a/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/before.xml.template b/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/before.xml.template new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/description.html b/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/description.html new file mode 100644 index 000000000000..960e034ddc43 --- /dev/null +++ b/xml/impl/resources/intentionDescriptions/ManuallySetupExtResourceAction/description.html @@ -0,0 +1,5 @@ + + +Allows to map given namespace to an XML schema file (DTD or XSD). + + diff --git a/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddXsiSchemaLocationForExtResourceAction.java b/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddXsiSchemaLocationForExtResourceAction.java index 7a6752a79b04..e168ca417bf0 100644 --- a/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddXsiSchemaLocationForExtResourceAction.java +++ b/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddXsiSchemaLocationForExtResourceAction.java @@ -19,20 +19,15 @@ import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.daemon.XmlErrorMessages; import com.intellij.codeInsight.daemon.impl.analysis.CreateNSDeclarationIntentionFix; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; -import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.XmlElementFactory; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.XmlAttribute; -import com.intellij.psi.xml.XmlAttributeValue; -import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; -import com.intellij.xml.XmlBundle; import com.intellij.xml.util.XmlUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -98,19 +93,4 @@ public class AddXsiSchemaLocationForExtResourceAction extends BaseExtResourceAct final TextRange textRange = new TextRange(range.getEndOffset() - offset - 1, range.getEndOffset() - 1); editor.getCaretModel().moveToOffset(textRange.getStartOffset()); } - - @Override - public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) { - if (!(file instanceof XmlFile)) return false; - - PsiElement element = file.findElementAt(editor.getCaretModel().getOffset()); - XmlAttributeValue value = PsiTreeUtil.getParentOfType(element, XmlAttributeValue.class); - if (value == null) return false; - XmlAttribute attribute = PsiTreeUtil.getParentOfType(value, XmlAttribute.class); - if (attribute != null && attribute.isNamespaceDeclaration()) { - setText(XmlBundle.message(getQuickFixKeyId())); - return true; - } - return false; - } } \ No newline at end of file diff --git a/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/BaseExtResourceAction.java b/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/BaseExtResourceAction.java index f41a9f6a5158..1d53262b8cbe 100644 --- a/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/BaseExtResourceAction.java +++ b/xml/impl/src/com/intellij/codeInsight/daemon/impl/quickfix/BaseExtResourceAction.java @@ -19,14 +19,17 @@ import com.intellij.codeInsight.intention.impl.BaseIntentionAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiDocumentManager; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.impl.source.resolve.reference.impl.providers.URIReferenceProvider; import com.intellij.psi.impl.source.resolve.reference.impl.providers.URLReference; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.xml.XmlAttribute; +import com.intellij.psi.xml.XmlAttributeValue; import com.intellij.psi.xml.XmlFile; import com.intellij.util.IncorrectOperationException; import com.intellij.xml.XmlBundle; -import com.intellij.xml.util.XmlUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -40,14 +43,17 @@ abstract class BaseExtResourceAction extends BaseIntentionAction { int offset = editor.getCaretModel().getOffset(); String uri = findUri(file, offset); + if (uri == null || !isAcceptableUri(uri)) return false; - if (uri == null) return false; - - XmlFile xmlFile = XmlUtil.findNamespaceByLocation(file, uri); - if (xmlFile != null) return false; - if (!isAcceptableUri(uri)) return false; - setText(XmlBundle.message(getQuickFixKeyId())); - return true; + PsiElement element = file.findElementAt(offset); + XmlAttributeValue value = PsiTreeUtil.getParentOfType(element, XmlAttributeValue.class); + if (value == null) return false; + XmlAttribute attribute = PsiTreeUtil.getParentOfType(value, XmlAttribute.class); + if (attribute != null && attribute.isNamespaceDeclaration()) { + setText(XmlBundle.message(getQuickFixKeyId())); + return true; + } + return false; } protected boolean isAcceptableUri(final String uri) { @@ -85,4 +91,9 @@ abstract class BaseExtResourceAction extends BaseIntentionAction { } return null; } + + @Override + public boolean equals(Object obj) { + return obj instanceof ManuallySetupExtResourceAction; + } } \ No newline at end of file diff --git a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URLReference.java b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URLReference.java index 0278e76e25d6..f5821112427f 100644 --- a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URLReference.java +++ b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URLReference.java @@ -1,4 +1,3 @@ - package com.intellij.psi.impl.source.resolve.reference.impl.providers; import com.intellij.codeInsight.daemon.EmptyResolveMessageProvider; @@ -219,8 +218,8 @@ public class URLReference implements PsiReference, QuickFixProvider, EmptyResolv QuickFixAction.registerQuickFixAction(info, new FetchExtResourceAction()); QuickFixAction.registerQuickFixAction(info, new ManuallySetupExtResourceAction()); QuickFixAction.registerQuickFixAction(info, new IgnoreExtResourceAction()); - final PsiElement parentElement = reference.getElement().getParent(); + final PsiElement parentElement = reference.getElement().getParent(); if (parentElement instanceof XmlAttribute && ((XmlAttribute)parentElement).isNamespaceDeclaration()) { QuickFixAction.registerQuickFixAction(info, new AddXsiSchemaLocationForExtResourceAction()); }