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.chooser.definition.AppAwareWorkbenchChooserDefinition;
38 import info.magnolia.ui.chooser.definition.SingleItemWorkbenchChooserDefinition;
39 import info.magnolia.ui.contentapp.FilteringMode;
40 import info.magnolia.ui.datasource.DatasourceDefinition;
41 import info.magnolia.ui.datasource.WithDatasource;
42 import info.magnolia.ui.editor.ItemPreviewDefinition;
43 import info.magnolia.ui.field.factory.LinkFieldFactory;
44
45 import java.util.Optional;
46
47 import lombok.Getter;
48 import lombok.Setter;
49
50
51
52
53
54 @Getter
55 @Setter
56 @FieldType("linkField")
57 public class LinkFieldDefinition<T> extends ComboBoxFieldDefinition<T> implements WithDatasource<DatasourceDefinition> {
58
59
60
61
62 @Deprecated
63 private SingleItemWorkbenchChooserDefinition<T> chooser;
64 private String chooserId = "ui-framework-jcr:chooser";
65
66 private String buttonSelectNewLabel;
67 private String buttonSelectOtherLabel;
68 private ItemPreviewDefinition<T> preview;
69
70 private boolean editable = true;
71
72 public LinkFieldDefinition() {
73 setFactoryClass((Class) LinkFieldFactory.class);
74 setEmptySelectionAllowed(true);
75 setTextInputAllowed(true);
76 setFilteringMode(FilteringMode.STARTSWITH);
77 }
78
79
80
81
82 @I18nText(fallback = "buttons.select.new")
83 public String getButtonSelectNewLabel() {
84 return buttonSelectNewLabel;
85 }
86
87
88
89
90 @I18nText(fallback = "buttons.select.another")
91 public String getButtonSelectOtherLabel() {
92 return buttonSelectOtherLabel;
93 }
94
95
96
97
98 @Deprecated
99 @I18nText
100 public String getButtonSelectNewDefaultLabel() {
101 return getButtonSelectNewLabel();
102 }
103
104
105
106
107 @Deprecated
108 @I18nText
109 public String getButtonSelectOtherDefaultLabel() {
110 return getButtonSelectOtherLabel();
111 }
112
113 @Override
114 public DatasourceDefinition getDatasource() {
115 return Optional.ofNullable(chooser)
116 .map(SingleItemWorkbenchChooserDefinition::getWorkbenchChooser)
117 .map(AppAwareWorkbenchChooserDefinition::getDatasource)
118 .orElse(super.getDatasource());
119 }
120
121
122
123
124
125
126 public Class<?> getType() {
127 return Optional.ofNullable(super.getType()).orElse((Class) String.class);
128 }
129 }