package org.vaadin.resetbuttonfortextfield; import java.util.Date; import javax.servlet.annotation.WebServlet; import com.vaadin.annotations.Theme; import com.vaadin.annotations.Title; import com.vaadin.annotations.VaadinServletConfiguration; import com.vaadin.data.Property; import com.vaadin.event.FieldEvents; import com.vaadin.server.VaadinRequest; import com.vaadin.server.VaadinServlet; import com.vaadin.ui.Button; import com.vaadin.ui.FormLayout; import com.vaadin.ui.Label; import com.vaadin.ui.TextField; import com.vaadin.ui.UI; @Theme("valo") @Title("Reset Button for TextField Extension Demo") public class DemoUI extends UI { @WebServlet(value = "/*", asyncSupported = true) @VaadinServletConfiguration(productionMode = false, ui = DemoUI.class, widgetset = "org.vaadin.resetbuttonfortextfield.DemoWidgetSet") public static class Servlet extends VaadinServlet { } @Override protected void init(VaadinRequest request) { final FormLayout layout = new FormLayout(); layout.setMargin(true); setContent(layout); final TextField tf = new TextField("Type something, please"); tf.setInputPrompt("Some text here"); final ResetButtonForTextField resetButton = ResetButtonForTextField .extend(tf); layout.addComponent(tf); tf.setImmediate(true); tf.setWidth("300px"); final Label textChangeEventListenerLabel = new Label(); textChangeEventListenerLabel.setHeight("20px"); textChangeEventListenerLabel.setCaption("I show text changes!"); layout.addComponent(textChangeEventListenerLabel); final Label valueChangeListenerLabel = new Label(); valueChangeListenerLabel.setCaption("I show value changes!"); layout.addComponent(valueChangeListenerLabel); valueChangeListenerLabel.setHeight("20px"); final Label resetButtonClickListenerLabel = new Label(); resetButtonClickListenerLabel .setCaption("I notice reset button clicks!"); layout.addComponent(resetButtonClickListenerLabel); resetButtonClickListenerLabel.setHeight("20px"); tf.addValueChangeListener(new Property.ValueChangeListener() { @Override public void valueChange(Property.ValueChangeEvent event) { valueChangeListenerLabel.setValue(event.getProperty() .getValue().toString()); } }); tf.addTextChangeListener(new FieldEvents.TextChangeListener() { @Override public void textChange(FieldEvents.TextChangeEvent event) { textChangeEventListenerLabel.setValue(event.getText()); } }); resetButton .addResetButtonClickedListener(new ResetButtonClickListener() { private int clickCount = 0; @Override public void resetButtonClicked() { clickCount++; resetButtonClickListenerLabel .setValue("Reset button clicked " + clickCount + " times"); } }); Button b1 = new Button("Clear the value of the textfield", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { tf.setValue(""); } }); Button b2 = new Button( "Set the value of the textfield to current date", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { tf.setValue(new Date().toString()); } }); Button b3 = new Button("Toggle Enabled", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { tf.setEnabled(!tf.isEnabled()); } }); Button b4 = new Button("Toggle ReadOnly", new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { tf.setReadOnly(!tf.isReadOnly()); } }); layout.addComponent(b1); layout.addComponent(b2); layout.addComponent(b3); layout.addComponent(b4); } }