Package org.onebusaway.webapp.gwt.agencies_map

Source Code of org.onebusaway.webapp.gwt.agencies_map.AgenciesMap$AgencyHandler

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

import java.util.List;

import org.onebusaway.transit_data.model.AgencyBean;
import org.onebusaway.transit_data.model.AgencyWithCoverageBean;
import org.onebusaway.webapp.gwt.common.widgets.DivPanel;
import org.onebusaway.webapp.gwt.where_library.rpc.WebappServiceAsync;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.maps.client.InfoWindow;
import com.google.gwt.maps.client.InfoWindowContent;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.control.MapTypeControl;
import com.google.gwt.maps.client.control.ScaleControl;
import com.google.gwt.maps.client.control.SmallMapControl;
import com.google.gwt.maps.client.event.MarkerClickHandler;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.geom.LatLngBounds;
import com.google.gwt.maps.client.overlay.Marker;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.RootPanel;

public class AgenciesMap implements EntryPoint {

  private static AgencyMapResources _resources = GWT.create(AgencyMapResources.class);
 
  private static AgencyMapCssResource _css = _resources.getCss();

  @Override
  public void onModuleLoad() {

    RootPanel panel = RootPanel.get("agencies_map");
    if (panel == null) {
      System.out.println("you didn't include a div with the id of \"agencies_map\"");
      return;
    }

    MapWidget map = new MapWidget();
    map.addControl(new SmallMapControl());
    map.addControl(new MapTypeControl());
    map.addControl(new ScaleControl());
    map.setScrollWheelZoomEnabled(true);
    panel.add(map);
   
    StyleInjector.inject(_css.getText());

    WebappServiceAsync service = WebappServiceAsync.SERVICE;
    service.getAgencies(new AgencyHandler(map));   
  }

  private static class AgencyHandler implements
      AsyncCallback<List<AgencyWithCoverageBean>> {

    private MapWidget _map;

    public AgencyHandler(MapWidget map) {
      _map = map;
    }

    @Override
    public void onSuccess(List<AgencyWithCoverageBean> agencies) {

      LatLngBounds bounds = LatLngBounds.newInstance();
      for (AgencyWithCoverageBean agencyWithCoverage : agencies) {

        final AgencyBean agency = agencyWithCoverage.getAgency();
        final LatLng point = LatLng.newInstance(agencyWithCoverage.getLat(),
            agencyWithCoverage.getLon());
        bounds.extend(point);

        Marker marker = new Marker(point);
        marker.addMarkerClickHandler(new MarkerClickHandler() {
          @Override
          public void onClick(MarkerClickEvent event) {
            InfoWindow window = _map.getInfoWindow();
            DivPanel panel = new DivPanel();

            DivPanel rowA = new DivPanel(_css.paragraph());
            panel.add(rowA);
            rowA.add(new Anchor(agency.getName(), agency.getUrl()));

            DivPanel rowB = new DivPanel(_css.paragraph());
            panel.add(rowB);
            rowB.add(new Anchor("jump to map", "index.html#m(location)lat("
                + point.getLatitude() + ")lon(" + point.getLongitude()
                + ")accuracy(4)"));
            window.open(point, new InfoWindowContent(panel));
          }
        });

        _map.addOverlay(marker);
      }

      if (!bounds.isEmpty())
        _map.setCenter(bounds.getCenter(), _map.getBoundsZoomLevel(bounds)-1);
    }

    @Override
    public void onFailure(Throwable arg0) {
      // TODO Auto-generated method stub

    }
  }
}
TOP

Related Classes of org.onebusaway.webapp.gwt.agencies_map.AgenciesMap$AgencyHandler

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.