package com.vaadin.tests.components.customfield; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Component; import com.vaadin.ui.CustomField; import com.vaadin.ui.Label; import com.vaadin.ui.VerticalLayout; /** * An example of a custom field for editing a boolean value. The field is * composed of multiple components, and could also edit a more complex data * structures. Here, the commit etc. logic is not overridden. */ public class BooleanField extends CustomField { @Override protected Component initContent() { VerticalLayout layout = new VerticalLayout(); layout.addComponent(new Label("Please click the button")); final Button button = new Button("Click me"); button.addListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) { Object value = getValue(); boolean newValue = true; if ((value instanceof Boolean) && ((Boolean) value)) { newValue = false; } setValue(newValue); button.setCaption(newValue ? "On" : "Off"); } }); layout.addComponent(button); return layout; } @Override public Class getType() { return Boolean.class; } }