package com.giftoftheembalmer.gotefarm.client; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.user.client.Cookies; import com.google.gwt.user.client.ui.ListBox; import java.util.Date; public class StatefulListBox extends ListBox implements ChangeHandler { private final String name; // default to one year private Date expires = new Date(new Date().getTime() + 365L * 86400L * 1000L); public StatefulListBox(String name) { this(name, false); } public StatefulListBox(String name, boolean isMultipleSelect) { super(isMultipleSelect); this.name = "slb_" + name; addChangeHandler(this); } public void restoreState() { String value = Cookies.getCookie(name); if (value == null) return; for (int i = 0; i < getItemCount(); ++i) { if (getItemText(i).equals(value)) { setSelectedIndex(i); break; } } } public void onChange(ChangeEvent event) { int index = getSelectedIndex(); if (index < 0) return; Cookies.setCookie(name, getItemText(index), expires); } }