Package org.onebusaway.webapp.gwt.search_location

Source Code of org.onebusaway.webapp.gwt.search_location.SearchLocationLibrary$SearchLocationHandler

/**
* Copyright (C) 2011 Brian Ferris <bdferris@onebusaway.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*         http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onebusaway.webapp.gwt.search_location;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.http.client.URL;
import com.google.gwt.maps.client.geocode.Geocoder;
import com.google.gwt.maps.client.geocode.LocationCallback;
import com.google.gwt.maps.client.geocode.Placemark;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SubmitButton;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitHandler;

public class SearchLocationLibrary implements EntryPoint {

  @Override
  public void onModuleLoad() {
    exportStaticMethod();
    addSearchLocationHandler("changeSearchLocation");
  }

  public static native void exportStaticMethod()
  /*-{
    $wnd.oba_addSearchLocationHandler = $entry(@org.onebusaway.webapp.gwt.search_location.SearchLocationLibrary::addSearchLocationHandler(Ljava/lang/String;));
  }-*/;

  public static void addSearchLocationHandler(String containerElementId) {
    System.out.println("container=" + containerElementId);
    RootPanel panel = RootPanel.get(containerElementId);
    if (panel != null)
      SearchLocationHandler.wire(panel);
  }

  private static class SearchLocationHandler implements LocationCallback {

    private RootPanel _panel;

    private Geocoder _geocoder = new Geocoder();

    private String _query;

    public static void wire(RootPanel panel) {
      SearchLocationHandler handler = new SearchLocationHandler(panel);
      handler.setChangeDefaultSearchLocationMode();
    }

    private SearchLocationHandler(RootPanel panel) {
      _panel = panel;
    }

    private void setChangeDefaultSearchLocationMode() {

      Anchor anchor = new Anchor("Change your default search location");

      _panel.clear();
      _panel.add(anchor);

      anchor.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent arg0) {
          setQuerySearchLocationMode();
        }
      });
    }

    private void setQuerySearchLocationMode() {

      _panel.clear();
      _query = null;

      FormPanel form = new FormPanel();
      _panel.add(form);

      FlowPanel row = new FlowPanel();
      form.add(row);

      final TextBox textBox = new TextBox();
      row.add(textBox);

      SubmitButton submitButton = new SubmitButton("Set location");
      row.add(submitButton);

      Button cancelButton = new Button("Cancel");
      row.add(cancelButton);

      System.out.println("here: 7");

      form.addSubmitHandler(new SubmitHandler() {

        @Override
        public void onSubmit(SubmitEvent event) {
          event.cancel();
          String value = textBox.getText();
          value = value.trim();
          if (value.length() > 0) {
            queryLocation(value);
          }
        }
      });

      cancelButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent arg0) {
          setChangeDefaultSearchLocationMode();
        }
      });
    }

    private void queryLocation(String value) {
      _query = value;
      _geocoder.getLocations(value, this);
    }

    @Override
    public void onSuccess(JsArray<Placemark> locations) {
      if (locations.length() > 0) {
        Placemark placemark = locations.get(0);
        LatLng p = placemark.getPoint();
        String name = URL.encode(_query);
        String lat = URL.encode(Double.toString(p.getLatitude()));
        String lon = URL.encode(Double.toString(p.getLongitude()));
        Window.Location.replace("set-default-location.action?name=" + name
            + "&lat=" + lat + "&lon=" + lon);
      } else {
        setChangeDefaultSearchLocationMode();
      }
    }

    @Override
    public void onFailure(int statusCode) {
      setChangeDefaultSearchLocationMode();
    }
  }
}
TOP

Related Classes of org.onebusaway.webapp.gwt.search_location.SearchLocationLibrary$SearchLocationHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.