/**
* 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.common.widgets;
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.maps.client.MapWidget;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Widget;
public class MapWidgetMaxSizeResizeHandler implements ResizeHandler {
private Widget _parent;
private Widget _mapPanel;
private MapWidget _map;
public static Widget registerHandler(Widget parent, MapWidget map) {
DivPanel mapPanel = new DivPanel();
mapPanel.setSize("100%", "100%");
mapPanel.add(map);
map.setSize("100%", "100%");
final MapWidgetMaxSizeResizeHandler handler = new MapWidgetMaxSizeResizeHandler(
parent, mapPanel, map);
DeferredCommand.addCommand(new Command() {
public void execute() {
ResizeEvent event = new ResizeEventImpl(Window.getClientWidth(),
Window.getClientHeight());
handler.onResize(event);
Window.addResizeHandler(handler);
}
});
return mapPanel;
}
private MapWidgetMaxSizeResizeHandler(Widget parent, Widget mapPanel,
MapWidget map) {
_parent = parent;
_mapPanel = mapPanel;
_map = map;
}
public void onResize(ResizeEvent arg0) {
System.out.println("GO! w=" + _parent.getOffsetWidth() + " h="
+ _parent.getOffsetHeight());
_mapPanel.setWidth(_parent.getOffsetWidth() + "px");
_mapPanel.setHeight(_parent.getOffsetHeight() + "px");
_map.checkResizeAndCenter();
}
private static class ResizeEventImpl extends ResizeEvent {
protected ResizeEventImpl(int width, int height) {
super(width, height);
}
}
}