ingo@799: package de.intevation.flys.client.client.ui.map; ingo@799: ingo@799: import com.google.gwt.core.client.GWT; ingo@1433: import com.smartgwt.client.types.Alignment; ingo@799: import com.smartgwt.client.types.SelectionType; ingo@1315: import com.smartgwt.client.util.SC; ingo@1364: import com.smartgwt.client.widgets.Button; ingo@800: import com.smartgwt.client.widgets.Canvas; ingo@799: import com.smartgwt.client.widgets.ImgButton; ingo@1433: import com.smartgwt.client.widgets.Label; ingo@799: import com.smartgwt.client.widgets.events.ClickEvent; ingo@799: import com.smartgwt.client.widgets.events.ClickHandler; christian@2983: import com.smartgwt.client.widgets.layout.HLayout; christian@2983: christian@2983: import de.intevation.flys.client.client.FLYSConstants; christian@2983: import de.intevation.flys.client.client.ui.ImgLink; christian@2983: import de.intevation.flys.client.client.ui.Toolbar; christian@2983: import de.intevation.flys.client.client.utils.EnableDisableCmd; christian@2983: import de.intevation.flys.client.shared.model.Collection; ingo@4329: import de.intevation.flys.client.shared.model.ThemeList; ingo@799: felix@4436: import org.gwtopenmaps.openlayers.client.Bounds; felix@4436: import org.gwtopenmaps.openlayers.client.Map; felix@4436: import org.gwtopenmaps.openlayers.client.control.DragPan; felix@4436: import org.gwtopenmaps.openlayers.client.control.SelectFeature; felix@4436: import org.gwtopenmaps.openlayers.client.control.SelectFeatureOptions; felix@4436: import org.gwtopenmaps.openlayers.client.control.ZoomBox; felix@4436: import org.gwtopenmaps.openlayers.client.event.MapZoomListener; felix@4436: import org.gwtopenmaps.openlayers.client.feature.VectorFeature; felix@4436: import org.gwtopenmaps.openlayers.client.layer.Vector; felix@4436: import org.gwtopenmaps.openlayers.client.util.Attributes; felix@4436: ingo@799: ingo@799: /** felix@4436: * Toolbar for the Map views. ingo@799: * @author Ingo Weinzierl ingo@799: */ sascha@2509: public class MapToolbar sascha@2509: extends Toolbar sascha@2509: implements MapZoomListener sascha@2509: { ingo@799: protected FLYSConstants MSG = GWT.create(FLYSConstants.class); ingo@799: ingo@1400: protected FloodMap floodMap; ingo@1400: protected DragPan pan; ingo@1400: protected ZoomBox zoomBox; ingo@1400: protected SelectFeature selectFeature; ingo@1400: protected GetFeatureInfo getFeatureInfo; ingo@799: christian@2983: protected Button manageThemesButton; ingo@1364: protected Button datacageButton; ingo@4329: protected Button legendButton; ingo@1364: ingo@1406: protected ImgButton addWMSButton; ingo@799: protected ImgButton zoomToMaxButton; ingo@799: protected ImgButton zoomBoxButton; ingo@799: protected ImgButton zoomOutButton; ingo@799: protected ImgButton panButton; ingo@800: protected ImgButton selectButton; ingo@1400: protected ImgButton infoButton; ingo@800: protected ImgButton removeButton; ingo@1315: protected ImgButton elevationButton; sascha@2507: protected ImgLink printMapLink; felix@4436: protected ImgButton printMapSettings; ingo@800: ingo@1433: protected Label epsgLabel; ingo@1433: ingo@802: protected DrawControl drawControl; ingo@802: protected MeasureControl measureControl; ingo@800: ingo@4329: protected LegendWindow legendWindow; ingo@4329: ingo@800: protected Canvas position; ingo@799: ingo@799: raimund@1386: public MapToolbar(MapOutputTab mapTab, FloodMap floodMap) { raimund@1386: this(mapTab, floodMap, true); ingo@833: } ingo@833: ingo@833: raimund@1386: public MapToolbar(FloodMap floodMap, boolean digitize) { raimund@1386: this(null, floodMap, digitize); ingo@1364: } ingo@1364: ingo@1364: ingo@1364: public MapToolbar( ingo@1364: MapOutputTab mapTab, ingo@1364: FloodMap floodMap, ingo@1364: boolean digitize) ingo@1364: { ingo@1364: super(mapTab); ingo@799: ingo@799: setWidth100(); raimund@2452: setHeight(38); ingo@799: setMembersMargin(10); ingo@799: setPadding(5); ingo@799: setBorder("1px solid black"); ingo@799: this.floodMap = floodMap; ingo@799: ingo@799: zoomToMaxButton = createMaxExtentControl(); ingo@799: zoomBoxButton = createZoomBoxControl(); ingo@799: zoomOutButton = createZoomOutControl(); ingo@799: panButton = createPanControl(); ingo@800: drawControl = createDrawControl(); ingo@800: selectButton = createSelectFeatureControl(); ingo@1400: infoButton = createGetFeatureInfo(); ingo@833: measureControl = createMeasureControl(); raimund@1386: position = createMousePosition(); ingo@800: removeButton = createRemoveFeatureControl(); ingo@1315: elevationButton = createElevationControl(); ingo@1433: epsgLabel = createEPSGLabel(); ingo@799: ingo@1364: if (mapTab != null) { christian@2983: manageThemesButton = createManageThemesControl(); christian@2983: addMember(manageThemesButton); christian@2983: ingo@1364: datacageButton = createDatacageControl(); ingo@1364: addMember(datacageButton); ingo@1406: ingo@4329: legendButton = createLegendControl(); ingo@4329: addMember(legendButton); ingo@4329: ingo@1406: addWMSButton = createWMSControl(); ingo@1406: addMember(addWMSButton); sascha@2507: sascha@2507: printMapLink = createPrintMapLink(); sascha@2507: addMember(printMapLink); felix@4436: felix@4436: printMapSettings = createMapPrintSettingsControl(); felix@4436: addMember(printMapSettings); ingo@1364: } ingo@1364: ingo@799: addMember(zoomToMaxButton); ingo@799: addMember(zoomBoxButton); ingo@799: addMember(zoomOutButton); ingo@799: addMember(panButton); ingo@833: ingo@833: if (digitize) { ingo@833: addMember(drawControl); ingo@833: addMember(selectButton); ingo@833: addMember(removeButton); ingo@1315: addMember(elevationButton); ingo@833: } ingo@833: ingo@1400: if (infoButton != null) { ingo@1400: addMember(infoButton); ingo@1400: } ingo@1400: ingo@802: addMember(measureControl); ingo@1433: addMember(createRightPanel()); ingo@1433: } ingo@1433: ingo@1433: ingo@1433: protected HLayout createRightPanel() { ingo@1433: HLayout right = new HLayout(); ingo@1433: right.setAlign(Alignment.RIGHT); ingo@1433: ingo@1433: right.addMember(epsgLabel); ingo@1433: right.addMember(position); ingo@1433: ingo@1433: return right; ingo@799: } ingo@799: ingo@799: ingo@799: protected Map getMap() { ingo@799: return floodMap.getMap(); ingo@799: } ingo@799: ingo@799: ingo@799: protected void activatePan(boolean activate) { ingo@799: if (activate) { ingo@799: panButton.select(); ingo@799: pan.activate(); ingo@799: } ingo@799: else { ingo@799: panButton.deselect(); ingo@799: pan.deactivate(); ingo@799: } ingo@799: } ingo@799: ingo@799: ingo@799: protected void activateZoomBox(boolean activate) { ingo@799: if (activate) { ingo@799: zoomBoxButton.select(); ingo@799: zoomBox.activate(); ingo@799: } ingo@799: else { ingo@799: zoomBoxButton.deselect(); ingo@799: zoomBox.deactivate(); ingo@799: } ingo@799: } ingo@799: ingo@799: raimund@1389: public void activateDrawFeature(boolean activate) { ingo@800: drawControl.activate(activate); ingo@800: } ingo@800: ingo@800: ingo@800: protected void activateSelectFeature(boolean activate) { ingo@800: if (activate) { ingo@800: selectButton.select(); ingo@800: selectFeature.activate(); ingo@800: } ingo@800: else { ingo@800: selectButton.deselect(); ingo@800: selectFeature.deactivate(); ingo@800: } ingo@800: } ingo@800: ingo@800: ingo@802: protected void activateMeasureControl(boolean activate) { ingo@802: measureControl.activate(activate); ingo@802: } ingo@802: ingo@802: ingo@1400: protected void activateGetFeatureInfo(boolean activate) { ingo@2469: if (infoButton == null) { ingo@2469: return; ingo@2469: } ingo@2469: ingo@2447: if (activate) { ingo@2447: infoButton.select(); ingo@2447: } ingo@2447: else { ingo@2447: infoButton.deselect(); ingo@2447: } ingo@2447: ingo@1400: getFeatureInfo.activate(activate); ingo@1400: } ingo@1400: ingo@1400: ingo@800: protected ImgButton createButton(String img, ClickHandler handler) { ingo@800: ImgButton btn = new ImgButton(); ingo@799: ingo@799: String baseUrl = GWT.getHostPageBaseURL(); ingo@800: btn.setSrc(baseUrl + img); ingo@800: btn.setWidth(20); ingo@800: btn.setHeight(20); ingo@800: btn.setShowDown(false); ingo@800: btn.setShowRollOver(false); ingo@2471: btn.setShowRollOverIcon(false); ingo@800: btn.setShowDisabled(false); ingo@800: btn.setShowDisabledIcon(true); ingo@800: btn.setShowDownIcon(false); ingo@800: btn.setShowFocusedIcon(false); ingo@799: ingo@800: if (handler != null) { ingo@800: btn.addClickHandler(handler); ingo@800: } ingo@800: ingo@800: return btn; ingo@800: } ingo@800: ingo@800: ingo@800: protected ImgButton createToggleButton( ingo@800: String img, ingo@800: final EnableDisableCmd cmd ingo@800: ) { ingo@800: final ImgButton btn = new ImgButton(); ingo@800: ingo@800: String baseUrl = GWT.getHostPageBaseURL(); ingo@800: btn.setSrc(baseUrl + img); ingo@800: btn.setActionType(SelectionType.CHECKBOX); ingo@800: btn.setSize(20); ingo@800: btn.setShowRollOver(false); ingo@2471: btn.setShowRollOverIcon(false); ingo@800: btn.setSelected(false); ingo@800: btn.addClickHandler(new ClickHandler() { christian@2983: @Override ingo@800: public void onClick(ClickEvent e) { ingo@800: if (btn.isSelected()) { ingo@800: cmd.enable(); ingo@800: } ingo@800: else { ingo@800: cmd.disable(); ingo@800: } ingo@800: } ingo@800: }); ingo@800: ingo@800: return btn; ingo@800: } ingo@800: sascha@2507: protected ImgLink createPrintMapLink() { sascha@2507: String baseUrl = GWT.getHostPageBaseURL(); sascha@2507: sascha@2509: getMap().addMapZoomListener(this); sascha@2509: sascha@2507: return new ImgLink( sascha@2507: baseUrl + MSG.downloadPDF(), sascha@2507: getPrintUrl(), sascha@2508: 20, 20, sascha@2508: true); sascha@2507: } sascha@2507: ingo@800: ingo@800: protected ImgButton createMaxExtentControl() { ingo@800: ImgButton zoomToMax = createButton(MSG.zoom_all(), new ClickHandler() { christian@2983: @Override ingo@799: public void onClick(ClickEvent event) { ingo@799: floodMap.getMap().zoomToMaxExtent(); ingo@799: } ingo@799: }); ingo@799: ingo@880: zoomToMax.setTooltip(MSG.zoomMaxExtent()); ingo@880: ingo@799: return zoomToMax; ingo@799: } ingo@799: ingo@799: ingo@799: protected ImgButton createZoomBoxControl() { ingo@799: zoomBox = new ZoomBox(); ingo@799: ingo@800: EnableDisableCmd cmd = new EnableDisableCmd() { christian@2983: @Override ingo@800: public void enable() { ingo@800: activatePan(false); ingo@800: activateDrawFeature(false); ingo@800: activateSelectFeature(false); ingo@802: activateMeasureControl(false); ingo@2447: activateGetFeatureInfo(false); ingo@2447: activateZoomBox(true); ingo@800: } ingo@799: christian@2983: @Override ingo@800: public void disable() { ingo@800: activateZoomBox(false); ingo@799: } ingo@800: }; ingo@799: ingo@800: ImgButton button = createToggleButton(MSG.zoom_in(), cmd); ingo@880: button.setTooltip(MSG.zoomIn()); ingo@880: ingo@880: Map map = getMap(); ingo@799: map.addControl(zoomBox); ingo@799: ingo@799: return button; ingo@799: } ingo@799: ingo@799: ingo@799: protected ImgButton createZoomOutControl() { ingo@800: ImgButton zoomOut = createButton(MSG.zoom_out(), new ClickHandler() { christian@2983: @Override ingo@799: public void onClick(ClickEvent event) { ingo@799: Map map = floodMap.getMap(); ingo@799: int level = map.getZoom(); ingo@799: ingo@799: if (level > 1) { ingo@799: map.zoomTo(level-1); ingo@799: } ingo@799: } ingo@799: }); ingo@799: ingo@880: zoomOut.setTooltip(MSG.zoomOut()); ingo@880: ingo@799: return zoomOut; ingo@799: } ingo@799: ingo@799: ingo@799: protected ImgButton createPanControl() { ingo@799: pan = new DragPan(); ingo@800: getMap().addControl(pan); ingo@799: ingo@800: EnableDisableCmd cmd = new EnableDisableCmd() { christian@2983: @Override ingo@800: public void enable() { ingo@800: activateZoomBox(false); ingo@800: activateDrawFeature(false); ingo@800: activateSelectFeature(false); ingo@802: activateMeasureControl(false); ingo@2447: activateGetFeatureInfo(false); ingo@2447: activatePan(true); ingo@800: } ingo@799: christian@2983: @Override ingo@800: public void disable() { ingo@800: activatePan(false); ingo@800: } ingo@800: }; ingo@800: ingo@800: final ImgButton button = createToggleButton(MSG.pan(), cmd); ingo@880: button.setTooltip(MSG.moveMap()); ingo@800: ingo@800: return button; ingo@800: } ingo@800: ingo@800: ingo@800: protected DrawControl createDrawControl() { ingo@800: EnableDisableCmd cmd = new EnableDisableCmd() { christian@2983: @Override ingo@800: public void enable() { ingo@800: activateZoomBox(false); ingo@800: activatePan(false); ingo@800: activateDrawFeature(true); ingo@800: activateSelectFeature(false); ingo@802: activateMeasureControl(false); ingo@800: } ingo@800: christian@2983: @Override ingo@800: public void disable() { ingo@800: activateDrawFeature(false); ingo@800: } ingo@800: }; ingo@800: return new DrawControl(getMap(), floodMap.getBarrierLayer(), cmd); ingo@800: } ingo@800: ingo@800: ingo@800: protected ImgButton createSelectFeatureControl() { ingo@800: SelectFeatureOptions opts = new SelectFeatureOptions(); ingo@825: opts.setBox(true); ingo@800: ingo@800: // VectorFeatures selected by the SelectFeature control are manually ingo@800: // marked with the string "mark.delete". The control to remove selected ingo@800: // features makes use of this string to determine if the feature should ingo@800: // be deleted (is marked) or not. Actually, we would like to use the ingo@800: // OpenLayers native mechanism to select features, but for some reason ingo@800: // this doesn't work here. After a feature has been selected, the layer ingo@800: // still has no selected features. ingo@800: opts.onSelect(new SelectFeature.SelectFeatureListener() { christian@2983: @Override ingo@800: public void onFeatureSelected(VectorFeature feature) { ingo@1317: floodMap.selectFeature(feature); ingo@800: } ingo@800: }); ingo@800: ingo@800: opts.onUnSelect(new SelectFeature.UnselectFeatureListener() { christian@2983: @Override ingo@800: public void onFeatureUnselected(VectorFeature feature) { ingo@1317: floodMap.disableFeature(feature); ingo@800: } ingo@800: }); ingo@800: ingo@800: selectFeature = new SelectFeature(floodMap.getBarrierLayer(), opts); ingo@800: getMap().addControl(selectFeature); ingo@800: ingo@800: EnableDisableCmd cmd = new EnableDisableCmd() { christian@2983: @Override ingo@800: public void enable() { ingo@800: activateDrawFeature(false); ingo@800: activatePan(false); ingo@800: activateZoomBox(false); ingo@800: activateSelectFeature(true); ingo@802: activateMeasureControl(false); ingo@800: } ingo@800: christian@2983: @Override ingo@800: public void disable() { ingo@800: activateSelectFeature(false); ingo@1317: floodMap.disableFeatures(); ingo@800: } ingo@800: }; ingo@800: ingo@800: ImgButton button = createToggleButton(MSG.selectFeature(), cmd); ingo@880: button.setTooltip(MSG.selectObject()); ingo@800: ingo@800: return button; ingo@800: } ingo@800: ingo@800: ingo@800: protected ImgButton createRemoveFeatureControl() { ingo@800: ImgButton remove = createButton(MSG.removeFeature(),new ClickHandler() { christian@2983: @Override ingo@800: public void onClick(ClickEvent event) { ingo@800: Vector barriers = floodMap.getBarrierLayer(); ingo@800: VectorFeature[] features = barriers.getFeatures(); ingo@800: ingo@800: if (features == null || features.length == 0) { ingo@800: return; ingo@799: } ingo@800: ingo@800: for (int i = features.length-1; i >= 0; i--) { ingo@800: VectorFeature feature = features[i]; ingo@800: ingo@800: Attributes attr = feature.getAttributes(); ingo@1315: int del = attr.getAttributeAsInt(FloodMap.MARK_SELECTED); ingo@800: ingo@800: if (del == 1) { ingo@800: barriers.removeFeature(feature); ingo@800: feature.destroy(); ingo@800: } ingo@799: } ingo@799: } ingo@799: }); ingo@799: ingo@880: remove.setTooltip(MSG.removeObject()); ingo@880: ingo@800: return remove; ingo@800: } ingo@799: ingo@800: ingo@1315: protected ImgButton createElevationControl() { ingo@1315: ImgButton btn = createButton(MSG.adjustElevation(), new ClickHandler() { christian@2983: @Override ingo@1315: public void onClick(ClickEvent evt) { ingo@1315: Vector barriers = floodMap.getBarrierLayer(); ingo@1315: VectorFeature[] features = barriers.getFeatures(); ingo@1315: ingo@1315: VectorFeature feature = null; ingo@1315: ingo@1315: if (features == null || features.length == 0) { ingo@1317: SC.warn(MSG.error_no_feature_selected()); ingo@1315: return; ingo@1315: } ingo@1315: ingo@1317: boolean multipleFeatures = false; ingo@1317: ingo@1315: for (VectorFeature f: features) { ingo@1315: Attributes attr = f.getAttributes(); ingo@1315: if (attr.getAttributeAsInt(FloodMap.MARK_SELECTED) == 1) { ingo@1315: if (feature == null) { ingo@1315: feature = f; ingo@1315: } ingo@1315: else { ingo@1317: multipleFeatures = true; ingo@1315: } ingo@1315: } ingo@1315: } ingo@1315: ingo@1317: if (feature == null) { ingo@1317: SC.warn(MSG.error_no_feature_selected()); ingo@1317: return; ingo@1317: } ingo@1317: ingo@1315: new ElevationWindow(floodMap, feature).show(); ingo@1317: ingo@1317: if (multipleFeatures) { ingo@1317: SC.warn(MSG.warning_use_first_feature()); ingo@1317: } ingo@1315: } ingo@1315: }); ingo@1315: ingo@1315: btn.setTooltip(MSG.adjustElevationTooltip()); ingo@1315: ingo@1315: return btn; ingo@1315: } ingo@1315: ingo@1315: raimund@1386: protected Canvas createMousePosition() { raimund@1386: return new MapPositionPanel(floodMap.getMapWidget()); ingo@799: } ingo@802: ingo@802: ingo@802: protected MeasureControl createMeasureControl() { ingo@802: EnableDisableCmd cmd = new EnableDisableCmd() { christian@2983: @Override ingo@802: public void enable() { ingo@802: activateDrawFeature(false); ingo@802: activatePan(false); ingo@802: activateZoomBox(false); ingo@802: activateSelectFeature(false); ingo@2449: activateGetFeatureInfo(false); ingo@802: } ingo@802: christian@2983: @Override ingo@802: public void disable() { ingo@802: // do nothing ingo@802: } ingo@802: }; ingo@802: ingo@802: return new MeasureControl(floodMap, cmd); ingo@802: } ingo@1364: ingo@1364: ingo@1364: protected Button createDatacageControl() { ingo@1364: Button btn = new Button(MSG.databasket()); ingo@1364: btn.addClickHandler(new ClickHandler() { christian@2983: @Override ingo@1364: public void onClick(ClickEvent evt) { ingo@1364: openDatacageWindow((MapOutputTab) getOutputTab()); ingo@1364: } ingo@1364: }); ingo@1364: ingo@1364: return btn; ingo@1364: } ingo@1400: ingo@1400: ingo@4329: protected Button createLegendControl() { ingo@4329: Button btn = new Button(MSG.legend()); ingo@4329: btn.addClickHandler(new ClickHandler() { ingo@4329: @Override ingo@4329: public void onClick(ClickEvent event) { ingo@4329: openLegendWindow(); ingo@4329: } ingo@4329: }); ingo@4329: ingo@4329: return btn; ingo@4329: } ingo@4329: ingo@4329: ingo@4329: protected void openLegendWindow() { ingo@4329: if (legendWindow == null) { ingo@4329: MapOutputTab tab = (MapOutputTab) getOutputTab(); ingo@4329: legendWindow = new LegendWindow(tab.getThemePanel().getThemeList()); ingo@4329: } ingo@4329: ingo@4329: legendWindow.show(); ingo@4329: } ingo@4329: ingo@4329: ingo@1400: protected ImgButton createGetFeatureInfo() { ingo@1404: MapOutputTab ot = (MapOutputTab) getOutputTab(); ingo@1400: if (ot == null) { ingo@1400: return null; ingo@1400: } ingo@1400: christian@2983: //ThemeList tl = ot.getCollection().getThemeList("floodmap"); ingo@1400: ingo@1400: getFeatureInfo = new GetFeatureInfo( ingo@1400: getMap(), ingo@1404: ot.getThemePanel(), ingo@1400: "gml"); ingo@1400: ingo@1400: EnableDisableCmd cmd = new EnableDisableCmd() { christian@2983: @Override ingo@1400: public void enable() { ingo@1400: activateDrawFeature(false); ingo@1400: activatePan(false); ingo@1400: activateZoomBox(false); ingo@1400: activateSelectFeature(false); ingo@2449: activateMeasureControl(false); ingo@1400: activateGetFeatureInfo(true); ingo@1400: } ingo@1400: christian@2983: @Override ingo@1400: public void disable() { ingo@1400: activateGetFeatureInfo(false); ingo@1400: } ingo@1400: }; ingo@1400: ingo@1400: ImgButton button = createToggleButton(MSG.getFeatureInfo(), cmd); ingo@1400: button.setTooltip(MSG.getFeatureInfoTooltip()); ingo@1400: ingo@1400: return button; ingo@1400: } ingo@1406: ingo@1406: christian@2983: protected Button createManageThemesControl() { christian@2983: Button btn = new Button(MSG.manageThemes()); christian@2983: btn.addClickHandler(new ClickHandler() { christian@2983: christian@2983: @Override christian@2983: public void onClick(ClickEvent event) { christian@2983: ((MapOutputTab)getOutputTab()).toogleThemePanel(); christian@2983: } christian@2983: }); christian@2983: return btn; christian@2983: } christian@2983: christian@2983: felix@4436: protected ImgButton createMapPrintSettingsControl() { felix@4436: ImgButton btn = createButton(MSG.printMapSettings(), new ClickHandler() { felix@4436: @Override felix@4436: public void onClick(ClickEvent event) { felix@4436: felix@4436: } felix@4436: }); felix@4436: return btn; felix@4436: } felix@4436: felix@4436: ingo@1406: protected ImgButton createWMSControl() { ingo@1418: final String srs = floodMap.getRiverProjection(); ingo@1418: ingo@1406: ImgButton add = createButton(MSG.addWMS(), new ClickHandler() { christian@2983: @Override ingo@1406: public void onClick(ClickEvent event) { ingo@1412: MapOutputTab ot = (MapOutputTab) getOutputTab(); ingo@1418: new ExternalWMSWindow(ot, srs).start(); ingo@1406: } ingo@1406: }); ingo@1406: ingo@1406: add.setTooltip(MSG.addWMSTooltip()); ingo@1406: ingo@1406: return add; ingo@1406: } ingo@1433: ingo@1433: ingo@1433: protected Label createEPSGLabel() { ingo@1433: Label epsgLabel = new Label(floodMap.getRiverProjection()); ingo@1433: ingo@1433: epsgLabel.setAlign(Alignment.RIGHT); ingo@1433: epsgLabel.setWidth(75); ingo@1433: ingo@1433: return epsgLabel; ingo@1433: } sascha@2507: sascha@2509: @Override sascha@2509: public void onMapZoom(MapZoomListener.MapZoomEvent e) { sascha@2509: printMapLink.setSource(getPrintUrl()); sascha@2509: } sascha@2509: sascha@2507: public String getPrintUrl() { sascha@2508: MapOutputTab ot = (MapOutputTab)getOutputTab(); sascha@2508: Collection collection = ot.getCollection(); sascha@2508: String uuid = collection.identifier(); sascha@2508: sascha@2508: String mapType = collection.getOutputModes().containsKey("floodmap") sascha@2508: ? "floodmap" sascha@2508: : "map"; sascha@2508: sascha@2508: String url = GWT.getModuleBaseURL() + "map-print?"; sascha@2508: sascha@2508: Map map = getMap(); sascha@2508: Bounds bounds = map.getExtent(); sascha@2508: sascha@2508: if (bounds != null) { sascha@2508: try { sascha@2508: double minX = bounds.getLowerLeftX(); sascha@2508: double maxX = bounds.getUpperRightX(); sascha@2508: double minY = bounds.getLowerLeftY(); sascha@2508: double maxY = bounds.getUpperRightY(); sascha@2508: url += "minx=" + minX + "&"; sascha@2508: url += "maxx=" + maxX + "&"; sascha@2508: url += "miny=" + minY + "&"; sascha@2508: url += "maxy=" + maxY + "&"; sascha@2508: } sascha@2508: catch (Exception e) { sascha@2905: // XXX: Ignore it. bounds.getXXX() throw sascha@2508: // exceptions when bound is invalid. :-/ sascha@2508: } sascha@2508: } sascha@2508: sascha@2508: url += "uuid=" + uuid + "&maptype=" + mapType; sascha@2508: sascha@2507: return url; sascha@2507: } ingo@4329: ingo@4329: ingo@4329: public void updateThemes(ThemeList themeList) { ingo@4329: if (legendWindow != null) { ingo@4329: legendWindow.update(themeList); ingo@4329: } ingo@4329: } ingo@799: } ingo@799: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :