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.templating.editor.client.widget;
35
36
37 import static info.magnolia.templating.editor.client.jsni.JavascriptUtils.getI18nMessage;
38
39 import com.google.gwt.core.client.GWT;
40 import com.google.gwt.event.dom.client.ClickEvent;
41 import com.google.gwt.event.dom.client.ClickHandler;
42 import com.google.gwt.event.dom.client.HasClickHandlers;
43 import com.google.gwt.event.dom.client.KeyCodes;
44 import com.google.gwt.event.shared.HandlerRegistration;
45 import com.google.gwt.user.client.Event;
46 import com.google.gwt.user.client.Event.NativePreviewEvent;
47 import com.google.gwt.user.client.ui.Frame;
48 import com.google.gwt.user.client.ui.PopupPanel;
49
50
51
52
53
54 public class PreviewChannel extends PopupPanel implements ClickHandler, HasClickHandlers {
55
56 private String landscapeCssStyleSuffix = "Landscape";
57 private String portraitCssStyleSuffix = "Portrait";
58 private String channelName = "";
59
60
61
62
63 public enum Orientation {
64 PORTRAIT, LANDSCAPE
65 }
66
67 private Orientation currentOrientation = Orientation.LANDSCAPE;
68
69 public PreviewChannel(final String url, final Orientation orientation, final String channelName) {
70 this.channelName = channelName;
71 this.currentOrientation = orientation;
72
73 setStylePrimaryName("mobilePreview");
74
75 addStyleName(orientation == Orientation.LANDSCAPE ? channelName + landscapeCssStyleSuffix : channelName + portraitCssStyleSuffix);
76
77 setAnimationEnabled(true);
78 setAutoHideEnabled(true);
79 setModal(true);
80 setGlassEnabled(true);
81 setGlassStyleName("mgnlEditorPreviewBackground");
82
83 getElement().setTitle(getI18nMessage("editor.preview.rotate.js"));
84
85 addClickHandler(this);
86
87 final Frame iframe = new Frame(url);
88 iframe.setStylePrimaryName("mobilePreviewIframe");
89
90
91
92
93
94
95
96
97
98
99 add(iframe);
100 }
101
102 public Orientation getOrientation() {
103 return currentOrientation;
104 }
105
106 public String getChannelName() {
107 return channelName;
108 }
109
110 public String getLandscapeCssStyleSuffix() {
111 return landscapeCssStyleSuffix;
112 }
113
114 public String getPortraitCssStyleSuffix() {
115 return portraitCssStyleSuffix;
116 }
117
118 @Override
119 public void onClick(ClickEvent event) {
120
121 GWT.log("currentOrientation is "+currentOrientation.toString());
122
123 if(currentOrientation == Orientation.LANDSCAPE) {
124 currentOrientation = Orientation.PORTRAIT;
125 removeStyleName(getChannelName() + landscapeCssStyleSuffix);
126 addStyleName(getChannelName() + portraitCssStyleSuffix);
127 } else {
128 currentOrientation = Orientation.LANDSCAPE;
129 removeStyleName(getChannelName() + portraitCssStyleSuffix);
130 addStyleName(getChannelName() + landscapeCssStyleSuffix);
131 }
132 center();
133 }
134
135 @Override
136 public HandlerRegistration addClickHandler(ClickHandler handler) {
137 return addDomHandler(handler, ClickEvent.getType());
138 }
139
140 @Override
141
142 protected void onPreviewNativeEvent(NativePreviewEvent event) {
143 super.onPreviewNativeEvent(event);
144 if (event.getTypeInt() == Event.ONKEYDOWN && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
145 hide();
146 }
147 }
148 }