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.detail.extension;
35
36 import info.magnolia.i18nsystem.SimpleTranslator;
37 import info.magnolia.pages.app.detail.context.PlatformContext;
38 import info.magnolia.ui.UIComponent;
39 import info.magnolia.ui.contentapp.detail.ContentDetailSubApp;
40 import info.magnolia.ui.vaadin.editor.gwt.shared.PlatformType;
41
42 import javax.inject.Inject;
43
44 import com.vaadin.ui.ComboBox;
45 import com.vaadin.ui.CssLayout;
46 import com.vaadin.ui.Label;
47
48
49
50
51 public class PlatformSelectorView extends CssLayout implements UIComponent {
52
53 private final PlatformContext platformContext;
54
55 @Inject
56 public PlatformSelectorView(SimpleTranslator i18n, ContentDetailSubApp.LocationContext locationContext, PlatformContext platformContext) {
57 this.platformContext = platformContext;
58
59 ComboBox<PlatformType> platformSelector = new ComboBox<>();
60 platformSelector.addStyleName("statusbar-extension");
61 platformSelector.setEmptySelectionAllowed(false);
62 platformSelector.setItems(PlatformType.values());
63 platformSelector.setValue(PlatformType.DESKTOP);
64 platformSelector.setItemCaptionGenerator(PlatformType::toString);
65 platformSelector.addValueChangeListener(event -> this.platformContext.platform().set(event.getValue()));
66
67 Label frameResolution = new Label();
68 frameResolution.addStyleName("statusbar-extension");
69
70 addComponents(platformSelector, frameResolution);
71 addStyleName("platform-selector-container");
72
73 platformContext.platform().observe(platformOptional -> platformOptional.ifPresent(platform -> {
74 frameResolution.setVisible(shouldDisplayResolution());
75 frameResolution.setValue(i18n.translate("pages.previewPage.statusBar.size", platform.getWidth() + " x " + platform.getHeight()));
76 }));
77
78 locationContext.location().observe(detailLocation ->
79 detailLocation.ifPresent(location -> {
80 setVisible("view".equals(location.getViewType()) || "version".equals(location.getViewType()));
81 }));
82 }
83
84 private boolean shouldDisplayResolution() {
85 PlatformType platformType = platformContext.platform().value().orElse(PlatformType.DESKTOP);
86 return platformType != PlatformType.DESKTOP;
87 }
88 }