001    package com.google.gwt.maps.client.weatherlib;
002    
003    import com.google.gwt.core.client.JavaScriptObject;
004    import com.google.gwt.maps.client.MapImpl;
005    import com.google.gwt.maps.client.MapWidget;
006    import com.google.gwt.maps.client.mvc.MVCObject;
007    
008    /**
009     * A layer showing current weather conditions. This class extends MVCObject. <br>
010     * <br>
011     * See <a href=
012     * "https://developers.google.com/maps/documentation/javascript/layers#WeatherLayer"
013     * >WeatherLayer API Doc</a>
014     */
015    public class WeatherLayer extends MVCObject<WeatherLayer> {
016    
017            /**
018             * use newInstance();
019             */
020            protected WeatherLayer() {
021            }
022    
023            /**
024             * A layer that displays graphics showing current weather conditions.
025             * 
026             * @param options
027             *            {@link WeatherLayerOptions} configuration for layer (units,
028             *            style, behaviors)
029             * @return WeatherLayer object
030             */
031            public static final WeatherLayer newInstance(WeatherLayerOptions options) {
032                    return createJso(options).cast();
033            }
034    
035            private static final native JavaScriptObject createJso(
036                            WeatherLayerOptions options) /*-{
037                    return new $wnd.google.maps.weather.WeatherLayer(options);
038            }-*/;
039    
040            public final void setMap(MapWidget mapWidget) {
041                    if (mapWidget == null) {
042                            setMapImpl(null);
043                    } else {
044                            setMapImpl(mapWidget.getJso());
045                    }
046            }
047    
048            private final native void setMapImpl(MapImpl map) /*-{
049                    this.setMap(map);
050            }-*/;
051    
052            public final MapWidget getMap() {
053                    return MapWidget.newInstance(getMapImpl());
054            }
055    
056            private final native MapImpl getMapImpl() /*-{
057                    return this.getMap();
058            }-*/;
059    
060    }