Alignment compression on middle mouse button
[jalview.git] / src / jalview / gui / SeqPanel.java
index 933ca04..d081f16 100755 (executable)
@@ -65,6 +65,7 @@ public class SeqPanel extends JPanel implements MouseListener,
     SequenceGroup stretchGroup = null;\r
     boolean remove = false;\r
 \r
+    Point lastMousePress;\r
     boolean mouseWheelPressed = false;\r
     StringBuffer keyboardNo1;\r
     StringBuffer keyboardNo2;\r
@@ -409,6 +410,8 @@ public class SeqPanel extends JPanel implements MouseListener,
      */\r
     public void mousePressed(MouseEvent evt)\r
     {\r
+      lastMousePress = evt.getPoint();\r
+\r
       if (javax.swing.SwingUtilities.isMiddleMouseButton(evt))\r
       {\r
         mouseWheelPressed = true;\r
@@ -594,6 +597,54 @@ public class SeqPanel extends JPanel implements MouseListener,
      */\r
     public void mouseDragged(MouseEvent evt)\r
     {\r
+      if(mouseWheelPressed)\r
+      {\r
+        int oldWidth = av.charWidth;\r
+\r
+        //Which is bigger, left-right or up-down?\r
+        if( Math.abs(evt.getY()-lastMousePress.getY())\r
+          > Math.abs(evt.getX()-lastMousePress.getX()))\r
+     {\r
+       int fontSize = av.font.getSize();\r
+\r
+       if (evt.getY() < lastMousePress.getY() && av.charHeight > 1)\r
+       {\r
+         fontSize--;\r
+       }\r
+       else if (evt.getY() > lastMousePress.getY())\r
+       {\r
+         fontSize++;\r
+       }\r
+\r
+       av.setFont(new Font(av.font.getName(), av.font.getStyle(), fontSize));\r
+       av.charWidth = oldWidth;\r
+       ap.fontChanged();\r
+\r
+\r
+     }\r
+     else\r
+     {\r
+       if (evt.getX() < lastMousePress.getX() && av.charWidth > 1)\r
+       {\r
+         av.charWidth--;\r
+       }\r
+       else if (evt.getX() > lastMousePress.getX())\r
+       {\r
+         av.charWidth++;\r
+       }\r
+\r
+       ap.repaint();\r
+     }\r
+\r
+      FontMetrics fm = getFontMetrics(av.getFont());\r
+      av.showText = (fm.charWidth('M') < av.charWidth);\r
+               // && fm.getHeight()<av.charHeight\r
+\r
+        lastMousePress = evt.getPoint();\r
+\r
+        return;\r
+      }\r
+\r
       if (!editingSeqs)\r
       {\r
         doMouseDraggedDefineMode(evt);\r
@@ -1029,7 +1080,7 @@ public class SeqPanel extends JPanel implements MouseListener,
     public void mouseWheelMoved(MouseWheelEvent e)\r
     {\r
       e.consume();\r
-      if (mouseWheelPressed)\r
+     /* if (mouseWheelPressed)\r
       {\r
         Font font = av.getFont();\r
         int fontSize = font.getSize();\r
@@ -1038,10 +1089,13 @@ public class SeqPanel extends JPanel implements MouseListener,
         else if (fontSize > 1)\r
           fontSize--;\r
 \r
+\r
+\r
         av.setFont(new Font(font.getName(), font.getStyle(), fontSize));\r
+\r
         ap.fontChanged();\r
       }\r
-      else\r
+      else*/\r
       {\r
         if (e.getWheelRotation() > 0)\r
           ap.scrollUp(false);\r