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());