mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
create constructor in context: also for java
This commit is contained in:
+5
-3
@@ -218,7 +218,7 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
|
||||
JVMElementFactory factory = JVMElementFactories.requireFactory(aClass.getLanguage(), aClass.getProject());
|
||||
CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(manager.getProject());
|
||||
|
||||
PsiMethod constructor = factory.createMethodFromText(aClass.getName() + "() {}", aClass);
|
||||
PsiMethod constructor = factory.createConstructor(aClass.getName(), aClass);
|
||||
String modifier = getConstructorModifier(aClass);
|
||||
if (modifier != null) {
|
||||
PsiUtil.setModifierProperty(constructor, modifier, true);
|
||||
@@ -259,14 +259,15 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
|
||||
|
||||
JavaCodeStyleManager javaStyle = JavaCodeStyleManager.getInstance(aClass.getProject());
|
||||
|
||||
final PsiMethod dummyConstructor = factory.createMethodFromText(constructor.getText(), null);
|
||||
final PsiMethod dummyConstructor = factory.createConstructor(aClass.getName());
|
||||
dummyConstructor.getParameterList().replace(constructor.getParameterList().copy());
|
||||
List<PsiParameter> fieldParams = new ArrayList<PsiParameter>();
|
||||
for (PsiField field : fields) {
|
||||
String fieldName = field.getName();
|
||||
String name = javaStyle.variableNameToPropertyName(fieldName, VariableKind.FIELD);
|
||||
String parmName = javaStyle.propertyNameToVariableName(name, VariableKind.PARAMETER);
|
||||
parmName = javaStyle.suggestUniqueVariableName(parmName, dummyConstructor, true);
|
||||
PsiParameter parm = factory.createParameter(parmName, field.getType());
|
||||
PsiParameter parm = factory.createParameter(parmName, field.getType(), aClass);
|
||||
|
||||
final NullableNotNullManager nullableManager = NullableNotNullManager.getInstance(field.getProject());
|
||||
final String notNull = nullableManager.getNotNull(field);
|
||||
@@ -275,6 +276,7 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
|
||||
}
|
||||
|
||||
constructor.getParameterList().add(parm);
|
||||
dummyConstructor.getParameterList().add(parm.copy());
|
||||
fieldParams.add(parm);
|
||||
}
|
||||
|
||||
|
||||
@@ -394,9 +394,9 @@ public class GenerateMembersUtil {
|
||||
private static PsiMethod createMethod(@NotNull JVMElementFactory factory,
|
||||
@NotNull PsiMethod method, PsiElement target) {
|
||||
if (method.isConstructor()) {
|
||||
return factory.createMethodFromText(method.getName() + "(){}", target);
|
||||
return factory.createConstructor(method.getName(), target);
|
||||
}
|
||||
return factory.createMethodFromText("void " + method.getName() + "(){}", target);
|
||||
return factory.createMethod(method.getName(), PsiType.VOID);
|
||||
}
|
||||
|
||||
private static void substituteReturnType(@NotNull PsiManager manager,
|
||||
|
||||
@@ -184,6 +184,7 @@ public interface JVMElementFactory {
|
||||
*/
|
||||
@NotNull
|
||||
PsiMethod createConstructor(@NotNull @NonNls String name);
|
||||
PsiMethod createConstructor(@NotNull @NonNls String name, PsiElement context);
|
||||
|
||||
/**
|
||||
* Creates a class type for the specified class, using the specified substitutor
|
||||
|
||||
@@ -256,6 +256,11 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps
|
||||
return (PsiMethod)CodeStyleManager.getInstance(myManager.getProject()).reformat(method);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiMethod createConstructor(@NotNull @NonNls String name, PsiElement context) {
|
||||
return createMethodFromText(name + "() {}", context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PsiClassInitializer createClassInitializer() throws IncorrectOperationException {
|
||||
|
||||
+5
@@ -1019,6 +1019,11 @@ public class GroovyPsiElementFactoryImpl extends GroovyPsiElementFactory {
|
||||
return createConstructorFromText(name, name + "(){}", null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiMethod createConstructor(@NotNull @NonNls String name, PsiElement context) {
|
||||
return createConstructorFromText(name, name + "(){}", context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PsiClassType createType(@NotNull PsiClass resolve, @NotNull PsiSubstitutor substitutor) {
|
||||
|
||||
Reference in New Issue
Block a user