Package com.apress.progwt.client.map

Source Code of com.apress.progwt.client.map.MyCollegeMap

/*
* Copyright 2008 Jeff Dwyer
*
* 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.apress.progwt.client.map;

import com.apress.progwt.client.college.ServiceCache;
import com.apress.progwt.client.college.gui.MyPageTab;
import com.apress.progwt.client.college.gui.SchoolLink;
import com.apress.progwt.client.domain.Application;
import com.apress.progwt.client.domain.School;
import com.apress.progwt.client.domain.User;
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.SmallMapControl;
import com.google.gwt.maps.client.event.MarkerClickListener;
import com.google.gwt.maps.client.geom.LatLng;
import com.google.gwt.maps.client.overlay.Marker;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.SimplePanel;

/**
* Unfortunately, GoogleMaps don't play well with Tabs, so we have to do
* some trickery here. This isn't purely a GWT specific issue, but
* something that stems from trying to use heavyweight javascript widgets
* like the maps when we're creating the UI dynamically. See
* http://www.dynamicdrive.com/forums/archive/index.php/t-3923.html
*
*
*
* @author Jeff Dwyer
*
*/
public class MyCollegeMap extends Composite implements MyPageTab {

    private static final LatLng middleAmerica = new LatLng(37.0625,
            -95.677068);

    private MapWidget map;

    private User user;

    public MyCollegeMap(ServiceCache serviceCache) {

        map = new MapWidget(middleAmerica, 4);       
        map.setPixelSize(760, 300);

        map.addControl(new SmallMapControl());
        map.addControl(new MapTypeControl());
        map.setScrollWheelZoomEnabled(true);

        SimplePanel sizeCorrector = new SimplePanel();
        sizeCorrector.add(map);
        sizeCorrector.setPixelSize(760,300);
       
        initWidget(sizeCorrector);
       
       
    }

    private Marker createMarker(final School school) {
        LatLng point = new LatLng(school.getLatitude(), school
                .getLongitude());
        if (point.getLatitude() == -1 && point.getLongitude() == -1) {
            return null;
        }

        final Marker marker = new Marker(point);
        marker.addMarkerClickListener(new MarkerClickListener() {
            public void onClick(Marker sender) {
                InfoWindow info = map.getInfoWindow();
                info.open(sender, new InfoWindowContent(new SchoolLink(
                        school)));
            }

            public void onDoubleClick(Marker sender) {
            }
        });
        return marker;
    }

    public String getHistoryName() {
        return "MyCollegeMap";
    }

    public void load(User user) {
        this.user = user;
    }

    public void refresh() {
        map.checkResize();

        if (user != null) {
            load(user);

            map.clearOverlays();
            for (Application app : user.getSchoolRankings()) {

                Marker marker = createMarker(app.getSchool());
                if (marker != null) {
                    map.addOverlay(marker);
                }
            }
        }


    }
}
TOP

Related Classes of com.apress.progwt.client.map.MyCollegeMap

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.