package org.vaadin.touchkit.itest;
import java.util.Date;
import java.util.Locale;
import org.vaadin.touchkit.AbstractTouchKitIntegrationTest;
import org.vaadin.touchkit.gwt.client.theme.StyleNames;
import org.vaadin.touchkit.ui.HorizontalButtonGroup;
import org.vaadin.touchkit.ui.NavigationButton;
import org.vaadin.touchkit.ui.NavigationManager;
import org.vaadin.touchkit.ui.NavigationView;
import org.vaadin.touchkit.ui.Popover;
import org.vaadin.touchkit.ui.SwipeView;
import org.vaadin.touchkit.ui.Switch;
import org.vaadin.touchkit.ui.TabBarView;
import org.vaadin.touchkit.ui.VerticalComponentGroup;
import org.vaadin.touchkit.ui.NavigationButton.NavigationButtonClickEvent;
import org.vaadin.touchkit.ui.NavigationButton.NavigationButtonClickListener;
import com.vaadin.server.FontAwesome;
import com.vaadin.server.Page;
import com.vaadin.server.UserError;
import com.vaadin.v7.shared.ui.datefield.Resolution;
import com.vaadin.v7.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.v7.ui.CheckBox;
import com.vaadin.v7.ui.ComboBox;
import com.vaadin.ui.CssLayout;
import com.vaadin.v7.ui.DateField;
import com.vaadin.v7.ui.Label;
import com.vaadin.v7.ui.NativeSelect;
import com.vaadin.ui.Notification;
import com.vaadin.v7.ui.OptionGroup;
import com.vaadin.v7.ui.Slider;
import com.vaadin.ui.TabSheet.Tab;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.TextField;
public class ThemeTest extends AbstractTouchKitIntegrationTest {
NavigationManager mainManager;
class TextView extends SwipeView {
public TextView() {
Label label = new Label(
"This is some plain text to show how that looks.<br/>Please just go back to the previous view.<p>No, really. Please?</p><b>Swipe to get back</b>");
label.setContentMode(ContentMode.HTML);
setContent(label);
}
}
public ThemeTest() {
setDescription("Shows various components in order to 'test' the theme");
mainManager = new MainContent();
addComponent(new TabView());
}
class TabView extends TabBarView {
public TabView() {
Tab t = addTab(mainManager);
t.setIcon(FontAwesome.FILE_TEXT);
t = addTab(new Components());
t.setIcon(FontAwesome.CALENDAR);
t = addTab(new Notifications());
t.setIcon(FontAwesome.EXCLAMATION_TRIANGLE);
t = addTab(new TableThing());
t.setIcon(FontAwesome.LIST);
}
}
class FirstTab extends NavigationView {
public FirstTab() {
setCaption("View Title");
CssLayout layout = new CssLayout();
setContent(layout);
{
VerticalComponentGroup group = new VerticalComponentGroup(
"Group caption:");
layout.addComponent(group);
NavigationButton b = new NavigationButton(new TextView());
b.setCaption("Navigation Button");
b.setDescription("123");
group.addComponent(b);
TextField tf = new TextField("Caption");
tf.setValue("TextField Value");
group.addComponent(tf);
tf = new TextField("Longer caption");
tf.setValue("Erroneous value");
tf.setComponentError(new UserError("This is not right"));
group.addComponent(tf);
NativeSelect sel = new NativeSelect("Required");
sel.setRequired(true);
sel.setValue("Native select...");
group.addComponent(sel);
}
{
VerticalComponentGroup group = new VerticalComponentGroup(
"Link buttons:");
layout.addComponent(group);
Button b = new Button("Link button...");
b.setStyleName(StyleNames.BUTTON_LINK);
group.addComponent(b);
group.setIcon(FontAwesome.CAMERA);
b = new Button("Remove");
group.addComponent(b);
b.setStyleName(StyleNames.BUTTON_LINK);
b.setIcon(FontAwesome.TRASH_O);
}
{
Button b = new Button("Normal Button");
layout.addComponent(b);
b = new Button("Primary Button");
b.setStyleName(StyleNames.BUTTON_BLUE);
layout.addComponent(b);
b = new Button("Danger Button");
b.setStyleName(StyleNames.BUTTON_RED);
layout.addComponent(b);
}
{
HorizontalButtonGroup bg = new HorizontalButtonGroup();
layout.addComponent(bg);
bg.addComponent(new Button("Button"));
bg.addComponent(new Button("Another"));
bg.addComponent(new Button("Last Button"));
}
}
}
class Components extends NavigationView {
public Components() {
setCaption(getClass().getSimpleName());
CssLayout layout = new CssLayout();
setContent(layout);
VerticalComponentGroup group = new VerticalComponentGroup(
"Switches:");
layout.addComponent(group);
Switch sw = new Switch("Offline mode");
group.addComponent(sw);
sw = new Switch("Use my location", true);
group.addComponent(sw);
group = new VerticalComponentGroup("Components:");
layout.addComponent(group);
Slider slider = new Slider("Slider", 0, 100);
slider.setValue(98d);
group.addComponent(slider);
DateField df = new DateField("Date fallback");
df.setValue(new Date(113, 6, 8, 13, 45));
df.setResolution(Resolution.MINUTE);
df.setLocale(Locale.US);
group.addComponent(df);
CheckBox cb = new CheckBox("Not checked");
group.addComponent(cb);
cb = new CheckBox("Checked", true);
group.addComponent(cb);
OptionGroup og = new OptionGroup();
og.addItem("Not selected");
og.addItem("Selected");
og.select("Selected");
group.addComponent(og);
ComboBox combo = new ComboBox("Combo box");
combo.addItem("Option value");
for (int i = 1; i <= 20; i++) {
combo.addItem("Option value " + i);
}
combo.select("Option value");
group.addComponent(combo);
}
}
class Notifications extends NavigationView {
public Notifications() {
setCaption(getClass().getSimpleName());
CssLayout layout = new CssLayout();
setContent(layout);
HorizontalButtonGroup notifications = new HorizontalButtonGroup(
"Notifications:");
layout.addComponent(notifications);
notifications.addComponent(new Button("Regular",
new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Notification n = new Notification(
"Notification Title",
"Notification description message text, which spans multiple lines.");
n.show(Page.getCurrent());
}
}));
notifications.addComponent(new Button("Warning",
new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Notification n = new Notification(
"Warning",
"Notification description message text, which spans multiple lines.",
Notification.Type.WARNING_MESSAGE);
n.show(Page.getCurrent());
}
}));
notifications.addComponent(new Button("Error",
new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Notification n = new Notification(
"Error",
"Notification description message text, which spans multiple lines.",
Notification.Type.ERROR_MESSAGE);
n.show(Page.getCurrent());
}
}));
Button pop = new Button("Popover", new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Popover p = new Popover(new MainContent());
p.setHeight("50%");
p.showRelativeTo(event.getComponent());
}
});
layout.addComponent(pop);
}
}
class TableThing extends NavigationView {
public TableThing() {
setCaption(getClass().getSimpleName());
CssLayout layout = new CssLayout();
setContent(layout);
layout.addComponent(new Label("A fairly long table follows"));
Table tbl = new Table();
tbl.setSelectable(true);
tbl.addContainerProperty("Name", String.class, "John Doe");
tbl.addContainerProperty("Area", String.class, "A12");
tbl.addContainerProperty("Date", String.class, "5/23/13");
tbl.addContainerProperty("Start", String.class, "7:00 AM");
tbl.addContainerProperty("End", String.class, "3:00 PM");
for (int i = 0; i < 50; i++) {
tbl.addItem();
}
layout.addComponent(tbl);
}
}
class MainContent extends NavigationManager {
public MainContent() {
final FirstTab tab = new FirstTab();
setCurrentComponent(tab);
NavigationButton previous = new NavigationButton("Previous...", tab);
previous.addClickListener(new NavigationButtonClickListener() {
@Override
public void buttonClick(NavigationButtonClickEvent event) {
Notification.show("Sorry, this is just for show.");
}
});
previous.setStyleName(StyleNames.NAVIGATION_BUTTON_BACK);
tab.setLeftComponent(previous);
Button button = new Button(FontAwesome.BARS);
button.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Notification
.show("Yeah, this is another notification. You clicked the button.");
}
});
tab.setRightComponent(button);
}
}
}