Package com.google.gwt.maps.sample.hellomaps.client

Source Code of com.google.gwt.maps.sample.hellomaps.client.HelloMaps

/*
* Copyright 2008 Google Inc.
*
* 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 com.google.gwt.maps.sample.hellomaps.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.maps.client.Maps;
import com.google.gwt.maps.sample.hellomaps.client.MapsDemo.MapsDemoInfo;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

/**
* Main class for implementing the HelloMaps gwt-google-apis demo.
*/
public class HelloMaps implements EntryPoint, ValueChangeHandler<String> {

  protected DemoList list = new DemoList();
  private MapsDemoInfo curInfo;
  private MapsDemo curMapsDemo;
  private HTML description = new HTML();
  private VerticalPanel innerPanel = new VerticalPanel();
  private FlexTable outerPanel = new FlexTable();

  public void onModuleLoad() {

    if (!Maps.isLoaded()) {
      Window.alert("The Maps API is not installed."
          + "  The <script> tag that loads the Maps API may be missing or your Maps key may be wrong.");
      return;
    }

    if (!Maps.isBrowserCompatible()) {
      Window.alert("The Maps API is not compatible with this browser.");
      return;
    }

    // Load all the MapsDemos.
    loadMapsDemos();

    innerPanel.setStylePrimaryName("hm-mapinnerpanel");
    // innerPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);

    HorizontalPanel horizPanel = new HorizontalPanel();
    list.setStylePrimaryName("hm-demolistbox");
    Button nextLink = new Button(">>");
    nextLink.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        show(list.getNext(), true);
      }
    });

    horizPanel.add(new Label("Select Demo: "));
    horizPanel.setSpacing(4);
    horizPanel.add(list);
    horizPanel.add(nextLink);
    innerPanel.add(horizPanel);
    innerPanel.add(description);
    innerPanel.setSpacing(10);

    History.addValueChangeHandler(this);

    outerPanel.setStylePrimaryName("hm-outerpanel");
    outerPanel.insertRow(0);
    outerPanel.insertRow(0);
    outerPanel.insertRow(0);
    outerPanel.insertRow(0);
    outerPanel.insertRow(0);

    outerPanel.addCell(0);
    outerPanel.addCell(1);
    outerPanel.addCell(2);
    outerPanel.addCell(3);
    outerPanel.addCell(4);

    outerPanel.setWidget(0, 0, new HTML(
        "This Maps-enabled application was built using the Google "
            + "API Library for GWT, "
            + "<a href=\"http://code.google.com/p/gwt-google-apis/\">"
            + "http://code.google.com/p/gwt-google-apis/</a>. "
            + "The drop down list below allows you to select a scenario that "
            + "demonstrates a particular capability of the Maps support."));

    outerPanel.setWidget(1, 0, innerPanel);

    DecoratorPanel decorator = new DecoratorPanel();
    decorator.add(outerPanel);

    RootPanel.get("hm-map").add(decorator);

    // Show the initial screen.
    String initToken = History.getToken();
    if (initToken.length() > 0) {
      onValueChange(initToken);
    } else {
      showInfo();
    }
  }

  public void onValueChange(ValueChangeEvent<String> event){
    String token = event.getValue();
    onValueChange(token);
  }

  public void show(MapsDemoInfo info, boolean affectHistory) {
    // Don't bother re-displaying the existing MapsDemo. This can be an issue
    // in practice, because when the history context is set, our
    // onHistoryChanged() handler will attempt to show the currently-visible
    // MapsDemo.
    if (info == curInfo) {
      return;
    }
    curInfo = info;

    // Remove the old MapsDemo from the display area.
    if (curMapsDemo != null) {
      innerPanel.remove(curMapsDemo);
    }

    // Get the new MapsDemo instance, and display its description in the
    // MapsDemo list.
    curMapsDemo = info.getInstance();
    list.setMapsDemoSelection(info.getName());

    // If affectHistory is set, create a new item on the history stack. This
    // will ultimately result in onHistoryChanged() being called. It will call
    // show() again, but nothing will happen because it will request the exact
    // same MapsDemo we're already showing.
    if (affectHistory) {
      History.newItem(info.getName());
    }

    // Display the new MapsDemo and update the description panel.
    innerPanel.add(curMapsDemo);
    outerPanel.setWidget(2, 0, info.getDescriptionHTML());

    outerPanel.setWidget(
        3,
        0,
        new HTML(
            "These concepts behind these demos"
                + " are explained in the "
                + "<a href=\"http://www.google.com/apis/maps/documentation/index.html\">"
                + "Google Maps API Concepts</a> document."));

    // info is an inner class of the class we want to display. Strip off the
    // generated anonymous class name.
    String strippedClassName = info.getClass().getName();
    int lastIndex = strippedClassName.lastIndexOf('$');
    if (lastIndex > 0) {
      strippedClassName = strippedClassName.substring(0, lastIndex);
    }

    outerPanel.setWidget(4, 0, new HTML("<h5> See source in "
        + strippedClassName + "</h5><h5>Maps API version: " + Maps.getVersion()
        + "</h5>"));

    curMapsDemo.onShow();
  }

  /**
   * Adds all MapsDemos to the list. Note that this does not create actual
   * instances of all MapsDemos yet (they are created on-demand). This can make
   * a significant difference in startup time.
   */
  protected void loadMapsDemos() {
    list.addMapsDemo(SimpleDemo.init());
    list.addMapsDemo(AnimateDemo.init());
    list.addMapsDemo(DragCursorDemo.init());
    list.addMapsDemo(ControlsDemo.init());
    list.addMapsDemo(MapUIOptionsDemo.init());
    list.addMapsDemo(EventDemo.init());
    list.addMapsDemo(ClickDemo.init());
    list.addMapsDemo(MapEventDemo.init());
    list.addMapsDemo(InfoWindowDemo.init());
    list.addMapsDemo(OverlayDemo.init());
    list.addMapsDemo(MarkerInfoWindowDemo.init());
    list.addMapsDemo(IconDemo.init());
    list.addMapsDemo(IconClassDemo.init());
    list.addMapsDemo(DragMarkerDemo.init());
    list.addMapsDemo(CustomControlDemo.init());
    list.addMapsDemo(MapTypeDemo.init());
    list.addMapsDemo(CustomMapTypeDemo.init());
    list.addMapsDemo(GroundOverlayDemo.init());
    list.addMapsDemo(CustomOverlayDemo.init());
    list.addMapsDemo(DrawingOverlayDemo.init());
    list.addMapsDemo(GeoRssOverlayDemo.init());
    list.addMapsDemo(KmlOverlayDemo.init());
    list.addMapsDemo(TrafficOverlayDemo.init());
    list.addMapsDemo(SimpleDirectionsDemo.init());
    list.addMapsDemo(RoutedDirectionsDemo.init());
    list.addMapsDemo(GeocoderDemo.init());
    list.addMapsDemo(Geocoder2Demo.init());
    list.addMapsDemo(ReverseGeocoderDemo.init());
    list.addMapsDemo(EarthPluginDemo.init());
    list.addMapsDemo(GoogleBarDemo.init());
    list.addMapsDemo(AdsManagerDemo.init());
    list.addMapsDemo(StreetviewOverlayDemo.init());
    list.addMapsDemo(StreetviewDemo.init());
  }

  private void onValueChange(String token) {
    // Find the MapsDemoInfo associated with the history context. If one is
    // found, show it (It may not be found, for example, when the user mis-
    // types a URL, or on startup, when the first context will be "").
    MapsDemoInfo info = list.find(token);
    if (info == null) {
      showInfo();
      return;
    }
    show(info, false);
  }

  private void showInfo() {
    show(list.find("The Basics"), false);
  }
}
TOP

Related Classes of com.google.gwt.maps.sample.hellomaps.client.HelloMaps

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.