Package com.yiistorm.references

Source Code of com.yiistorm.references.YiiPsiReferenceProvider

package com.yiistorm.references;

import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.intellij.psi.PsiReferenceProvider;
import com.intellij.util.ProcessingContext;
import com.yiistorm.helpers.YiiRefsHelper;
import com.yiistorm.references.ReferenceProviders.ARRelationReferenceProvider;
import com.yiistorm.references.ReferenceProviders.CActionRenderViewReferenceProvider;
import com.yiistorm.references.ReferenceProviders.ControlleActionsClassReferenceProvider;
import com.yiistorm.references.ReferenceProviders.WidgetRenderViewReferenceProvider;
import org.jetbrains.annotations.NotNull;

public class YiiPsiReferenceProvider extends PsiReferenceProvider {

    public static final PsiReferenceProvider[] EMPTY_ARRAY = new PsiReferenceProvider[0];
    public static String projectPath;
    public static Project project;
    public static PropertiesComponent properties;

    public YiiPsiReferenceProvider() {
    }

    /**
     * Return reference or empty array
     *
     * @param element PsiElement
     * @param context ProcessingContext
     * @return PsiReference[]
     */
    @NotNull
    @Override
    public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull final ProcessingContext context) {
        project = element.getProject();
        String elname = element.getClass().getName();
        //properties = PropertiesComponent.getInstance(project);
        /*boolean ProviderType2 = YiiRefsHelper.isYiiApplication(element);
        if (ProviderType2) {
            ProviderType2 = ProviderType2;
        }    */
        if (elname.endsWith("StringLiteralExpressionImpl")) {

            try {
                PsiFile file = element.getContainingFile();
                VirtualFile vfile = file.getVirtualFile();
                if (vfile != null) {
                    String path = vfile.getPath();
                    String basePath = project.getBasePath();
                    if (basePath != null) {
                        projectPath = basePath.replace("\\", "/");
                        int ProviderType = YiiRefsHelper.getYiiObjectType(path, element);
                        switch (ProviderType) {
                            case YiiRefsHelper.YII_TYPE_AR_RELATION:
                                return ARRelationReferenceProvider.getReference(path, element);
                            case YiiRefsHelper.YII_TYPE_CACTION_TO_VIEW_RENDER:
                                return CActionRenderViewReferenceProvider.getReference(path, element);
                            case YiiRefsHelper.YII_TYPE_WIDGET_VIEW_RENDER:
                                return WidgetRenderViewReferenceProvider.getReference(path, element);
                            case YiiRefsHelper.YII_TYPE_CONTROLLER_ACTIONS_CACTION:
                                return ControlleActionsClassReferenceProvider.getReference(path, element);
                        }
                    }
                }
            } catch (Exception e) {
                //System.err.println("error" + e.getMessage());
            }
        }
        return PsiReference.EMPTY_ARRAY;
    }


}
TOP

Related Classes of com.yiistorm.references.YiiPsiReferenceProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.