disable replace constructor with builder action for classes without constructors; description

This commit is contained in:
anna
2012-01-19 21:20:41 +01:00
parent ef53542b46
commit 95836afa95
3 changed files with 13 additions and 2 deletions
@@ -21,7 +21,10 @@
package com.intellij.refactoring.actions;
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.refactoring.RefactoringActionHandler;
import com.intellij.refactoring.replaceConstructorWithBuilder.ReplaceConstructorWithBuilderHandler;
@@ -30,6 +33,14 @@ public class ReplaceConstructorWithBuilderAction extends BaseRefactoringAction{
return true;
}
@Override
protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file, DataContext context) {
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;
}
protected boolean isEnabledOnElements(final PsiElement[] elements) {
return false;
}
@@ -51,7 +51,7 @@ public class ReplaceConstructorWithBuilderHandler implements RefactoringActionHa
}
@Nullable
private static PsiClass getParentNamedClass(PsiElement element) {
public static PsiClass getParentNamedClass(PsiElement element) {
final PsiClass psiClass = PsiTreeUtil.getParentOfType(element, PsiClass.class);
if (psiClass instanceof PsiAnonymousClass) {
return getParentNamedClass(psiClass);