package org.smartly.application.desktopgap.impl.app.applications.events; import org.smartly.application.desktopgap.impl.app.applications.window.frame.AppFrame; import org.smartly.commons.event.Event; import org.smartly.commons.io.serialization.json.JsonSerializer; import org.smartly.commons.util.JsonWrapper; import org.smartly.commons.util.StringUtils; /** * Frame "DragOver" event */ public class FrameDragEvent extends Event { public static final String NAME = IDesktopGapEvents.FRAME_DRAG_DROPPED; // ------------------------------------------------------------------------ // f i e l d s // ------------------------------------------------------------------------ private static final String FLD_X = "X"; private static final String FLD_Y = "Y"; private static final String FLD_SCREEN_X = "screenX"; private static final String FLD_SCREEN_Y = "screenY"; private static final String FLD_SCENE_X = "sceneX"; private static final String FLD_SCENE_Y = "sceneY"; private static final String FLD_MODE = "mode"; private static final String FLD_SOURCE = "source"; // ------------------------------------------------------------------------ // c o n s t r u c t o r // ------------------------------------------------------------------------ public FrameDragEvent(final Object sender, final double x, final double y, final double screenX, final double screenY, final double sceneX, final double sceneY, final String mode, final Object source) { super(sender, NAME); super.put(FLD_X, x); super.put(FLD_Y, y); super.put(FLD_SCREEN_X, screenX); super.put(FLD_SCREEN_Y, screenY); super.put(FLD_SCENE_X, sceneX); super.put(FLD_SCENE_Y, sceneY); super.put(FLD_MODE, mode); this.setSource(source); } @Override public String toString() { return super.toString(); } // ------------------------------------------------------------------------ // p u b l i c // ------------------------------------------------------------------------ @Override public AppFrame getSender() { return (AppFrame) super.getSender(); } public final double getX() { return super.getDouble(FLD_X); } public final double getY() { return super.getDouble(FLD_Y); } public final double getScreenX() { return super.getDouble(FLD_SCREEN_X); } public final double getScreenY() { return super.getDouble(FLD_SCREEN_Y); } public final double getSceneX() { return super.getDouble(FLD_SCENE_X); } public final double getSceneY() { return super.getDouble(FLD_SCENE_Y); } public final String getMode() { return super.getString(FLD_MODE); } public final Object getSource() { return super.get(FLD_SOURCE); } public void setSource(final Object source) { if (null != source) { super.put(FLD_SOURCE, this.serialize(source)); } } // ------------------------------------------------------------------------ // p r i v a t e // ------------------------------------------------------------------------ private Object serialize(final Object item) { final String serialized = JsonSerializer.serialize(item); if (StringUtils.isJSONObject(serialized)) { final JsonWrapper jw = new JsonWrapper(serialized); final Object value = jw.get("jvalue"); if(StringUtils.isJSON(value)){ final JsonWrapper jsonValue = new JsonWrapper((String)value); return jsonValue.getObject(); } } return serialized; } }