Remove edit menu if no group defined
[jalview.git] / src / jalview / gui / SeqPanel.java
index 9b2f5f4..48651f9 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
@@ -235,25 +236,34 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
 \r
       endEditing();\r
-      while (seqCanvas.cursorY < av.startSeq)\r
+      if(av.wrapAlignment)\r
       {\r
-        ap.scrollUp(true);\r
+        ap.scrollToWrappedVisible(seqCanvas.cursorX);\r
       }\r
-      while (seqCanvas.cursorY + 1 > av.endSeq)\r
-      {\r
-        ap.scrollUp(false);\r
-      }\r
-      while (seqCanvas.cursorX < av.startRes)\r
-      {\r
-        if(!ap.scrollRight(false))\r
-          break;\r
-      }\r
-      while (seqCanvas.cursorX > av.endRes)\r
+      else\r
       {\r
-        if(!ap.scrollRight(true))\r
-          break;\r
+        while (seqCanvas.cursorY < av.startSeq)\r
+        {\r
+          ap.scrollUp(true);\r
+        }\r
+        while (seqCanvas.cursorY + 1 > av.endSeq)\r
+        {\r
+          ap.scrollUp(false);\r
+        }\r
+        if (!av.wrapAlignment)\r
+        {\r
+          while (seqCanvas.cursorX < av.startRes)\r
+          {\r
+            if (!ap.scrollRight(false))\r
+              break;\r
+          }\r
+          while (seqCanvas.cursorX > av.endRes)\r
+          {\r
+            if (!ap.scrollRight(true))\r
+              break;\r
+          }\r
+        }\r
       }\r
-\r
       setStatusMessage(av.alignment.getSequenceAt(seqCanvas.cursorY),\r
                        seqCanvas.cursorX, seqCanvas.cursorY);\r
 \r
@@ -400,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
@@ -585,6 +597,52 @@ 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
+        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.validCharWidth = fm.charWidth('M') <= av.charWidth;\r
+\r
+        lastMousePress = evt.getPoint();\r
+\r
+        return;\r
+      }\r
+\r
       if (!editingSeqs)\r
       {\r
         doMouseDraggedDefineMode(evt);\r
@@ -1020,7 +1078,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
@@ -1029,10 +1087,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