mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
allow to create inner class on qualifier (IDEA-129663)
This commit is contained in:
+5
-1
@@ -236,7 +236,7 @@ public class CreateClassFromNewFix extends CreateFromUsageBaseFix {
|
||||
@Override
|
||||
protected boolean isAvailableImpl(int offset) {
|
||||
PsiNewExpression expression = getNewExpression();
|
||||
if (expression.getQualifier() != null) {
|
||||
if (rejectQualifier(expression.getQualifier())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -255,6 +255,10 @@ public class CreateClassFromNewFix extends CreateFromUsageBaseFix {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean rejectQualifier(PsiExpression qualifier) {
|
||||
return qualifier != null;
|
||||
}
|
||||
|
||||
protected String getText(final String varName) {
|
||||
return QuickFixBundle.message("create.class.from.new.text", varName);
|
||||
}
|
||||
|
||||
+1
@@ -305,6 +305,7 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction {
|
||||
}
|
||||
}
|
||||
}
|
||||
qualifier = newExpression.getQualifier();
|
||||
}
|
||||
else if (element instanceof PsiReferenceExpression) {
|
||||
qualifier = ((PsiReferenceExpression)element).getQualifierExpression();
|
||||
|
||||
+14
-1
@@ -42,6 +42,17 @@ public class CreateInnerClassFromNewFix extends CreateClassFromNewFix {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isValidElement(PsiElement element) {
|
||||
PsiJavaCodeReferenceElement ref = element instanceof PsiNewExpression ? ((PsiNewExpression)element).getClassOrAnonymousClassReference() : null;
|
||||
return ref != null && ref.resolve() != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean rejectQualifier(PsiExpression qualifier) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void invokeImpl(final PsiClass targetClass) {
|
||||
PsiNewExpression newExpression = getNewExpression();
|
||||
@@ -61,7 +72,9 @@ public class CreateInnerClassFromNewFix extends CreateClassFromNewFix {
|
||||
}
|
||||
}
|
||||
|
||||
if (!targetClass.isInterface() && (!PsiTreeUtil.isAncestor(targetClass, newExpression, true) || PsiUtil.getEnclosingStaticElement(newExpression, targetClass) != null || isInThisOrSuperCall(newExpression))) {
|
||||
if (!targetClass.isInterface() &&
|
||||
newExpression.getQualifier() == null &&
|
||||
(!PsiTreeUtil.isAncestor(targetClass, newExpression, true) || PsiUtil.getEnclosingStaticElement(newExpression, targetClass) != null || isInThisOrSuperCall(newExpression))) {
|
||||
modifierList.setModifierProperty(PsiModifier.STATIC, true);
|
||||
}
|
||||
created = (PsiClass)targetClass.add(created);
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// "Create inner class 'ArrayList'" "true"
|
||||
public class Test {
|
||||
public static void main() {
|
||||
Inner q = new Inner();
|
||||
q.new ArrayList();
|
||||
}
|
||||
|
||||
static class Inner {
|
||||
public class ArrayList {
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// "Create inner class 'ArrayList'" "false"
|
||||
// "Create inner class 'ArrayList'" "true"
|
||||
public class Test {
|
||||
public static void main() {
|
||||
Inner q = new Inner();
|
||||
|
||||
Reference in New Issue
Block a user