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.statusbar.frameresolution;
35
36 import info.magnolia.cms.beans.config.ServerConfiguration;
37 import info.magnolia.event.EventBus;
38 import info.magnolia.i18nsystem.SimpleTranslator;
39 import info.magnolia.pages.app.editor.PageEditorPresenter;
40 import info.magnolia.pages.app.editor.extension.AbstractExtension;
41 import info.magnolia.pages.app.editor.pagebar.platformselector.PlatformChangedEvent;
42 import info.magnolia.pages.app.editor.parameters.PageEditorStatus;
43 import info.magnolia.ui.api.app.SubAppEventBus;
44 import info.magnolia.ui.api.view.View;
45 import info.magnolia.ui.contentapp.detail.DetailLocation;
46 import info.magnolia.ui.vaadin.editor.gwt.shared.PlatformType;
47
48 import javax.inject.Inject;
49 import javax.inject.Named;
50
51
52
53
54 public class FrameResolution extends AbstractExtension {
55 private final SimpleTranslator i18n;
56 private final ServerConfiguration serverConfiguration;
57 private final PageEditorStatus pageEditorStatus;
58 private final FrameResolutionView view;
59
60 @Inject
61 public FrameResolution(FrameResolutionView view, SimpleTranslator i18n, ServerConfiguration serverConfiguration, PageEditorPresenter pageEditorPresenter, final @Named(SubAppEventBus.NAME) EventBus subAppEventBus) {
62 this.view = view;
63 this.i18n = i18n;
64 this.serverConfiguration = serverConfiguration;
65 this.pageEditorStatus = pageEditorPresenter.getStatus();
66 subAppEventBus.addHandler(PlatformChangedEvent.class, event -> setSize(event.getPlatform()));
67 }
68
69 private void setSize(PlatformType platform) {
70 view.setVisible(canDisplayResolution());
71 view.setSize(i18n.translate("pages.previewPage.statusBar.size", platform.getWidth() + " x " + platform.getHeight()));
72 }
73
74 @Override
75 public View start(DetailLocation location) {
76 return view;
77 }
78
79 @Override
80 public void deactivate() {
81 view.setVisible(false);
82 }
83
84 @Override
85 public void onLocationUpdate(DetailLocation location) {
86 view.setVisible(canDisplayResolution());
87 }
88
89 private boolean canDisplayResolution() {
90 return serverConfiguration.isAdmin() && pageEditorStatus.isPreview() && pageEditorStatus.getPlatformType() != PlatformType.DESKTOP;
91 }
92 }