package au.com.vaadinutils.ui; import au.com.vaadinutils.user.UserSettingsStorage; import au.com.vaadinutils.user.UserSettingsStorageFactory; import com.vaadin.ui.Button; public class CookieButton extends Button { // Logger logger = LogManager.getLogger(); private static final String OFF_STATE = "CookieButton-Off"; private static final String ON_STATE = "CookieButton-On"; private static final long serialVersionUID = 2052581680067745511L; private String cookiePath; private CookieButtonCallback callback; private String onText; private String offText; UserSettingsStorage userSettings = UserSettingsStorageFactory.getUserSettingsStorage(); public CookieButton(String cookiePath, final String onText, final String offText, CookieButtonCallback callback) { this.callback = callback; this.cookiePath = cookiePath; this.onText = onText; this.offText = offText; setCaption(offText); setId(offText); addClickListener(new ClickListener() { private static final long serialVersionUID = 4061004605229827783L; @Override public void buttonClick(ClickEvent event) { setMode(getCaption().equals(onText)); } }); } private void setMode(boolean on) { if (on) { setCaption(offText); setId(offText); userSettings.store(cookiePath, ON_STATE); callback.on(); } else { setCaption(onText); setId(onText); userSettings.store(cookiePath, OFF_STATE); callback.off(); } } public void restoreStateFromCookie() { boolean mode = false; mode = userSettings.get(cookiePath).equalsIgnoreCase(ON_STATE); setMode(mode); } }