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.field.factory;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.ui.field.ComboBoxFieldDefinition;
38 import info.magnolia.ui.field.SelectFieldSupport;
39
40 import java.util.Optional;
41
42 import javax.inject.Inject;
43
44 import com.vaadin.ui.ComboBox;
45
46
47
48
49
50
51
52 public class ComboBoxFieldFactory<T> extends AbstractSelectFieldFactory<ComboBoxFieldDefinition<T>, T> {
53
54 @Inject
55 public ComboBoxFieldFactory(ComboBoxFieldDefinition<T> definition, ComponentProvider componentProvider, SelectFieldSupport<T> selectFieldSupport) {
56 super(definition, componentProvider, selectFieldSupport);
57 }
58
59 @Override
60 protected ComboBox<T> createFieldComponent() {
61 final ComboBox<T> select = new ComboBox<>();
62 select.setScrollToSelectedItem(getDefinition().isScrollToSelectedItem());
63 select.setEmptySelectionAllowed(getDefinition().isEmptySelectionAllowed());
64 select.setTextInputAllowed(getDefinition().isTextInputAllowed());
65 select.setPopupWidth(getDefinition().getPopWidth());
66
67 String emptySelectionCaption = getDefinition().getEmptySelectionCaption();
68 if (emptySelectionCaption != null && !isMessageKey(emptySelectionCaption)) {
69 select.setEmptySelectionCaption(emptySelectionCaption);
70 }
71
72 String placeholder = getDefinition().getPlaceholder();
73 if (placeholder != null && !isMessageKey(placeholder)) {
74 select.setPlaceholder(placeholder);
75 }
76
77 select.setPageLength(getDefinition().getPageLength());
78 select.setNewItemProvider(Optional.ofNullable(getDefinition().getNewItemProviderClass())
79 .map(aClass -> componentProvider.newInstance(aClass))
80 .orElse(null)
81 );
82 return select;
83 }
84
85 }