Merge branch 'hotfix/JAL-1521' into Release_2_8_2_Branch
[jalview.git] / src / jalview / io / FormatAdapter.java
index dc0526d..c2a317a 100755 (executable)
@@ -1,22 +1,26 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * 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.
- * 
+ * 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/>.
+ * 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.io;
 
+import jalview.api.AlignViewportI;
 import jalview.datamodel.*;
 
 /**
@@ -36,7 +40,7 @@ public class FormatAdapter extends AppletFormatAdapter
   }
 
   /**
-   * create sequences with each seuqence string replaced with the one given in
+   * create sequences with each sequence string replaced with the one given in
    * omitHiddenCOlumns
    * 
    * @param seqs
@@ -194,23 +198,29 @@ public class FormatAdapter extends AppletFormatAdapter
   {
     if (omitHidden != null)
     {
-      // 
-      Alignment alv = new Alignment(replaceStrings(alignment
-              .getSequencesArray(), omitHidden));
+      // TODO consider using AlignmentView to prune to visible region
+      // TODO prune sequence annotation and groups to visible region
+      // TODO: JAL-1486 - set start and end for output correctly. basically,
+      // AlignmentView.getVisibleContigs does this.
+      Alignment alv = new Alignment(replaceStrings(
+              alignment.getSequencesArray(), omitHidden));
       AlignmentAnnotation[] ala = alignment.getAlignmentAnnotation();
-      for (int i = 0; i < ala.length; i++)
+      if (ala != null)
       {
-        AlignmentAnnotation na = new AlignmentAnnotation(ala[i]);
-        if (selgp != null)
-        {
-          colSel.makeVisibleAnnotation(selgp.getStartRes(), selgp
-                  .getEndRes(), na);
-        }
-        else
+        for (int i = 0; i < ala.length; i++)
         {
-          colSel.makeVisibleAnnotation(na);
+          AlignmentAnnotation na = new AlignmentAnnotation(ala[i]);
+          if (selgp != null)
+          {
+            colSel.makeVisibleAnnotation(selgp.getStartRes(),
+                    selgp.getEndRes(), na);
+          }
+          else
+          {
+            colSel.makeVisibleAnnotation(na);
+          }
+          alv.addAnnotation(na);
         }
-        alv.addAnnotation(na);
       }
       return this.formatSequences(format, alv, suffix);
     }
@@ -238,4 +248,16 @@ public class FormatAdapter extends AppletFormatAdapter
     }
     return AppletFormatAdapter.isValidFormat(format, forwriting);
   }
+
+  /**
+   * Create a flat file representation of a given view or selected region of a view
+   * @param format
+   * @param av
+   * @return String containing flat file
+   */
+  public String formatSequences(String format, AlignViewportI av, boolean selectedOnly)
+  {
+    return formatSequences(format, getCacheSuffixDefault(format), av, selectedOnly);
+  }
+
 }