001 package com.google.gwt.maps.client.drawinglib;
002
003 import com.google.gwt.ajaxloader.client.ArrayHelper;
004 import com.google.gwt.core.client.JavaScriptObject;
005 import com.google.gwt.core.client.JsArrayString;
006 import com.google.gwt.maps.client.controls.ControlPosition;
007
008 /**
009 * Options for the rendering of the drawing control.
010 * <br><br>
011 * See <a href="https://developers.google.com/maps/documentation/javascript/reference#DrawingControlOptions">DrawingControlOptions API Doc</a>
012 */
013 public class DrawingControlOptions extends JavaScriptObject {
014
015 /**
016 * use newInstance();
017 */
018 protected DrawingControlOptions() {}
019
020 /**
021 * Options for the rendering of the drawing control.
022 */
023 public static final DrawingControlOptions newInstance() {
024 return JavaScriptObject.createObject().cast();
025 }
026
027 /**
028 * The drawing modes to display in the drawing control, in the order in which they are to be displayed. The hand icon (which corresponds to the null drawing mode) is always available and is not to be specified in this array. Defaults to [MARKER, POLYLINE, RECTANGLE, CIRCLE, POLYGON].
029 * hmmmm, this seems a bit overlay iterative
030 * @param overlayTypes
031 */
032 public final void setDrawingModes(OverlayType... overlayTypes) {
033 if (overlayTypes == null) {
034 return;
035 }
036 String[] types = new String[overlayTypes.length];
037 for (int i=0; i < overlayTypes.length; i++) {
038 types[i] = overlayTypes[i].value();
039 }
040 JsArrayString drawingModes = ArrayHelper.toJsArrayString(types);
041 setDrawingModesImpl(drawingModes);
042 }
043
044 private final native void setDrawingModesImpl(JsArrayString drawingModes) /*-{
045 this.drawingModes = drawingModes;
046 }-*/;
047
048 /**
049 * The drawing modes to display in the drawing control, in the order in which they are to be displayed. The hand icon (which corresponds to the null drawing mode) is always available and is not to be specified in this array. Defaults to [MARKER, POLYLINE, RECTANGLE, CIRCLE, POLYGON].
050 */
051 public final OverlayType[] getDrawingModes() {
052 JsArrayString types = getDrawingModesImpl();
053 if (types == null) {
054 return null;
055 }
056 OverlayType[] r = new OverlayType[types.length()];
057 for (int i=0; i < types.length(); i++) {
058 r[i] = OverlayType.fromValue(types.get(i));
059 }
060 return r;
061 }
062
063 private final native JsArrayString getDrawingModesImpl() /*-{
064 return this.drawingModes;
065 }-*/;
066
067 /**
068 * Position id. Used to specify the position of the control on the map. The default position is TOP_LEFT.
069 * @param position
070 */
071 public final void setPosition(ControlPosition position) {
072 setPositionImpl(position.value());
073 }
074
075 private final native void setPositionImpl(int position) /*-{
076 this.position = position;
077 }-*/;
078
079 /**
080 * Position id. Used to specify the position of the control on the map. The default position is TOP_LEFT.
081 */
082 public final ControlPosition getPosition() {
083 return ControlPosition.fromValue(getPositionImpl());
084 }
085
086 private final native int getPositionImpl() /*-{
087 return this.position;
088 }-*/;
089 }