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.editor;
35
36 import info.magnolia.objectfactory.ComponentProvider;
37 import info.magnolia.ui.api.i18n.I18NAuthoringSupport;
38 import info.magnolia.ui.field.EditorPropertyDefinition;
39 import info.magnolia.ui.field.MultiFieldDefinition;
40 import info.magnolia.ui.framework.layout.SingleFieldLayoutProducer;
41
42 import java.util.Collections;
43 import java.util.Locale;
44 import java.util.Optional;
45
46 import javax.inject.Inject;
47 import javax.jcr.Node;
48
49
50
51
52
53 public class MultiFieldEntryResolution extends ByIndexedChildNodes {
54
55 private final MultiFieldDefinition<Node> relatedPropertyDefinition;
56
57 @Inject
58 public MultiFieldEntryResolution(Definition definition, MultiFieldDefinition<Node> relatedPropertyDefinition, I18NAuthoringSupport<Node> i18NAuthoringSupport, ComponentProvider componentProvider, Locale locale) {
59 super(definition, relatedPropertyDefinition, i18NAuthoringSupport, componentProvider, locale);
60 this.relatedPropertyDefinition = relatedPropertyDefinition;
61 }
62
63 protected Optional<EditorDefinition<Node>> resolveEntryEditorDefinition(Node item, int index) {
64 EditorPropertyDefinition field = getRelatedFieldDefinition();
65 if (field instanceof EditorDefinition) {
66 return Optional.of((EditorDefinition<Node>) field);
67 }
68
69 ConfiguredFormDefinition<Node> wrapper = new ConfiguredFormDefinition<>();
70 wrapper.setName(field.getName());
71 wrapper.setLayout(new SingleFieldLayoutProducer.Definition());
72 wrapper.setProperties(Collections.singletonList(field));
73
74 return Optional.of(wrapper);
75 }
76
77 protected EditorPropertyDefinition getRelatedFieldDefinition() {
78 return this.relatedPropertyDefinition.getField();
79 }
80
81
82
83
84 public static class Definition extends ByIndexedChildNodes.Definition {
85
86 public Definition() {
87 setImplementationClass(MultiFieldEntryResolution.class);
88 }
89 }
90 }