package com.eas.grid;
import com.eas.core.Utils;
import com.eas.grid.ModelGrid;
import com.eas.grid.columns.header.CheckHeaderNode;
import com.eas.grid.columns.header.ModelHeaderNode;
import com.eas.grid.columns.header.RadioHeaderNode;
import com.eas.grid.columns.header.ServiceHeaderNode;
import com.eas.ui.PublishedComponent;
import com.google.gwt.core.client.JavaScriptObject;
public class GridPublisher {
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.grid.GridPublisher::constructors;
}-*/;
public static void putPublisher(String aClassName, JavaScriptObject aPublisher){
constructors.setJs(aClassName, aPublisher);
}
public native static PublishedComponent publish(ModelGrid aComponent)/*-{
var constr = @com.eas.grid.GridPublisher::getPublisher(Ljava/lang/String;)('ModelGrid');
return new constr(aComponent);
}-*/;
public native static PublishedComponent publish(CheckHeaderNode aComponent)/*-{
var constr = @com.eas.grid.GridPublisher::getPublisher(Ljava/lang/String;)('CheckGridColumn');
return new constr(aComponent);
}-*/;
public native static PublishedComponent publish(RadioHeaderNode aComponent)/*-{
var constr = @com.eas.grid.GridPublisher::getPublisher(Ljava/lang/String;)('RadioGridColumn');
return new constr(aComponent);
}-*/;
public native static PublishedComponent publish(ServiceHeaderNode aComponent)/*-{
var constr = @com.eas.grid.GridPublisher::getPublisher(Ljava/lang/String;)('ServiceGridColumn');
return new constr(aComponent);
}-*/;
public native static PublishedComponent publish(ModelHeaderNode aComponent)/*-{
var constr = @com.eas.grid.GridPublisher::getPublisher(Ljava/lang/String;)('ModelGridColumn');
return new constr(aComponent);
}-*/;
}