package kornell.gui.client.sequence; import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.GwtEvent; import com.google.web.bindery.event.shared.Event; public class NavigationRequest extends GwtEvent<NavigationRequest.Handler>{ public static final Type<NavigationRequest.Handler> TYPE = new Type<NavigationRequest.Handler>(); public String destination; private long ctime; private NavigationRequest(String destination){ this.ctime = System.currentTimeMillis(); this.destination = destination; } public interface Handler extends EventHandler { void onContinue(NavigationRequest event); void onPrevious(NavigationRequest event); void onDirect(NavigationRequest event); } @Override public Type<Handler> getAssociatedType() { return TYPE; } @Override protected void dispatch(Handler handler) { if("continue".equals(destination)) handler.onContinue(this); else if("previous".equals(destination)) handler.onPrevious(this); else handler.onDirect(this); } private static final NavigationRequest NEXT = new NavigationRequest("continue"); private static final NavigationRequest PREV = new NavigationRequest("previous"); public static NavigationRequest direct(String key){ return new NavigationRequest(key); } public static NavigationRequest next() { return NEXT; } public static NavigationRequest prev() { return PREV; } public static Event<?> valueOf(String string) { return new NavigationRequest(string); } @Override public String toString() { return "NavigationRequest["+destination+";"+ctime+"]"; } public String getDestination(){ return destination; } }