001    package com.google.gwt.maps.client.drawinglib;
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.overlays.CircleOptions;
007    import com.google.gwt.maps.client.overlays.MarkerOptions;
008    import com.google.gwt.maps.client.overlays.PolygonOptions;
009    import com.google.gwt.maps.client.overlays.PolylineOptions;
010    import com.google.gwt.maps.client.overlays.RectangleOptions;
011    
012    /**
013     * Options for the drawing manager.
014     * <br><br>
015     * See <a href="https://developers.google.com/maps/documentation/javascript/reference#DrawingManagerOptions">DrawingManagerOptions API Doc</a>
016     */
017    public class DrawingManagerOptions extends JavaScriptObject {
018    
019      /**
020       * use newInstance();
021       */
022      protected DrawingManagerOptions() {}
023      
024      /**
025       * Options for the drawing manager.
026       */
027      public static final DrawingManagerOptions newInstance() {
028        return JavaScriptObject.createObject().cast();
029      }
030      
031      /**
032       * Options to apply to any new circles created with this DrawingManager. The center and radius properties are ignored, and the map property of a new circle is always set to the DrawingManager's map.
033       * @param circleOptions
034       */
035      public final native void setCircleOptions(CircleOptions circleOptions) /*-{
036        this.circleOptions = circleOptions;
037      }-*/; 
038      
039      /**
040       * Options to apply to any new circles created with this DrawingManager. The center and radius properties are ignored, and the map property of a new circle is always set to the DrawingManager's map.
041       */
042      public final native CircleOptions getCircleOptions() /*-{
043        return this.circleOptions;
044      }-*/;
045      
046      /**
047       * The enabled/disabled state of the drawing control. Defaults to true.
048       * @param drawingControl
049       */
050      public final native void setDrawingControl(boolean drawingControl) /*-{
051        this.drawingControl = drawingControl;
052      }-*/;
053      
054      /**
055       * The enabled/disabled state of the drawing control. Defaults to true.
056       */
057      public final native boolean getDrawingControl() /*-{
058        return this.drawingControl;
059      }-*/;
060      
061      /**
062       * The display options for the drawing control.
063       * @param drawingControlOptions
064       */
065      public final native void setDrawingControlOptions(DrawingControlOptions drawingControlOptions) /*-{
066        this.drawingControlOptions = drawingControlOptions;
067      }-*/;
068      
069      /**
070       * The display options for the drawing control.
071       */
072      public final native DrawingControlOptions getDrawingControlOptions() /*-{
073        return this.drawingControlOptions;
074      }-*/;
075      
076      /**
077       * The DrawingManager's drawing mode, which defines the type of overlay to be added on the map. Accepted values are MARKER, POLYGON, POLYLINE, RECTANGLE, CIRCLE, or null. A drawing mode of null means that the user can interact with the map as normal, and clicks do not draw anything.
078       * @param drawingMode
079       */
080      public final void setDrawingMode(OverlayType drawingMode) {
081        setDrawingModeImpl(drawingMode.value());
082      }
083    
084      /**
085       * The DrawingManager's drawing mode, which defines the type of overlay to be added on the map. Accepted values are MARKER, POLYGON, POLYLINE, RECTANGLE, CIRCLE, or null. A drawing mode of null means that the user can interact with the map as normal, and clicks do not draw anything.
086       * @param drawingMode
087       */
088      private native void setDrawingModeImpl(String drawingMode) /*-{
089        this.drawingMode = drawingMode;
090      }-*/;
091      
092      /**
093       * The Map to which the DrawingManager is attached, which is the Map on which the overlays created will be placed.
094       */
095      public final MapWidget getMap() {
096        return MapWidget.newInstance(getMapImpl());
097      }
098      
099      private final native MapImpl getMapImpl() /*-{
100        return this.map;
101      }-*/;
102      
103      /**
104       * The Map to which the DrawingManager is attached, which is the Map on which the overlays created will be placed.
105       * @param mapWidget
106       */
107      public final void setMap(MapWidget mapWidget) {
108        setMapImpl(mapWidget.getJso());
109      }
110      
111      private final native void setMapImpl(MapImpl map) /*-{
112        this.map = map;
113      }-*/;
114      
115      /**
116       * Options to apply to any new markers created with this DrawingManager. The position property is ignored, and the map property of a new marker is always set to the DrawingManager's map.
117       * @param markerOptions
118       */
119      public final native void setMarkerOptions(MarkerOptions markerOptions) /*-{
120        this.markerOptions = markerOptions;
121      }-*/;
122     
123      /**
124       * Options to apply to any new markers created with this DrawingManager. The position property is ignored, and the map property of a new marker is always set to the DrawingManager's map.
125       */
126      public final native MarkerOptions getMarkerOptions() /*-{
127        return this.markerOptions;
128      }-*/;
129    
130      /**
131       * Options to apply to any new polygons created with this DrawingManager. The paths property is ignored, and the map property of a new polygon is always set to the DrawingManager's map.
132       * @param polygonOptions
133       */
134      public final native void setPolygonOptions(PolygonOptions polygonOptions) /*-{
135        this.polygonOptions = polygonOptions;
136      }-*/;
137      
138      /**
139       * Options to apply to any new polygons created with this DrawingManager. The paths property is ignored, and the map property of a new polygon is always set to the DrawingManager's map.
140       */
141      public final native PolygonOptions getPolygonOptions() /*-{
142        return this.polygonOptions;
143      }-*/;
144      
145      /**
146       * Options to apply to any new polylines created with this DrawingManager. The path property is ignored, and the map property of a new polyline is always set to the DrawingManager's map.
147       * @param polylineOptions
148       */
149      public final native void setPolylineOptions(PolylineOptions polylineOptions) /*-{
150        this.polylineOptions = polylineOptions;
151      }-*/;
152      
153      /**
154       * Options to apply to any new polylines created with this DrawingManager. The path property is ignored, and the map property of a new polyline is always set to the DrawingManager's map.
155       */
156      public final native PolylineOptions getPolylineOptions() /*-{
157        return this.polylineOptions;
158      }-*/;
159      
160      /**
161       * Options to apply to any new rectangles created with this DrawingManager. The bounds property is ignored, and the map property of a new rectangle is always set to the DrawingManager's map.
162       * @param rectangleOptions
163       */
164      public final native void setRectangleOptions(RectangleOptions rectangleOptions) /*-{
165        this.rectangleOptions = rectangleOptions;
166      }-*/;
167      
168      /**
169       * Options to apply to any new rectangles created with this DrawingManager. The bounds property is ignored, and the map property of a new rectangle is always set to the DrawingManager's map.
170       */
171      public final native RectangleOptions getRectangleOptions() /*-{
172        return this.rectangleOptions;
173      }-*/;
174      
175    }