cf036dea47f184c3caddff88f53df8b7f5236e6d
[WebKit.git] / WebKit / wx / WebKitSupport / ChromeClientWx.cpp
1 /*
2  * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
3  *
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #include "config.h"
29 #include "ChromeClientWx.h"
30 #include "FloatRect.h"
31 #include "FrameLoadRequest.h"
32 #include "NotImplemented.h"
33 #include "PlatformString.h"
34
35 #include <stdio.h>
36
37 #include <wx/wxprec.h>
38 #ifndef WX_PRECOMP
39     #include <wx/wx.h>
40 #endif
41 #include <wx/textdlg.h>
42
43 #include "WebFrame.h"
44 #include "WebView.h"
45 #include "WebViewPrivate.h"
46
47 namespace WebCore {
48
49 ChromeClientWx::ChromeClientWx(wxWebView* webView)
50 {
51     m_webView = webView;
52 }
53
54 ChromeClientWx::~ChromeClientWx()
55 {
56 }
57
58 void ChromeClientWx::chromeDestroyed()
59 {
60     notImplemented();
61 }
62
63 void ChromeClientWx::setWindowRect(const FloatRect&)
64 {
65     notImplemented();
66 }
67
68 FloatRect ChromeClientWx::windowRect()
69 {
70     notImplemented();
71     return FloatRect();
72 }
73
74 FloatRect ChromeClientWx::pageRect()
75 {
76     notImplemented();
77     return FloatRect();
78 }
79
80 float ChromeClientWx::scaleFactor()
81 {
82     notImplemented();
83     return 0.0;
84 }
85
86 void ChromeClientWx::focus()
87 {
88     notImplemented();
89 }
90
91 void ChromeClientWx::unfocus()
92 {
93     notImplemented();
94 }
95
96 bool ChromeClientWx::canTakeFocus(FocusDirection)
97 {
98     notImplemented();
99     return false;
100 }
101
102 void ChromeClientWx::takeFocus(FocusDirection)
103 {
104     notImplemented();
105 }
106
107
108 Page* ChromeClientWx::createWindow(Frame*, const FrameLoadRequest& request, const WindowFeatures&)
109 {
110
111     // FIXME: Create a EVT_WEBKIT_NEW_WINDOW event, and only run this code
112     // when that event is not handled.
113     
114     Page* myPage = 0;
115     wxWebFrame* newFrame = new wxWebFrame(wxTheApp->GetAppName());
116     
117     if (newFrame->webview) {
118         newFrame->webview->LoadURL(request.resourceRequest().url().string());
119         newFrame->Show(true);
120
121         WebViewPrivate* impl = newFrame->webview->m_impl;
122         if (impl)
123             myPage = impl->frame->page();
124     }
125     
126     return myPage;
127 }
128
129 Page* ChromeClientWx::createModalDialog(Frame*, const FrameLoadRequest&)
130 {
131     notImplemented();
132     return 0;
133 }
134
135 void ChromeClientWx::show()
136 {
137     notImplemented();
138 }
139
140 bool ChromeClientWx::canRunModal()
141 {
142     notImplemented();
143     return false;
144 }
145
146 void ChromeClientWx::runModal()
147 {
148     notImplemented();
149 }
150
151 void ChromeClientWx::setToolbarsVisible(bool)
152 {
153     notImplemented();
154 }
155
156 bool ChromeClientWx::toolbarsVisible()
157 {
158     notImplemented();
159     return false;
160 }
161
162 void ChromeClientWx::setStatusbarVisible(bool)
163 {
164     notImplemented();
165 }
166
167 bool ChromeClientWx::statusbarVisible()
168 {
169     notImplemented();
170     return false;
171 }
172
173 void ChromeClientWx::setScrollbarsVisible(bool)
174 {
175     notImplemented();
176 }
177
178 bool ChromeClientWx::scrollbarsVisible()
179 {
180     notImplemented();
181     return false;
182 }
183
184 void ChromeClientWx::setMenubarVisible(bool)
185 {
186     notImplemented();
187 }
188
189 bool ChromeClientWx::menubarVisible()
190 {
191     notImplemented();
192     return false;
193 }
194
195 void ChromeClientWx::setResizable(bool)
196 {
197     notImplemented();
198 }
199
200 void ChromeClientWx::addMessageToConsole(const String& message,
201                                           unsigned int lineNumber,
202                                           const String& sourceID)
203 {
204     if (m_webView) {
205         wxWebViewConsoleMessageEvent wkEvent(m_webView);
206         wkEvent.SetMessage(message);
207         wkEvent.SetLineNumber(lineNumber);
208         wkEvent.SetSourceID(sourceID);
209         m_webView->GetEventHandler()->ProcessEvent(wkEvent);
210     }
211 }
212
213 bool ChromeClientWx::canRunBeforeUnloadConfirmPanel()
214 {
215     notImplemented();
216     return true;
217 }
218
219 bool ChromeClientWx::runBeforeUnloadConfirmPanel(const String& string,
220                                                   Frame* frame)
221 {
222     wxMessageDialog dialog(NULL, string, wxT("Confirm Action?"), wxYES_NO);
223     return dialog.ShowModal() == wxYES;
224 }
225
226 void ChromeClientWx::closeWindowSoon()
227 {
228     notImplemented();
229 }
230
231 /*
232     Sites for testing prompts: 
233     Alert - just type in a bad web address or http://www.htmlite.com/JS002.php
234     Prompt - http://www.htmlite.com/JS007.php
235     Confirm - http://www.htmlite.com/JS006.php
236 */
237
238 void ChromeClientWx::runJavaScriptAlert(Frame* frame, const String& string)
239 {
240     wxMessageBox(string, wxT("JavaScript Alert"), wxOK);
241 }
242
243 bool ChromeClientWx::runJavaScriptConfirm(Frame* frame, const String& string)
244 {
245     wxMessageDialog dialog(NULL, string, wxT("JavaScript Confirm"), wxYES_NO);
246     dialog.Centre();
247     return (dialog.ShowModal() == wxID_YES);
248 }
249
250 bool ChromeClientWx::runJavaScriptPrompt(Frame* frame, const String& message, const String& defaultValue, String& result)
251 {
252     wxTextEntryDialog dialog(NULL, message, wxT("JavaScript Prompt"), wxEmptyString, wxOK | wxCANCEL);
253     dialog.Centre();
254     if (dialog.ShowModal() == wxID_OK) {
255         result = dialog.GetValue();
256         return true;
257     }
258     
259     return false;
260 }
261
262 void ChromeClientWx::setStatusbarText(const String&)
263 {
264     notImplemented();
265 }
266
267 bool ChromeClientWx::shouldInterruptJavaScript()
268 {
269     notImplemented();
270     return false;
271 }
272
273 bool ChromeClientWx::tabsToLinks() const
274 {
275     notImplemented();
276     return false;
277 }
278
279 IntRect ChromeClientWx::windowResizerRect() const
280 {
281     notImplemented();
282     return IntRect();
283 }
284
285 void ChromeClientWx::addToDirtyRegion(const IntRect&)
286 {
287     notImplemented();
288 }
289
290 void ChromeClientWx::scrollBackingStore(int dx, int dy, 
291                     const IntRect& scrollViewRect, 
292                     const IntRect& clipRect)
293 {
294     notImplemented();
295 }
296
297 void ChromeClientWx::updateBackingStore()
298 {
299     notImplemented();
300 }
301
302 void ChromeClientWx::mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags)
303 {
304     notImplemented();
305 }
306
307 void ChromeClientWx::setToolTip(const String&)
308 {
309     notImplemented();
310 }
311 void ChromeClientWx::print(Frame*)
312 {
313     notImplemented();
314 }
315
316 unsigned long long ChromeClientWx::requestQuotaIncreaseForNewDatabase(Frame*, SecurityOrigin*, const String&, unsigned long long)
317 {
318     notImplemented();
319     return 0;
320 }
321
322 unsigned long long ChromeClientWx::requestQuotaIncreaseForDatabaseOperation(Frame*, SecurityOrigin*, const String&, unsigned long long)
323 {
324     notImplemented();
325     return 0;
326 }
327
328 }