diff --git a/src/main/java/de/marhali/easyi18n/assistance/completion/XmlCompletionContributor.java b/src/main/java/de/marhali/easyi18n/assistance/completion/XmlCompletionContributor.java new file mode 100644 index 0000000..f48c5a2 --- /dev/null +++ b/src/main/java/de/marhali/easyi18n/assistance/completion/XmlCompletionContributor.java @@ -0,0 +1,17 @@ +package de.marhali.easyi18n.assistance.completion; + +import com.intellij.codeInsight.completion.CompletionContributor; +import com.intellij.codeInsight.completion.CompletionType; +import com.intellij.patterns.PlatformPatterns; +import com.intellij.psi.impl.source.xml.XmlAttributeValueImpl; + +/** + * Xml specific completion contributor. + * @author adeptius + */ +public class XmlCompletionContributor extends CompletionContributor { + public XmlCompletionContributor() { + extend(CompletionType.BASIC, PlatformPatterns.psiElement().inside(XmlAttributeValueImpl.class), + new KeyCompletionProvider()); + } +} diff --git a/src/main/java/de/marhali/easyi18n/assistance/reference/XmlKeyReferenceContributor.java b/src/main/java/de/marhali/easyi18n/assistance/reference/XmlKeyReferenceContributor.java new file mode 100644 index 0000000..3ca88e5 --- /dev/null +++ b/src/main/java/de/marhali/easyi18n/assistance/reference/XmlKeyReferenceContributor.java @@ -0,0 +1,38 @@ +package de.marhali.easyi18n.assistance.reference; + +import com.intellij.openapi.project.Project; +import com.intellij.patterns.PlatformPatterns; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiReference; +import com.intellij.psi.PsiReferenceProvider; +import com.intellij.psi.PsiReferenceRegistrar; +import com.intellij.psi.impl.source.xml.XmlAttributeValueImpl; +import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.NotNull; + +/** + * Xml specific key reference binding + * @author adeptius + */ +public class XmlKeyReferenceContributor extends AbstractKeyReferenceContributor { + @Override + public void registerReferenceProviders(@NotNull PsiReferenceRegistrar registrar) { + registrar.registerReferenceProvider( + PlatformPatterns.psiElement(XmlAttributeValueImpl.class), + getProvider()); + } + + private PsiReferenceProvider getProvider() { + return new PsiReferenceProvider() { + @Override + public PsiReference @NotNull [] getReferencesByElement( + @NotNull PsiElement element, @NotNull ProcessingContext context) { + + Project project = element.getProject(); + XmlAttributeValueImpl literalExpression = (XmlAttributeValueImpl) element; + String value = literalExpression.getValue(); + return getReferences(project, element, value); + } + }; + } +} \ No newline at end of file diff --git a/src/main/resources/META-INF/de.marhali.easyi18n-xml.xml b/src/main/resources/META-INF/de.marhali.easyi18n-xml.xml index 3e472b0..d35eb65 100644 --- a/src/main/resources/META-INF/de.marhali.easyi18n-xml.xml +++ b/src/main/resources/META-INF/de.marhali.easyi18n-xml.xml @@ -1,5 +1,11 @@ + + + + + + \ No newline at end of file