Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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<String,Object> getPossibleValues(){

HashMap<String, Object> myMap = new HashMap<>();

myMap.put("Maried", "COMMITTED");
myMap.put("Single", "HAPPY");
myMap.put("Devorced", "RELEASED");

return myMap;
}
}
13 changes: 13 additions & 0 deletions demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
Expand Down Expand Up @@ -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;
}
21 changes: 21 additions & 0 deletions src/main/java/io/asfjava/ui/core/form/RadioBox.java
Original file line number Diff line number Diff line change
@@ -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<? extends TitleMapsAdapter> titleMap();


}
13 changes: 13 additions & 0 deletions src/main/java/io/asfjava/ui/core/form/TitleMapsAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package io.asfjava.ui.core.form;

import java.util.HashMap;

public class TitleMapsAdapter {

public HashMap<String,Object> getPossibleValues(){
return null;
}



}
56 changes: 56 additions & 0 deletions src/main/java/io/asfjava/ui/core/generators/RadioBoxGenerator.java
Original file line number Diff line number Diff line change
@@ -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<String, Object> map;

try {
map = (annotation.titleMap()).newInstance().getPossibleValues();

for (Map.Entry<String, Object> 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();
}

}