Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / io / AppletFormatAdapter.js
index 2202386..18dcdf6 100644 (file)
-Clazz.declarePackage ("jalview.io");\r
-Clazz.load (null, "jalview.io.AppletFormatAdapter", ["MCview.PDBfile", "jalview.datamodel.Alignment", "jalview.io.FileParse", "$.IdentifyFile", "jalview.jsdev.GenericFileAdapter", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Exception", "$.StringBuffer"], function () {\r
-c$ = Clazz.decorateAsClass (function () {\r
-this.viewpanel = null;\r
-this.annotFromStructure = false;\r
-this.localSecondaryStruct = false;\r
-this.serviceSecondaryStruct = false;\r
-this.alignFile = null;\r
-this.inFile = null;\r
-this.newline = null;\r
-this.exportSettings = null;\r
-Clazz.instantialize (this, arguments);\r
-}, jalview.io, "AppletFormatAdapter");\r
-Clazz.prepareFields (c$, function () {\r
-this.newline = System.getProperty ("line.separator");\r
-});\r
-Clazz.makeConstructor (c$, \r
-function () {\r
-});\r
-Clazz.makeConstructor (c$, \r
-function (viewpanel) {\r
-this.viewpanel = viewpanel;\r
-}, "jalview.api.AlignmentViewPanel");\r
-Clazz.makeConstructor (c$, \r
-function (alignPanel, settings) {\r
-this.viewpanel = alignPanel;\r
-this.exportSettings = settings;\r
-}, "jalview.api.AlignmentViewPanel,jalview.api.AlignExportSettingI");\r
-c$.prettyPrint = Clazz.defineMethod (c$, "prettyPrint", \r
-function (els) {\r
-var list =  new StringBuffer ();\r
-for (var i = 0, iSize = els.length - 1; i < iSize; i++) {\r
-list.append (els[i]);\r
-list.append (", ");\r
-}\r
-list.append (" and " + els[els.length - 1] + ".");\r
-return list.toString ();\r
-}, "~A");\r
-Clazz.defineMethod (c$, "setNewlineString", \r
-function (nl) {\r
-this.newline = nl;\r
-}, "~S");\r
-Clazz.defineMethod (c$, "getNewlineString", \r
-function () {\r
-return this.newline;\r
-});\r
-c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", \r
-function (format) {\r
-return jalview.io.AppletFormatAdapter.isValidFormat (format, false);\r
-}, "~S");\r
-c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", \r
-function (format, forwriting) {\r
-var valid = false;\r
-var format_list = (forwriting) ? jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS : jalview.io.AppletFormatAdapter.READABLE_FORMATS;\r
-for (var element, $element = 0, $$element = format_list; $element < $$element.length && ((element = $$element[$element]) || true); $element++) {\r
-if (element.equalsIgnoreCase (format)) {\r
-return true;\r
-}}\r
-return valid;\r
-}, "~S,~B");\r
-Clazz.defineMethod (c$, "readFile", \r
-function (inFile, type, format) {\r
-this.inFile = inFile;\r
-try {\r
-if (format.equals ("FASTA")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [inFile, type]);\r
-} else if (format.equals ("MSF")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [inFile, type]);\r
-} else if (format.equals ("PileUp")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [inFile, type]);\r
-} else if (format.equals ("CLUSTAL")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [inFile, type]);\r
-} else if (format.equals ("BLC")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [inFile, type]);\r
-} else if (format.equals ("PIR")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [inFile, type]);\r
-} else if (format.equals ("PFAM")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [inFile, type]);\r
-} else if (format.equals ("JnetFile")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [inFile, type]);\r
-(this.alignFile).removeNonSequences ();\r
-} else if (format.equals ("PDB")) {\r
-this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, inFile, type);\r
-} else if (format.equals ("STH")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [inFile, type]);\r
-} else if (format.equals ("SimpleBLAST")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [inFile, type]);\r
-} else if (format.equals ("PHYLIP")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [inFile, type]);\r
-} else if (format.equals ("JSON")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [inFile, type]);\r
-} else if (format.equals ("HTML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [inFile, type]);\r
-} else if (format.equals ("RNAML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [inFile, type]);\r
-} else if (format.equals ("GFF v2 or v3")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [inFile, type]);\r
-}return this.buildAlignmentFrom (this.alignFile);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);\r
-if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}if (type.equalsIgnoreCase ("Paste")) {\r
-try {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + inFile, "Paste"]);\r
-return this.buildAlignmentFrom (this.alignFile);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "~S,~S,~S");\r
-Clazz.defineMethod (c$, "readFromFile", \r
-function (source, format) {\r
-this.inFile = source.getInFile ();\r
-var type = source.type;\r
-try {\r
-if (format.equals ("FASTA")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [source]);\r
-} else if (format.equals ("MSF")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [source]);\r
-} else if (format.equals ("PileUp")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [source]);\r
-} else if (format.equals ("CLUSTAL")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [source]);\r
-} else if (format.equals ("BLC")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [source]);\r
-} else if (format.equals ("PIR")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [source]);\r
-} else if (format.equals ("PFAM")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [source]);\r
-} else if (format.equals ("JnetFile")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [source]);\r
-(this.alignFile).removeNonSequences ();\r
-} else if (format.equals ("PDB")) {\r
-this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, source);\r
-} else if (format.equals ("STH")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [source]);\r
-} else if (format.equals ("RNAML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [source]);\r
-} else if (format.equals ("SimpleBLAST")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [source]);\r
-} else if (format.equals ("PHYLIP")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [source]);\r
-} else if (format.equals ("GFF v2 or v3")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [this.inFile, type]);\r
-} else if (format.equals ("JSON")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [source]);\r
-} else if (format.equals ("HTML")) {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [source]);\r
-}return this.buildAlignmentFrom (this.alignFile);\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-e.printStackTrace ();\r
-System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);\r
-if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}if (type.equalsIgnoreCase ("Paste")) {\r
-try {\r
-this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + this.inFile, "Paste"]);\r
-return this.buildAlignmentFrom (this.alignFile);\r
-} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {\r
-throw  new java.io.IOException (e.getMessage ());\r
-}ex.printStackTrace ();\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}, "jalview.io.FileParse,~S");\r
-Clazz.defineMethod (c$, "buildAlignmentFrom", \r
- function (alignFile2) {\r
-var al =  new jalview.datamodel.Alignment (this.alignFile.getSeqsAsArray ());\r
-this.alignFile.addAnnotations (al);\r
-this.alignFile.addGroups (al);\r
-return al;\r
-}, "jalview.io.AlignFile");\r
-Clazz.defineMethod (c$, "formatSequences", \r
-function (format, jvsuffix, ap, selectedOnly) {\r
-var selvew = ap.getAlignViewport ().getAlignmentView (selectedOnly, false);\r
-var aselview = selvew.getVisibleAlignment (ap.getAlignViewport ().getGapCharacter ());\r
-var ala = (ap.getAlignViewport ().getVisibleAlignmentAnnotation (selectedOnly));\r
-if (ala != null) {\r
-for (var aa, $aa = ala.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {\r
-aselview.addAnnotation (aa);\r
-}\r
-}this.viewpanel = ap;\r
-return this.formatSequences (format, aselview, jvsuffix);\r
-}, "~S,~B,jalview.api.AlignmentViewPanel,~B");\r
-Clazz.defineMethod (c$, "formatSequences", \r
-function (format, alignment, jvsuffix) {\r
-try {\r
-var afile = null;\r
-if (format.equalsIgnoreCase ("FASTA")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);\r
-} else if (format.equalsIgnoreCase ("MSF")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", []);\r
-} else if (format.equalsIgnoreCase ("PileUp")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", []);\r
-} else if (format.equalsIgnoreCase ("CLUSTAL")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", []);\r
-} else if (format.equalsIgnoreCase ("BLC")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", []);\r
-} else if (format.equalsIgnoreCase ("PIR")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", []);\r
-} else if (format.equalsIgnoreCase ("PFAM")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", []);\r
-} else if (format.equalsIgnoreCase ("STH")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [alignment]);\r
-} else if (format.equalsIgnoreCase ("AMSA")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("AMSAFile", [alignment]);\r
-} else if (format.equalsIgnoreCase ("PHYLIP")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", []);\r
-} else if (format.equalsIgnoreCase ("JSON")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", []);\r
-} else if (format.equalsIgnoreCase ("RNAML")) {\r
-afile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", []);\r
-} else {\r
-throw  new Exception (jalview.util.MessageManager.getString ("error.implementation_error_unknown_file_format_string"));\r
-}afile.setNewlineString (this.newline);\r
-afile.addJVSuffix (jvsuffix);\r
-afile.setExportSettings (this.exportSettings);\r
-afile.configureForView (this.viewpanel);\r
-if (this.viewpanel == null || this.viewpanel.getAlignment () == null || this.viewpanel.getAlignment () !== alignment) {\r
-afile.setSeqs (alignment.getSequencesArray ());\r
-} else {\r
-afile.setSeqs (this.viewpanel.getAlignment ().getSequencesArray ());\r
-}var afileresp = afile.print ();\r
-if (afile.hasWarningMessage ()) {\r
-System.err.println ("Warning raised when writing as " + format + " : " + afile.getWarningMessage ());\r
-}return afileresp;\r
-} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Failed to write alignment as a '" + format + "' file\n");\r
-e.printStackTrace ();\r
-} else {\r
-throw e;\r
-}\r
-}\r
-return null;\r
-}, "~S,jalview.datamodel.AlignmentI,~B");\r
-c$.checkProtocol = Clazz.defineMethod (c$, "checkProtocol", \r
-function (file) {\r
-var protocol = jalview.io.AppletFormatAdapter.FILE;\r
-var ft = file.toLowerCase ().trim ();\r
-if (ft.indexOf ("http:") == 0 || ft.indexOf ("https:") == 0 || ft.indexOf ("file:") == 0) {\r
-protocol = jalview.io.AppletFormatAdapter.URL;\r
-}return protocol;\r
-}, "~S");\r
-c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", \r
-function (file, format) {\r
-return jalview.io.AppletFormatAdapter.resolveProtocol (file, format, false);\r
-}, "~S,~S");\r
-c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", \r
-function (file, format, debug) {\r
-var protocol = null;\r
-if (debug) {\r
-System.out.println ("resolving datasource started with:\n>>file\n" + file + ">>endfile");\r
-}try {\r
-var rtn = false;\r
-var is = System.getSecurityManager ().getClass ().getResourceAsStream ("/" + file);\r
-if (is != null) {\r
-rtn = true;\r
-is.close ();\r
-}if (debug) {\r
-System.err.println ("Resource '" + file + "' was " + (rtn ? "" : "not") + " located by classloader.");\r
-};if (rtn) {\r
-protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;\r
-}} catch (ex) {\r
-if (Clazz.exceptionOf (ex, Exception)) {\r
-System.err.println ("Exception checking resources: " + file + " " + ex);\r
-} else {\r
-throw ex;\r
-}\r
-}\r
-if (file.indexOf ("://") > -1) {\r
-protocol = jalview.io.AppletFormatAdapter.URL;\r
-} else {\r
-protocol = jalview.io.AppletFormatAdapter.FILE;\r
-}var fp = null;\r
-try {\r
-if (debug) {\r
-System.out.println ("Trying to get contents of resource as " + protocol + ":");\r
-}fp =  new jalview.io.FileParse (file, protocol);\r
-if (!fp.isValid ()) {\r
-fp = null;\r
-} else {\r
-if (debug) {\r
-System.out.println ("Successful.");\r
-}}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-if (debug) {\r
-System.err.println ("Exception when accessing content: " + e);\r
-}fp = null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-if (fp == null) {\r
-if (debug) {\r
-System.out.println ("Accessing as paste.");\r
-}protocol = jalview.io.AppletFormatAdapter.PASTE;\r
-fp = null;\r
-try {\r
-fp =  new jalview.io.FileParse (file, protocol);\r
-if (!fp.isValid ()) {\r
-fp = null;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-System.err.println ("Failed to access content as paste!");\r
-e.printStackTrace ();\r
-fp = null;\r
-} else {\r
-throw e;\r
-}\r
-}\r
-}if (fp == null) {\r
-return null;\r
-}if (format == null || format.length == 0) {\r
-return protocol;\r
-} else {\r
-try {\r
-var idformat =  new jalview.io.IdentifyFile ().Identify (file, protocol);\r
-if (idformat == null) {\r
-if (debug) {\r
-System.out.println ("Format not identified. Inaccessible file.");\r
-}return null;\r
-}if (debug) {\r
-System.out.println ("Format identified as " + idformat + "and expected as " + format);\r
-}if (idformat.equals (format)) {\r
-if (debug) {\r
-System.out.println ("Protocol identified as " + protocol);\r
-}return protocol;\r
-} else {\r
-if (debug) {\r
-System.out.println ("File deemed not accessible via " + protocol);\r
-}fp.close ();\r
-return null;\r
-}} catch (e) {\r
-if (Clazz.exceptionOf (e, Exception)) {\r
-if (debug) {\r
-System.err.println ("File deemed not accessible via " + protocol);\r
-e.printStackTrace ();\r
-};} else {\r
-throw e;\r
-}\r
-}\r
-}return null;\r
-}, "~S,~S,~B");\r
-Clazz.defineMethod (c$, "getAlignFile", \r
-function () {\r
-return this.alignFile;\r
-});\r
-Clazz.defineMethod (c$, "setAlignFile", \r
-function (alignFile) {\r
-this.alignFile = alignFile;\r
-}, "jalview.io.AlignFile");\r
-Clazz.defineStatics (c$,\r
-"FILE", "File",\r
-"URL", "URL",\r
-"PASTE", "Paste",\r
-"CLASSLOADER", "ClassLoader");\r
-c$.READABLE_FORMATS = c$.prototype.READABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB", "JnetFile", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "HTML"]);\r
-c$.READABLE_EXTENSIONS = c$.prototype.READABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "xml,rnaml", "phy", "json", ".gff2,gff3", "jar,jvp", "html"]);\r
-c$.READABLE_FNAMES = c$.prototype.READABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "Jalview", "HTML"]);\r
-c$.WRITEABLE_FORMATS = c$.prototype.WRITEABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA", "STH", "PHYLIP", "JSON"]);\r
-c$.WRITABLE_EXTENSIONS = c$.prototype.WRITABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "phy", "json", "jvp"]);\r
-c$.WRITABLE_FNAMES = c$.prototype.WRITABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "STH", "PHYLIP", "JSON", "Jalview"]);\r
-Clazz.defineStatics (c$,\r
-"INVALID_CHARACTERS", "Contains invalid characters");\r
-c$.SUPPORTED_FORMATS = c$.prototype.SUPPORTED_FORMATS = "Formats currently supported are\n" + jalview.io.AppletFormatAdapter.prettyPrint (jalview.io.AppletFormatAdapter.READABLE_FORMATS);\r
-});\r
+Clazz.declarePackage ("jalview.io");
+Clazz.load (null, "jalview.io.AppletFormatAdapter", ["MCview.PDBfile", "jalview.datamodel.Alignment", "jalview.io.FileParse", "$.IdentifyFile", "jalview.jsdev.GenericFileAdapter", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Exception", "$.StringBuffer"], function () {
+c$ = Clazz.decorateAsClass (function () {
+this.viewpanel = null;
+this.annotFromStructure = false;
+this.localSecondaryStruct = false;
+this.serviceSecondaryStruct = false;
+this.alignFile = null;
+this.inFile = null;
+this.newline = null;
+this.exportSettings = null;
+Clazz.instantialize (this, arguments);
+}, jalview.io, "AppletFormatAdapter");
+Clazz.prepareFields (c$, function () {
+this.newline = System.getProperty ("line.separator");
+});
+Clazz.makeConstructor (c$, 
+function () {
+});
+Clazz.makeConstructor (c$, 
+function (viewpanel) {
+this.viewpanel = viewpanel;
+}, "jalview.api.AlignmentViewPanel");
+Clazz.makeConstructor (c$, 
+function (alignPanel, settings) {
+this.viewpanel = alignPanel;
+this.exportSettings = settings;
+}, "jalview.api.AlignmentViewPanel,jalview.api.AlignExportSettingI");
+c$.prettyPrint = Clazz.defineMethod (c$, "prettyPrint", 
+function (els) {
+var list =  new StringBuffer ();
+for (var i = 0, iSize = els.length - 1; i < iSize; i++) {
+list.append (els[i]);
+list.append (", ");
+}
+list.append (" and " + els[els.length - 1] + ".");
+return list.toString ();
+}, "~A");
+Clazz.defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz.defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", 
+function (format) {
+return jalview.io.AppletFormatAdapter.isValidFormat (format, false);
+}, "~S");
+c$.isValidFormat = Clazz.defineMethod (c$, "isValidFormat", 
+function (format, forwriting) {
+var valid = false;
+var format_list = (forwriting) ? jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS : jalview.io.AppletFormatAdapter.READABLE_FORMATS;
+for (var element, $element = 0, $$element = format_list; $element < $$element.length && ((element = $$element[$element]) || true); $element++) {
+if (element.equalsIgnoreCase (format)) {
+return true;
+}}
+return valid;
+}, "~S,~B");
+Clazz.defineMethod (c$, "readFile", 
+function (inFile, type, format) {
+this.inFile = inFile;
+try {
+if (format.equals ("FASTA")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [inFile, type]);
+} else if (format.equals ("MSF")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [inFile, type]);
+} else if (format.equals ("PileUp")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [inFile, type]);
+} else if (format.equals ("CLUSTAL")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [inFile, type]);
+} else if (format.equals ("BLC")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [inFile, type]);
+} else if (format.equals ("PIR")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [inFile, type]);
+} else if (format.equals ("PFAM")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [inFile, type]);
+} else if (format.equals ("JnetFile")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [inFile, type]);
+(this.alignFile).removeNonSequences ();
+} else if (format.equals ("PDB")) {
+this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, inFile, type);
+} else if (format.equals ("STH")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [inFile, type]);
+} else if (format.equals ("SimpleBLAST")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [inFile, type]);
+} else if (format.equals ("PHYLIP")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [inFile, type]);
+} else if (format.equals ("JSON")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [inFile, type]);
+} else if (format.equals ("HTML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [inFile, type]);
+} else if (format.equals ("RNAML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [inFile, type]);
+} else if (format.equals ("GFF v2 or v3")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [inFile, type]);
+}return this.buildAlignmentFrom (this.alignFile);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
+if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}if (type.equalsIgnoreCase ("Paste")) {
+try {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + inFile, "Paste"]);
+return this.buildAlignmentFrom (this.alignFile);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
+} else {
+throw e;
+}
+}
+}, "~S,~S,~S");
+Clazz.defineMethod (c$, "readFromFile", 
+function (source, format) {
+this.inFile = source.getInFile ();
+var type = source.type;
+try {
+if (format.equals ("FASTA")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [source]);
+} else if (format.equals ("MSF")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [source]);
+} else if (format.equals ("PileUp")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [source]);
+} else if (format.equals ("CLUSTAL")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [source]);
+} else if (format.equals ("BLC")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [source]);
+} else if (format.equals ("PIR")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [source]);
+} else if (format.equals ("PFAM")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [source]);
+} else if (format.equals ("JnetFile")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [source]);
+(this.alignFile).removeNonSequences ();
+} else if (format.equals ("PDB")) {
+this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, source);
+} else if (format.equals ("STH")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [source]);
+} else if (format.equals ("RNAML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [source]);
+} else if (format.equals ("SimpleBLAST")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [source]);
+} else if (format.equals ("PHYLIP")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [source]);
+} else if (format.equals ("GFF v2 or v3")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [this.inFile, type]);
+} else if (format.equals ("JSON")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [source]);
+} else if (format.equals ("HTML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [source]);
+}return this.buildAlignmentFrom (this.alignFile);
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
+if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}if (type.equalsIgnoreCase ("Paste")) {
+try {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + this.inFile, "Paste"]);
+return this.buildAlignmentFrom (this.alignFile);
+} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
+} else {
+throw e;
+}
+}
+}, "jalview.io.FileParse,~S");
+Clazz.defineMethod (c$, "buildAlignmentFrom", 
+ function (alignFile2) {
+var al =  new jalview.datamodel.Alignment (this.alignFile.getSeqsAsArray ());
+this.alignFile.addAnnotations (al);
+this.alignFile.addGroups (al);
+return al;
+}, "jalview.io.AlignFile");
+Clazz.defineMethod (c$, "formatSequences", 
+function (format, jvsuffix, ap, selectedOnly) {
+var selvew = ap.getAlignViewport ().getAlignmentView (selectedOnly, false);
+var aselview = selvew.getVisibleAlignment (ap.getAlignViewport ().getGapCharacter ());
+var ala = (ap.getAlignViewport ().getVisibleAlignmentAnnotation (selectedOnly));
+if (ala != null) {
+for (var aa, $aa = ala.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+aselview.addAnnotation (aa);
+}
+}this.viewpanel = ap;
+return this.formatSequences (format, aselview, jvsuffix);
+}, "~S,~B,jalview.api.AlignmentViewPanel,~B");
+Clazz.defineMethod (c$, "formatSequences", 
+function (format, alignment, jvsuffix) {
+try {
+var afile = null;
+if (format.equalsIgnoreCase ("FASTA")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);
+} else if (format.equalsIgnoreCase ("MSF")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", []);
+} else if (format.equalsIgnoreCase ("PileUp")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", []);
+} else if (format.equalsIgnoreCase ("CLUSTAL")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", []);
+} else if (format.equalsIgnoreCase ("BLC")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", []);
+} else if (format.equalsIgnoreCase ("PIR")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", []);
+} else if (format.equalsIgnoreCase ("PFAM")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", []);
+} else if (format.equalsIgnoreCase ("STH")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [alignment]);
+} else if (format.equalsIgnoreCase ("AMSA")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("AMSAFile", [alignment]);
+} else if (format.equalsIgnoreCase ("PHYLIP")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", []);
+} else if (format.equalsIgnoreCase ("JSON")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", []);
+} else if (format.equalsIgnoreCase ("RNAML")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", []);
+} else {
+throw  new Exception (jalview.util.MessageManager.getString ("error.implementation_error_unknown_file_format_string"));
+}afile.setNewlineString (this.newline);
+afile.addJVSuffix (jvsuffix);
+afile.setExportSettings (this.exportSettings);
+afile.configureForView (this.viewpanel);
+if (this.viewpanel == null || this.viewpanel.getAlignment () == null || this.viewpanel.getAlignment () !== alignment) {
+afile.setSeqs (alignment.getSequencesArray ());
+} else {
+afile.setSeqs (this.viewpanel.getAlignment ().getSequencesArray ());
+}var afileresp = afile.print ();
+if (afile.hasWarningMessage ()) {
+System.err.println ("Warning raised when writing as " + format + " : " + afile.getWarningMessage ());
+}return afileresp;
+} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Failed to write alignment as a '" + format + "' file\n");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+return null;
+}, "~S,jalview.datamodel.AlignmentI,~B");
+c$.checkProtocol = Clazz.defineMethod (c$, "checkProtocol", 
+function (file) {
+var protocol = jalview.io.AppletFormatAdapter.FILE;
+var ft = file.toLowerCase ().trim ();
+if (ft.indexOf ("http:") == 0 || ft.indexOf ("https:") == 0 || ft.indexOf ("file:") == 0) {
+protocol = jalview.io.AppletFormatAdapter.URL;
+}return protocol;
+}, "~S");
+c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", 
+function (file, format) {
+return jalview.io.AppletFormatAdapter.resolveProtocol (file, format, false);
+}, "~S,~S");
+c$.resolveProtocol = Clazz.defineMethod (c$, "resolveProtocol", 
+function (file, format, debug) {
+var protocol = null;
+if (debug) {
+System.out.println ("resolving datasource started with:\n>>file\n" + file + ">>endfile");
+}try {
+var rtn = false;
+var is = System.getSecurityManager ().getClass ().getResourceAsStream ("/" + file);
+if (is != null) {
+rtn = true;
+is.close ();
+}if (debug) {
+System.err.println ("Resource '" + file + "' was " + (rtn ? "" : "not") + " located by classloader.");
+};if (rtn) {
+protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
+}} catch (ex) {
+if (Clazz.exceptionOf (ex, Exception)) {
+System.err.println ("Exception checking resources: " + file + " " + ex);
+} else {
+throw ex;
+}
+}
+if (file.indexOf ("://") > -1) {
+protocol = jalview.io.AppletFormatAdapter.URL;
+} else {
+protocol = jalview.io.AppletFormatAdapter.FILE;
+}var fp = null;
+try {
+if (debug) {
+System.out.println ("Trying to get contents of resource as " + protocol + ":");
+}fp =  new jalview.io.FileParse (file, protocol);
+if (!fp.isValid ()) {
+fp = null;
+} else {
+if (debug) {
+System.out.println ("Successful.");
+}}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+if (debug) {
+System.err.println ("Exception when accessing content: " + e);
+}fp = null;
+} else {
+throw e;
+}
+}
+if (fp == null) {
+if (debug) {
+System.out.println ("Accessing as paste.");
+}protocol = jalview.io.AppletFormatAdapter.PASTE;
+fp = null;
+try {
+fp =  new jalview.io.FileParse (file, protocol);
+if (!fp.isValid ()) {
+fp = null;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+System.err.println ("Failed to access content as paste!");
+e.printStackTrace ();
+fp = null;
+} else {
+throw e;
+}
+}
+}if (fp == null) {
+return null;
+}if (format == null || format.length == 0) {
+return protocol;
+} else {
+try {
+var idformat =  new jalview.io.IdentifyFile ().Identify (file, protocol);
+if (idformat == null) {
+if (debug) {
+System.out.println ("Format not identified. Inaccessible file.");
+}return null;
+}if (debug) {
+System.out.println ("Format identified as " + idformat + "and expected as " + format);
+}if (idformat.equals (format)) {
+if (debug) {
+System.out.println ("Protocol identified as " + protocol);
+}return protocol;
+} else {
+if (debug) {
+System.out.println ("File deemed not accessible via " + protocol);
+}fp.close ();
+return null;
+}} catch (e) {
+if (Clazz.exceptionOf (e, Exception)) {
+if (debug) {
+System.err.println ("File deemed not accessible via " + protocol);
+e.printStackTrace ();
+};} else {
+throw e;
+}
+}
+}return null;
+}, "~S,~S,~B");
+Clazz.defineMethod (c$, "getAlignFile", 
+function () {
+return this.alignFile;
+});
+Clazz.defineMethod (c$, "setAlignFile", 
+function (alignFile) {
+this.alignFile = alignFile;
+}, "jalview.io.AlignFile");
+Clazz.defineStatics (c$,
+"FILE", "File",
+"URL", "URL",
+"PASTE", "Paste",
+"CLASSLOADER", "ClassLoader");
+c$.READABLE_FORMATS = c$.prototype.READABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB", "JnetFile", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "HTML"]);
+c$.READABLE_EXTENSIONS = c$.prototype.READABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "xml,rnaml", "phy", "json", ".gff2,gff3", "jar,jvp", "html"]);
+c$.READABLE_FNAMES = c$.prototype.READABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "Jalview", "HTML"]);
+c$.WRITEABLE_FORMATS = c$.prototype.WRITEABLE_FORMATS =  Clazz.newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA", "STH", "PHYLIP", "JSON"]);
+c$.WRITABLE_EXTENSIONS = c$.prototype.WRITABLE_EXTENSIONS =  Clazz.newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "phy", "json", "jvp"]);
+c$.WRITABLE_FNAMES = c$.prototype.WRITABLE_FNAMES =  Clazz.newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "STH", "PHYLIP", "JSON", "Jalview"]);
+Clazz.defineStatics (c$,
+"INVALID_CHARACTERS", "Contains invalid characters");
+c$.SUPPORTED_FORMATS = c$.prototype.SUPPORTED_FORMATS = "Formats currently supported are\n" + jalview.io.AppletFormatAdapter.prettyPrint (jalview.io.AppletFormatAdapter.READABLE_FORMATS);
+});