Search in sources :

Example 6 with PsiAnonymousClass

use of com.intellij.psi.PsiAnonymousClass in project intellij-community by JetBrains.

the class GroovyGenerateEqualsHandler method chooseOriginalMembers.

@Override
@Nullable
protected ClassMember[] chooseOriginalMembers(PsiClass aClass, Project project) {
    myEqualsFields = null;
    myHashCodeFields = null;
    myNonNullFields = PsiField.EMPTY_ARRAY;
    GlobalSearchScope scope = aClass.getResolveScope();
    final PsiMethod equalsMethod = GroovyGenerateEqualsHelper.findMethod(aClass, GroovyGenerateEqualsHelper.getEqualsSignature(project, scope));
    final PsiMethod hashCodeMethod = GroovyGenerateEqualsHelper.findMethod(aClass, GroovyGenerateEqualsHelper.getHashCodeSignature());
    boolean needEquals = equalsMethod == null;
    boolean needHashCode = hashCodeMethod == null;
    if (!needEquals && !needHashCode) {
        String text = aClass instanceof PsiAnonymousClass ? GroovyCodeInsightBundle.message("generate.equals.and.hashcode.already.defined.warning.anonymous") : GroovyCodeInsightBundle.message("generate.equals.and.hashcode.already.defined.warning", aClass.getQualifiedName());
        if (Messages.showYesNoDialog(project, text, GroovyCodeInsightBundle.message("generate.equals.and.hashcode.already.defined.title"), Messages.getQuestionIcon()) == Messages.YES) {
            if (!ApplicationManager.getApplication().runWriteAction(new Computable<Boolean>() {

                @Override
                public Boolean compute() {
                    try {
                        equalsMethod.delete();
                        hashCodeMethod.delete();
                        return Boolean.TRUE;
                    } catch (IncorrectOperationException e) {
                        LOG.error(e);
                        return Boolean.FALSE;
                    }
                }
            }).booleanValue()) {
                return null;
            } else {
                needEquals = needHashCode = true;
            }
        } else {
            return null;
        }
    }
    GenerateEqualsWizard wizard = new GenerateEqualsWizard(project, aClass, needEquals, needHashCode);
    if (!wizard.showAndGet()) {
        return null;
    }
    myEqualsFields = wizard.getEqualsFields();
    myHashCodeFields = wizard.getHashCodeFields();
    myNonNullFields = wizard.getNonNullFields();
    return DUMMY_RESULT;
}
Also used : GenerateEqualsWizard(com.intellij.codeInsight.generation.ui.GenerateEqualsWizard) GlobalSearchScope(com.intellij.psi.search.GlobalSearchScope) PsiMethod(com.intellij.psi.PsiMethod) PsiAnonymousClass(com.intellij.psi.PsiAnonymousClass) IncorrectOperationException(com.intellij.util.IncorrectOperationException) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

PsiAnonymousClass (com.intellij.psi.PsiAnonymousClass)6 PsiClass (com.intellij.psi.PsiClass)3 PsiElement (com.intellij.psi.PsiElement)2 PsiMethod (com.intellij.psi.PsiMethod)2 NotNull (org.jetbrains.annotations.NotNull)2 JavaEvaluator (com.android.tools.klint.client.api.JavaEvaluator)1 Location (com.android.tools.klint.detector.api.Location)1 GenerateEqualsWizard (com.intellij.codeInsight.generation.ui.GenerateEqualsWizard)1 HierarchyNodeDescriptor (com.intellij.ide.hierarchy.HierarchyNodeDescriptor)1 PsiFile (com.intellij.psi.PsiFile)1 GlobalSearchScope (com.intellij.psi.search.GlobalSearchScope)1 SearchScope (com.intellij.psi.search.SearchScope)1 IncorrectOperationException (com.intellij.util.IncorrectOperationException)1 ArrayList (java.util.ArrayList)1 Nullable (org.jetbrains.annotations.Nullable)1