JAL-1953 2.11.2 with Archeopteryx!
[jalview.git] / src / jalview / appletgui / OverviewPanel.java
index 334310f..685b8c9 100755 (executable)
@@ -32,11 +32,8 @@ import java.awt.CheckboxMenuItem;
 import java.awt.Cursor;
 import java.awt.Dimension;
 import java.awt.Frame;
-import java.awt.Image;
 import java.awt.Panel;
-import java.awt.Point;
 import java.awt.PopupMenu;
-import java.awt.Toolkit;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
 import java.awt.event.InputEvent;
@@ -47,14 +44,11 @@ import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
 import java.beans.PropertyChangeEvent;
 
-import javax.swing.ImageIcon;
+import javax.swing.SwingUtilities;
 
 public class OverviewPanel extends Panel implements Runnable,
         MouseMotionListener, MouseListener, ViewportListenerI
 {
-  protected Image dragImage = new ImageIcon(
-          getClass().getResource("/images/dragcursor.png")).getImage();
-
   private OverviewDimensions od;
 
   private OverviewCanvas oviewCanvas;
@@ -69,8 +63,6 @@ public class OverviewPanel extends Panel implements Runnable,
 
   private boolean draggingBox = false;
 
-  private Cursor dragCursor;
-
   public OverviewPanel(AlignmentPanel alPanel)
   {
     this.av = alPanel.av;
@@ -89,19 +81,6 @@ public class OverviewPanel extends Panel implements Runnable,
 
     av.getRanges().addPropertyChangeListener(this);
 
-    Toolkit toolkit = Toolkit.getDefaultToolkit();
-    Image image = toolkit.getImage("images/dragcursor.png");
-
-    if (Platform.isAMac())
-    {
-      dragCursor = toolkit.createCustomCursor(image, new Point(15, 15),
-              "drag cursor");
-    }
-    else
-    {
-      dragCursor = Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR);
-    }
-
     addComponentListener(new ComponentAdapter()
     {
 
@@ -137,48 +116,35 @@ public class OverviewPanel extends Panel implements Runnable,
   @Override
   public void mouseClicked(MouseEvent evt)
   {
-    if ((evt.getModifiers()
-            & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
+    if ((evt.getModifiersEx()
+            & InputEvent.BUTTON3_DOWN_MASK) == InputEvent.BUTTON3_DOWN_MASK)
     {
       showPopupMenu(evt);
     }
-    else if (od.isPositionInBox(evt.getX(), evt.getY()))
-    {
-      // display drag cursor at mouse position
-      this.getParent().setCursor(dragCursor);
-    }
-    else
-    {
-      // reset cursor
-      this.getParent()
-              .setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
-    }
   }
 
   @Override
   public void mouseMoved(MouseEvent evt)
   {
-    System.out.println(evt.getY());
     if (od.isPositionInBox(evt.getX(), evt.getY()))
     {
-      // display drag cursor at mouse position
-      this.getParent().setCursor(dragCursor);
+      this.getParent()
+              .setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
     }
     else
     {
-      // reset cursor
-      this.getParent()
-              .setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+      this.getParent().setCursor(
+              Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
     }
   }
 
   @Override
   public void mousePressed(MouseEvent evt)
   {
-    if ((evt.getModifiers()
-            & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
+    if ((evt.getModifiersEx()
+            & InputEvent.BUTTON3_DOWN_MASK) == InputEvent.BUTTON3_DOWN_MASK)
     {
-      if (!Platform.isAMac())
+      if (!Platform.isMac()) // BH was excluding JavaScript
       {
         showPopupMenu(evt);
       }
@@ -189,11 +155,17 @@ public class OverviewPanel extends Panel implements Runnable,
       // (wait to see if it's a drag instead)
       // otherwise update the viewport
       if (!od.isPositionInBox(evt.getX(), evt.getY()))
-      { 
-       draggingBox = false;
+      {
+        draggingBox = false;
+
+        // display drag cursor at mouse position
+        setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
+
         od.updateViewportFromMouse(evt.getX(), evt.getY(),
                 av.getAlignment().getHiddenSequences(),
                 av.getAlignment().getHiddenColumns());
+        getParent()
+                .setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
       }
       else
       {
@@ -208,37 +180,38 @@ public class OverviewPanel extends Panel implements Runnable,
   @Override
   public void mouseReleased(MouseEvent evt)
   {
+    draggingBox = false;
   }
 
   @Override
   public void mouseDragged(MouseEvent evt)
   {
-    if ((evt.getModifiers()
-            & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
+    if (Platform.isWinRightButton(evt))
     {
-      if (!Platform.isAMac())
-      {
-        showPopupMenu(evt);
-      }
+      showPopupMenu(evt);
+      return;
+    }
+
+    if (SwingUtilities.isRightMouseButton(evt))
+    {
+      return;
+    }
+
+    if (draggingBox)
+    {
+      // set the mouse position as a fixed point in the box
+      // and drag relative to that position
+      od.adjustViewportFromMouse(evt.getX(), evt.getY(),
+              av.getAlignment().getHiddenSequences(),
+              av.getAlignment().getHiddenColumns());
     }
     else
     {
-      if (draggingBox)
-      {
-        // set the mouse position as a fixed point in the box
-        // and drag relative to that position
-        od.adjustViewportFromMouse(evt.getX(), evt.getY(),
-                av.getAlignment().getHiddenSequences(),
-                av.getAlignment().getHiddenColumns());
-      }
-      else
-      {
-        od.updateViewportFromMouse(evt.getX(), evt.getY(),
-                av.getAlignment().getHiddenSequences(),
-                av.getAlignment().getHiddenColumns());
-      }
-      ap.paintAlignment(false, false);
+      od.updateViewportFromMouse(evt.getX(), evt.getY(),
+              av.getAlignment().getHiddenSequences(),
+              av.getAlignment().getHiddenColumns());
     }
+    ap.paintAlignment(false, false);
   }
 
   /**
@@ -271,7 +244,7 @@ public class OverviewPanel extends Panel implements Runnable,
 
       updateRunning = true;
     }
-    Thread thread = new Thread(this);
+    Thread thread = new Thread(this, "OverviewUpdate");
     thread.start();
     repaint();
     updateRunning = false;
@@ -365,6 +338,10 @@ public class OverviewPanel extends Panel implements Runnable,
     } finally
     {
       av = null;
+      if (oviewCanvas != null)
+      {
+        oviewCanvas.dispose();
+      }
       oviewCanvas = null;
       ap = null;
       od = null;