package eu.hurion.vaadin.heroku.it; import com.vaadin.event.FieldEvents; import com.vaadin.server.VaadinRequest; import com.vaadin.server.VaadinSession; import com.vaadin.ui.*; public class SessionTestApplication extends UI { public static final String BUTTON_CAPTION = "Click me"; public static final String BUTTON_ID = "hello-button"; public static final String NAME_LABEL = "What is your name?"; public static final String NAME_ID = "name"; public static final String NAME = "name-session"; @Override protected void init(final VaadinRequest vaadinRequest) { setContent(buildContent()); } private Layout buildContent() { final FormLayout formLayout = new FormLayout(); formLayout.setSpacing(true); formLayout.setSizeUndefined(); final TextField nameInput = new TextField(); nameInput.setCaption(NAME_LABEL); nameInput.setId(NAME_ID); nameInput.setImmediate(true); final VaadinSession session = getUI().getSession(); final String name = (String) session.getAttribute(NAME); if (name != null){ nameInput.setValue(name); } nameInput.addTextChangeListener(new FieldEvents.TextChangeListener() { @Override public void textChange(final FieldEvents.TextChangeEvent event) { final String text = event.getText(); session.setAttribute(NAME, text); } }); formLayout.addComponent(nameInput); final Button showButton = new Button(BUTTON_CAPTION, new Button.ClickListener() { @Override public void buttonClick(final Button.ClickEvent clickEvent) { final String greeting = "Hello " + nameInput.getValue() + " !"; Notification.show(greeting); } }); showButton.setId(BUTTON_ID); formLayout.addComponent(showButton); final VerticalLayout vl = new VerticalLayout(); vl.addComponent(formLayout); vl.setComponentAlignment(formLayout, Alignment.MIDDLE_CENTER); vl.setSizeFull(); return vl; } }