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.cms.i18n.I18nContentSupport;
37 import info.magnolia.objectfactory.ComponentProvider;
38 import info.magnolia.ui.api.context.UiContext;
39 import info.magnolia.ui.api.i18n.I18NAuthoringSupport;
40 import info.magnolia.ui.form.field.MultiField;
41 import info.magnolia.ui.form.field.definition.MultiValueFieldDefinition;
42 import info.magnolia.ui.form.field.transformer.Transformer;
43 import info.magnolia.ui.form.field.transformer.multi.DelegatingMultiValueFieldTransformer;
44
45 import javax.inject.Inject;
46
47 import com.vaadin.v7.data.Item;
48 import com.vaadin.v7.data.util.PropertysetItem;
49 import com.vaadin.v7.ui.Field;
50
51
52
53
54
55
56
57
58 public class MultiValueFieldFactory<D extends MultiValueFieldDefinition> extends AbstractFieldFactory<D, PropertysetItem> {
59
60 private FieldFactoryFactory fieldFactoryFactory;
61 private ComponentProvider componentProvider;
62 private I18NAuthoringSupport i18nAuthoringSupport;
63
64 @Inject
65 public MultiValueFieldFactory(D definition, Item relatedFieldItem, UiContext uiContext, I18NAuthoringSupport i18nAuthoringSupport, FieldFactoryFactory fieldFactoryFactory, ComponentProvider componentProvider) {
66 super(definition, relatedFieldItem, uiContext, i18nAuthoringSupport);
67 this.fieldFactoryFactory = fieldFactoryFactory;
68 this.componentProvider = componentProvider;
69 this.i18nAuthoringSupport = i18nAuthoringSupport;
70 }
71
72
73
74
75 @Deprecated
76 public MultiValueFieldFactory(D definition, Item relatedFieldItem, FieldFactoryFactory fieldFactoryFactory, ComponentProvider componentProvider, I18NAuthoringSupport i18nAuthoringSupport) {
77 this(definition, relatedFieldItem, null, i18nAuthoringSupport, fieldFactoryFactory, componentProvider);
78 }
79
80
81
82
83 @Deprecated
84 public MultiValueFieldFactory(D definition, Item relatedFieldItem, FieldFactoryFactory fieldFactoryFactory, I18nContentSupport i18nContentSupport, ComponentProvider componentProvider) {
85 this(definition, relatedFieldItem, null, componentProvider.getComponent(I18NAuthoringSupport.class), fieldFactoryFactory, componentProvider);
86 }
87
88 @Override
89 protected Field<PropertysetItem> createFieldComponent() {
90
91 definition.setI18nBasename(getMessages().getBasename());
92
93 MultiFieldld/MultiField.html#MultiField">MultiField field = new MultiField(definition, fieldFactoryFactory, componentProvider, item, i18nAuthoringSupport);
94
95 field.setButtonCaptionAdd(getMessage(definition.getButtonSelectAddLabel()));
96 field.setButtonCaptionRemove(getMessage(definition.getButtonSelectRemoveLabel()));
97 boolean isUnOrderable = DelegatingMultiValueFieldTransformer.class.isAssignableFrom(definition.getTransformerClass());
98 field.setOrderable(!isUnOrderable);
99
100 return field;
101 }
102
103
104
105
106 @Override
107 protected Transformer<?> initializeTransformer(Class<? extends Transformer<?>> transformerClass) {
108 Transformer<?> transformer = this.componentProvider.newInstance(transformerClass, item, definition, PropertysetItem.class);
109 transformer.setLocale(getLocale());
110 return transformer;
111 }
112 }