mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ManuallySetupExtResourceAction becomes an intention
This commit is contained in:
@@ -372,10 +372,16 @@
|
||||
<category>XML</category>
|
||||
<className>com.intellij.codeInsight.daemon.impl.analysis.AddSchemaPrefixIntention</className>
|
||||
</intentionAction>
|
||||
|
||||
<intentionAction>
|
||||
<category>XML</category>
|
||||
<className>com.intellij.codeInsight.daemon.impl.quickfix.AddXsiSchemaLocationForExtResourceAction</className>
|
||||
</intentionAction>
|
||||
<intentionAction>
|
||||
<category>XML</category>
|
||||
<className>com.intellij.codeInsight.daemon.impl.quickfix.ManuallySetupExtResourceAction</className>
|
||||
</intentionAction>
|
||||
|
||||
<intentionAction>
|
||||
<category>XML</category>
|
||||
<className>com.intellij.codeInsight.daemon.impl.analysis.ConvertSchemaPrefixToDefaultIntention</className>
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<html>
|
||||
<body>
|
||||
Allows to map given namespace to an XML schema file (DTD or XSD).
|
||||
</body>
|
||||
</html>
|
||||
-20
@@ -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;
|
||||
}
|
||||
}
|
||||
+19
-8
@@ -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;
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user