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