generate public getter/setter for abstract classes (IDEA-102872)

(cherry picked from commit 61685b9d890fce99c050e1b98261527b7a0e9363)
This commit is contained in:
anna
2013-03-11 18:44:27 +01:00
parent bc5c90ccc8
commit 7f1f607d98
5 changed files with 21 additions and 3 deletions

View File

@@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull;
public class AddDefaultConstructorFix extends AddMethodFix {
public AddDefaultConstructorFix(PsiClass aClass) {
this(aClass, PsiUtil.getMaximumModifierForMember(aClass));
this(aClass, PsiUtil.getMaximumModifierForMember(aClass, false));
}
public AddDefaultConstructorFix(PsiClass aClass, @NotNull @PsiModifier.ModifierConstant final String modifier) {

View File

@@ -219,7 +219,8 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(manager.getProject());
PsiMethod constructor = factory.createConstructor(aClass.getName(), aClass);
String modifier = PsiUtil.getMaximumModifierForMember(aClass);
String modifier = PsiUtil.getMaximumModifierForMember(aClass, false);
if (modifier != null) {
PsiUtil.setModifierProperty(constructor, modifier, true);
}

View File

@@ -722,9 +722,14 @@ public final class PsiUtil extends PsiUtilCore {
@PsiModifier.ModifierConstant
public static String getMaximumModifierForMember(final PsiClass aClass) {
return getMaximumModifierForMember(aClass, true);
}
@PsiModifier.ModifierConstant
public static String getMaximumModifierForMember(final PsiClass aClass, boolean allowPublicAbstract) {
String modifier = PsiModifier.PUBLIC;
if (aClass.hasModifierProperty(PsiModifier.ABSTRACT) && !aClass.isEnum()) {
if (!allowPublicAbstract && aClass.hasModifierProperty(PsiModifier.ABSTRACT) && !aClass.isEnum()) {
modifier = PsiModifier.PROTECTED;
}
else if (aClass.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {

View File

@@ -0,0 +1,8 @@
// "Create setter for 's'" "true"
public abstract class A {
private String s;
public void setS(String s) {
this.s = s;
}
}

View File

@@ -0,0 +1,4 @@
// "Create setter for 's'" "true"
public abstract class A {
private String <caret>s;
}