File tree 5 files changed +49
-2
lines changed
demo/src/main/java/io/asfjava/ui/demo/screen
src/main/java/io/asfjava/ui/core
5 files changed +49
-2
lines changed Original file line number Diff line number Diff line change 3
3
import java .io .Serializable ;
4
4
import java .util .Date ;
5
5
6
+ import io .asfjava .ui .core .form .ComboBox ;
6
7
import io .asfjava .ui .core .form .TextField ;
7
8
8
9
public class DemoForm implements Serializable {
@@ -12,6 +13,9 @@ public class DemoForm implements Serializable {
12
13
13
14
@ TextField (title = "Last Name" ,placeHolder = "Your last name" )
14
15
private String lastName ;
16
+
17
+ @ ComboBox (title ="Gender" ,values ={"Male" ,"Female" })
18
+ private String gender ;
15
19
16
20
private Date birthDate ;
17
21
@@ -38,6 +42,10 @@ public Date getBirthDate() {
38
42
public void setBirthDate (Date birthDate ) {
39
43
this .birthDate = birthDate ;
40
44
}
45
+
46
+ public String getGender () {
47
+ return gender ;
48
+ }
41
49
42
50
private static final long serialVersionUID = -5073515619469444978L ;
43
51
}
Original file line number Diff line number Diff line change 1
- package io .asfjava .ui .form ;
1
+ package io .asfjava .ui .core . form ;
2
2
3
3
import java .lang .annotation .Retention ;
4
4
import java .lang .annotation .Target ;
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change 1
1
package io .asfjava .ui .core .schema ;
2
2
3
+ import java .awt .List ;
4
+ import java .util .Arrays ;
5
+ import java .util .HashSet ;
6
+ import java .util .Set ;
7
+
3
8
import com .fasterxml .jackson .annotation .JsonProperty ;
4
9
import com .fasterxml .jackson .databind .BeanProperty ;
5
10
import com .fasterxml .jackson .module .jsonSchema .types .StringSchema ;
6
11
12
+ import io .asfjava .ui .core .form .ComboBox ;
7
13
import io .asfjava .ui .core .form .TextField ;
8
14
9
15
class CustomStringSchema extends StringSchema {
@@ -18,6 +24,12 @@ public void enrichWithBeanProperty(BeanProperty beanProperty) {
18
24
// this.setLayout(annotation.value().toString());
19
25
this .setTitle (annotation .title ());
20
26
}
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
+ }
21
33
}
22
34
23
35
String getLayout () {
Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ public final class UiFormSchemaGenerator {
25
25
public UiForm generate (Class <? extends Serializable > formDto ) throws JsonMappingException {
26
26
ObjectMapper mapper = new ObjectMapper ();
27
27
JsonSchemaGenerator schemaGen = new JsonSchemaGenerator (mapper , new CustomSchemaFactoryWrapper ());
28
- JsonSchema schema = schemaGen .generateSchema (formDto );
28
+ JsonSchema schema = schemaGen .generateSchema (formDto );
29
29
30
30
ArrayNode formDefinition = mapper .createArrayNode ();
31
31
You can’t perform that action at this time.
0 commit comments