X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=d39f93710312c916df8bcbbb04b64bdd1e8610cc;hb=373ea2f39547c5432fc2922e5d958e1955de14e8;hp=20ec5e4f74f38f55a9600eb6dfdca6ac8fce12c9;hpb=23deaf6a1371e81b2e6547d5df697bf60e442e84;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 20ec5e4..d39f937 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -137,7 +137,7 @@ public class SeqPanel extends JPanel MousePos o = (MousePos) obj; boolean b = (column == o.column && seqIndex == o.seqIndex && annotationIndex == o.annotationIndex); - // System.out.println(obj + (b ? "= " : "!= ") + this); + // jalview.bin.Console.outPrintln(obj + (b ? "= " : "!= ") + this); return b; } @@ -343,6 +343,14 @@ public class SeqPanel extends JPanel } /** + * @param evt + * @return absolute column in alignment nearest to the mouse pointer + */ + int findAlignmentColumn(MouseEvent evt) + { + return findNearestColumn(evt,true); + } + /** * Returns the aligned sequence position (base 0) at the mouse position, or * the closest visible one *

@@ -354,6 +362,15 @@ public class SeqPanel extends JPanel */ int findColumn(MouseEvent evt) { + return findNearestColumn(evt, false); + } + + /** + * @param nearestColumn when false returns negative values for out of bound positions - -1 for scale left/right, <-1 if far to right + * @return nearest absolute column to mouse pointer + */ + private int findNearestColumn(MouseEvent evt, boolean nearestColumn) + { int res = 0; int x = evt.getX(); @@ -377,7 +394,11 @@ public class SeqPanel extends JPanel if (x < 0) { // mouse is over left scale - return -1; + if (!nearestColumn) { + return -1; + } else { + x = 0; + } } int cwidth = seqCanvas.getWrappedCanvasWidth(this.getWidth()); @@ -387,8 +408,12 @@ public class SeqPanel extends JPanel } if (x >= cwidth * charWidth) { - // mouse is over right scale - return -1; + if (!nearestColumn) { + // mouse is over right scale + return -1; + } else { + x = cwidth*charWidth -1; + } } wrappedBlock = y / cHeight; @@ -405,9 +430,16 @@ public class SeqPanel extends JPanel * rather than right-hand gutter */ x = Math.min(x, seqCanvas.getX() + seqCanvas.getWidth()); + if (nearestColumn) + { + x = Math.max(x, 0); + } + res = (x / charWidth) + startRes; res = Math.min(res, av.getRanges().getEndRes()); + } + if (av.hasHiddenColumns()) { @@ -881,7 +913,7 @@ public class SeqPanel extends JPanel if (lastMessage == null || !lastMessage.equals(tmp)) { - // System.err.println("mouseOver Sequence: "+tmp); + // jalview.bin.Console.errPrintln("mouseOver Sequence: "+tmp); ssm.mouseOverSequence(sequence, index, pos, av); } lastMessage = tmp; @@ -1006,7 +1038,7 @@ public class SeqPanel extends JPanel @Override public void updateColours(SequenceI seq, int index) { - System.out.println("update the seqPanel colours"); + jalview.bin.Console.outPrintln("update the seqPanel colours"); // repaint(); } @@ -2861,7 +2893,7 @@ public class SeqPanel extends JPanel if (copycolsel && av.hasHiddenColumns() && (av.getAlignment().getHiddenColumns() == null)) { - System.err.println("Bad things"); + jalview.bin.Console.errPrintln("Bad things"); } if (repaint) // always true! { @@ -2931,6 +2963,8 @@ public class SeqPanel extends JPanel * if hidden column selection has changed */ ap.paintAlignment(hiddenChanged, hiddenChanged); + // propagate any selection changes + PaintRefresher.Refresh(ap, av.getSequenceSetId()); return true; }