/* * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.psi.impl.light; import com.intellij.lang.Language; import com.intellij.lang.java.JavaLanguage; import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.ItemPresentationProviders; import com.intellij.psi.*; import com.intellij.psi.impl.PsiClassImplUtil; import com.intellij.psi.impl.PsiImplUtil; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.search.SearchScope; import com.intellij.psi.util.MethodSignature; import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.List; /** * @author ven */ public class LightMethod extends LightElement implements PsiMethod { private final PsiMethod myMethod; private final PsiClass myContainingClass; public LightMethod(@NotNull PsiManager manager, @NotNull PsiMethod method, @NotNull PsiClass containingClass) { this(manager, method, containingClass, JavaLanguage.INSTANCE); } public LightMethod(@NotNull PsiManager manager, @NotNull PsiMethod method, @NotNull PsiClass containingClass, @NotNull Language language) { super(manager, language); myMethod = method; myContainingClass = containingClass; } @Override public ItemPresentation getPresentation() { return ItemPresentationProviders.getItemPresentation(this); } @Override public boolean hasTypeParameters() { return myMethod.hasTypeParameters(); } @Override @NotNull public PsiTypeParameter[] getTypeParameters() { return myMethod.getTypeParameters(); } @Override public PsiTypeParameterList getTypeParameterList() { return myMethod.getTypeParameterList(); } @Override public PsiDocComment getDocComment() { return myMethod.getDocComment(); } @Override public boolean isDeprecated() { return myMethod.isDeprecated(); } @Override public PsiElement setName(@NotNull String name) throws IncorrectOperationException { return myMethod.setName(name); } @Override @NotNull public String getName() { return myMethod.getName(); } @Override @NotNull public HierarchicalMethodSignature getHierarchicalMethodSignature() { return myMethod.getHierarchicalMethodSignature(); } @Override public boolean hasModifierProperty(@NotNull String name) { return myMethod.hasModifierProperty(name); } @Override @NotNull public PsiModifierList getModifierList() { return myMethod.getModifierList(); } @Override public PsiType getReturnType() { return myMethod.getReturnType(); } @Override public PsiTypeElement getReturnTypeElement() { return myMethod.getReturnTypeElement(); } @Override @NotNull public PsiParameterList getParameterList() { return myMethod.getParameterList(); } @Override @NotNull public PsiReferenceList getThrowsList() { return myMethod.getThrowsList(); } @Override public PsiCodeBlock getBody() { return myMethod.getBody(); } @Override public boolean isConstructor() { return myMethod.isConstructor(); } @Override public boolean isVarArgs() { return myMethod.isVarArgs(); } @Override @NotNull public MethodSignature getSignature(@NotNull PsiSubstitutor substitutor) { return myMethod.getSignature(substitutor); } @Override public PsiIdentifier getNameIdentifier() { return myMethod.getNameIdentifier(); } @Override @NotNull public PsiMethod[] findSuperMethods() { return myMethod.findSuperMethods(); } @Override @NotNull public PsiMethod[] findSuperMethods(boolean checkAccess) { return myMethod.findSuperMethods(checkAccess); } @Override @NotNull public PsiMethod[] findSuperMethods(PsiClass parentClass) { return myMethod.findSuperMethods(parentClass); } @Override @NotNull public List<MethodSignatureBackedByPsiMethod> findSuperMethodSignaturesIncludingStatic(boolean checkAccess) { return myMethod.findSuperMethodSignaturesIncludingStatic(checkAccess); } @Override @SuppressWarnings("deprecation") public PsiMethod findDeepestSuperMethod() { return myMethod.findDeepestSuperMethod(); } @Override @NotNull public PsiMethod[] findDeepestSuperMethods() { return myMethod.findDeepestSuperMethods(); } @Override public String getText() { return myMethod.getText(); } @Override public void accept(@NotNull PsiElementVisitor visitor) { myMethod.accept(visitor); } @Override public PsiElement copy() { return new LightMethod(myManager, (PsiMethod)myMethod.copy(), myContainingClass); } @Override public boolean isValid() { return myContainingClass.isValid(); } @Override public PsiClass getContainingClass() { return myContainingClass; } @Override public PsiFile getContainingFile() { return myContainingClass.getContainingFile(); } public String toString() { return "PsiMethod:" + getName(); } @Override protected boolean isVisibilitySupported() { return true; } @Override public boolean isEquivalentTo(final PsiElement another) { return PsiClassImplUtil.isMethodEquivalentTo(this, another); } @Override @NotNull public SearchScope getUseScope() { return PsiImplUtil.getMemberUseScope(this); } @Override public PsiElement getContext() { return getContainingClass(); } @Override public PsiType getReturnTypeNoResolve() { return getReturnType(); } }