X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FOverviewPanel.java;fp=src%2Fjalview%2Fappletgui%2FOverviewPanel.java;h=456a38ca6d7ee26c391a66ba7f36f46936eddb45;hb=4a9a2fc8a1b1a66b21e66429083f27a6fc8541b9;hp=ccdfee19d01e9e83148577e723c04abd8f0f7408;hpb=ddbcb3e33e1a8d4c644472cfa3d28b193da97064;p=jalview.git diff --git a/src/jalview/appletgui/OverviewPanel.java b/src/jalview/appletgui/OverviewPanel.java index ccdfee1..456a38c 100755 --- a/src/jalview/appletgui/OverviewPanel.java +++ b/src/jalview/appletgui/OverviewPanel.java @@ -29,6 +29,7 @@ import jalview.viewmodel.ViewportListenerI; import java.awt.BorderLayout; import java.awt.CheckboxMenuItem; +import java.awt.Cursor; import java.awt.Dimension; import java.awt.Panel; import java.awt.PopupMenu; @@ -57,6 +58,8 @@ public class OverviewPanel extends Panel implements Runnable, private boolean updateRunning = false; + private boolean draggingBox = false; + public OverviewPanel(AlignmentPanel alPanel) { this.av = alPanel.av; @@ -118,28 +121,62 @@ public class OverviewPanel extends Panel implements Runnable, @Override public void mouseMoved(MouseEvent evt) { + if (od.isPositionInBox(evt.getX(), evt.getY())) + { + // display drag cursor at mouse position + setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); + } + else + { + // reset cursor + setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } } @Override public void mousePressed(MouseEvent evt) { - mouseAction(evt); + if ((evt.getModifiers() + & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) + { + if (!Platform.isAMac()) + { + showPopupMenu(evt); + } + } + else + { + if (!od.isPositionInBox(evt.getX(), evt.getY())) + { + // don't do anything if the mouse press is in the overview's box + // (wait to see if it's a drag instead) + // otherwise update the viewport + od.updateViewportFromMouse(evt.getX(), evt.getY(), + av.getAlignment().getHiddenSequences(), + av.getAlignment().getHiddenColumns()); + } + else + { + draggingBox = true; + od.setDragPoint(evt.getX(), evt.getY(), + av.getAlignment().getHiddenSequences(), + av.getAlignment().getHiddenColumns()); + } + } } @Override public void mouseReleased(MouseEvent evt) { - mouseAction(evt); + if (draggingBox) + { + draggingBox = false; + } } @Override public void mouseDragged(MouseEvent evt) { - mouseAction(evt); - } - - private void mouseAction(MouseEvent evt) - { if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) { if (!Platform.isAMac()) @@ -149,8 +186,20 @@ public class OverviewPanel extends Panel implements Runnable, } else { - od.updateViewportFromMouse(evt.getX(), evt.getY(), av.getAlignment() - .getHiddenSequences(), av.getAlignment().getHiddenColumns()); + 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); } }