package com.eas.ui;
import com.eas.core.Utils;
import com.eas.ui.events.ActionEvent;
import com.eas.ui.events.AddEvent;
import com.eas.ui.events.HideEvent;
import com.eas.ui.events.RemoveEvent;
import com.eas.ui.events.ShowEvent;
import com.eas.window.events.MoveEvent;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.DoubleClickEvent;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseMoveEvent;
import com.google.gwt.event.dom.client.MouseOutEvent;
import com.google.gwt.event.dom.client.MouseOverEvent;
import com.google.gwt.event.dom.client.MouseUpEvent;
import com.google.gwt.event.dom.client.MouseWheelEvent;
import com.google.gwt.event.logical.shared.ResizeEvent;
public class EventsPublisher {
private static Utils.JsObject constructors = JavaScriptObject.createObject().cast();
private static JavaScriptObject getPublisher(String aClassName){
JavaScriptObject constr = constructors.getJs(aClassName);
if(constr == null)
throw new IllegalStateException("Constructor for " + aClassName + " was not found.");
return constr;
}
public static native JavaScriptObject getConstructors()/*-{
return @com.eas.ui.EventsPublisher::constructors;
}-*/;
public static void putPublisher(String aClassName, JavaScriptObject aPublisher){
constructors.setJs(aClassName, aPublisher);
}
public native static JavaScriptObject publishSourcedEvent(JavaScriptObject aSource)/*-{
return {source: aSource};
}-*/;
public native static JavaScriptObject publishItemEvent(JavaScriptObject aSource, JavaScriptObject aItem)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ItemEvent');
return new constr(aSource, aItem);
}-*/;
public native static JavaScriptObject publishOnRenderEvent(JavaScriptObject aSource, Object aRowId, Object aColumnId, JavaScriptObject aRendered, PublishedCell aCell)/*-{
var B = @com.eas.core.Predefine::boxing;
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('CellRenderEvent');
return new constr(aSource, B.boxAsJs(aRowId), B.boxAsJs(aColumnId), aRendered, aCell);
}-*/;
public native static JavaScriptObject publishWindowEvent(Object aEvent, JavaScriptObject aWindow)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('WindowEvent');
return new constr(aWindow);
}-*/;
public native static JavaScriptObject publish(MouseDownEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(MouseUpEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(MouseWheelEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(MouseMoveEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(ClickEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent, 1);
}-*/;
public native static JavaScriptObject publish(DoubleClickEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent, 2);
}-*/;
public native static JavaScriptObject publish(MouseOverEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(MouseOutEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('MouseEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(KeyDownEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('KeyEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(KeyUpEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('KeyEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(KeyPressEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('KeyEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(FocusEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('FocusEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(BlurEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('FocusEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(ResizeEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ComponentEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(ShowEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ComponentEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(HideEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ComponentEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(MoveEvent<Object> aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ComponentEvent');
return new constr(aEvent);
}-*/;
public native static JavaScriptObject publish(AddEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ContainerEvent');
return new constr(aEvent, true);
}-*/;
public native static JavaScriptObject publish(RemoveEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ContainerEvent');
return new constr(aEvent, false);
}-*/;
public native static JavaScriptObject publish(ActionEvent aEvent)/*-{
var constr = @com.eas.ui.EventsPublisher::getPublisher(Ljava/lang/String;)('ActionEvent');
return new constr(aEvent);
}-*/;
}