Extract constant
Hi guys,
I'm a newbie with IntelliJ Platform Plugin and I have a noob question.
I want to write a plugin for Java that has the same action as Extract Constant (Refactor > Extract > Constant...), but I don't know how to write it.
Could someone please give me that code block or show me how to implement it.
Thanks and Best Regards,
PS: this way is how I'm trying.
private final PsiClass mClass;
private final List<PsiField> mFields;
public CodeGenerator(PsiClass psiClass, List<PsiField> fields) {
mClass = psiClass;
mFields = fields;
}
public void generate() {
PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(mClass.getProject());
List<PsiField> fields = new ArrayList<>();
for (PsiField field : mFields) {
PsiField schemaField = elementFactory.createField(generateSchema(field), PsiType.CHAR);
fields.add(schemaField);
}
JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(mClass.getProject());
for (PsiField field : fields) {
styleManager.shortenClassReferences(mClass.add(field));
}
}
private static String generateSchema(PsiField field) {
StringBuilder sb = new StringBuilder("public static final ");
sb.append(field.getType().getPresentableText());
sb.append(" ");
String fieldName = field.getName();
StringBuilder nameBuilder = new StringBuilder();
for (int i = 0; i < fieldName.length(); i++) {
char currentChar = fieldName.charAt(i);
if (Character.isUpperCase(currentChar)) {
nameBuilder.append("_");
}
nameBuilder.append(Character.toUpperCase(currentChar));
}
sb.append(nameBuilder.toString());
sb.append(" = \"");
sb.append(fieldName);
sb.append(" \"");
return sb.toString();
}
请先登录再写评论。