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;
35
36 import info.magnolia.ui.editor.MayHaveI18NProperties;
37 import info.magnolia.ui.editor.MultiFormDefinition;
38 import info.magnolia.ui.editor.MultiFormView;
39
40 import java.util.Optional;
41
42 import lombok.Data;
43 import lombok.EqualsAndHashCode;
44
45
46
47
48
49
50
51 @Data
52 @EqualsAndHashCode(callSuper = true)
53 @FieldType("multiField")
54 public class MultiFieldDefinition<T> extends ConfiguredComplexPropertyDefinition<T> implements MultiFormDefinition<T>, MayHaveI18NProperties {
55
56 private EditorPropertyDefinition field;
57
58 private MultiFormView.EntryResolution.Definition<T> entryResolution;
59
60 private OrderHandlerDefinition<T> orderHandler = new OrderHandlerDefinition.Noop<>();
61
62 private boolean canRemoveItems;
63
64 private String buttonSelectAddLabel;
65
66 private String buttonSelectRemoveLabel;
67
68 private boolean required;
69
70 private String requiredErrorMessage;
71
72 public MultiFieldDefinition() {
73 setImplementationClass((Class) MultiFormView.class);
74 setStyleName("suppress-entry-captions");
75 }
76
77 @Override
78 public boolean hasI18NProperties() {
79 return Optional.ofNullable(field)
80 .map(field -> field.isI18n() || (field instanceof MayHaveI18NPropertiesagnolia/ui/editor/MayHaveI18NProperties.html#MayHaveI18NProperties">MayHaveI18NProperties && ((MayHaveI18NProperties) field).hasI18NProperties()))
81 .orElse(false);
82 }
83 }