package com.vaadin.tests.components.abstractcomponent;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.tests.components.AbstractTestCase;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
public class EnableState extends AbstractTestCase {
@Override
public void init() {
LegacyWindow mainWindow = new LegacyWindow("Helloworld Application");
VerticalLayout panelLayout = new VerticalLayout();
panelLayout.setMargin(true);
final Panel panel = new Panel("Test", panelLayout);
final Button button = new Button("ablebutton");
panelLayout.addComponent(button);
CheckBox enable = new CheckBox("Toggle button enabled", true);
enable.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
boolean enabled = (Boolean) event.getProperty().getValue();
button.setEnabled(enabled);
// button.requestRepaint();
}
});
enable.setImmediate(true);
CheckBox caption = new CheckBox("Toggle button caption", true);
caption.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
button.setCaption(button.getCaption() + "+");
}
});
caption.setImmediate(true);
CheckBox visible = new CheckBox("Toggle panel visibility", true);
visible.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
boolean visible = (Boolean) event.getProperty().getValue();
panel.setVisible(visible);
}
});
visible.setImmediate(true);
CheckBox panelEnable = new CheckBox("Toggle panel enabled", true);
panelEnable.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
boolean enabled = (Boolean) event.getProperty().getValue();
panel.setEnabled(enabled);
}
});
panelEnable.setImmediate(true);
mainWindow.addComponent(enable);
mainWindow.addComponent(caption);
mainWindow.addComponent(visible);
mainWindow.addComponent(panelEnable);
mainWindow.addComponent(panel);
setMainWindow(mainWindow);
}
@Override
protected String getDescription() {
return "This tests the enabled/disabled propagation and that enabled/disabled state is updated"
+ " properly even when the parent is invisible. Disabling the Button while the panel is"
+ " invisible should be reflected on the screen when the panel is set visible"
+ " again.";
}
@Override
protected Integer getTicketNumber() {
return 3609;
}
}