/*
@ITMillApache2LicenseForJavaFiles@
*/
package com.itmill.toolkit.automatedtests.featurebrowser;
import com.itmill.toolkit.terminal.ExternalResource;
import com.itmill.toolkit.terminal.ThemeResource;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.CheckBox;
import com.itmill.toolkit.ui.CustomComponent;
import com.itmill.toolkit.ui.Label;
import com.itmill.toolkit.ui.Link;
import com.itmill.toolkit.ui.OrderedLayout;
import com.itmill.toolkit.ui.Panel;
import com.itmill.toolkit.ui.Button.ClickEvent;
/**
* Shows a few variations of Buttons and Links.
*
* @author IT Mill Ltd.
*/
public class ButtonExample extends CustomComponent implements
Button.ClickListener {
public ButtonExample() {
final OrderedLayout main = new OrderedLayout();
main.setMargin(true);
setCompositionRoot(main);
final OrderedLayout horiz = new OrderedLayout(
OrderedLayout.ORIENTATION_HORIZONTAL);
main.addComponent(horiz);
final Panel basic = new Panel("Basic buttons");
basic.setStyleName(Panel.STYLE_LIGHT);
horiz.addComponent(basic);
final Panel bells = new Panel("w/ bells & whistles");
bells.setStyleName(Panel.STYLE_LIGHT);
horiz.addComponent(bells);
Button b = new Button("Basic button");
b.setDebugId("Basic1");
b.addListener(this);
basic.addComponent(b);
b = new Button("Button w/ icon + tooltip");
b.setDebugId("Button2");
b.addListener(this);
b.setIcon(new ThemeResource("icons/ok.png"));
b.setDescription("This button does nothing, fast");
bells.addComponent(b);
b = new CheckBox("CheckBox - a switch-button");
b.setDebugId("Button3");
b.setImmediate(true); // checkboxes are not immediate by default
b.addListener(this);
basic.addComponent(b);
b = new CheckBox("CheckBox w/ icon + tooltip");
b.setDebugId("Button4");
b.setImmediate(true); // checkboxes are not immediate by default
b.addListener(this);
b.setIcon(new ThemeResource("icons/ok.png"));
b.setDescription("This is a CheckBox");
bells.addComponent(b);
b = new Button("Link-style button");
b.setDebugId("Button5");
b.addListener(this);
b.setStyleName(Button.STYLE_LINK);
basic.addComponent(b);
b = new Button("Link button w/ icon + tooltip");
b.setDebugId("Button6");
b.addListener(this);
b.setStyleName(Button.STYLE_LINK);
b.setIcon(new ThemeResource("icons/ok.png"));
b.setDescription("Link-style, icon+tootip, no caption");
bells.addComponent(b);
b = new Button();
b.setDebugId("Button7");
b.addListener(this);
b.setStyleName(Button.STYLE_LINK);
b.setIcon(new ThemeResource("icons/ok.png"));
b.setDescription("Link-style, icon+tootip, no caption");
basic.addComponent(b);
final Panel links = new Panel("Links");
links.setStyleName(Panel.STYLE_LIGHT);
main.addComponent(links);
final Label desc = new Label(
"The main difference between a Link and"
+ " a link-styled Button is that the Link works client-"
+ " side, whereas the Button works server side.
This means"
+ " that the Button triggers some event on the server,"
+ " while the Link is a normal web-link.
Note that for"
+ " opening new windows, the Link might be a safer "
+ " choice, since popup-blockers might interfer with "
+ " server-initiated window opening.");
desc.setContentMode(Label.CONTENT_XHTML);
links.addComponent(desc);
Link l = new Link("IT Mill home", new ExternalResource(
"http://www.itmill.com"));
l.setDebugId("Link1");
l.setDescription("Link without target name, opens in this window");
links.addComponent(l);
l = new Link("IT Mill home (new window)", new ExternalResource(
"http://www.itmill.com"));
l.setDebugId("Link2");
l.setTargetName("_blank");
l.setDescription("Link with target name, opens in new window");
links.addComponent(l);
l = new Link("IT Mill home (new window, less decor)",
new ExternalResource("http://www.itmill.com"));
l.setDebugId("Link3");
l.setTargetName("_blank");
l.setTargetBorder(Link.TARGET_BORDER_MINIMAL);
l.setTargetName("_blank");
l
.setDescription("Link with target name and BORDER_MINIMAL, opens in new window with less decor");
links.addComponent(l);
l = new Link("IT Mill home (new 200x200 window, no decor, icon)",
new ExternalResource("http://www.itmill.com"), "_blank", 200,
200, Link.TARGET_BORDER_NONE);
l.setDebugId("Link4");
l.setTargetName("_blank");
l
.setDescription("Link with target name and BORDER_NONE, opens in new window with no decor");
l.setIcon(new ThemeResource("icons/ok.png"));
links.addComponent(l);
}
public void buttonClick(ClickEvent event) {
final Button b = event.getButton();
getWindow().showNotification(
"Clicked"
+ (b instanceof CheckBox ? ", value: "
+ event.getButton().getValue() : ""));
}
}