JAL-1503 update version in GPL header
[jalview.git] / src / jalview / appletgui / SeqPanel.java
index 744a941..9e2c86f 100644 (file)
@@ -1,19 +1,20 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- * 
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.appletgui;
 
@@ -146,7 +147,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
     SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(
             seqCanvas.cursorY);
 
-    seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1() - 1);
+    seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1()) - 1;
     scrollToVisible();
   }
 
@@ -154,7 +155,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
   {
     seqCanvas.cursorX += dx;
     seqCanvas.cursorY += dy;
-    if (av.hasHiddenColumns() && !av.getColumnSelection().isVisible(seqCanvas.cursorX))
+    if (av.hasHiddenColumns()
+            && !av.getColumnSelection().isVisible(seqCanvas.cursorX))
     {
       int original = seqCanvas.cursorX - dx;
       int maxWidth = av.getAlignment().getWidth();
@@ -341,31 +343,35 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       keyboardNo1.append(value);
     }
   }
-
   int getKeyboardNo1()
   {
-    if (keyboardNo1 == null)
-      return 1;
-    else
+    try {
+    if (keyboardNo1 != null) 
     {
       int value = Integer.parseInt(keyboardNo1.toString());
       keyboardNo1 = null;
       return value;
     }
+    } catch (Exception x)
+    {}
+    keyboardNo1 = null;
+    return 1;
   }
 
   int getKeyboardNo2()
   {
-    if (keyboardNo2 == null)
-      return 1;
-    else
-    {
+    try {
+    if (keyboardNo2!=null){
       int value = Integer.parseInt(keyboardNo2.toString());
       keyboardNo2 = null;
       return value;
     }
+    } catch (Exception x)
+    {}
+    keyboardNo2 = null;
+    return 1;
   }
-
+  
   void setStatusMessage(SequenceI sequence, int res, int seq)
   {
     StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: "
@@ -458,7 +464,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
     SequenceI sequence = av.getAlignment().getSequenceAt(findSeq(evt));
     if (evt.getClickCount() > 1)
     {
-      if (av.getSelectionGroup()!=null && av.getSelectionGroup().getSize() == 1
+      if (av.getSelectionGroup() != null
+              && av.getSelectionGroup().getSize() == 1
               && av.getSelectionGroup().getEndRes()
                       - av.getSelectionGroup().getStartRes() < 2)
       {
@@ -581,8 +588,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
 
       y -= hgap;
 
-      seq = Math.min((y % cHeight) / av.getCharHeight(),
-              av.getAlignment().getHeight() - 1);
+      seq = Math.min((y % cHeight) / av.getCharHeight(), av.getAlignment()
+              .getHeight() - 1);
       if (seq < 0)
       {
         seq = -1;
@@ -590,8 +597,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
     }
     else
     {
-      seq = Math.min((y / av.getCharHeight()) + av.getStartSeq(),
-              av.getAlignment().getHeight() - 1);
+      seq = Math.min((y / av.getCharHeight()) + av.getStartSeq(), av
+              .getAlignment().getHeight() - 1);
       if (seq < 0)
       {
         seq = -1;
@@ -1036,7 +1043,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
 
     if (groupEditing)
     {
-      SequenceI[] groupSeqs = sg.getSequences(av.getHiddenRepSequences()).toArray(new SequenceI[0]);
+      SequenceI[] groupSeqs = sg.getSequences(av.getHiddenRepSequences())
+              .toArray(new SequenceI[0]);
 
       // drag to right
       if (insertGap)
@@ -1058,12 +1066,12 @@ public class SeqPanel extends Panel implements MouseMotionListener,
         {
           blank = true;
 
-          for (SequenceI gs:groupSeqs)
+          for (SequenceI gs : groupSeqs)
           {
             for (int j = 0; j < startres - lastres; j++)
             {
-              if (!jalview.util.Comparison.isGap(gs
-                      .getCharAt(fixedRight - j)))
+              if (!jalview.util.Comparison.isGap(gs.getCharAt(fixedRight
+                      - j)))
               {
                 blank = false;
                 break;
@@ -1080,8 +1088,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
         {
           if (sg.getSize() == av.getAlignment().getHeight())
           {
-            if ((av.hasHiddenColumns() && startres < av.getColumnSelection()
-                    .getHiddenBoundaryRight(startres)))
+            if ((av.hasHiddenColumns() && startres < av
+                    .getColumnSelection().getHiddenBoundaryRight(startres)))
             {
               endEditing();
               return;
@@ -1090,7 +1098,8 @@ public class SeqPanel extends Panel implements MouseMotionListener,
             int alWidth = av.getAlignment().getWidth();
             if (av.hasHiddenRows())
             {
-              int hwidth = av.getAlignment().getHiddenSequences().getWidth();
+              int hwidth = av.getAlignment().getHiddenSequences()
+                      .getWidth();
               if (hwidth > alWidth)
               {
                 alWidth = hwidth;
@@ -1115,7 +1124,7 @@ public class SeqPanel extends Panel implements MouseMotionListener,
         // / Are we able to delete?
         // ie are all columns blank?
 
-        for (SequenceI gs:groupSeqs)
+        for (SequenceI gs : groupSeqs)
         {
           for (int j = startres; j < lastres; j++)
           {
@@ -1258,16 +1267,16 @@ public class SeqPanel extends Panel implements MouseMotionListener,
     editCommand.appendEdit(EditCommand.DELETE_GAP, seq, blankColumn, 1,
             av.getAlignment(), true);
 
-    editCommand.appendEdit(EditCommand.INSERT_GAP, seq, j, 1, av.getAlignment(),
-            true);
+    editCommand.appendEdit(EditCommand.INSERT_GAP, seq, j, 1,
+            av.getAlignment(), true);
 
   }
 
   void deleteChar(int j, SequenceI[] seq, int fixedColumn)
   {
 
-    editCommand.appendEdit(EditCommand.DELETE_GAP, seq, j, 1, av.getAlignment(),
-            true);
+    editCommand.appendEdit(EditCommand.DELETE_GAP, seq, j, 1,
+            av.getAlignment(), true);
 
     editCommand.appendEdit(EditCommand.INSERT_GAP, seq, fixedColumn, 1,
             av.getAlignment(), true);
@@ -1411,27 +1420,17 @@ public class SeqPanel extends Panel implements MouseMotionListener,
       return;
     }
 
+    stretchGroup.recalcConservation(); // always do this - annotation has own
+                                       // state
     if (stretchGroup.cs != null)
     {
-      if (stretchGroup.cs instanceof ClustalxColourScheme)
-      {
-        ((ClustalxColourScheme) stretchGroup.cs).alignmentChanged(
-stretchGroup,av.getHiddenRepSequences());
-      }
-
-      if (stretchGroup.cs instanceof Blosum62ColourScheme
-              || stretchGroup.cs instanceof PIDColourScheme
-              || stretchGroup.cs.conservationApplied()
-              || stretchGroup.cs.getThreshold() > 0)
-      {
-        stretchGroup.recalcConservation();
-      }
+      stretchGroup.cs.alignmentChanged(stretchGroup,
+              av.getHiddenRepSequences());
 
       if (stretchGroup.cs.conservationApplied())
       {
         SliderPanel.setConservationSlider(ap, stretchGroup.cs,
                 stretchGroup.getName());
-        stretchGroup.recalcConservation();
       }
       else
       {
@@ -1516,7 +1515,8 @@ stretchGroup,av.getHiddenRepSequences());
       dragDirection = -1;
     }
 
-    while ((y != oldSeq) && (oldSeq > -1) && (y < av.getAlignment().getHeight()))
+    while ((y != oldSeq) && (oldSeq > -1)
+            && (y < av.getAlignment().getHeight()))
     {
       // This routine ensures we don't skip any sequences, as the
       // selection is quite slow.
@@ -1703,7 +1703,7 @@ stretchGroup,av.getHiddenRepSequences());
     if (av.getSelectionGroup() == null || !av.isSelectionGroupChanged(true))
     {
       SequenceGroup sgroup = null;
-      if (seqsel != null && seqsel.getSize()>0)
+      if (seqsel != null && seqsel.getSize() > 0)
       {
         if (av.getAlignment() == null)
         {
@@ -1733,7 +1733,9 @@ stretchGroup,av.getHiddenRepSequences());
       }
       repaint = av.isSelectionGroupChanged(true);
     }
-    if (copycolsel && (av.getColumnSelection() == null || !av.isColSelChanged(true)))
+    if (copycolsel
+            && (av.getColumnSelection() == null || !av
+                    .isColSelChanged(true)))
     {
       // the current selection is unset or from a previous message
       // so import the new colsel.
@@ -1758,8 +1760,10 @@ stretchGroup,av.getHiddenRepSequences());
       }
       repaint |= av.isColSelChanged(true);
     }
-    if (copycolsel && av.hasHiddenColumns()
-            && (av.getColumnSelection() == null || av.getColumnSelection().getHiddenColumns() == null))
+    if (copycolsel
+            && av.hasHiddenColumns()
+            && (av.getColumnSelection() == null || av.getColumnSelection()
+                    .getHiddenColumns() == null))
     {
       System.err.println("Bad things");
     }
@@ -1772,35 +1776,40 @@ stretchGroup,av.getHiddenRepSequences());
 
   /**
    * scroll to the given row/column - or nearest visible location
+   * 
    * @param row
    * @param column
    */
   public void scrollTo(int row, int column)
   {
-    
-    row = row<0 ? ap.av.startSeq : row;
-    column = column<0 ? ap.av.startRes : column;
+
+    row = row < 0 ? ap.av.startSeq : row;
+    column = column < 0 ? ap.av.startRes : column;
     ap.scrollTo(column, column, row, true, true);
   }
+
   /**
    * scroll to the given row - or nearest visible location
+   * 
    * @param row
    */
   public void scrollToRow(int row)
   {
-    
-    row = row<0 ? ap.av.startSeq : row;
+
+    row = row < 0 ? ap.av.startSeq : row;
     ap.scrollTo(ap.av.startRes, ap.av.startRes, row, true, true);
   }
+
   /**
    * scroll to the given column - or nearest visible location
+   * 
    * @param column
    */
   public void scrollToColumn(int column)
   {
-    
-    column = column<0 ? ap.av.startRes : column;
-    ap.scrollTo( column, column, ap.av.startSeq, true, true);
+
+    column = column < 0 ? ap.av.startRes : column;
+    ap.scrollTo(column, column, ap.av.startSeq, true, true);
   }
 
 }