X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=48651f99d0ea73aad6f0927a2a8f9d90c880455c;hb=52fd681e0f239e20df19fd7560d4b999104ba222;hp=536d178c160e19f685ddfcc61815c3c191a7d98d;hpb=1ab3860add27db695e8471783bf775ecff1fdae9;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 536d178..48651f9 100755 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -65,6 +65,7 @@ public class SeqPanel extends JPanel implements MouseListener, SequenceGroup stretchGroup = null; boolean remove = false; + Point lastMousePress; boolean mouseWheelPressed = false; StringBuffer keyboardNo1; StringBuffer keyboardNo2; @@ -235,25 +236,34 @@ public class SeqPanel extends JPanel implements MouseListener, endEditing(); - while (seqCanvas.cursorY < av.startSeq) + if(av.wrapAlignment) { - ap.scrollUp(true); + ap.scrollToWrappedVisible(seqCanvas.cursorX); } - while (seqCanvas.cursorY + 1 > av.endSeq) - { - ap.scrollUp(false); - } - while (seqCanvas.cursorX < av.startRes) - { - if(!ap.scrollRight(false)) - break; - } - while (seqCanvas.cursorX > av.endRes) + else { - if(!ap.scrollRight(true)) - break; + while (seqCanvas.cursorY < av.startSeq) + { + ap.scrollUp(true); + } + while (seqCanvas.cursorY + 1 > av.endSeq) + { + ap.scrollUp(false); + } + if (!av.wrapAlignment) + { + while (seqCanvas.cursorX < av.startRes) + { + if (!ap.scrollRight(false)) + break; + } + while (seqCanvas.cursorX > av.endRes) + { + if (!ap.scrollRight(true)) + break; + } + } } - setStatusMessage(av.alignment.getSequenceAt(seqCanvas.cursorY), seqCanvas.cursorX, seqCanvas.cursorY); @@ -400,6 +410,8 @@ public class SeqPanel extends JPanel implements MouseListener, */ public void mousePressed(MouseEvent evt) { + lastMousePress = evt.getPoint(); + if (javax.swing.SwingUtilities.isMiddleMouseButton(evt)) { mouseWheelPressed = true; @@ -585,6 +597,52 @@ public class SeqPanel extends JPanel implements MouseListener, */ public void mouseDragged(MouseEvent evt) { + if (mouseWheelPressed) + { + int oldWidth = av.charWidth; + + //Which is bigger, left-right or up-down? + if (Math.abs(evt.getY() - lastMousePress.getY()) + > Math.abs(evt.getX() - lastMousePress.getX())) + { + int fontSize = av.font.getSize(); + + if (evt.getY() < lastMousePress.getY() && av.charHeight > 1) + { + fontSize--; + } + else if (evt.getY() > lastMousePress.getY()) + { + fontSize++; + } + + av.setFont(new Font(av.font.getName(), av.font.getStyle(), fontSize)); + av.charWidth = oldWidth; + ap.fontChanged(); + + } + else + { + if (evt.getX() < lastMousePress.getX() && av.charWidth > 1) + { + av.charWidth--; + } + else if (evt.getX() > lastMousePress.getX()) + { + av.charWidth++; + } + + ap.repaint(); + } + + FontMetrics fm = getFontMetrics(av.getFont()); + av.validCharWidth = fm.charWidth('M') <= av.charWidth; + + lastMousePress = evt.getPoint(); + + return; + } + if (!editingSeqs) { doMouseDraggedDefineMode(evt); @@ -779,7 +837,7 @@ public class SeqPanel extends JPanel implements MouseListener, { //We can still insert gaps if the selectionGroup //contains all the sequences - sg.setEndRes(sg.getEndRes()+1+startres-lastres); + sg.setEndRes(sg.getEndRes()+startres-lastres); fixedRight = av.alignment.getWidth()+startres-lastres; } else @@ -1020,7 +1078,7 @@ public class SeqPanel extends JPanel implements MouseListener, public void mouseWheelMoved(MouseWheelEvent e) { e.consume(); - if (mouseWheelPressed) + /* if (mouseWheelPressed) { Font font = av.getFont(); int fontSize = font.getSize(); @@ -1029,10 +1087,13 @@ public class SeqPanel extends JPanel implements MouseListener, else if (fontSize > 1) fontSize--; + + av.setFont(new Font(font.getName(), font.getStyle(), fontSize)); + ap.fontChanged(); } - else + else*/ { if (e.getWheelRotation() > 0) ap.scrollUp(false);