Package org.onebusaway.webapp.gwt.oba_application.view

Source Code of org.onebusaway.webapp.gwt.oba_application.view.PointToPointPage$GeocoderHandler

/**
* 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.oba_application.view;

import org.onebusaway.webapp.gwt.common.AbstractPageSource;
import org.onebusaway.webapp.gwt.common.PageException;
import org.onebusaway.webapp.gwt.common.context.Context;
import org.onebusaway.webapp.gwt.common.widgets.SpanWidget;

import com.google.gwt.core.client.JsArray;
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.ui.FlowPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

public class PointToPointPage extends AbstractPageSource {

  private static final String PARAM_TO = "to";
  private static final String PARAM_FROM = "from";
  private Geocoder _geocoder = new Geocoder();

  private LatLng _fromPoint;

  private LatLng _toPoint;

  /*****************************************************************************
   * Public Methods
   ****************************************************************************/

  public PointToPointPage() {

  }

  public Widget create(final Context context) throws PageException {

    FlowPanel panel = new FlowPanel();

    FlowPanel fromPanel = new FlowPanel();
    panel.add(fromPanel);

    fromPanel.add(new SpanWidget("From:"));
    TextBox fromBox = new TextBox();
    fromPanel.add(fromBox);

    FlowPanel toPanel = new FlowPanel();
    panel.add(toPanel);

    toPanel.add(new SpanWidget("To:"));
    TextBox toBox = new TextBox();
    toPanel.add(toBox);

    update(context);

    // return view;
    return panel;
  }

  @Override
  public Widget update(Context context) throws PageException {

    if (context.hasParam(PARAM_FROM) && context.hasParam(PARAM_TO)) {
      String from = context.getParam(PARAM_FROM);
      String to = context.getParam(PARAM_TO);
      _geocoder.getLocations(from, new GeocoderHandler(true));
      _geocoder.getLocations(to, new GeocoderHandler(false));
    }

    return null;
  }

  private void handleResults() {
    if (_fromPoint == null || _toPoint == null)
      return;
  }

  private class GeocoderHandler implements LocationCallback {

    private boolean _from;

    public GeocoderHandler(boolean from) {
      _from = from;
    }

    public void onSuccess(JsArray<Placemark> locations) {
      if (locations.length() == 1) {
        Placemark mark = locations.get(0);
        LatLng point = mark.getPoint();
        if (_from) {
          _fromPoint = point;
        } else {
          _toPoint = point;
        }
        handleResults();
      } else {
        System.err.println("geocoder: " + locations.length());
      }

    }

    public void onFailure(int statusCode) {
      System.err.println("error on geocoding");
    }
  }
}
TOP

Related Classes of org.onebusaway.webapp.gwt.oba_application.view.PointToPointPage$GeocoderHandler

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.