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.form.field.factory;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.ui.api.context.UiContext;
38 import info.magnolia.ui.api.i18n.I18NAuthoringSupport;
39 import info.magnolia.ui.form.field.definition.TwinColSelectFieldDefinition;
40 import info.magnolia.ui.form.field.transformer.Transformer;
41
42 import java.util.HashSet;
43
44 import javax.inject.Inject;
45
46 import com.vaadin.v7.data.Item;
47 import com.vaadin.v7.ui.AbstractSelect;
48 import com.vaadin.v7.ui.TwinColSelect;
49
50
51
52
53
54
55 public class TwinColSelectFieldFactory<D extends TwinColSelectFieldDefinition> extends SelectFieldFactory<D> {
56
57 private ComponentProvider componentProvider;
58
59 @Inject
60 public TwinColSelectFieldFactory(D definition, Item relatedFieldItem, UiContext uiContext, I18NAuthoringSupport i18nAuthoringSupport, ComponentProvider componentProvider) {
61 super(definition, relatedFieldItem, uiContext, i18nAuthoringSupport);
62 this.componentProvider = componentProvider;
63 }
64
65
66
67
68 @Deprecated
69 public TwinColSelectFieldFactory(D definition, Item relatedFieldItem, ComponentProvider componentProvider) {
70 this(definition, relatedFieldItem, null, componentProvider.getComponent(I18NAuthoringSupport.class), componentProvider);
71 }
72
73 @Override
74 protected AbstractSelect createFieldComponent() {
75 super.createFieldComponent();
76 int rows = select.getContainerDataSource().size();
77 ((TwinColSelect) select).setRows(rows < 20 ? rows : 20);
78 select.setMultiSelect(definition.isMultiselect());
79 select.setNullSelectionAllowed(true);
80 ((TwinColSelect) select).setLeftColumnCaption(getMessage(definition.getLeftColumnCaption()));
81 ((TwinColSelect) select).setRightColumnCaption(getMessage(definition.getRightColumnCaption()));
82 return select;
83 }
84
85 @Override
86 protected AbstractSelect createSelectionField() {
87 return new TwinColSelect();
88 }
89
90
91
92
93
94 @Override
95 protected Transformer<?> initializeTransformer(Class<? extends Transformer<?>> transformerClass) {
96 return this.componentProvider.newInstance(transformerClass, item, definition, HashSet.class);
97 }
98 }