Alignment compression on middle mouse button
authoramwaterhouse <Andrew Waterhouse>
Fri, 21 Apr 2006 11:19:13 +0000 (11:19 +0000)
committeramwaterhouse <Andrew Waterhouse>
Fri, 21 Apr 2006 11:19:13 +0000 (11:19 +0000)
src/jalview/gui/ScalePanel.java
src/jalview/gui/SeqCanvas.java
src/jalview/gui/SeqPanel.java

index 8f32d8c..e9082b8 100755 (executable)
@@ -353,16 +353,27 @@ public class ScalePanel extends JPanel implements MouseMotionListener, MouseList
             scalestartx += 5;\r
         }\r
 \r
+        String string;\r
+        int maxX=0;\r
+\r
         for (int i = scalestartx; i < endx; i += 5)\r
         {\r
             if ((i % 10) == 0)\r
             {\r
-                gg.drawString(String.valueOf(av.getColumnSelection().adjustForHiddenColumns(i)),\r
-                    (i - startx - 1) * av.charWidth, y);\r
-                gg.drawLine((int) (((i - startx - 1) * av.charWidth) +\r
-                    (av.charWidth / 2)), y + 2,\r
-                    (int) (((i - startx - 1) * av.charWidth) +\r
-                    (av.charWidth / 2)), y + (fm.getDescent() * 2));\r
+                string = String.valueOf(av.getColumnSelection().adjustForHiddenColumns(i));\r
+                if ( (i - startx - 1) * av.charWidth > maxX)\r
+                {\r
+                  gg.drawString(string,\r
+                                (i - startx - 1) * av.charWidth, y);\r
+                  maxX = (i - startx + 1) * av.charWidth + fm.stringWidth(string);\r
+                }\r
+\r
+                gg.drawLine( (int) ( ( (i - startx - 1) * av.charWidth) +\r
+                                    (av.charWidth / 2)), y + 2,\r
+                            (int) ( ( (i - startx - 1) * av.charWidth) +\r
+                                   (av.charWidth / 2)),\r
+                            y + (fm.getDescent() * 2));\r
+\r
             }\r
             else\r
             {\r
index d9f7ebb..27601ca 100755 (executable)
@@ -591,14 +591,11 @@ public class SeqCanvas extends JComponent
 \r
     //int startRes, int endRes, int startSeq, int endSeq, int x, int y,\r
     // int x1, int x2, int y1, int y2, int startx, int starty,\r
-    void draw(Graphics g1,\r
+    void draw(Graphics g,\r
                    int startRes, int endRes,\r
                    int startSeq, int endSeq,\r
                    int offset)\r
    {\r
-\r
-\r
-      Graphics2D g = (Graphics2D) g1;\r
       g.setFont(av.getFont());\r
       sr.prepare(g, av.renderGaps);\r
 \r
@@ -616,7 +613,7 @@ public class SeqCanvas extends JComponent
 \r
             if (av.showSequenceFeatures)\r
             {\r
-                fr.drawSequence(g1, nextSeq, startRes, endRes,\r
+                fr.drawSequence(g, nextSeq, startRes, endRes,\r
                     offset + ((i - startSeq) * av.charHeight));\r
             }\r
 \r
@@ -643,6 +640,17 @@ public class SeqCanvas extends JComponent
             }\r
           }\r
 \r
+          if(av.getSelectionGroup()!=null || av.alignment.getGroups().size()>0)\r
+            drawGroupsBoundaries(g, startRes, endRes, startSeq, endSeq, offset);\r
+\r
+   }\r
+\r
+   void drawGroupsBoundaries(Graphics g1,\r
+                   int startRes, int endRes,\r
+                   int startSeq, int endSeq,\r
+                   int offset)\r
+   {\r
+       Graphics2D g = (Graphics2D)g1;\r
         //\r
         /////////////////////////////////////\r
         // Now outline any areas if necessary\r
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