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.pages.app.editor.pagebar;
35
36 import info.magnolia.pages.app.editor.PagesEditorSubAppDescriptor;
37 import info.magnolia.pages.app.editor.extension.Extension;
38 import info.magnolia.pages.app.editor.extension.ExtensionContainer;
39 import info.magnolia.pages.app.editor.extension.ExtensionFactory;
40 import info.magnolia.pages.app.editor.extension.definition.ExtensionDefinition;
41 import info.magnolia.pages.app.editor.pagebar.definition.PageBarDefinition;
42 import info.magnolia.pages.app.editor.statusbar.StatusBarView;
43 import info.magnolia.ui.api.app.SubAppContext;
44 import info.magnolia.ui.api.app.SubAppDescriptor;
45 import info.magnolia.ui.contentapp.detail.DetailLocation;
46 import info.magnolia.ui.contentapp.detail.DetailView;
47 import info.magnolia.ui.vaadin.editor.pagebar.PageBarView;
48
49 import java.util.ArrayList;
50 import java.util.List;
51 import java.util.Map;
52
53 import javax.inject.Inject;
54
55 import org.slf4j.Logger;
56 import org.slf4j.LoggerFactory;
57
58
59
60
61
62
63
64
65
66 @Deprecated
67 public class PageBarPresenter implements ExtensionContainer, PageBarView.Listener {
68
69 private static final Logger log = LoggerFactory.getLogger(PageBarPresenter.class);
70
71 private final PageBarView view;
72 private final SubAppContext subAppContext;
73 private final ExtensionFactory extensionFactory;
74
75 private List<Extension> extensions = new ArrayList<>();
76
77 @Inject
78 public PageBarPresenter(PageBarView view, SubAppContext subAppContext, ExtensionFactory extensionFactory) {
79 this.view = view;
80 this.subAppContext = subAppContext;
81 this.extensionFactory = extensionFactory;
82 }
83
84 @Override
85 public PageBarView start(DetailLocation location) {
86 SubAppDescriptor subAppDescriptor = subAppContext.getSubAppDescriptor();
87
88 if (subAppDescriptor instanceof PagesEditorSubAppDescriptor) {
89 PageBarDefinition definition = ((PagesEditorSubAppDescriptor) subAppDescriptor).getPageBar();
90 if (definition != null) {
91 Map<String, ExtensionDefinition> extensionDefinitions = definition.getExtensions();
92 extensions = extensionFactory.createExtensions(extensionDefinitions);
93 } else {
94 log.error("No pageBar definition defined for pages detail app, no extensions will be loaded.");
95 }
96 } else {
97 log.error("Expected an instance of {} but got {}. No extensions will be loaded.", PagesEditorSubAppDescriptor.class.getSimpleName(), subAppDescriptor.getClass().getName());
98 }
99
100 for (Extension extension : extensions) {
101 view.addPageBarComponent(extension.start(location));
102 }
103 view.setListener(this);
104
105 togglePreviewMode(location);
106 return view;
107 }
108
109 public void setPageName(String caption, String nodePath) {
110 String pageName = caption.toUpperCase() + " - " + nodePath;
111 view.setPageName(pageName);
112 }
113
114 public void setPageName(String pageName) {
115 view.setPageName(pageName);
116 }
117
118 private void togglePreviewMode(DetailLocation location) {
119 boolean isPreview = DetailView.ViewType.VIEW.equals(location.getViewType());
120 view.togglePreviewMode(isPreview);
121 }
122
123 public PageBarView getView() {
124 return view;
125 }
126
127 @Override
128 public void onLocationUpdate(DetailLocation location) {
129 for (Extension extension : extensions) {
130 extension.onLocationUpdate(location);
131 }
132 togglePreviewMode(location);
133 }
134
135 @Override
136 public void deactivateExtensions() {
137 for (Extension extension : extensions) {
138 extension.deactivate();
139 }
140 }
141
142 @Override
143 public void stop() {
144 for (Extension extension : extensions) {
145 extension.stop();
146 }
147 }
148 }