Package org.onebusaway.webapp.gwt.oba_library.view

Source Code of org.onebusaway.webapp.gwt.oba_library.view.PatchMarker

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

import org.onebusaway.webapp.gwt.common.widgets.DivWidget;

import com.google.gwt.dom.client.Style;
import com.google.gwt.maps.client.MapPaneType;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.geom.LatLngBounds;
import com.google.gwt.maps.client.geom.Point;
import com.google.gwt.maps.client.overlay.Overlay;

public class PatchMarker extends Overlay {

  private LatLng _northWestCorner;
  private LatLng _southEastCorner;
  private MapWidget _map;
  private DivWidget _widget;

  public PatchMarker(LatLngBounds bounds) {
    this(getNorthWestCorner(bounds), getSouthEastCorner(bounds));
  }

  private PatchMarker(LatLng northWestCorner, LatLng southEastCorner) {
    _northWestCorner = northWestCorner;
    _southEastCorner = southEastCorner;
    _widget = new DivWidget("");
  }

  public void addStyleName(String name) {
    _widget.addStyleName(name);
   
  }

  public void setStyleName(String name) {
    _widget.setStyleName(name);
  }
 
  public Style getStyle() {
    return _widget.getElement().getStyle();
  }

  public void setVisible(boolean visible) {
    _widget.setVisible(visible);
  }

  @Override
  protected Overlay copy() {
    return new PatchMarker(_northWestCorner, _southEastCorner);
  }

  @Override
  protected void initialize(MapWidget map) {
    _map = map;
    _map.getPane(MapPaneType.MARKER_SHADOW_PANE).add(_widget);
  }

  @Override
  protected void redraw(boolean force) {

    Point point = _map.convertLatLngToDivPixel(_northWestCorner);
    int x = point.getX();
    int y = point.getY();

    _map.getPane(MapPaneType.MARKER_SHADOW_PANE).setWidgetPosition(_widget, x,
        y);

    Point point2 = _map.convertLatLngToDivPixel(_southEastCorner);
    int x2 = point2.getX();
    int y2 = point2.getY();

    _widget.setWidth((x2 - x) + "px");
    _widget.setHeight((y2 - y) + "px");
  }

  @Override
  protected void remove() {
    _map.getPane(MapPaneType.MARKER_SHADOW_PANE).remove(_widget);
  }

  private static LatLng getNorthWestCorner(LatLngBounds bounds) {
    LatLng ne = bounds.getNorthEast();
    LatLng sw = bounds.getSouthWest();
    return LatLng.newInstance(ne.getLatitude(), sw.getLongitude());
  }

  private static LatLng getSouthEastCorner(LatLngBounds bounds) {
    LatLng ne = bounds.getNorthEast();
    LatLng sw = bounds.getSouthWest();
    return LatLng.newInstance(sw.getLatitude(), ne.getLongitude());
  }

}
TOP

Related Classes of org.onebusaway.webapp.gwt.oba_library.view.PatchMarker

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.