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.module.cache.app.field;
35
36 import info.magnolia.repository.RepositoryManager;
37 import info.magnolia.ui.form.field.definition.SelectFieldOptionDefinition;
38 import info.magnolia.ui.form.field.factory.SelectFieldFactory;
39
40 import java.util.ArrayList;
41 import java.util.List;
42
43 import javax.inject.Inject;
44
45 import com.vaadin.v7.data.Item;
46 import com.vaadin.v7.data.Property;
47
48
49
50
51 public class WorkspaceSelectFieldFactory extends SelectFieldFactory<WorkspaceSelectFieldDefinition> {
52
53 private final RepositoryManager repositoryManager;
54
55 @Inject
56 public WorkspaceSelectFieldFactory(WorkspaceSelectFieldDefinition definition, Item relatedFieldItem, RepositoryManager repositoryManager) {
57 super(definition, relatedFieldItem);
58 this.repositoryManager = repositoryManager;
59 }
60
61 @Override
62 public List<SelectFieldOptionDefinition> getSelectFieldOptionDefinition() {
63 List<SelectFieldOptionDefinition> result = new ArrayList<SelectFieldOptionDefinition>();
64 for (String workspaceName : repositoryManager.getWorkspaceNames()) {
65 SelectFieldOptionDefinition selectFieldOptionDefinition = new SelectFieldOptionDefinition();
66 selectFieldOptionDefinition.setLabel(workspaceName);
67 selectFieldOptionDefinition.setValue(workspaceName);
68 selectFieldOptionDefinition.setName(workspaceName);
69 result.add(selectFieldOptionDefinition);
70 }
71 return result;
72 }
73
74 @Override
75 protected Object createDefaultValue(Property dataSource) {
76 Object value = super.createDefaultValue(dataSource);
77 if (value != null) {
78 return value;
79 }
80 if (repositoryManager.getWorkspaceNames().size() > 0) {
81 return repositoryManager.getWorkspaceNames().iterator().next();
82 }
83 return null;
84 }
85 }