package org.dashbuilder.renderer.chartjs.lib.event;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import org.dashbuilder.renderer.chartjs.lib.data.Series;
import java.util.LinkedList;
import java.util.List;
public class DataSelectionEvent extends GwtEvent<DataSelectionHandler> {
private static Type<DataSelectionHandler> TYPE = new Type<DataSelectionHandler>();
private Object sender;
private LinkedList<Series> series;
protected DataSelectionEvent(Object sender){
this.sender = sender;
}
public Object getSender(){
return sender;
}
@Override
public com.google.gwt.event.shared.GwtEvent.Type<DataSelectionHandler> getAssociatedType() {
return TYPE;
}
public static Type<DataSelectionHandler> getType(){
return TYPE;
}
@Override
protected void dispatch(DataSelectionHandler handler) {
handler.onDataSelected(this);
}
public static void fire(HasDataSelectionEventHandlers source, Object sender, JavaScriptObject data) {
DataSelectionEvent event = new DataSelectionEvent(sender);
JSONObject array = new JSONObject(data);
event.series = new LinkedList<Series>();
for(String key : array.keySet()){
JSONObject obj = array.get(key).isObject();
if(obj != null){
Series series1 = JavaScriptObject.createObject().cast();
series1.setValue(obj.get("value").isNumber().doubleValue());
series1.setColor(obj.get("fillColor").isString().stringValue());
event.series.add(series1);
}
}
source.fireEvent(event);
}
public List<Series> getSeries(){
return series;
}
}