Skip to content

Commit cbe90ee

Browse files
fakhreddinefakhreddine
fakhreddine
authored and
fakhreddine
committed
ComboBox element
1 parent 34d85ac commit cbe90ee

File tree

5 files changed

+49
-2
lines changed

5 files changed

+49
-2
lines changed

demo/src/main/java/io/asfjava/ui/demo/screen/DemoForm.java

+8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.Serializable;
44
import java.util.Date;
55

6+
import io.asfjava.ui.core.form.ComboBox;
67
import io.asfjava.ui.core.form.TextField;
78

89
public class DemoForm implements Serializable {
@@ -12,6 +13,9 @@ public class DemoForm implements Serializable {
1213

1314
@TextField(title = "Last Name",placeHolder = "Your last name")
1415
private String lastName;
16+
17+
@ComboBox(title="Gender",values={"Male","Female"})
18+
private String gender;
1519

1620
private Date birthDate;
1721

@@ -38,6 +42,10 @@ public Date getBirthDate() {
3842
public void setBirthDate(Date birthDate) {
3943
this.birthDate = birthDate;
4044
}
45+
46+
public String getGender() {
47+
return gender;
48+
}
4149

4250
private static final long serialVersionUID = -5073515619469444978L;
4351
}

src/main/java/io/asfjava/ui/form/ComboBox.java renamed to src/main/java/io/asfjava/ui/core/form/ComboBox.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.asfjava.ui.form;
1+
package io.asfjava.ui.core.form;
22

33
import java.lang.annotation.Retention;
44
import java.lang.annotation.Target;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.asfjava.ui.core.generators;
2+
3+
import java.lang.reflect.Field;
4+
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
6+
7+
import io.asfjava.ui.core.form.ComboBox;
8+
9+
public class ComboBoxGenerator implements FormDefinitionGenerator {
10+
11+
@Override
12+
public void generate(ObjectNode fieldFormDefinition, Field field) {
13+
ComboBox annotation = field.getAnnotation(ComboBox.class);
14+
fieldFormDefinition.put("key", field.getName());
15+
fieldFormDefinition.put("autofocus", annotation.autofocus());
16+
fieldFormDefinition.put("disabled", annotation.disabled());
17+
fieldFormDefinition.put("multiple", annotation.multiple());
18+
fieldFormDefinition.put("required", annotation.required());
19+
fieldFormDefinition.put("size", annotation.size());
20+
}
21+
22+
@Override
23+
public String getAnnoation() {
24+
return ComboBox.class.getName();
25+
}
26+
27+
}

src/main/java/io/asfjava/ui/core/schema/CustomStringSchema.java

+12
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package io.asfjava.ui.core.schema;
22

3+
import java.awt.List;
4+
import java.util.Arrays;
5+
import java.util.HashSet;
6+
import java.util.Set;
7+
38
import com.fasterxml.jackson.annotation.JsonProperty;
49
import com.fasterxml.jackson.databind.BeanProperty;
510
import com.fasterxml.jackson.module.jsonSchema.types.StringSchema;
611

12+
import io.asfjava.ui.core.form.ComboBox;
713
import io.asfjava.ui.core.form.TextField;
814

915
class CustomStringSchema extends StringSchema {
@@ -18,6 +24,12 @@ public void enrichWithBeanProperty(BeanProperty beanProperty) {
1824
// this.setLayout(annotation.value().toString());
1925
this.setTitle(annotation.title());
2026
}
27+
ComboBox Comboannotation = beanProperty.getAnnotation(ComboBox.class);
28+
if (Comboannotation != null) {
29+
this.setTitle(Comboannotation.title());
30+
Set<String> enums = new HashSet<>(Arrays.asList(Comboannotation.values()));
31+
this.setEnums(enums);
32+
}
2133
}
2234

2335
String getLayout() {

src/main/java/io/asfjava/ui/core/schema/UiFormSchemaGenerator.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public final class UiFormSchemaGenerator {
2525
public UiForm generate(Class<? extends Serializable> formDto) throws JsonMappingException {
2626
ObjectMapper mapper = new ObjectMapper();
2727
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper, new CustomSchemaFactoryWrapper());
28-
JsonSchema schema = schemaGen.generateSchema(formDto);
28+
JsonSchema schema = schemaGen.generateSchema(formDto);
2929

3030
ArrayNode formDefinition = mapper.createArrayNode();
3131

0 commit comments

Comments
 (0)