Mercurial > dive4elements > river
diff flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartOutputTab.java @ 552:6050d49eaba3
Adapted the ChartInfoService to return more information about charts than before. In addition, the PanControl is added to the chart toolbar.
flys-client/trunk@2066 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 07 Jun 2011 13:26:24 +0000 |
parents | e74bf6bfeeb6 |
children | 33b86f5b1168 |
line wrap: on
line diff
--- a/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartOutputTab.java Tue Jun 07 13:07:27 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/ui/chart/ChartOutputTab.java Tue Jun 07 13:26:24 2011 +0000 @@ -17,11 +17,15 @@ import com.smartgwt.client.widgets.events.ResizedHandler; import de.intevation.flys.client.shared.Transform2D; +import de.intevation.flys.client.shared.model.Axis; +import de.intevation.flys.client.shared.model.ChartInfo; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.OutputMode; import de.intevation.flys.client.client.Config; import de.intevation.flys.client.client.event.OutputParameterChangeEvent; import de.intevation.flys.client.client.event.OutputParameterChangeHandler; +import de.intevation.flys.client.client.event.PanEvent; +import de.intevation.flys.client.client.event.PanHandler; import de.intevation.flys.client.client.event.ZoomEvent; import de.intevation.flys.client.client.event.ZoomHandler; import de.intevation.flys.client.client.services.ChartInfoService; @@ -35,7 +39,8 @@ */ public class ChartOutputTab extends OutputTab -implements ResizedHandler, OutputParameterChangeHandler, ZoomHandler +implements ResizedHandler, OutputParameterChangeHandler, ZoomHandler, + PanHandler { public static final int DEFAULT_CHART_WIDTH = 600; public static final int DEFAULT_CHART_HEIGHT = 500; @@ -46,6 +51,11 @@ /** The service that is used to fetch chart information.*/ protected ChartInfoServiceAsync info = GWT.create(ChartInfoService.class); + + /** The ChartInfo object that provides information about the current + * chart.*/ + protected ChartInfo chartInfo; + /** The transformer used to transform image pixels into chart coordinates.*/ protected Transform2D transformer; @@ -163,12 +173,44 @@ } + public void onPan(PanEvent event) { + int[] start = event.getStartPos(); + int[] end = event.getEndPos(); + + double[] startPos = transformer.transform(start[0], start[1]); + double[] endPos = transformer.transform(end[0], end[1]); + + double diffX = startPos[0] - endPos[0]; + double diffY = startPos[1] - endPos[1]; + + panTo(diffX, diffY); + } + + + /** + * This method pans to chart with a given factor. + */ + public void panTo(double diffX, double diffY) { + Axis xAxis = chartInfo.getXAxis(0); + Axis yAxis = chartInfo.getYAxis(0); + + xrange[0] = xAxis.getFrom() + diffX; + xrange[1] = xAxis.getTo() + diffX; + yrange[0] = yAxis.getFrom() + diffY; + yrange[1] = yAxis.getTo() + diffY; + + updateTransformer(); + updateChartPanel(); + } + + public void resetRanges() { xrange[0] = 0; xrange[1] = 0; yrange[0] = 0; yrange[1] = 0; + updateTransformer(); updateChartPanel(); } @@ -191,6 +233,7 @@ yrange[0] -= yadd; yrange[1] += yadd; + updateTransformer(); updateChartPanel(); } @@ -209,13 +252,13 @@ locale, mode.getName(), getChartAttributes(), - new AsyncCallback<Transform2D>() { + new AsyncCallback<ChartInfo>() { public void onFailure(Throwable caught) { GWT.log("ERROR: " + caught.getMessage()); } - public void onSuccess(Transform2D transformer) { - setTransformer(transformer); + public void onSuccess(ChartInfo chartInfo) { + setChartInfo(chartInfo); } }); } @@ -248,6 +291,17 @@ } + public ChartInfo getChartInfo() { + return chartInfo; + } + + + protected void setChartInfo(ChartInfo chartInfo) { + this.chartInfo = chartInfo; + setTransformer(chartInfo.getTransformer()); + } + + /** * Returns the Transform2D object used to transform image coordinates into * chart coordinates.