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.i18n.I18NAuthoringSupport;
39 import info.magnolia.ui.form.field.CompositeField;
40 import info.magnolia.ui.form.field.definition.CompositeFieldDefinition;
41 import info.magnolia.ui.form.field.transformer.Transformer;
42
43 import java.util.List;
44
45 import javax.inject.Inject;
46
47 import com.vaadin.data.Item;
48 import com.vaadin.data.util.PropertysetItem;
49 import com.vaadin.ui.Field;
50
51
52
53
54
55
56 public class CompositeFieldFactory<D extends CompositeFieldDefinition> extends AbstractFieldFactory<D, PropertysetItem> {
57
58 private FieldFactoryFactory fieldFactoryFactory;
59 private ComponentProvider componentProvider;
60 private final I18NAuthoringSupport i18nAuthoringSupport;
61
62 @Inject
63 public CompositeFieldFactory(D definition, Item relatedFieldItem, FieldFactoryFactory fieldFactoryFactory, ComponentProvider componentProvider, I18NAuthoringSupport i18nAuthoringSupport) {
64 super(definition, relatedFieldItem);
65 this.fieldFactoryFactory = fieldFactoryFactory;
66 this.componentProvider = componentProvider;
67 this.i18nAuthoringSupport = i18nAuthoringSupport;
68 }
69
70
71
72
73 @Deprecated
74 public CompositeFieldFactory(D definition, Item relatedFieldItem, FieldFactoryFactory fieldFactoryFactory, I18nContentSupport i18nContentSupport, ComponentProvider componentProvider) {
75 this(definition, relatedFieldItem, fieldFactoryFactory, componentProvider, componentProvider.getComponent(I18NAuthoringSupport.class));
76 }
77
78 @Override
79 protected Field<PropertysetItem> createFieldComponent() {
80
81 definition.setI18nBasename(getMessages().getBasename());
82
83 CompositeField field = new CompositeField(definition, fieldFactoryFactory, componentProvider, item, i18nAuthoringSupport);
84 return field;
85 }
86
87
88
89
90 @Override
91 protected Transformer<?> initializeTransformer(Class<? extends Transformer<?>> transformerClass) {
92 List<String> propertyNames = definition.getFieldNames();
93 return this.componentProvider.newInstance(transformerClass, item, definition, PropertysetItem.class, propertyNames);
94 }
95 }