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.i18nsystem.I18nText;
37 import info.magnolia.ui.datasource.WithDatasource;
38 import info.magnolia.ui.field.factory.LinkFieldFactory;
39 import info.magnolia.ui.form.ItemPreviewDefinition;
40 import info.magnolia.ui.framework.chooser.definition.SingleItemWorkbenchChooserDefinition;
41 import info.magnolia.ui.framework.datasource.definition.DatasourceDefinition;
42
43 import java.util.Optional;
44
45 import lombok.Getter;
46 import lombok.Setter;
47
48
49
50
51
52 @Getter
53 @Setter
54 @FieldType("linkField")
55 public class LinkFieldDefinition<T> extends ConfiguredFieldDefinition<String> implements WithDatasource<DatasourceDefinition> {
56
57 private String buttonSelectNewLabel = "buttons.select.new";
58 private String buttonSelectOtherLabel = "buttons.select.another";
59 private String placeholder;
60 private SingleItemWorkbenchChooserDefinition<T> chooser;
61 private ItemPreviewDefinition<T> preview;
62
63 private boolean editable = true;
64
65 public LinkFieldDefinition() {
66 setFactoryClass((Class) LinkFieldFactory.class);
67 }
68
69
70
71
72 @I18nText
73 public String getButtonSelectNewLabel() {
74 return buttonSelectNewLabel;
75 }
76
77
78
79
80 @I18nText
81 public String getButtonSelectOtherLabel() {
82 return buttonSelectOtherLabel;
83 }
84
85 @I18nText
86 public String getPlaceholder() {
87 return placeholder;
88 }
89
90 @I18nText
91 public String getButtonSelectNewDefaultLabel() {
92 return this.buttonSelectNewLabel;
93 }
94
95 @I18nText
96 public String getButtonSelectOtherDefaultLabel() {
97 return this.buttonSelectOtherLabel;
98 }
99
100 @Override
101 public DatasourceDefinition getDatasource() {
102 return chooser.getWorkbenchChooser().getDatasource();
103 }
104
105
106
107
108
109
110 public Class<?> getType() {
111 return Optional.ofNullable(super.getType()).orElse((Class) String.class);
112 }
113 }