package com.intellij.perlplugin.extensions; import com.intellij.openapi.util.TextRange; import com.intellij.patterns.PlatformPatterns; import com.intellij.perlplugin.Utils; import com.intellij.perlplugin.psi.impl.PerlPropertyImpl; import com.intellij.perlplugin.psi.impl.PerlPropertyReference; import com.intellij.psi.*; import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NotNull; /** * Created by eli on 9-2-15. */ public class PropertyReferenceContributor extends PsiReferenceContributor { public PropertyReferenceContributor() { super(); } @Override public void dispose() { super.dispose(); } @Override public void registerReferenceProviders(PsiReferenceRegistrar registrar) { registrar.registerReferenceProvider(PlatformPatterns.psiElement(PerlPropertyImpl.class), new PsiReferenceProvider() { @NotNull @Override public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { Utils.print("registerReferenceProviders"); PsiLiteralExpression literalExpression = (PsiLiteralExpression) element; String text = (String) literalExpression.getValue(); if (text != null) { return new PsiReference[]{new PerlPropertyReference(element, new TextRange(8, text.length() + 1))}; } return new PsiReference[0]; } }); } }