Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / android-libraries / achartengine / src / org / achartengine / TouchHandlerOld.java
diff --git a/android-libraries/achartengine/src/org/achartengine/TouchHandlerOld.java b/android-libraries/achartengine/src/org/achartengine/TouchHandlerOld.java
new file mode 100644 (file)
index 0000000..38b4f22
--- /dev/null
@@ -0,0 +1,137 @@
+/**\r
+ * Copyright (C) 2009 - 2012 SC 4ViewSoft SRL\r
+ *  \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *  \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ *  \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+package org.achartengine;\r
+\r
+import org.achartengine.chart.AbstractChart;\r
+import org.achartengine.chart.RoundChart;\r
+import org.achartengine.chart.XYChart;\r
+import org.achartengine.renderer.DefaultRenderer;\r
+import org.achartengine.tools.Pan;\r
+import org.achartengine.tools.PanListener;\r
+import org.achartengine.tools.ZoomListener;\r
+\r
+import android.graphics.RectF;\r
+import android.view.MotionEvent;\r
+\r
+/**\r
+ * A handler implementation for touch events for older platforms.\r
+ */\r
+public class TouchHandlerOld implements ITouchHandler {\r
+  /** The chart renderer. */\r
+  private DefaultRenderer mRenderer;\r
+  /** The old x coordinate. */\r
+  private float oldX;\r
+  /** The old y coordinate. */\r
+  private float oldY;\r
+  /** The zoom buttons rectangle. */\r
+  private RectF zoomR = new RectF();\r
+  /** The pan tool. */\r
+  private Pan mPan;\r
+  /** The graphical view. */\r
+  private GraphicalView graphicalView;\r
+\r
+  /**\r
+   * Creates an implementation of the old version of the touch handler.\r
+   * \r
+   * @param view the graphical view\r
+   * @param chart the chart to be drawn\r
+   */\r
+  public TouchHandlerOld(GraphicalView view, AbstractChart chart) {\r
+    graphicalView = view;\r
+    zoomR = graphicalView.getZoomRectangle();\r
+    if (chart instanceof XYChart) {\r
+      mRenderer = ((XYChart) chart).getRenderer();\r
+    } else {\r
+      mRenderer = ((RoundChart) chart).getRenderer();\r
+    }\r
+    if (mRenderer.isPanEnabled()) {\r
+      mPan = new Pan(chart);\r
+    }\r
+  }\r
+\r
+  public boolean handleTouch(MotionEvent event) {\r
+    int action = event.getAction();\r
+    if (mRenderer != null && action == MotionEvent.ACTION_MOVE) {\r
+      if (oldX >= 0 || oldY >= 0) {\r
+        float newX = event.getX();\r
+        float newY = event.getY();\r
+        if (mRenderer.isPanEnabled()) {\r
+          mPan.apply(oldX, oldY, newX, newY);\r
+        }\r
+        oldX = newX;\r
+        oldY = newY;\r
+        graphicalView.repaint();\r
+        return true;\r
+      }\r
+    } else if (action == MotionEvent.ACTION_DOWN) {\r
+      oldX = event.getX();\r
+      oldY = event.getY();\r
+      if (mRenderer != null && mRenderer.isZoomEnabled() && zoomR.contains(oldX, oldY)) {\r
+        if (oldX < zoomR.left + zoomR.width() / 3) {\r
+          graphicalView.zoomIn();\r
+        } else if (oldX < zoomR.left + zoomR.width() * 2 / 3) {\r
+          graphicalView.zoomOut();\r
+        } else {\r
+          graphicalView.zoomReset();\r
+        }\r
+        return true;\r
+      }\r
+    } else if (action == MotionEvent.ACTION_UP) {\r
+      oldX = 0;\r
+      oldY = 0;\r
+    }\r
+    return !mRenderer.isClickEnabled();\r
+  }\r
+\r
+  /**\r
+   * Adds a new zoom listener.\r
+   * \r
+   * @param listener zoom listener\r
+   */\r
+  public void addZoomListener(ZoomListener listener) {\r
+  }\r
+\r
+  /**\r
+   * Removes a zoom listener.\r
+   * \r
+   * @param listener zoom listener\r
+   */\r
+  public void removeZoomListener(ZoomListener listener) {\r
+  }\r
+\r
+  /**\r
+   * Adds a new pan listener.\r
+   * \r
+   * @param listener pan listener\r
+   */\r
+  public void addPanListener(PanListener listener) {\r
+    if (mPan != null) {\r
+      mPan.addPanListener(listener);\r
+    }\r
+  }\r
+\r
+  /**\r
+   * Removes a pan listener.\r
+   * \r
+   * @param listener pan listener\r
+   */\r
+  public void removePanListener(PanListener listener) {\r
+    if (mPan != null) {\r
+      mPan.removePanListener(listener);\r
+    }\r
+  }\r
+\r
+}
\ No newline at end of file