@@ -0,0 +1,1322 @@
+package net.devrieze.chatterbox.client;%0A%0Aimport net.devrieze.chatterbox.client.StatusEvent.StatusLevel;%0A%0Aimport com.google.gwt.event.shared.EventHandler;%0Aimport com.google.gwt.event.shared.GwtEvent;%0A%0A%0Apublic class StatusEvent extends GwtEvent%3CStatusEvent.Handler%3E %7B%0A  %0A  %0A  public enum StatusLevel %7B%0A    WARNING,%0A    INFO,%0A    DEBUG;%0A  %7D%0A%0A  public interface Handler extends EventHandler%7B%0A    public void onStatusUpdate(StatusEvent e);%0A  %7D%0A%0A  public static final Type%3CHandler%3E TYPE = new Type%3CStatusEvent.Handler%3E();%0A  private final StatusLevel statusLevel;%0A  private final String message;%0A  private final Throwable exception;%0A%0A  public StatusEvent(StatusLevel statusLevel, String message) %7B%0A    this(statusLevel, message, null);%0A  %7D%0A%0A  public StatusEvent(StatusLevel statusLevel, String message, Throwable exception) %7B%0A    this.statusLevel = statusLevel;%0A    this.message = message;%0A    this.exception = exception;%0A  %7D%0A%0A  @Override%0A  public com.google.gwt.event.shared.GwtEvent.Type%3CHandler%3E getAssociatedType() %7B%0A    return TYPE;%0A  %7D%0A%0A  @Override%0A  protected void dispatch(Handler handler) %7B%0A    handler.onStatusUpdate(this);%0A  %7D%0A%0A  public StatusLevel getStatusLevel() %7B%0A    return statusLevel;%0A  %7D%0A%0A  public String getMessage() %7B%0A    return message;%0A  %7D%0A%0A  public Throwable getException() %7B%0A    return exception;%0A  %7D%0A%0A%7D%0A

Create an event type for status updates.