18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Kevin Ollivier  All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This class provides a default new window implementation for wxWebView clients
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * who don't want/need to roll their own browser frame UI.
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "wx/wxprec.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef WX_PRECOMP
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    #include "wx/wx.h"
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "wx/artprov.h"
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebBrowserShell.h"
390617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "WebFrame.h"
400617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "WebView.h"
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "WebViewPrivate.h"
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectwxPageSourceViewFrame::wxPageSourceViewFrame(const wxString& source)
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        : wxFrame(NULL, wxID_ANY, _("Page Source View"), wxDefaultPosition, wxSize(600, 500))
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxTextCtrl* control = new wxTextCtrl(this, -1, source, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum {
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_LOADFILE = wxID_HIGHEST + 1,
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_TEXTCTRL = wxID_HIGHEST + 2,
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_BACK = wxID_HIGHEST + 3,
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_FORWARD = wxID_HIGHEST + 4,
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_TOGGLE_BEFORE_LOAD = wxID_HIGHEST + 5,
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_MAKE_TEXT_LARGER = wxID_HIGHEST + 6,
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_MAKE_TEXT_SMALLER = wxID_HIGHEST + 7,
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_STOP = wxID_HIGHEST + 8,
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_RELOAD = wxID_HIGHEST + 9,
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_GET_SOURCE = wxID_HIGHEST + 10,
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_SET_SOURCE = wxID_HIGHEST + 11,
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_SEARCHCTRL = wxID_HIGHEST + 12,
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_LOADURL = wxID_HIGHEST + 13,
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_NEW_WINDOW = wxID_HIGHEST + 14,
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_BROWSE = wxID_HIGHEST + 15,
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_EDIT = wxID_HIGHEST + 16,
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    ID_RUN_SCRIPT = wxID_HIGHEST + 17,
670617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    ID_WEBVIEW = wxID_HIGHEST + 18,
680617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    ID_EDIT_COMMAND = wxID_HIGHEST + 19,
690617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    ID_GET_EDIT_COMMAND_STATE = wxID_HIGHEST + 20
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectBEGIN_EVENT_TABLE(wxWebBrowserShell, wxFrame)
730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    EVT_MENU(wxID_CUT, wxWebBrowserShell::OnCut)
740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    EVT_MENU(wxID_COPY, wxWebBrowserShell::OnCopy)
750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    EVT_MENU(wxID_PASTE, wxWebBrowserShell::OnPaste)
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(wxID_EXIT,  wxWebBrowserShell::OnQuit)
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(wxID_ABOUT, wxWebBrowserShell::OnAbout)
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_LOADFILE, wxWebBrowserShell::OnLoadFile)
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_TEXT_ENTER(ID_TEXTCTRL, wxWebBrowserShell::OnAddressBarEnter)
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_TEXT_ENTER(ID_SEARCHCTRL, wxWebBrowserShell::OnSearchCtrlEnter)
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_WEBVIEW_LOAD(ID_WEBVIEW, wxWebBrowserShell::OnLoadEvent)
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_WEBVIEW_BEFORE_LOAD(ID_WEBVIEW, wxWebBrowserShell::OnBeforeLoad)
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_BACK, wxWebBrowserShell::OnBack)
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_FORWARD, wxWebBrowserShell::OnForward)
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_STOP, wxWebBrowserShell::OnStop)
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_RELOAD, wxWebBrowserShell::OnReload)
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_MAKE_TEXT_LARGER, wxWebBrowserShell::OnMakeTextLarger)
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_MAKE_TEXT_SMALLER, wxWebBrowserShell::OnMakeTextSmaller)
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_GET_SOURCE, wxWebBrowserShell::OnGetSource)
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_SET_SOURCE, wxWebBrowserShell::OnSetSource)
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_BROWSE, wxWebBrowserShell::OnBrowse)
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_EDIT, wxWebBrowserShell::OnEdit)
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    EVT_MENU(ID_RUN_SCRIPT, wxWebBrowserShell::OnRunScript)
940617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    EVT_MENU(ID_EDIT_COMMAND, wxWebBrowserShell::OnEditCommand)
950617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    EVT_MENU(ID_GET_EDIT_COMMAND_STATE, wxWebBrowserShell::OnGetEditCommandState)
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectEND_EVENT_TABLE()
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectwxWebBrowserShell::wxWebBrowserShell(const wxString& title) :
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(600, 500)),
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        m_checkBeforeLoad(false)
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // create a menu bar
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxMenu *fileMenu = new wxMenu;
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    fileMenu->Append(ID_NEW_WINDOW, _T("New Window\tCTRL+N"));
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    fileMenu->Append(ID_LOADFILE, _T("Open File...\tCTRL+O"));
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    fileMenu->Append(ID_LOADURL, _("Open Location...\tCTRL+L"));
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    fileMenu->Append(wxID_EXIT, _T("E&xit\tAlt-X"), _T("Quit this program"));
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxMenu *editMenu = new wxMenu;
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    editMenu->Append(wxID_CUT, _T("Cut\tCTRL+X"));
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    editMenu->Append(wxID_COPY, _T("Copy\tCTRL+C"));
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    editMenu->Append(wxID_PASTE, _T("Paste\tCTRL+V"));
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxMenu* viewMenu = new wxMenu;
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->AppendRadioItem(ID_BROWSE, _("Browse"));
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->AppendRadioItem(ID_EDIT, _("Edit"));
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->AppendSeparator();
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->Append(ID_STOP, _("Stop"));
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->Append(ID_RELOAD, _("Reload Page"));
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->Append(ID_MAKE_TEXT_SMALLER, _("Make Text Smaller\tCTRL+-"));
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->Append(ID_MAKE_TEXT_LARGER, _("Make Text Bigger\tCTRL++"));
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->AppendSeparator();
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->Append(ID_GET_SOURCE, _("View Page Source"));
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    viewMenu->AppendSeparator();
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_debugMenu = new wxMenu;
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_debugMenu->Append(ID_SET_SOURCE, _("Test SetPageSource"));
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    m_debugMenu->Append(ID_RUN_SCRIPT, _("Test RunScript"));
1310617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    m_debugMenu->Append(ID_EDIT_COMMAND, _("Test EditCommand::Execute"));
1320617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    m_debugMenu->Append(ID_GET_EDIT_COMMAND_STATE, _("Test EditCommand::GetState"));
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // the "About" item should be in the help menu
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxMenu *helpMenu = new wxMenu;
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    helpMenu->Append(wxID_ABOUT, _T("&About...\tF1"), _T("Show about dialog"));
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // now append the freshly created menu to the menu bar...
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxMenuBar *menuBar = new wxMenuBar();
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    menuBar->Append(fileMenu, _T("&File"));
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    menuBar->Append(editMenu, _T("&Edit"));
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    menuBar->Append(viewMenu, _T("&View"));
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    menuBar->Append(helpMenu, _T("&Help"));
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // ... and attach this menu bar to the frame
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SetMenuBar(menuBar);
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxToolBar* toolbar = CreateToolBar();
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    toolbar->SetToolBitmapSize(wxSize(32, 32));
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxBitmap back = wxArtProvider::GetBitmap(wxART_GO_BACK, wxART_TOOLBAR, wxSize(32,32));
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    toolbar->AddTool(ID_BACK, back, wxT("Back"));
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxBitmap forward = wxArtProvider::GetBitmap(wxART_GO_FORWARD, wxART_TOOLBAR, wxSize(32,32));
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    toolbar->AddTool(ID_FORWARD, forward, wxT("Next"));
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    addressBar = new wxTextCtrl(toolbar, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxSize(400, -1), wxTE_PROCESS_ENTER);
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    toolbar->AddControl(addressBar);
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    searchCtrl = new wxSearchCtrl(toolbar, ID_SEARCHCTRL, _("Search"), wxDefaultPosition, wxSize(200, -1), wxTE_PROCESS_ENTER);
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    toolbar->AddControl(searchCtrl);
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    toolbar->Realize();
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    SetToolBar(toolbar);
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // Create the wxWebView Window
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    webview = new wxWebView((wxWindow*)this, ID_WEBVIEW, wxDefaultPosition, wxSize(200, 200));
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    webview->SetBackgroundColour(*wxWHITE);
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // create a status bar just for fun (by default with 1 pane only)
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    CreateStatusBar(2);
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectwxWebBrowserShell::~wxWebBrowserShell()
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (m_debugMenu && GetMenuBar()->FindMenu(_("&Debug")) == wxNOT_FOUND)
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        delete m_debugMenu;
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::ShowDebugMenu(bool show)
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    int debugMenu = GetMenuBar()->FindMenu(_("&Debug"));
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (show && debugMenu == wxNOT_FOUND) {
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        int prevMenu = GetMenuBar()->FindMenu(_("&View"));
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (prevMenu != wxNOT_FOUND)
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            GetMenuBar()->Insert((size_t)prevMenu+1, m_debugMenu, _("&Debug"));
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else if (!show && debugMenu != wxNOT_FOUND) {
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        GetMenuBar()->Remove(debugMenu);
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// event handlers
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnQuit(wxCommandEvent& WXUNUSED(event))
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // true is to force the frame to close
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Close(true);
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnAbout(wxCommandEvent& WXUNUSED(event))
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxString msg;
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    msg.Printf(_T("This is the About dialog of the wxWebKit sample.\n")
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project               _T("Welcome to %s"), wxVERSION_STRING);
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxMessageBox(msg, _T("About wxWebKit Sample"), wxOK | wxICON_INFORMATION, this);
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnLoadFile(wxCommandEvent& WXUNUSED(event))
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    wxFileDialog* dialog = new wxFileDialog(this, wxT("Choose a file"));
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (dialog->ShowModal() == wxID_OK) {
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        wxString path = dialog->GetPath().Prepend(wxT("file://"));
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (webview)
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            webview->LoadURL(path);
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnLoadEvent(wxWebViewLoadEvent& event)
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (GetStatusBar() != NULL){
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (event.GetState() == wxWEBVIEW_LOAD_NEGOTIATING) {
2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            GetStatusBar()->SetStatusText(_("Contacting ") + event.GetURL());
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        else if (event.GetState() == wxWEBVIEW_LOAD_TRANSFERRING) {
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            GetStatusBar()->SetStatusText(_("Loading ") + event.GetURL());
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        else if (event.GetState() == wxWEBVIEW_LOAD_ONLOAD_HANDLED) {
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            GetStatusBar()->SetStatusText(_("Load complete."));
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            addressBar->SetValue(event.GetURL());
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            SetTitle(webview->GetPageTitle());
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        else if (event.GetState() == wxWEBVIEW_LOAD_FAILED) {
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            GetStatusBar()->SetStatusText(_("Failed to load ") + event.GetURL());
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnBeforeLoad(wxWebViewBeforeLoadEvent& myEvent)
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (m_checkBeforeLoad) {
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        int reply = wxMessageBox(_("Would you like to continue loading ") + myEvent.GetURL() + wxT("?"), _("Continue Loading?"), wxYES_NO);
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (reply == wxNO) {
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            myEvent.Cancel();
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnAddressBarEnter(wxCommandEvent& event)
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->LoadURL(addressBar->GetValue());
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnSearchCtrlEnter(wxCommandEvent& event)
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview) {
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->LoadURL(wxString::Format(wxT("http://www.google.com/search?rls=en&q=%s&ie=UTF-8&oe=UTF-8"), searchCtrl->GetValue().wc_str()));
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid wxWebBrowserShell::OnCut(wxCommandEvent& event)
2660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
2670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (webview && webview->CanCut())
2680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        webview->Cut();
2690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
2700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
2710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid wxWebBrowserShell::OnCopy(wxCommandEvent& event)
2720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
2730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (webview && webview->CanCopy())
2740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        webview->Copy();
2750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
2760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
2770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid wxWebBrowserShell::OnPaste(wxCommandEvent& event)
2780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{
2790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    if (webview && webview->CanPaste())
2800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch        webview->Paste();
2810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}
2820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnBack(wxCommandEvent& event)
2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->GoBack();
2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnForward(wxCommandEvent& event)
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->GoForward();
2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnStop(wxCommandEvent& myEvent)
2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->Stop();
2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnReload(wxCommandEvent& myEvent)
3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->Reload();
3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnMakeTextLarger(wxCommandEvent& myEvent)
3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview) {
3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (webview->CanIncreaseTextSize())
3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            webview->IncreaseTextSize();
3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnMakeTextSmaller(wxCommandEvent& myEvent)
3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview) {
3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (webview->CanDecreaseTextSize())
3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            webview->DecreaseTextSize();
3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnGetSource(wxCommandEvent& myEvent)
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview) {
3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        wxPageSourceViewFrame* pageSourceFrame = new wxPageSourceViewFrame(webview->GetPageSource());
3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        pageSourceFrame->Show();
3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnSetSource(wxCommandEvent& event)
3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->SetPageSource(wxString(wxT("<p>Hello World!</p>")));
3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnBrowse(wxCommandEvent& event)
3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->MakeEditable(!event.IsChecked());
3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid wxWebBrowserShell::OnEdit(wxCommandEvent& event)
3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview)
3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        webview->MakeEditable(event.IsChecked());
3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3490617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenvoid wxWebBrowserShell::OnRunScript(wxCommandEvent& myEvent)
3500617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (webview) {
3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        wxTextEntryDialog* dialog = new wxTextEntryDialog(this, _("Type in a JavaScript to exectute."));
3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (dialog->ShowModal() == wxID_OK)
3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            wxMessageBox(wxT("Result is: ") + webview->RunScript(dialog->GetValue()));
3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        dialog->Destroy();
3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3590617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
3600617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenvoid wxWebBrowserShell::OnEditCommand(wxCommandEvent& myEvent)
3610617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
3620617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    if (webview) {
3630617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        if (!webview->IsEditable()) {
3640617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            wxMessageBox(wxT("Please enable editing before running editing commands."));
3650617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            return;
3660617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        }
3670617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
3680617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        wxTextEntryDialog* dialog = new wxTextEntryDialog(this, _("Type in a editing command to exectute."));
3690617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        if (dialog->ShowModal() == wxID_OK) {
3700617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            bool result = webview->ExecuteEditCommand(dialog->GetValue());
3710617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            if (!result)
3720617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen                wxMessageBox(wxT("Editing command failed."));
3730617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        }
3740617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        dialog->Destroy();
3750617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    }
3760617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
3770617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
3780617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenvoid wxWebBrowserShell::OnGetEditCommandState(wxCommandEvent& myEvent)
3790617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{
3800617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    if (webview) {
3810617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        if (!webview->IsEditable()) {
3820617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            wxMessageBox(wxT("Please enable editing before running editing commands."));
3830617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            return;
3840617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        }
3850617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen
3860617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        wxTextEntryDialog* dialog = new wxTextEntryDialog(this, _("Type in a editing command whose state you want to get."));
3870617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        if (dialog->ShowModal() == wxID_OK) {
3880617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            EditState result = webview->GetEditCommandState(dialog->GetValue());
3890617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            if (result == EditStateTrue)
3900617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen                wxMessageBox(wxT("State is true."));
3910617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            else if (result == EditStateFalse)
3920617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen                wxMessageBox(wxT("State is false."));
3930617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen            else if (result == EditStateMixed)
3940617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen                wxMessageBox(wxT("State is mixed."));
3950617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        }
3960617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen        dialog->Destroy();
3970617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen    }
3980617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen}
399