X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FOverviewPanel.java;fp=src%2Fjalview%2Fgui%2FOverviewPanel.java;h=c81ac2f5f280c287b7d33c63662baa6c23820ac2;hb=4a9a2fc8a1b1a66b21e66429083f27a6fc8541b9;hp=7a4456e396bcac52d4e460159f60e100178e1d3e;hpb=ddbcb3e33e1a8d4c644472cfa3d28b193da97064;p=jalview.git diff --git a/src/jalview/gui/OverviewPanel.java b/src/jalview/gui/OverviewPanel.java index 7a4456e..c81ac2f 100755 --- a/src/jalview/gui/OverviewPanel.java +++ b/src/jalview/gui/OverviewPanel.java @@ -28,6 +28,7 @@ import jalview.viewmodel.OverviewDimensionsShowHidden; import jalview.viewmodel.ViewportListenerI; import java.awt.BorderLayout; +import java.awt.Cursor; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -65,6 +66,8 @@ public class OverviewPanel extends JPanel implements Runnable, private boolean showHidden = true; + private boolean draggingBox = false; + /** * Creates a new OverviewPanel object. * @@ -109,9 +112,35 @@ public class OverviewPanel extends JPanel implements Runnable, { if (!SwingUtilities.isRightMouseButton(evt)) { - od.updateViewportFromMouse(evt.getX(), evt.getY(), av + 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()); + } + } + } + + @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)); } } }); @@ -131,9 +160,31 @@ public class OverviewPanel extends JPanel implements Runnable, else // if (!av.getWrapAlignment()) { - od.updateViewportFromMouse(evt.getX(), evt.getY(), av - .getAlignment().getHiddenSequences(), av.getAlignment() - .getHiddenColumns()); + 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) + { + if (draggingBox) + { + draggingBox = false; } }