001    package com.google.gwt.maps.client.events.fusiontablemouse;
002    
003    import com.google.gwt.ajaxloader.client.Properties;
004    import com.google.gwt.ajaxloader.client.Properties.TypeException;
005    import com.google.gwt.core.client.JavaScriptObject;
006    import com.google.gwt.maps.client.base.LatLng;
007    import com.google.gwt.maps.client.base.Size;
008    import com.google.gwt.maps.client.events.MapEvent;
009    
010    public class FusionTablesMouseMapEvent extends MapEvent<FusionTablesMouseMapHandler, FusionTablesMouseMapEvent> {
011    
012      public static Type<FusionTablesMouseMapHandler> TYPE = new Type<FusionTablesMouseMapHandler>();
013    
014      public FusionTablesMouseMapEvent(Properties properties) {
015        super(properties);
016      }
017    
018      @Override
019      public com.google.gwt.event.shared.GwtEvent.Type<FusionTablesMouseMapHandler> getAssociatedType() {
020        return TYPE;
021      }
022    
023      @Override
024      protected void dispatch(FusionTablesMouseMapHandler handler) {
025        handler.onEvent(this);
026      }
027    
028      /**
029       * Pre-rendered HTML content, as placed in the infowindow by the default UI.
030       */
031      public String getInfoWindowHtml() {
032        String infoWindowHtml = null;
033        try {
034          infoWindowHtml  = properties.getString("infoWindowHtml");
035        } catch (TypeException e) {
036          e.printStackTrace();
037        }
038        return infoWindowHtml;
039      }
040    
041      /**
042       * The position at which to anchor an infowindow on the clicked feature.
043       * @return {@link LatLng}
044       */
045      public LatLng getLatLng() {
046        LatLng latLng = null;
047        try {
048          latLng = (LatLng) properties.getObject("latLng");
049        } catch (TypeException e) {
050          e.printStackTrace();
051        }
052        return latLng;
053      }
054    
055      /**
056       * gets The offset to apply to an infowindow anchored on the clicked feature.
057       */
058      public Size getPixelOffset() {
059        Size pixelOffset = null;
060        try {
061          pixelOffset = (Size) properties.getObject("pixelOffset");
062        } catch (TypeException e) {
063          e.printStackTrace();
064        }
065        return pixelOffset;
066      }
067    
068      /**
069       * returns A collection of FusionTablesCell objects, indexed by column name, representing the contents of the table row which included the clicked feature.
070       */
071      public JavaScriptObject getRow() {
072        return parseRow();
073      }
074      
075      /**
076       * A collection of FusionTablesCell objects, indexed by column name, representing the contents of the table row which included the clicked feature.
077       * @return as JSON string
078       */
079      public String getRowAsJson() {
080        return getAsJson(parseRow());
081      }
082    
083      /**
084       * returns a jso that would read possibly 
085       *    like ({station:{columnName:"station", value:"Chicago"}, address:{columnName:"address", value:"800 N. State St., Chicago, IL"}, ridership:{columnName:"ridership", value:"13531"}})
086       */
087      private JavaScriptObject parseRow() {
088        JavaScriptObject row = null;
089        try { 
090          row = properties.getObject("row");
091        } catch (TypeException e) {
092          e.printStackTrace();
093        }
094        return row;
095      }
096      
097    }