disable replace constructor with builder/factory for enums (IDEA-141299)

This commit is contained in:
Anna Kozlova
2015-06-11 23:32:54 +03:00
parent 1c373eee23
commit 38e2d2cd6c
2 changed files with 21 additions and 4 deletions
@@ -39,7 +39,7 @@ public class ReplaceConstructorWithBuilderAction extends BaseRefactoringAction{
final int offset = editor.getCaretModel().getOffset();
final PsiElement elementAt = file.findElementAt(offset);
final PsiClass psiClass = ReplaceConstructorWithBuilderHandler.getParentNamedClass(elementAt);
return psiClass != null && psiClass.getConstructors().length > 0;
return psiClass != null && psiClass.getConstructors().length > 0 && !psiClass.isEnum();
}
protected boolean isEnabledOnElements(@NotNull final PsiElement[] elements) {
@@ -17,8 +17,10 @@ package com.intellij.refactoring.actions;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiMethod;
import com.intellij.refactoring.RefactoringActionHandler;
import com.intellij.refactoring.replaceConstructorWithFactory.ReplaceConstructorWithFactoryHandler;
@@ -32,10 +34,25 @@ public class ReplaceConstructorWithFactoryAction extends BaseRefactoringAction {
return false;
}
@Override
protected boolean isEnabledOnElements(@NotNull PsiElement[] elements) {
return elements.length == 1 &&
(elements[0] instanceof PsiMethod && ((PsiMethod)elements[0]).isConstructor() || elements[0] instanceof PsiClass)
&& elements[0].getLanguage().isKindOf(JavaLanguage.INSTANCE);
return false;
}
@Override
protected boolean isAvailableOnElementInEditorAndFile(@NotNull PsiElement element,
@NotNull Editor editor,
@NotNull PsiFile file,
@NotNull DataContext context) {
return (element instanceof PsiMethod &&
((PsiMethod)element).isConstructor() &&
acceptClass(((PsiMethod)element).getContainingClass()) ||
acceptClass(element))
&& element.getLanguage().isKindOf(JavaLanguage.INSTANCE);
}
private static boolean acceptClass(PsiElement element) {
return element instanceof PsiClass && !((PsiClass)element).isEnum();
}
protected RefactoringActionHandler getHandler(@NotNull DataContext dataContext) {