1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.ui.datasource.optionlist;
35
36 import info.magnolia.ui.field.FieldDefinition;
37 import info.magnolia.ui.field.SelectFieldSupport;
38
39 import java.util.Optional;
40
41 import javax.inject.Inject;
42
43 import org.apache.commons.lang3.StringUtils;
44
45 import com.vaadin.data.Converter;
46 import com.vaadin.data.provider.DataProvider;
47 import com.vaadin.server.ExternalResource;
48 import com.vaadin.ui.IconGenerator;
49 import com.vaadin.ui.ItemCaptionGenerator;
50
51
52
53
54 public class OptionSelectFieldSupport implements SelectFieldSupport<Option> {
55
56 private final FieldDefinition fieldDefinition;
57 private final OptionListDefinition optionListDefinition;
58
59 @Inject
60 public OptionSelectFieldSupport(FieldDefinition fieldDefinition, OptionListDefinition optionListDefinition) {
61 this.fieldDefinition = fieldDefinition;
62 this.optionListDefinition = optionListDefinition;
63 }
64
65 @Override
66 public DataProvider<Option, ?> getDataProvider() {
67 return new OptionListProvider(optionListDefinition);
68 }
69
70 @Override
71 public ItemCaptionGenerator<Option> getItemCaptionGenerator() {
72 return option -> StringUtils.defaultIfBlank(option.getLabel(), option.getName());
73 }
74
75 @Override
76 public IconGenerator<Option> getIconGenerator() {
77 return optionDef -> Optional.ofNullable(optionDef.getIconSrc()).map(ExternalResource::new).orElse(null);
78 }
79
80 @Override
81 public Converter<Option, String> defaultConverter() {
82 return new OptionToModelTypeConverter<>(fieldDefinition, optionListDefinition);
83 }
84 }