EditorConfig documentation test
[idea/community.git] / java / java-impl / src / com / intellij / refactoring / actions / RefactoringActionContextUtil.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.refactoring.actions;
3
4 import com.intellij.lang.java.JavaLanguage;
5 import com.intellij.psi.PsiClass;
6 import com.intellij.psi.PsiElement;
7 import com.intellij.psi.PsiMethod;
8 import com.intellij.psi.util.PsiTreeUtil;
9 import org.jetbrains.annotations.NotNull;
10 import org.jetbrains.annotations.Nullable;
11
12 /**
13  * @author yole
14  */
15 public class RefactoringActionContextUtil {
16   public static boolean isJavaClassHeader(@NotNull PsiElement element) {
17     if (element.getLanguage() != JavaLanguage.INSTANCE) return false;
18     PsiClass psiClass = PsiTreeUtil.getParentOfType(element, PsiClass.class, false);
19     return psiClass != null && (element == psiClass || element == psiClass.getNameIdentifier() ||
20                                 PsiTreeUtil.isAncestor(psiClass.getModifierList(), element, false) ||
21                                 PsiTreeUtil.isAncestor(psiClass.getExtendsList(), element, false) ||
22                                 PsiTreeUtil.isAncestor(psiClass.getImplementsList(), element, false));
23   }
24
25   @Nullable
26   public static PsiMethod getJavaMethodHeader(@Nullable PsiElement element) {
27     if (element == null) return null;
28     if (element.getLanguage() != JavaLanguage.INSTANCE) return null;
29     PsiMethod psiMethod = PsiTreeUtil.getParentOfType(element, PsiMethod.class, false);
30     if (psiMethod != null && (element == psiMethod || element == psiMethod.getNameIdentifier() ||
31                                  PsiTreeUtil.isAncestor(psiMethod.getModifierList(), element, false) ||
32                                  PsiTreeUtil.isAncestor(psiMethod.getParameterList(), element, false))) {
33       return psiMethod;
34     }
35     return null;
36   }
37 }