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.jcrbrowser.app.contenttools;
35
36 import info.magnolia.event.EventBus;
37 import info.magnolia.jcrbrowser.app.SystemPropertiesVisibilityToggledEvent;
38 import info.magnolia.jcrbrowser.app.contentconnector.JcrBrowserContentConnector;
39 import info.magnolia.jcrbrowser.app.workbench.JcrBrowserWorkbenchPresenter;
40 import info.magnolia.repository.RepositoryManager;
41 import info.magnolia.ui.api.view.View;
42 import info.magnolia.ui.vaadin.integration.contentconnector.ContentConnector;
43 import info.magnolia.ui.workbench.contenttool.ContentToolPresenter;
44
45 import java.util.Collections;
46 import java.util.List;
47
48 import javax.inject.Inject;
49
50 import com.google.common.collect.Lists;
51 import com.vaadin.v7.data.Property;
52 import com.vaadin.v7.data.util.IndexedContainer;
53 import com.vaadin.v7.data.util.ObjectProperty;
54
55
56
57
58
59
60
61
62
63
64 public class JcrBrowserContextTool implements ContentToolPresenter {
65
66 private final JcrBrowserContextToolView view;
67 private final RepositoryManager repositoryManager;
68 private final JcrBrowserContentConnector relatedContentConnector;
69 private final JcrBrowserWorkbenchPresenter workbenchPresenter;
70
71
72
73
74 @Deprecated
75 public JcrBrowserContextTool(JcrBrowserContextToolView view, EventBus eventBus, RepositoryManager repositoryManager, ContentConnector relatedContentConnector, JcrBrowserWorkbenchPresenter workbenchPresenter) {
76 this(view, repositoryManager, relatedContentConnector, workbenchPresenter);
77 }
78
79 @Inject
80 public JcrBrowserContextTool(JcrBrowserContextToolView view, RepositoryManager repositoryManager, ContentConnector relatedContentConnector, JcrBrowserWorkbenchPresenter workbenchPresenter) {
81 this.view = view;
82 this.repositoryManager = repositoryManager;
83 this.relatedContentConnector = (JcrBrowserContentConnector) relatedContentConnector;
84 this.workbenchPresenter = workbenchPresenter;
85 }
86
87 @Override
88 public View start() {
89 final ObjectProperty<String> workspaceNameProperty = new ObjectProperty<>(relatedContentConnector.getContentConnectorDefinition().getWorkspace());
90
91 view.setWorkspaceOptions(populateWorkspaceNames());
92 view.setWorkspaceNameProperty(workspaceNameProperty);
93 view.setEnabled(!workbenchPresenter.isHostedInDialog());
94
95 workspaceNameProperty.addValueChangeListener((Property.ValueChangeListener) event -> {
96 relatedContentConnector.getContentConnectorDefinition().setWorkspace(workspaceNameProperty.getValue());
97 workbenchPresenter.refresh();
98 });
99
100 return view;
101 }
102
103 private IndexedContainer populateWorkspaceNames() {
104 final IndexedContainer container = new IndexedContainer();
105 final List<String> workspaceNames = Lists.newArrayList(repositoryManager.getWorkspaceNames());
106 Collections.sort(workspaceNames);
107
108 for (final String workspaceName : workspaceNames) {
109 container.addItem(workspaceName);
110 }
111 return container;
112 }
113 }