001    package com.google.gwt.maps.client.placeslib;
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.base.LatLngBounds;
007    
008    /**
009     * The options that can be set on an Autocomplete.
010     * <br><br>
011     * See <a href="https://developers.google.com/maps/documentation/javascript/reference#AutocompleteOptions">AutocompleteOptions API Doc</a>
012     */
013    public class AutocompleteOptions extends JavaScriptObject {
014    
015      /**
016       * use newInstance();
017       */
018      protected AutocompleteOptions() {}
019      
020      /**
021       * Create new {@link AutocompleteOptions} instance.
022       */
023      public static final AutocompleteOptions newInstance() {
024        return JavaScriptObject.createObject().cast();
025      }
026      
027      /**
028       * The area in which to search for Places. Results are biased towards, but not restricted to, Places contained within these bounds.
029       * @param bounds
030       */
031      public final native void setBounds(LatLngBounds bounds) /*-{
032        this.bounds = bounds;
033      }-*/;
034      
035      /**
036       * The area in which to search for Places. Results are biased towards, but not restricted to, Places contained within these bounds.
037       */
038      public final native LatLngBounds getBounds() /*-{
039        return this.bounds;
040      }-*/;
041      
042      /**
043       * Sets the types of predictions to be returned. Supported types are 'establishment' for businesses and 'geocode' for addresses. If no type is specified, both types will be returned.
044       * @param types
045       */
046      public final void setTypes(AutocompleteType... types) {
047        if (types == null) {
048          return;
049        }
050        String[] stypes = new String[types.length]; 
051        for (int i=0; i < types.length; i++) {
052          stypes[i] = types[i].value();
053        }
054        JsArrayString a = ArrayHelper.toJsArrayString(stypes);
055        setTypesImpl(a);
056      }
057      
058      private final native void setTypesImpl(JsArrayString types) /*-{
059        this.types = types;
060      }-*/;
061      
062      /**
063       * gets The types of predictions to be returned. Supported types are 'establishment' for businesses and 'geocode' for addresses. If neither is specified, both types are returned.
064       */
065      public final AutocompleteType[] getTypes() {
066        JsArrayString at = getTypesImpl();
067        if (at == null) {
068          return null;
069        }
070        AutocompleteType[] types = new AutocompleteType[at.length()]; 
071        for (int i=0; i < at.length(); i++) {
072          types[i] = AutocompleteType.fromValue(at.get(i));
073        }
074        return types;
075      }
076      
077      private final native JsArrayString getTypesImpl() /*-{
078        return this.types;
079      }-*/;
080      
081    }