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

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

/*
* 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.GWT;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
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.InfoWindowContent.InfoWindowTab;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.VerticalPanel;

/**
* To create an info window, call the openInfoWindow method, passing it a
* location and a DOM element to display. The following example code displays an
* info window anchored to the center of the map with a simple "Hello, world"
* message.
*/
public class InfoWindowDemo extends MapsDemo {

  private static final LatLng ATLANTA = LatLng.newInstance(33.7814790,
      -84.3880580);
  private static HTML descHTML = null;
  private static final String TEST_DEFAULT = "Default Info Window";
  private static final String TEST_IMAGE = "Test adding an Image";
  private static final String TEST_MAP_BLOWUP = "Test Map Blowup Info Window";
  private static final String TEST_MAX_CONTENT = "Test maxContent";
  private static final String TEST_MAX_TITLE_CONTENT_WIDGET = "Test Maximized with Widgets";
  private static final String TEST_NO_CLICK = "Test noClick";
  private static final String TEST_TABS = "Test with Tabs";
  private static final String descString = "<h2>InfoWindow Demos</h2>\n"
      + "<p>Tests the InfoWindow APIs</p>" + "<ul>\n" + " <li><b>"
      + TEST_DEFAULT
      + "</b>: Display an info window with a tree widget in "
      + "the center of the current viewport.  Click on the map outside the "
      + "and the InfoWindow will close.\n"
      + "Equivalent to Maps JavaScript API Example: "
      + "<a href=\"http://code.google.com/apis/maps/documentation/examples/map-infowindow.html\">"
      + "http://code.google.com/apis/maps/documentation/examples/map-infowindow.html</a></li>"
      + "<li><b>"
      + TEST_IMAGE
      + "</b>: Use an image in the main InfoWindow.</li>"
      + "<li><b>"
      + TEST_NO_CLICK
      + "</b>: Turn on the 'noClick' setting so that the "
      + " InfoWindow won't close when you click on the map.</li>\n"
      + "<li><b>"
      + TEST_TABS
      + "</b>: Create an InfoWindow with two tabs.</li>"
      + "<li><b>"
      + TEST_MAX_CONTENT
      + "</b>: Add a Maximized Title and Content to "
      + "the InfoWindow</li>\n"
      + "<li><b>"
      + TEST_MAX_TITLE_CONTENT_WIDGET
      + "</b>: Instead of text, use widgets"
      + "for the title and content when maximized.</li>\n"
      + "<li><b>"
      + TEST_MAP_BLOWUP
      + "</b>: Display a Map Blowup inside an InfoWindow</li>" + "</ul>";

  public static MapsDemoInfo init() {
    return new MapsDemoInfo() {

      @Override
      public MapsDemo createInstance() {
        return new InfoWindowDemo();
      }

      @Override
      public HTML getDescriptionHTML() {
        if (descHTML == null) {
          descHTML = new HTML(descString);
        }
        return descHTML;
      }

      @Override
      public String getName() {
        return "Opening an Info Window";
      }
    };
  }

  private final ListBox actionListBox;
  private InfoWindow info = null;

  private final MapWidget map;

  public InfoWindowDemo() {

    VerticalPanel vertPanel = new VerticalPanel();
    vertPanel.setStyleName("hm-panel");

    map = new MapWidget(ATLANTA, 13);
    vertPanel.add(map);

    actionListBox = new ListBox();
    actionListBox.addItem(TEST_DEFAULT);
    actionListBox.addItem(TEST_IMAGE);
    actionListBox.addItem(TEST_NO_CLICK);
    actionListBox.addItem(TEST_TABS);
    actionListBox.addItem(TEST_MAX_CONTENT);
    actionListBox.addItem(TEST_MAX_TITLE_CONTENT_WIDGET);
    actionListBox.addItem(TEST_MAP_BLOWUP);

    actionListBox.addChangeHandler(new ChangeHandler() {
      public void onChange(ChangeEvent event) {
        displayInfoWindow();
      }
    });

    map.setSize("500px", "450px");

    HorizontalPanel horizPanel = new HorizontalPanel();
    horizPanel.add(new Label("Choose Action:"));
    horizPanel.add(actionListBox);
    horizPanel.setSpacing(10);

    vertPanel.add(horizPanel);

    vertPanel.add(map);
    initWidget(vertPanel);
  }

  @Override
  public void onShow() {
    displayInfoWindow();
  }

  /**
   * Display one of the info Window test cases.
   */
  private void displayInfoWindow() {

    // pop down the existing info window.
    if (info != null) {
      info.close();
    }

    info = map.getInfoWindow();
    String selection = actionListBox.getItemText(actionListBox.getSelectedIndex());

    if (selection == null) {
      return;
    }

    InfoWindowContent content;

    if (selection.equals(TEST_MAX_CONTENT)) {

      // Demonstrate the use of the maxTitle and maxContent properties
      HTML htmlWidget = new HTML("<h1>ATTENTION PLEASE</h1>"
          + "<p> I have a few things to say to you (click maximize.)</p>");
      content = new InfoWindowContent(htmlWidget);
      content.setMaxContent("<p>Lorem ipsum dolor sit amet, consetetur "
      + "sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut "
      + "labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos "
      + "et accusam et justo duo dolores et ea rebum. Stet clita kasd "
      + "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. "
      + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr,  sed diam "
      + "nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam "
      + "erat, sed diam voluptua. At vero eos et accusam et justo duo dolores "
      + "et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est "
      + "Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur "
      + "sadipscing elitr,  sed diam nonumy eirmod tempor invidunt ut labore "
      + "et dolore magna aliquyam erat, sed diam voluptua. At vero eos et "
      + "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, "
      + "no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>"
      + "<p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit "
      + "esse molestie consequat, vel illum dolore eu feugiat nulla facilisis "
      + "at vero eros et accumsan et iusto odio dignissim qui blandit "
      + "praesent luptatum zzril delenit augue duis dolore te feugait nulla "
      + "facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, "
      + "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna "
      + "aliquam erat volutpat.</p>");

      content.setMaxTitle("Lorem Ipsum");

    } else if (selection.equals(TEST_IMAGE)) {

      // An image that isn't loaded yet doesn't work well sometimes
      // Specify the width and height to work around this.
      HTML htmlWidget = new HTML(
          "<img src=\"boot.jpg\" width=\"235\" height=\"287\">");
      content = new InfoWindowContent(htmlWidget);
    } else if (selection.equals(TEST_NO_CLICK)) {

      // Demonstrates setting the info window to stay "sticky" and not
      // automatically close when the user clicks on the maps window.
      HTML htmlWidget = new HTML("<h1>STICKY INFO WINDOW</h1>"
          + "<p> Click if you must, you won't get rid of me that easily.</p>");
      content = new InfoWindowContent(htmlWidget);
      content.setNoCloseOnClick(true);
    } else if (selection.equals(TEST_TABS)) {

      // Display tabs in the InfoWindow
      content = displayInfoWindowTabs();
    } else if (selection.equals(TEST_MAX_TITLE_CONTENT_WIDGET)) {

      // Display the maximized content using widgets instead of strings.
      content = displayInfoWindowMaxWidget();
    } else if (selection.equals(TEST_MAP_BLOWUP)) {

      // Display a Map Blowup Window
      content = new InfoWindowContent.MapBlowupContent();
    } else {

      // The default case
      Tree tree = new Tree();
      TreeItem foo = new TreeItem("Foo");
      tree.addItem(foo);
      TreeItem bar = new TreeItem("bar");
      foo.addItem(bar);
      bar.addItem("baz");
      bar.addItem("gwt");
      // max-height must be set in advance so info window is sized appropriately
      tree.setSize("217px", "104px");
      content = new InfoWindowContent(tree);
    }

    info.open(map.getCenter(), content);
  }

  private InfoWindowContent displayInfoWindowMaxWidget() {
    final InfoWindowContent content = new InfoWindowContent(
        "There's more to see (hit the maximize button)");
    content.setMaxTitle(new HTML("<i>Maximized Italic Boots</i>"));
    VerticalPanel panel = new VerticalPanel();
    panel.add(new Image("boot.jpg"));
    Button b = new Button("Click for Message");
    final Label l = new Label();
    HorizontalPanel hp = new HorizontalPanel();
    hp.add(b);
    hp.add(l);
    l.getElement().getStyle().setPropertyPx("margin", 7);
    b.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        GWT.log("Got click in maximized window.", null);
        if (l.getText().equals("")) {
          l.setText("Hello World!");
        } else {
          l.setText("");
        }
      }
    });
    panel.add(hp);
    panel.setSpacing(10);
    content.setMaxContent(panel);
    return content;
  }

  private InfoWindowContent displayInfoWindowTabs() {

    InfoWindowTab tabs[] = new InfoWindowTab[2];

    tabs[0] = new InfoWindowTab("Tab 1", "<h1>Tab 1 Content</h1>");
    tabs[1] = new InfoWindowTab("Tab 2", "<h1>Tab 2 Content</h1>");
    final InfoWindowContent content = new InfoWindowContent(tabs, 1);
    return content;
  }
}
TOP

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

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.