header updated
[jalview.git] / src / jalview / gui / SeqPanel.java
index 4135cb0..b1895ef 100755 (executable)
@@ -1,6 +1,6 @@
 /*\r
  * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
  *\r
  * This program is free software; you can redistribute it and/or\r
  * modify it under the terms of the GNU General Public License\r
@@ -147,7 +147,6 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
    int findSeq(MouseEvent evt)\r
    {\r
-\r
      int seq = 0;\r
      int y = evt.getY();\r
 \r
@@ -162,11 +161,13 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
          y -= hgap;\r
 \r
-       seq = ( (y % cHeight) / av.getCharHeight());\r
+       seq = Math.min( (y % cHeight) / av.getCharHeight(),\r
+                       av.alignment.getHeight() -1);\r
      }\r
      else\r
      {\r
-       seq = (y / av.getCharHeight()) + av.getStartSeq();\r
+       seq = Math.min( (y / av.getCharHeight()) + av.getStartSeq(),\r
+                       av.alignment.getHeight() -1);\r
      }\r
 \r
      return seq;\r
@@ -820,12 +821,10 @@ public class SeqPanel extends JPanel implements MouseListener,
             {\r
               if(startres>=y2)\r
               {\r
-                System.out.println("left of line");\r
                 fixedLeft = y2;\r
               }\r
               else\r
-             {\r
-               System.out.println("right of line");\r
+              {\r
                fixedRight = y2 - 1;\r
              }\r
             }\r
@@ -876,12 +875,26 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
             if (!blank)\r
             {\r
-              if(sg.getSize(false) == av.alignment.getHeight())\r
+              if(sg.getSize(false) == av.alignment.getHeight()  )\r
               {\r
+                if((av.hasHiddenColumns\r
+                    && startres<av.getColumnSelection().getHiddenBoundaryRight(startres)))\r
+                {\r
+                  endEditing();\r
+                  return;\r
+                }\r
+\r
+                int alWidth = av.alignment.getWidth();\r
+                if(av.hasHiddenRows)\r
+                {\r
+                  int hwidth = av.alignment.getHiddenSequences().getWidth();\r
+                  if(hwidth>alWidth)\r
+                    alWidth = hwidth;\r
+                }\r
                 //We can still insert gaps if the selectionGroup\r
                 //contains all the sequences\r
                 sg.setEndRes(sg.getEndRes()+startres-lastres);\r
-                fixedRight = av.alignment.getWidth()+startres-lastres;\r
+                fixedRight = alWidth+startres-lastres;\r
               }\r
               else\r
               {\r
@@ -964,19 +977,6 @@ public class SeqPanel extends JPanel implements MouseListener,
             {\r
               if (fixedColumns && fixedRight != -1)\r
               {\r
-                /*if (sg!=null &&\r
-                    sg.getStartRes() == 0\r
-                    && sg.getEndRes()  == fixedRight\r
-                    && !jalview.util.Comparison.isGap(seq.getCharAt(fixedRight)))\r
-                {\r
-                  System.out.println("still here");\r
-                  //Single sequence edit, whole sequence selected,\r
-                  //extend the selection group\r
-                  sg.setEndRes(av.alignment.getWidth() -1 + startres - lastres);\r
-                  fixedColumns = false;\r
-                  insertChar(j, seq);\r
-                }\r
-                else*/\r
                   insertChar(j, seq, fixedRight);\r
               }\r
               else\r
@@ -1033,6 +1033,7 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
       if (blankColumn <= j)\r
       {\r
+        blankColumn = fixedColumn;\r
         endEditing();\r
         return;\r
       }\r
@@ -1242,14 +1243,6 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
         }\r
 \r
-        if (av.cursorMode)\r
-        {\r
-          seqCanvas.cursorX = findRes(evt);\r
-          seqCanvas.cursorY = findSeq(evt);\r
-          seqCanvas.repaint();\r
-          return;\r
-        }\r
-\r
 \r
         if (javax.swing.SwingUtilities.isRightMouseButton(evt))\r
         {\r
@@ -1270,9 +1263,18 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
             jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(ap, null, links);\r
             pop.show(this, evt.getX(), evt.getY());\r
+            return;\r
+        }\r
 \r
+        if (av.cursorMode)\r
+        {\r
+          seqCanvas.cursorX = findRes(evt);\r
+          seqCanvas.cursorY = findSeq(evt);\r
+          seqCanvas.repaint();\r
+          return;\r
         }\r
-        else if (stretchGroup == null)\r
+\r
+        if (stretchGroup == null)\r
         {\r
           //Only if left mouse button do we want to change group sizes\r
 \r
@@ -1371,11 +1373,6 @@ public class SeqPanel extends JPanel implements MouseListener,
             return;\r
        }\r
 \r
-\r
-        if(y > av.alignment.getHeight())\r
-        {\r
-          y = av.alignment.getHeight() -1;\r
-        }\r
         if(res> av.alignment.getWidth())\r
         {\r
           res = av.alignment.getWidth()-1;\r