ingo@832: package de.intevation.flys.client.client.ui.map; ingo@832: christian@4475: import com.google.gwt.core.client.GWT; christian@4570: import com.smartgwt.client.widgets.Canvas; christian@4570: import com.smartgwt.client.widgets.WidgetCanvas; christian@4570: import com.smartgwt.client.widgets.events.ParentMovedEvent; christian@4570: import com.smartgwt.client.widgets.events.ParentMovedHandler; christian@4475: import com.smartgwt.client.widgets.events.ResizedEvent; christian@4475: import com.smartgwt.client.widgets.events.ResizedHandler; ingo@832: import com.smartgwt.client.widgets.layout.VLayout; ingo@832: ingo@832: import de.intevation.flys.client.shared.model.BBox; ingo@832: import de.intevation.flys.client.shared.model.MapInfo; ingo@832: christian@3347: import org.gwtopenmaps.openlayers.client.Bounds; christian@4475: import org.gwtopenmaps.openlayers.client.MapWidget; christian@3347: christian@4475: /** christian@4475: * Panel that contains a MapWidget and a MapToolbar. christian@4475: * This panel is used by the flood map calculation input helper. christian@4475: */ ingo@832: public class MapPanel extends VLayout { ingo@832: ingo@832: protected MapToolbar toolbar; ingo@832: christian@4475: protected FloodMap floodMap; christian@4475: protected MapWidget floodMapWidget; christian@4475: protected boolean digitizeEnabled; ingo@832: ingo@832: public MapPanel(MapInfo mapInfo, boolean digitizeEnabled) { ingo@832: BBox bbox = mapInfo.getBBox(); ingo@832: ingo@832: this.digitizeEnabled = digitizeEnabled; ingo@832: this.floodMap = new FloodMap( ingo@832: String.valueOf(mapInfo.getSrid()), ingo@832: new Bounds( ingo@832: bbox.getLowerX(), ingo@832: bbox.getLowerY(), ingo@832: bbox.getUpperX(), christian@4402: bbox.getUpperY()), christian@4476: 640, 480); ingo@832: ingo@832: initLayout(); ingo@832: } ingo@832: ingo@832: ingo@832: private void initLayout() { ingo@832: setWidth100(); ingo@832: setHeight100(); ingo@832: christian@4475: floodMapWidget = floodMap.getMapWidget(); raimund@1386: toolbar = new MapToolbar(floodMap, digitizeEnabled); ingo@832: ingo@832: addMember(toolbar); christian@4475: addMember(floodMapWidget); christian@4475: christian@4475: addResizedHandler(new ResizedHandler() { christian@4475: @Override christian@4475: public void onResized(ResizedEvent event) { christian@4475: doLayout(); christian@4475: } christian@4475: }); christian@4570: christian@4570: addParentMovedHandler(new ParentMovedHandler() { christian@4570: @Override christian@4570: public void onParentMoved(ParentMovedEvent event) { christian@4570: floodMapWidget.getMap().updateSize(); christian@4570: } christian@4570: }); christian@4475: } christian@4475: christian@4570: /** christian@4570: * Due to the fact that SmartGWT Layout misses a removeMember(Widget) christian@4570: * method we use this method to remove all WidgetCanvas members. christian@4570: * WidgetCanvas is the wrapper class used by Layout to handle Widget christian@4570: * objects. christian@4570: */ christian@4570: protected void removeWidgetCanvasMember() { christian@4570: Canvas[] allCanvas = getMembers(); christian@4570: for (Canvas canvas : allCanvas) { christian@4570: if (canvas instanceof WidgetCanvas) { christian@4570: removeMember(canvas); christian@4570: } christian@4570: } christian@4570: } christian@4475: christian@4475: protected void doLayout() { christian@4541: int width = getWidth(); christian@4541: int height = getHeight(); christian@4541: GWT.log("MapPanel.size: " + width + "x" + height); christian@4475: christian@4541: width -= 2; // minus black borders christian@4541: height -= toolbar.getHeight() + 4; christian@4541: christian@4570: // Recreate Map widget christian@4570: /*removeWidgetCanvasMember(); christian@4570: floodMap.recreateWidget(width, height); christian@4570: floodMapWidget = floodMap.getMapWidget(); christian@4570: addMember(floodMapWidget); christian@4570: */ christian@4553: floodMapWidget.setSize(Integer.toString(width), Integer.toString(height)); christian@4553: floodMapWidget.getMap().updateSize(); ingo@832: } ingo@832: ingo@832: ingo@832: public FloodMap getFloodMap() { ingo@832: return floodMap; ingo@832: } raimund@1389: raimund@1389: public MapToolbar getMapToolbar () { raimund@1389: return toolbar; raimund@1389: } ingo@832: } ingo@832: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :