/* ============================================================================== This file is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-9 by Raw Material Software Ltd. ------------------------------------------------------------------------------ JUCE can be redistributed and/or modified under the terms of the GNU General Public License (Version 2), as published by the Free Software Foundation. A copy of the license is included in the JUCE distribution, or can be found online at www.gnu.org/licenses. JUCE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ------------------------------------------------------------------------------ To release a closed-source product which uses JUCE, commercial licenses are available: visit www.rawmaterialsoftware.com/juce for more information. ============================================================================== */ #include "../jucedemo_headers.h" #if JUCE_WEB_BROWSER //============================================================================== /** We'll use a subclass of WebBrowserComponent to demonstrate how to get callbacks when the browser changes URL. You don't need to do this, you can just also just use the WebBrowserComponent class directly. */ class DemoBrowserComponent : public WebBrowserComponent { public: //============================================================================== DemoBrowserComponent (TextEditor& addressTextBox_) : addressTextBox (addressTextBox_) { } // This method gets called when the browser is about to go to a new URL.. bool pageAboutToLoad (const String& newURL) { // We'll just update our address box to reflect the new location.. addressTextBox.setText (newURL, false); // we could return false here to tell the browser not to go ahead with // loading the page. return true; } private: TextEditor& addressTextBox; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DemoBrowserComponent); }; //============================================================================== class WebBrowserDemo : public Component, public TextEditor::Listener, public ButtonListener { public: //============================================================================== WebBrowserDemo() : goButton ("Go", "Go to URL"), backButton ("<<", "Back"), forwardButton (">>", "Forward") { setName ("Web Browser"); // Create an address box.. addAndMakeVisible (&addressTextBox); addressTextBox.setTextToShowWhenEmpty ("Enter a web address, e.g. http://www.rawmaterialsoftware.com", Colours::grey); addressTextBox.addListener (this); // create the actual browser component addAndMakeVisible (webView = new DemoBrowserComponent (addressTextBox)); // add some buttons.. addAndMakeVisible (&goButton); goButton.addListener (this); addAndMakeVisible (&backButton); backButton.addListener (this); addAndMakeVisible (&forwardButton); forwardButton.addListener (this); // send the browser to a start page.. webView->goToURL ("http://www.google.com"); } ~WebBrowserDemo() { } void resized() { webView->setBounds (10, 45, getWidth() - 20, getHeight() - 55); goButton.setBounds (getWidth() - 45, 10, 35, 25); addressTextBox.setBounds (100, 10, getWidth() - 155, 25); backButton.setBounds (10, 10, 35, 25); forwardButton.setBounds (55, 10, 35, 25); } void textEditorTextChanged (TextEditor&) {} void textEditorEscapeKeyPressed (TextEditor&) {} void textEditorFocusLost (TextEditor&) {} void textEditorReturnKeyPressed (TextEditor&) { webView->goToURL (addressTextBox.getText()); } void buttonClicked (Button* b) { if (b == &backButton) webView->goBack(); else if (b == &forwardButton) webView->goForward(); else if (b == &goButton) webView->goToURL (addressTextBox.getText()); } private: ScopedPointer webView; TextEditor addressTextBox; TextButton goButton, backButton, forwardButton; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WebBrowserDemo); }; //============================================================================== Component* createWebBrowserDemo() { return new WebBrowserDemo(); } #endif