destroy destroyed
[jalview.git] / src / jalview / commands / RemoveGapsCommand.java
index 9343ec2..ccc8008 100644 (file)
@@ -1,7 +1,8 @@
 package jalview.commands;\r
-  /*\r
+\r
+/*\r
  * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 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
@@ -20,67 +21,80 @@ package jalview.commands;
 \r
 import jalview.datamodel.*;\r
 \r
-public class RemoveGapsCommand  extends EditCommand\r
+public class RemoveGapsCommand\r
+    extends EditCommand\r
 {\r
-  public RemoveGapsCommand(  String description,\r
-                             SequenceI[] seqs, char gapChar)\r
+  public RemoveGapsCommand(String description,\r
+                           SequenceI[] seqs, AlignmentI al)\r
   {\r
     this.description = description;\r
     int width = 0;\r
-    for(int i=0; i<seqs.length; i++)\r
-      if(seqs[i].getLength()>width)\r
+    for (int i = 0; i < seqs.length; i++)\r
+    {\r
+      if (seqs[i].getLength() > width)\r
+      {\r
         width = seqs[i].getLength();\r
+      }\r
+    }\r
 \r
-    findGaps(seqs, 0, width, gapChar);\r
+    findGaps(seqs, 0, width, al);\r
   }\r
 \r
-  public RemoveGapsCommand(  String description,\r
-                             SequenceI[] seqs,\r
-                             int start, int end, char gapChar)\r
+  public RemoveGapsCommand(String description,\r
+                           SequenceI[] seqs,\r
+                           int start, int end, AlignmentI al)\r
   {\r
     this.description = description;\r
-    findGaps(seqs, start, end, gapChar);\r
+    findGaps(seqs, start, end, al);\r
   }\r
 \r
-  void findGaps(SequenceI [] seqs, int start, int end, char gapChar)\r
+  void findGaps(SequenceI[] seqs, int start, int end, AlignmentI al)\r
   {\r
 \r
     int startCol = -1, endCol = -1;\r
     int deletedCols = 0;\r
 \r
+    int j, jSize;\r
+\r
     edits = new Edit[0];\r
 \r
     boolean delete = true;\r
-    char [] sequence;\r
-    for(int s=0; s<seqs.length; s++)\r
+    char[] sequence;\r
+\r
+    for (int s = 0; s < seqs.length; s++)\r
     {\r
       deletedCols = 0;\r
       startCol = -1;\r
       endCol = -1;\r
-      sequence = seqs[s].getSequence().toCharArray();\r
-      for (int i = start; i < end; i++)\r
+      sequence = seqs[s].getSequence(start, end + 1);\r
+\r
+      jSize = sequence.length;\r
+      for (j = 0; j < jSize; j++)\r
       {\r
         delete = true;\r
 \r
-        if (!jalview.util.Comparison.isGap(sequence[i]))\r
+        if (!jalview.util.Comparison.isGap(sequence[j]))\r
         {\r
           if (delete)\r
-            endCol = i;\r
+          {\r
+            endCol = j;\r
+          }\r
 \r
           delete = false;\r
         }\r
 \r
         if (delete && startCol == -1)\r
         {\r
-          startCol = i;\r
+          startCol = j;\r
         }\r
 \r
         if (!delete && startCol > -1)\r
         {\r
-          this.appendEdit(DELETE_GAP, new SequenceI[]{seqs[s]},\r
-                          startCol - deletedCols,\r
+          this.appendEdit(DELETE_GAP, new SequenceI[]\r
+                          {seqs[s]},\r
+                          start + startCol - deletedCols,\r
                           endCol - startCol,\r
-                          gapChar,\r
+                          al,\r
                           false);\r
 \r
           deletedCols += (endCol - startCol);\r
@@ -90,16 +104,11 @@ public class RemoveGapsCommand  extends EditCommand
       }\r
       if (delete && startCol > -1)\r
       {\r
-        int width = end - endCol;\r
-\r
-        if (endCol == -1)\r
-          width = end - start + 1;\r
-\r
-        //This is the end of the region.\r
-        this.appendEdit(DELETE_GAP, new SequenceI[]{seqs[s]},\r
-                        startCol - deletedCols,\r
-                        width,\r
-                        gapChar,\r
+        this.appendEdit(DELETE_GAP, new SequenceI[]\r
+                        {seqs[s]},\r
+                        start + startCol - deletedCols,\r
+                        jSize - startCol,\r
+                        al,\r
                         false);\r
       }\r
 \r