diff --git a/demo/src/main/java/io/asfjava/ui/demo/screen/CivilStateTitelsMap.java b/demo/src/main/java/io/asfjava/ui/demo/screen/CivilStateTitelsMap.java new file mode 100644 index 0000000..9cb83cc --- /dev/null +++ b/demo/src/main/java/io/asfjava/ui/demo/screen/CivilStateTitelsMap.java @@ -0,0 +1,20 @@ +package io.asfjava.ui.demo.screen; + +import java.util.HashMap; + +import io.asfjava.ui.core.form.TitleMapsAdapter; + +public class CivilStateTitelsMap extends TitleMapsAdapter{ + + @Override + public HashMap getPossibleValues(){ + + HashMap myMap = new HashMap<>(); + + myMap.put("Maried", "COMMITTED"); + myMap.put("Single", "HAPPY"); + myMap.put("Devorced", "RELEASED"); + + return myMap; + } +} diff --git a/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java b/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java index a322489..bb60fcb 100644 --- a/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java +++ b/demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java @@ -3,6 +3,7 @@ import java.io.Serializable; import io.asfjava.ui.core.form.ComboBox; +import io.asfjava.ui.core.form.RadioBox; import io.asfjava.ui.core.form.TextArea; import io.asfjava.ui.core.form.TextField; @@ -16,6 +17,10 @@ public class DemoForm implements Serializable { @ComboBox(title = "Gender", values = { "Male", "Female" }) private String gender; + + + @RadioBox(title = "Civil State" , titleMap = CivilStateTitelsMap.class) + private String civilState; @TextArea(title = "Address", placeHolder = "Fill your address please", description = "This is textarea") private String address; @@ -47,6 +52,14 @@ public String getAddress() { public void setAddress(String address) { this.address = address; } + + public String getCivilState() { + return civilState; + } + + public void setCivilState(String civilState) { + this.civilState = civilState; + } private static final long serialVersionUID = -5073515619469444978L; } diff --git a/src/main/java/io/asfjava/ui/core/form/RadioBox.java b/src/main/java/io/asfjava/ui/core/form/RadioBox.java new file mode 100644 index 0000000..d0dbe0c --- /dev/null +++ b/src/main/java/io/asfjava/ui/core/form/RadioBox.java @@ -0,0 +1,21 @@ +package io.asfjava.ui.core.form; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +@Retention(RUNTIME) +@Target(FIELD) +public @interface RadioBox { + + /*the title of the RadioBox*/ + String title(); + + boolean readOnly() default false ; + + Class titleMap(); + + +} diff --git a/src/main/java/io/asfjava/ui/core/form/TitleMapsAdapter.java b/src/main/java/io/asfjava/ui/core/form/TitleMapsAdapter.java new file mode 100644 index 0000000..5a7fc43 --- /dev/null +++ b/src/main/java/io/asfjava/ui/core/form/TitleMapsAdapter.java @@ -0,0 +1,13 @@ +package io.asfjava.ui.core.form; + +import java.util.HashMap; + +public class TitleMapsAdapter { + + public HashMap getPossibleValues(){ + return null; + } + + + +} diff --git a/src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java b/src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java new file mode 100644 index 0000000..0e162eb --- /dev/null +++ b/src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java @@ -0,0 +1,56 @@ +package io.asfjava.ui.core.generators; + +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import io.asfjava.ui.core.form.RadioBox; + +public class RadioBoxGenerator implements FormDefinitionGenerator { + + @Override + public void generate(ObjectNode fieldFormDefinition, Field field) { + + RadioBox annotation = field.getAnnotation(RadioBox.class); + fieldFormDefinition.put("key", field.getName()); + fieldFormDefinition.put("readOnly", annotation.readOnly()); + fieldFormDefinition.put("type", "radios"); + + JsonNode radioFieldFormDefinition = ((JsonNode) fieldFormDefinition); + + ObjectMapper radioMapper = new ObjectMapper(); + + ArrayNode titlesMap = radioMapper.createArrayNode(); + + HashMap map; + + try { + map = (annotation.titleMap()).newInstance().getPossibleValues(); + + for (Map.Entry iterator : map.entrySet()) { + ObjectNode entry = radioMapper.createObjectNode(); + entry.put("name", iterator.getKey()); + entry.putPOJO("value", iterator.getValue()); + titlesMap.add(entry); + + } + } catch (InstantiationException | IllegalAccessException e) { + // TODO Log It into a Logger + e.printStackTrace(); + } + + ((ObjectNode) radioFieldFormDefinition).set("titleMap", titlesMap); + + } + + @Override + public String getAnnoation() { + return RadioBox.class.getName(); + } + +}