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.chooser.definition;
35
36 import info.magnolia.ui.chooser.SingleItemWorkbenchChooser;
37 import info.magnolia.ui.datasource.DatasourceDefinition;
38
39 import java.util.Optional;
40
41 import lombok.Data;
42 import lombok.EqualsAndHashCode;
43
44
45
46
47
48
49 @Data
50 @EqualsAndHashCode(callSuper = true)
51 public class SingleItemWorkbenchChooserDefinition<T> extends ChooserDefinition<T, SingleItemWorkbenchChooser<T>> {
52
53 private AppAwareWorkbenchChooserDefinition<T> workbenchChooser;
54
55 @SuppressWarnings("unchecked")
56 private Class<SingleItemWorkbenchChooser<T>> implementationClass = (Class) SingleItemWorkbenchChooser.class;
57
58 public void setWorkbenchChooser(AppAwareWorkbenchChooserDefinition<T> workbenchChooser) {
59 this.workbenchChooser = workbenchChooser;
60 }
61
62 public AppAwareWorkbenchChooserDefinition<T> getWorkbenchChooser() {
63 if (isCompatibilityAppReference()) {
64 workbenchChooser.setMultiSelect(false);
65 }
66 return workbenchChooser;
67 }
68
69 @Override
70 public DatasourceDefinition getDatasource() {
71 return Optional.ofNullable(workbenchChooser)
72 .map(WorkbenchChooserDefinition::getDatasource)
73 .orElse(super.getDatasource());
74 }
75
76 @Override
77 public String getId() {
78 return isCompatibilityAppReference() ? "dialogs:chooseDialog" : super.getId();
79 }
80
81 private boolean isCompatibilityAppReference() {
82 return Optional.ofNullable(workbenchChooser)
83 .map(AppAwareWorkbenchChooserDefinition::getAppName)
84 .isPresent();
85 }
86 }