/*
* 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 = (String) event.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);
}
}
}
}
|