/tags/Galeking1.0/WebKit/wx/WebKitSupport/ChromeClientWx.cpp
C++ | 409 lines | 308 code | 66 blank | 35 comment | 22 complexity | 6687f20ae2120493f9a80d222c2ac8a7 MD5 | raw file
- /*
- * Copyright (C) 2007 Kevin Ollivier <kevino@theolliviers.com>
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- #include "config.h"
- #include "ChromeClientWx.h"
- #include "Console.h"
- #include "FileChooser.h"
- #include "FloatRect.h"
- #include "FrameLoadRequest.h"
- #include "NotImplemented.h"
- #include "PlatformString.h"
- #include <stdio.h>
- #include <wx/wxprec.h>
- #ifndef WX_PRECOMP
- #include <wx/wx.h>
- #endif
- #include <wx/textdlg.h>
- #include <wx/tooltip.h>
- #include "WebBrowserShell.h"
- #include "WebView.h"
- #include "WebViewPrivate.h"
- namespace WebCore {
- ChromeClientWx::ChromeClientWx(wxWebView* webView)
- {
- m_webView = webView;
- }
- ChromeClientWx::~ChromeClientWx()
- {
- }
- void ChromeClientWx::chromeDestroyed()
- {
- notImplemented();
- }
- void ChromeClientWx::setWindowRect(const FloatRect&)
- {
- notImplemented();
- }
- FloatRect ChromeClientWx::windowRect()
- {
- notImplemented();
- return FloatRect();
- }
- FloatRect ChromeClientWx::pageRect()
- {
- notImplemented();
- return FloatRect();
- }
- float ChromeClientWx::scaleFactor()
- {
- notImplemented();
- return 0.0;
- }
- void ChromeClientWx::focus()
- {
- notImplemented();
- }
- void ChromeClientWx::unfocus()
- {
- notImplemented();
- }
- bool ChromeClientWx::canTakeFocus(FocusDirection)
- {
- notImplemented();
- return false;
- }
- void ChromeClientWx::takeFocus(FocusDirection)
- {
- notImplemented();
- }
- Page* ChromeClientWx::createWindow(Frame*, const FrameLoadRequest& request, const WindowFeatures&)
- {
- // FIXME: Create a EVT_WEBKIT_NEW_WINDOW event, and only run this code
- // when that event is not handled.
-
- Page* myPage = 0;
- wxWebBrowserShell* newFrame = new wxWebBrowserShell(wxTheApp->GetAppName());
-
- if (newFrame->webview) {
- newFrame->webview->LoadURL(request.resourceRequest().url().string());
- newFrame->Show(true);
- WebViewPrivate* impl = newFrame->webview->m_impl;
- if (impl)
- myPage = impl->page;
- }
-
- return myPage;
- }
- Page* ChromeClientWx::createModalDialog(Frame*, const FrameLoadRequest&)
- {
- notImplemented();
- return 0;
- }
- void ChromeClientWx::show()
- {
- notImplemented();
- }
- bool ChromeClientWx::canRunModal()
- {
- notImplemented();
- return false;
- }
- void ChromeClientWx::runModal()
- {
- notImplemented();
- }
- void ChromeClientWx::setToolbarsVisible(bool)
- {
- notImplemented();
- }
- bool ChromeClientWx::toolbarsVisible()
- {
- notImplemented();
- return false;
- }
- void ChromeClientWx::setStatusbarVisible(bool)
- {
- notImplemented();
- }
- bool ChromeClientWx::statusbarVisible()
- {
- notImplemented();
- return false;
- }
- void ChromeClientWx::setScrollbarsVisible(bool)
- {
- notImplemented();
- }
- bool ChromeClientWx::scrollbarsVisible()
- {
- notImplemented();
- return false;
- }
- void ChromeClientWx::setMenubarVisible(bool)
- {
- notImplemented();
- }
- bool ChromeClientWx::menubarVisible()
- {
- notImplemented();
- return false;
- }
- void ChromeClientWx::setResizable(bool)
- {
- notImplemented();
- }
- void ChromeClientWx::addMessageToConsole(MessageSource source,
- MessageType type,
- MessageLevel level,
- const String& message,
- unsigned int lineNumber,
- const String& sourceID)
- {
- if (m_webView) {
- wxWebViewConsoleMessageEvent wkEvent(m_webView);
- wkEvent.SetMessage(message);
- wkEvent.SetLineNumber(lineNumber);
- wkEvent.SetSourceID(sourceID);
- m_webView->GetEventHandler()->ProcessEvent(wkEvent);
- }
- }
- bool ChromeClientWx::canRunBeforeUnloadConfirmPanel()
- {
- notImplemented();
- return true;
- }
- bool ChromeClientWx::runBeforeUnloadConfirmPanel(const String& string,
- Frame* frame)
- {
- wxMessageDialog dialog(NULL, string, wxT("Confirm Action?"), wxYES_NO);
- return dialog.ShowModal() == wxYES;
- }
- void ChromeClientWx::closeWindowSoon()
- {
- notImplemented();
- }
- /*
- Sites for testing prompts:
- Alert - just type in a bad web address or http://www.htmlite.com/JS002.php
- Prompt - http://www.htmlite.com/JS007.php
- Confirm - http://www.htmlite.com/JS006.php
- */
- void ChromeClientWx::runJavaScriptAlert(Frame* frame, const String& string)
- {
- if (m_webView) {
- wxWebViewAlertEvent wkEvent(m_webView);
- wkEvent.SetMessage(string);
- if (!m_webView->GetEventHandler()->ProcessEvent(wkEvent))
- wxMessageBox(string, wxT("JavaScript Alert"), wxOK);
- }
- }
- bool ChromeClientWx::runJavaScriptConfirm(Frame* frame, const String& string)
- {
- bool result = false;
- if (m_webView) {
- wxWebViewConfirmEvent wkEvent(m_webView);
- wkEvent.SetMessage(string);
- if (m_webView->GetEventHandler()->ProcessEvent(wkEvent))
- result = wkEvent.GetReturnCode() == wxID_YES;
- else {
- wxMessageDialog dialog(NULL, string, wxT("JavaScript Confirm"), wxYES_NO);
- dialog.Centre();
- result = (dialog.ShowModal() == wxID_YES);
- }
- }
- return result;
- }
- bool ChromeClientWx::runJavaScriptPrompt(Frame* frame, const String& message, const String& defaultValue, String& result)
- {
- if (m_webView) {
- wxWebViewPromptEvent wkEvent(m_webView);
- wkEvent.SetMessage(message);
- wkEvent.SetResponse(defaultValue);
- if (m_webView->GetEventHandler()->ProcessEvent(wkEvent)) {
- result = wkEvent.GetResponse();
- return true;
- }
- else {
- wxTextEntryDialog dialog(NULL, message, wxT("JavaScript Prompt"), wxEmptyString, wxOK | wxCANCEL);
- dialog.Centre();
- if (dialog.ShowModal() == wxID_OK) {
- result = dialog.GetValue();
- return true;
- }
- }
- }
- return false;
- }
- void ChromeClientWx::setStatusbarText(const String&)
- {
- notImplemented();
- }
- bool ChromeClientWx::shouldInterruptJavaScript()
- {
- notImplemented();
- return false;
- }
- bool ChromeClientWx::tabsToLinks() const
- {
- notImplemented();
- return false;
- }
- IntRect ChromeClientWx::windowResizerRect() const
- {
- notImplemented();
- return IntRect();
- }
- void ChromeClientWx::repaint(const IntRect& rect, bool contentChanged, bool immediate, bool repaintContentOnly)
- {
- if (!m_webView)
- return;
-
- if (contentChanged)
- m_webView->RefreshRect(rect);
-
- if (immediate) {
- m_webView->Update();
- }
- }
- IntRect ChromeClientWx::windowToScreen(const IntRect& rect) const
- {
- notImplemented();
- return rect;
- }
- IntPoint ChromeClientWx::screenToWindow(const IntPoint& point) const
- {
- notImplemented();
- return point;
- }
- PlatformWidget ChromeClientWx::platformWindow() const
- {
- return 0;
- }
- void ChromeClientWx::contentsSizeChanged(Frame*, const IntSize&) const
- {
- notImplemented();
- }
- void ChromeClientWx::scrollBackingStore(int dx, int dy,
- const IntRect& scrollViewRect,
- const IntRect& clipRect)
- {
- notImplemented();
- }
- void ChromeClientWx::updateBackingStore()
- {
- notImplemented();
- }
- void ChromeClientWx::mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags)
- {
- notImplemented();
- }
- void ChromeClientWx::setToolTip(const String& tip, TextDirection)
- {
- wxToolTip* tooltip = m_webView->GetToolTip();
- if (!tooltip || tooltip->GetTip() != wxString(tip))
- m_webView->SetToolTip(tip);
- }
- void ChromeClientWx::print(Frame*)
- {
- notImplemented();
- }
- #if ENABLE(DATABASE)
- void ChromeClientWx::exceededDatabaseQuota(Frame*, const String&)
- {
- notImplemented();
- }
- #endif
- void ChromeClientWx::scroll(const IntSize&, const IntRect&, const IntRect&)
- {
- notImplemented();
- }
- void ChromeClientWx::runOpenPanel(Frame*, PassRefPtr<FileChooser>)
- {
- notImplemented();
- }
- bool ChromeClientWx::setCursor(PlatformCursorHandle)
- {
- notImplemented();
- return false;
- }
- void ChromeClientWx::requestGeolocationPermissionForFrame(Frame*, Geolocation*)
- {
- // See the comment in WebCore/page/ChromeClient.h
- notImplemented();
- }
- }