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.ui.vaadin.gwt.client.editor;
35
36
37 import com.google.gwt.core.client.GWT;
38 import com.google.gwt.dom.client.Element;
39 import com.google.gwt.user.client.ui.Composite;
40 import com.google.gwt.user.client.ui.Frame;
41 import com.google.gwt.user.client.ui.ScrollPanel;
42 import com.google.gwt.user.client.ui.SimplePanel;
43 import com.google.gwt.user.client.ui.Widget;
44 import com.google.web.bindery.event.shared.EventBus;
45 import com.vaadin.terminal.gwt.client.BrowserInfo;
46
47 import info.magnolia.ui.vaadin.gwt.client.editor.jsni.AbstractFrameEventHandler;
48
49
50
51
52
53 public class VPageEditorViewImpl extends Composite implements VPageEditorView {
54
55
56 private Listener listener;
57 private Frame iframe = new Frame();
58 private String url;
59
60 final SimplePanel content;
61
62 private AbstractFrameEventHandler handler;
63 private EventBus eventBus;
64 public VPageEditorViewImpl(EventBus eventBus) {
65 super();
66 this.eventBus = eventBus;
67 this.handler = GWT.create(AbstractFrameEventHandler.class);
68 handler.setView(this);
69 handler.setEventBus(eventBus);
70
71 if (BrowserInfo.get().isTouchDevice()) {
72 content = new ScrollPanel();
73 } else {
74 content = new SimplePanel();
75 }
76 content.setWidget(iframe);
77 initWidget(content);
78 setStyleName("pageEditor");
79
80 final Element iframeElement = iframe.getElement();
81 iframeElement.setAttribute("width", "100%");
82 iframeElement.setAttribute("height", "100%");
83 iframeElement.setAttribute("allowTransparency", "true");
84 iframeElement.setAttribute("frameborder", "0");
85
86 handler.init();
87
88 }
89
90 @Override
91 public Frame getFrame() {
92 return iframe;
93 }
94
95 @Override
96 public Widget getContent() {
97 return content;
98 }
99
100 @Override
101 public void setListener(Listener listener) {
102 this.listener = listener;
103 }
104
105 @Override
106 public void setUrl(String url) {
107
108 if (url.equals(this.url)) {
109 reload();
110 }
111 else {
112 getFrame().setUrl(url);
113 this.url = url;
114
115 }
116 handler.notifyUrlChange();
117 }
118
119 @Override
120 public void reload() {
121 handler.reloadIFrame(iframe.getElement());
122 }
123
124 @Override
125 public void initSelectionListener() {
126 if (BrowserInfo.get().isTouchDevice()) {
127 handler.initNativeTouchSelectionListener(iframe.getElement(), listener);
128 }
129 else {
130 handler.initNativeMouseSelectionListener(iframe.getElement(), listener);
131 }
132 }
133
134 }