EmbeddedBrowserExample.java
/* 
 * Copyright 2009 IT Mill Ltd.
 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 
 * http://www.apache.org/licenses/LICENSE-2.0
 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.itmill.toolkit.demo.featurebrowser;

import java.net.MalformedURLException;
import java.net.URL;

import com.itmill.toolkit.data.Property.ValueChangeEvent;
import com.itmill.toolkit.terminal.ExternalResource;
import com.itmill.toolkit.ui.Embedded;
import com.itmill.toolkit.ui.Select;
import com.itmill.toolkit.ui.VerticalLayout;
import com.itmill.toolkit.ui.Window.Notification;

/**
 * Demonstrates the use of Embedded and "suggesting" Select by creating a simple
 * web-browser. Note: does not check for recursion.
 
 @author IT Mill Ltd.
 @see com.itmill.toolkit.ui.Window
 */
public class EmbeddedBrowserExample extends VerticalLayout implements
        Select.ValueChangeListener {

    // Default URL to open.
    private static final String DEFAULT_URL = "http://www.itmill.com/index_itmill_toolkit.htm";

    // The embedded page
    Embedded emb = new Embedded();

    public EmbeddedBrowserExample() {
        this(new String[] { DEFAULT_URL,
                "http://www.itmill.com/index_developers.htm",
                "http://toolkit.itmill.com/demo/doc/api/",
                "http://www.itmill.com/manual/index.html" });
    }

    public EmbeddedBrowserExample(String[] urls) {
        setSizeFull();

        // create the address combobox
        final Select select = new Select();
        // allow input
        select.setNewItemsAllowed(true);
        // no empty selection
        select.setNullSelectionAllowed(false);
        // no 'go' -button clicking necessary
        select.setImmediate(true);
        // add some pre-configured URLs
        for (int i = 0; i < urls.length; i++) {
            select.addItem(urls[i]);
        }
        // add to layout
        addComponent(select);
        // add listener and select initial URL
        select.addListener(this);
        select.setValue(urls[0]);

        select.setWidth("100%");

        // configure the embedded and add to layout
        emb.setType(Embedded.TYPE_BROWSER);
        emb.setSizeFull();
        addComponent(emb);
        // make the embedded as large as possible
        setExpandRatio(emb, 1);

    }

    public void valueChange(ValueChangeEvent event) {
        final String url = (Stringevent.getProperty().getValue();
        if (url != null) {
            try {
                // the selected url has changed, let's go there
                @SuppressWarnings("unused")
                URL u = new URL(url);
                emb.setSource(new ExternalResource(url));

            catch (MalformedURLException e) {
                getWindow().showNotification("Invalid address",
                        e.getMessage() " (example: http://www.itmill.com)",
                        Notification.TYPE_WARNING_MESSAGE);
            }

        }

    }
}