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 private boolean showOptions = false;
72
73 public LinkFieldDefinition() {
74 setFactoryClass((Class) LinkFieldFactory.class);
75 setFieldBinderClass((Class) LinkFieldBinder.class);
76 setEmptySelectionAllowed(false);
77 setTextInputAllowed(false);
78 setFilteringMode(FilteringMode.CONTAINS);
79 }
80
81
82
83
84 @I18nText(fallback = "fields.button.select.new")
85 public String getButtonSelectNewLabel() {
86 return buttonSelectNewLabel;
87 }
88
89
90
91
92
93 @I18nText(fallback = "buttons.select.another")
94 @Deprecated
95 public String getButtonSelectOtherLabel() {
96 return buttonSelectOtherLabel;
97 }
98
99
100
101
102 @Deprecated
103 @I18nText
104 public String getButtonSelectNewDefaultLabel() {
105 return getButtonSelectNewLabel();
106 }
107
108
109
110
111 @Deprecated
112 @I18nText
113 public String getButtonSelectOtherDefaultLabel() {
114 return getButtonSelectOtherLabel();
115 }
116
117 @Override
118 public DatasourceDefinition getDatasource() {
119 return Optional.ofNullable(chooser)
120 .map(SingleItemWorkbenchChooserDefinition::getWorkbenchChooser)
121 .map(AppAwareWorkbenchChooserDefinition::getDatasource)
122 .orElse(super.getDatasource());
123 }
124
125
126
127
128
129
130 public Class<?> getType() {
131 return Optional.ofNullable(super.getType()).orElse((Class) String.class);
132 }
133 }