create from usage: do not suggest to create field in interfaces

This commit is contained in:
anna
2012-02-09 10:30:55 +01:00
parent dba5542118
commit 0a9f631abe
2 changed files with 11 additions and 2 deletions
@@ -52,6 +52,11 @@ public class CreateFieldFromUsageFix extends CreateVarFromUsageFix {
return false;
}
@Override
protected boolean canBeTargetClass(PsiClass psiClass) {
return super.canBeTargetClass(psiClass) && !psiClass.isInterface() && !psiClass.isAnnotationType();
}
@Override
protected void invokeImpl(final PsiClass targetClass) {
final Project project = myReferenceExpression.getProject();
@@ -347,16 +347,20 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction {
}
}
private static void collectSupers(PsiClass psiClass, ArrayList<PsiClass> classes) {
private void collectSupers(PsiClass psiClass, ArrayList<PsiClass> classes) {
classes.add(psiClass);
final PsiClass[] supers = psiClass.getSupers();
for (PsiClass aSuper : supers) {
if (aSuper.getManager().isInProject(aSuper)) {
if (canBeTargetClass(aSuper)) {
collectSupers(aSuper, classes);
}
}
}
protected boolean canBeTargetClass(PsiClass psiClass) {
return psiClass.getManager().isInProject(psiClass);
}
protected static void startTemplate (@NotNull Editor editor, final Template template, @NotNull final Project project) {
startTemplate(editor, template, project, null);