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.

http://dive4elements.wald.intevation.org