package org.vaadin.touchkit.itest;
import java.util.Date;
import org.vaadin.touchkit.AbstractTouchKitIntegrationTest;
import org.vaadin.touchkit.gwt.client.theme.StyleNames;
import org.vaadin.touchkit.ui.DatePicker;
import org.vaadin.touchkit.ui.EmailField;
import org.vaadin.touchkit.ui.HorizontalButtonGroup;
import org.vaadin.touchkit.ui.NavigationButton;
import org.vaadin.touchkit.ui.NavigationView;
import org.vaadin.touchkit.ui.NumberField;
import org.vaadin.touchkit.ui.Popover;
import org.vaadin.touchkit.ui.Switch;
import org.vaadin.touchkit.ui.Toolbar;
import org.vaadin.touchkit.ui.VerticalComponentGroup;
import com.vaadin.server.FontAwesome;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
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.ui.Notification.Type;
import com.vaadin.v7.ui.OptionGroup;
import com.vaadin.ui.Panel;
import com.vaadin.v7.ui.TextArea;
import com.vaadin.v7.ui.TextField;
import com.vaadin.v7.ui.Upload;
public class FieldsTest extends AbstractTouchKitIntegrationTest implements
ClickListener {
private final Switch switchComponent;
private final OptionGroup optionGroup;
private final TextField textField;
private final TextArea textArea;
private final Toolbar toolbar;
public FieldsTest() {
setDescription("Test various fields in typical setup.");
NavigationView navigationView = new NavigationView("Fields");
navigationView.setPreviousComponent(new Panel("Previous"));
HorizontalButtonGroup group = new HorizontalButtonGroup();
Button button = new Button("Save", this);
button.setStyleName(StyleNames.BUTTON_BLUE);
group.addComponent(button);
button = new Button("X");
button.setStyleName(StyleNames.BUTTON_RED);
group.addComponent(button);
navigationView.setRightComponent(group);
addComponent(navigationView);
VerticalComponentGroup g = new VerticalComponentGroup("Basic fields");
NavigationButton navigationButton = new NavigationButton("Navi button");
navigationButton.setDescription("Stuff that matters");
g.addComponent(navigationButton);
navigationButton.setIcon(FontAwesome.HOME);
textField = new TextField("Notification title");
textField.setWidth("100%");
textField.setValue("Foo Bar");
textArea = new TextArea("Notification content");
textArea.setWidth("100%");
textArea.setValue("Sen on muuten parempi pyy pivossa kuin kymmenen oksalla.");
NumberField numberField = new NumberField("Number");
numberField.setWidth("100%");
DatePicker datePicker = new DatePicker("Html5Date");
datePicker.setValue(new Date());
DateField dateField = new DateField("Amaz VaadinDF");
dateField.setValue(new Date());
g.addComponents(textField, textArea, numberField, datePicker, dateField);
Upload upload = new Upload();
upload.setImmediate(true);
upload.setCaption("Upload");
upload.setButtonCaption("Take or Choose Photo");
g.addComponent(upload);
switchComponent = new Switch("Switch");
g.addComponent(switchComponent);
g.addComponent(new EmailField("Email"));
VerticalComponentGroup g2 = new VerticalComponentGroup("Type");
optionGroup = new OptionGroup();
for (Type t : Type.values()) {
optionGroup.addItem(t);
}
optionGroup.setValue(Type.ERROR_MESSAGE);
g2.addComponent(optionGroup);
NativeSelect select = new NativeSelect("Different type");
select.setContainerDataSource(optionGroup);
select.setPropertyDataSource(optionGroup);
ComboBox comboBox = new ComboBox("Combodough");
comboBox.setContainerDataSource(optionGroup);
g2.addComponents(select, comboBox);
Label label = new Label("This is some example text that is "
+ "written here for demonstration purposes only.");
g.addComponent(label);
CssLayout cssLayout = new CssLayout(g, g2);
group = new HorizontalButtonGroup();
button = new Button("Save");
button.setStyleName(StyleNames.BUTTON_GREEN);
group.addComponent(button);
button = new Button("Cancel");
button.setStyleName(StyleNames.BUTTON_RED);
group.addComponent(button);
cssLayout.addComponent(group);
Button c = new Button("Normal Button");
cssLayout.addComponent(c);
navigationView.setContent(cssLayout);
toolbar = new Toolbar();
button = new Button();
button.setIcon(FontAwesome.HOME);
toolbar.addComponent(button);
button = new Button(null, this);
button.setIcon(FontAwesome.FLOPPY_O);
toolbar.addComponent(button);
button = new Button();
button.setIcon(FontAwesome.SHARE);
toolbar.addComponent(button);
button = new Button();
button.setIcon(FontAwesome.PRINT);
toolbar.addComponent(button);
button = new Button();
button.setIcon(FontAwesome.SITEMAP);
toolbar.addComponent(button);
navigationView.setToolbar(toolbar);
}
@Override
public void buttonClick(ClickEvent event) {
if (switchComponent.getValue()) {
NavigationView content = new NavigationView("Popover");
final Popover popover = new Popover(content);
popover.setHeight("50%");
popover.setWidth("400px");
content.setRightComponent(new Button("X", new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
popover.removeFromParent();
}
}));
CssLayout c = new CssLayout(new Label("This is content area."));
content.setContent(c);
popover.showRelativeTo(event.getButton());
} else {
Notification.show(textField.getValue(), textArea.getValue(),
getType());
}
}
private Type getType() {
return (Type) optionGroup.getValue();
}
}