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.framework.chooser.definition;
35
36
37 import info.magnolia.ui.contentapp.configuration.ContentViewDefinition;
38 import info.magnolia.ui.contentapp.configuration.TreeViewDefinition;
39 import info.magnolia.ui.contentapp.configuration.WorkbenchDefinition;
40 import info.magnolia.ui.contentapp.configuration.column.ColumnDefinition;
41 import info.magnolia.ui.framework.chooser.WorkbenchChooser;
42 import info.magnolia.ui.framework.datasource.definition.DatasourceDefinition;
43
44 import java.util.ArrayList;
45 import java.util.Collections;
46 import java.util.List;
47 import java.util.Set;
48
49 import org.apache.commons.lang3.ObjectUtils;
50
51 import lombok.Data;
52 import lombok.EqualsAndHashCode;
53
54
55
56
57
58
59 @Data
60 @EqualsAndHashCode(callSuper = true)
61 public class WorkbenchChooserDefinition<T> extends ChooserDefinition<Set<T>, WorkbenchChooser<T>> {
62
63
64 private String title;
65
66 private DatasourceDefinition datasource;
67 private WorkbenchDefinition<T> workbench;
68 private List<ColumnDefinition<T>> columns = Collections.emptyList();
69 private boolean multiSelect = true;
70
71 @SuppressWarnings("unchecked")
72 private Class<WorkbenchChooser<T>> implementationClass = (Class) WorkbenchChooser.class;
73
74 public WorkbenchDefinition<T> getWorkbench() {
75 return ObjectUtils.defaultIfNull(this.workbench, defaultWorkbenchDefinition());
76 }
77
78 private WorkbenchDefinition<T> defaultWorkbenchDefinition() {
79 WorkbenchDefinition<T> definition = new WorkbenchDefinition<>();
80
81 final TreeViewDefinition<T> treeDefinition = new TreeViewDefinition<>();
82 treeDefinition.setColumns(this.columns);
83 treeDefinition.setMultiSelect(this.isMultiSelect());
84
85 List<ContentViewDefinition<T>> contentViewDefs = new ArrayList<>();
86 contentViewDefs.add(treeDefinition);
87 definition.setContentViews(contentViewDefs);
88
89 return definition;
90 }
91
92 @Override
93 public String getName() {
94 return "workbenchchooser";
95 }
96 }