JAL-2344 FileFormats singleton for formats, FileFormatI simplified
[jalview.git] / src / jalview / io / FileFormatI.java
index 082d9f1..47b9103 100644 (file)
@@ -6,19 +6,19 @@ import java.io.IOException;
 
 public interface FileFormatI
 {
+  AlignmentFileI getReader(FileParse source) throws IOException;
 
-  AlignmentFileI getAlignmentFile(String inFile, DataSourceType sourceType)
-          throws IOException;
-
-  AlignmentFileI getAlignmentFile(FileParse source) throws IOException;
-
-  AlignmentFileI getAlignmentFile(AlignmentI al);
-
-  AlignmentFileI getAlignmentFile();
+  AlignmentFileI getWriter(AlignmentI al);
 
   boolean isComplexAlignFile();
 
   /**
+   * Answers the display name of the file format (as for example shown in menu
+   * options). This name should not be locale (language) dependent.
+   */
+  String getName();
+
+  /**
    * Returns a comma-separated list of file extensions associated with the
    * format
    * 
@@ -26,7 +26,38 @@ public interface FileFormatI
    */
   String getExtensions();
 
+  /**
+   * Answers true if the format is one that Jalview can read. This implies that
+   * the format provides an implementation for getReader which can parse a data
+   * source for sequence data. Readable formats are included in the options in
+   * the open file dialogue.
+   * 
+   * @return
+   */
   boolean isReadable();
 
+  /**
+   * Answers true if the format is one that Jalview can write. This implies that
+   * the object returned by getWriter provides an implementation of the print()
+   * method. Writable formats are included in the options in the Save As file
+   * dialogue, and the 'output to Textbox' option (if text format).
+   * 
+   * @return
+   */
   boolean isWritable();
+
+  /**
+   * Answers true if the format is one that Jalview can output as text, e.g. to
+   * a text box
+   * 
+   * @return
+   */
+  boolean isTextFormat();
+
+  /**
+   * Answers true if the file format is one that provides 3D structure data
+   * 
+   * @return
+   */
+  boolean isStructureFile();
 }