diff --git a/src/main/java/com/foxsteps/gsonformat/config/Config.java b/src/main/java/com/foxsteps/gsonformat/config/Config.java index b1b47af..8e06f8e 100644 --- a/src/main/java/com/foxsteps/gsonformat/config/Config.java +++ b/src/main/java/com/foxsteps/gsonformat/config/Config.java @@ -10,6 +10,7 @@ public class Config { private static Config config; private boolean fieldPrivateMode = true; + private boolean onlyGetterMode = false; private boolean generateComments = false; private boolean useSerializedName = false; private boolean objectFromData = false; @@ -75,6 +76,7 @@ private Config() { public void save() { + PropertiesComponent.getInstance().setValue("fieldOnlyGetterMode", isOnlyGetterMode() + ""); PropertiesComponent.getInstance().setValue("fieldPrivateMode", isFieldPrivateMode() + ""); PropertiesComponent.getInstance().setValue("useSerializedName", isUseSerializedName() + ""); PropertiesComponent.getInstance().setValue("objectFromData", objectFromData + ""); @@ -104,6 +106,7 @@ public static Config getInstant() { if (config == null) { config = new Config(); + config.setOnlyGetterMode(PropertiesComponent.getInstance().getBoolean("fieldOnlyGetterMode", false)); config.setFieldPrivateMode(PropertiesComponent.getInstance().getBoolean("fieldPrivateMode", true)); config.setUseSerializedName(PropertiesComponent.getInstance().getBoolean("useSerializedName", true)); config.setObjectFromData(PropertiesComponent.getInstance().getBoolean("objectFromData", false)); @@ -301,6 +304,13 @@ public void setFieldPrivateMode(boolean fieldPrivateMode) { this.fieldPrivateMode = fieldPrivateMode; } + public boolean isOnlyGetterMode() { + return onlyGetterMode; + } + + public void setOnlyGetterMode(boolean onlyGetterMode) { + this.onlyGetterMode = onlyGetterMode; + } public void saveObjectFromDataStr(String objectFromDataStr) { this.objectFromDataStr = objectFromDataStr; diff --git a/src/main/java/com/foxsteps/gsonformat/process/Processor.java b/src/main/java/com/foxsteps/gsonformat/process/Processor.java index c289fe9..bb96656 100644 --- a/src/main/java/com/foxsteps/gsonformat/process/Processor.java +++ b/src/main/java/com/foxsteps/gsonformat/process/Processor.java @@ -107,7 +107,11 @@ protected void generateGetterAndSetter(PsiElementFactory factory, PsiClass cls, } if (Config.getInstant().isFieldPrivateMode()) { for (FieldEntity field : classEntity.getFields()) { - createGetAndSetMethod(factory, cls, field); + if (Config.getInstant().isOnlyGetterMode()) { + createGetMethod(factory, cls, field); + } else { + createGetAndSetMethod(factory, cls, field); + } } } } @@ -131,7 +135,7 @@ public void error() { }); } - protected void createGetAndSetMethod(PsiElementFactory factory, PsiClass cls, FieldEntity field) { + protected void createGetMethod(PsiElementFactory factory, PsiClass cls, FieldEntity field) { if (field.isGenerate()) { String fieldName = field.getGenerateFieldName(); String typeStr = field.getRealType(); @@ -153,7 +157,13 @@ protected void createGetAndSetMethod(PsiElementFactory factory, PsiClass cls, Fi field.getGenerateFieldName()).concat(" ;} "); cls.add(factory.createMethodFromText(method, cls)); } + } + } + protected void createSetMethod(PsiElementFactory factory, PsiClass cls, FieldEntity field) { + if (field.isGenerate()) { + String fieldName = field.getGenerateFieldName(); + String typeStr = field.getRealType(); String arg = fieldName; if (Config.getInstant().isUseFieldNamePrefix()) { String temp = fieldName.replaceAll("^" + Config.getInstant().getFiledNamePreFixStr(), ""); @@ -200,6 +210,11 @@ public void error() { } } + protected void createGetAndSetMethod(PsiElementFactory factory, PsiClass cls, FieldEntity field) { + createGetMethod(factory, cls, field); + createSetMethod(factory, cls, field); + } + protected void generateClass(PsiElementFactory factory, ClassEntity classEntity, PsiClass parentClass, IProcessor visitor) { onStartGenerateClass(factory, classEntity, parentClass, visitor); diff --git a/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.form b/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.form index 7cef39c..5555923 100644 --- a/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.form +++ b/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.form @@ -414,6 +414,14 @@ + + + + + + + + diff --git a/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.java b/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.java index 7c8ddbc..7da1930 100644 --- a/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.java +++ b/src/main/java/com/foxsteps/gsonformat/ui/SettingDialog.java @@ -37,6 +37,7 @@ public class SettingDialog extends JFrame { private JRadioButton fieldPublicRadioButton; private JRadioButton fieldPrivateRadioButton; + private JCheckBox onlyGetterCheckBox; private JCheckBox useSerializedNameCB; private JCheckBox useLombokCB; private JCheckBox useNumberKeyAsMapCB; @@ -94,9 +95,15 @@ public void actionPerformed(ActionEvent e) { //字段私有模型 if (Config.getInstant().isFieldPrivateMode()) { fieldPrivateRadioButton.setSelected(true); + onlyGetterCheckBox.setEnabled(true); } else { fieldPublicRadioButton.setSelected(true); + onlyGetterCheckBox.setEnabled(false); } + onlyGetterCheckBox.setSelected(Config.getInstant().isOnlyGetterMode()); + fieldPrivateRadioButton.addChangeListener(e -> { + onlyGetterCheckBox.setEnabled(fieldPrivateRadioButton.isSelected()); + }); //处女模式CheckBox virgoModelCB.setSelected(Config.getInstant().isVirgoMode()); //生成注释 @@ -367,6 +374,7 @@ public void actionPerformed(ActionEvent actionEvent) { private void onOK() { + Config.getInstant().setOnlyGetterMode(onlyGetterCheckBox.isSelected()); Config.getInstant().setFieldPrivateMode(fieldPrivateRadioButton.isSelected()); Config.getInstant().setUseSerializedName(useSerializedNameCB.isSelected()); Config.getInstant().setArrayFromData(arrayFromDataCB.isSelected());