Merge branch 'features/r2_11_2_alphafold/JAL-629' into features/JAL-3858_PAEsInProjects
authorJames Procter <j.procter@dundee.ac.uk>
Thu, 16 Feb 2023 13:14:11 +0000 (13:14 +0000)
committerJames Procter <j.procter@dundee.ac.uk>
Thu, 16 Feb 2023 13:14:11 +0000 (13:14 +0000)
 Conflicts:
src/jalview/bin/Jalview.java

182 files changed:
RELEASE
build.gradle
gradle.properties
help/help/help.jhm
help/help/helpTOC.xml
help/help/html/colourSchemes/index.html
help/help/html/colourSchemes/nucleotideambiguity.html [new file with mode: 0755]
help/help/html/menus/alignmentMenu.html
help/help/html/menus/alwcolour.html
help/markdown/releases/release-2_11_3.md [deleted file]
help/markdown/releases/release-2_11_3_0.md [new file with mode: 0644]
help/markdown/whatsnew/whatsnew-2_11_3_0.md [new file with mode: 0644]
j11lib/flatlaf-2.3.jar [deleted file]
j11lib/flatlaf-3.0.jar [new file with mode: 0644]
j11lib/flatlaf-extras-3.0.jar [moved from j8lib/flatlaf-extras-2.3.jar with 70% similarity]
j8lib/flatlaf-2.3.jar [deleted file]
j8lib/flatlaf-3.0.jar [new file with mode: 0644]
j8lib/flatlaf-extras-3.0.jar [moved from j11lib/flatlaf-extras-2.3.jar with 70% similarity]
resources/lang/Messages.properties
resources/lang/Messages_es.properties
schemas/jalview.xsd
src/jalview/appletgui/#OverviewPanel.java# [deleted file]
src/jalview/bin/Cache.java
src/jalview/bin/Jalview.java
src/jalview/datamodel/Profile.java~ [deleted file]
src/jalview/datamodel/ProfileI.java~ [deleted file]
src/jalview/datamodel/Profiles.java~ [deleted file]
src/jalview/datamodel/ProfilesI.java~ [deleted file]
src/jalview/datamodel/ResidueCount.java~ [deleted file]
src/jalview/datamodel/SearchResultMatchI.java~ [deleted file]
src/jalview/datamodel/SearchResultsI.java~ [deleted file]
src/jalview/ext/jmol/JmolParser.java~ [deleted file]
src/jalview/gui/#OverviewPanel.java# [deleted file]
src/jalview/gui/APQHandlers.java [moved from src/jalview/jbgui/APQHandlers.java with 55% similarity]
src/jalview/gui/AlignExportOptions.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/AnnotationChooser.java
src/jalview/gui/AnnotationColourChooser.java
src/jalview/gui/AnnotationColumnChooser.java
src/jalview/gui/AnnotationExporter.java
src/jalview/gui/AnnotationLabels.java
src/jalview/gui/AppVarna.java
src/jalview/gui/CalculationChooser.java
src/jalview/gui/Console.java
src/jalview/gui/CutAndPasteHtmlTransfer.java
src/jalview/gui/CutAndPasteTransfer.java
src/jalview/gui/Desktop.java
src/jalview/gui/EditNameDialog.java
src/jalview/gui/FeatureEditor.java
src/jalview/gui/FeatureSettings.java
src/jalview/gui/Finder.java
src/jalview/gui/FontChooser.java
src/jalview/gui/ImageExporter.java
src/jalview/gui/JvOptionPane.java
src/jalview/gui/LineartOptions.java
src/jalview/gui/OverviewCanvas.java
src/jalview/gui/OverviewPanel.java
src/jalview/gui/PCAPanel.java
src/jalview/gui/PopupMenu.java
src/jalview/gui/Preferences.java
src/jalview/gui/QuitHandler.java [new file with mode: 0644]
src/jalview/gui/RedundancyPanel.java
src/jalview/gui/SequenceFetcher.java
src/jalview/gui/SliderPanel.java
src/jalview/gui/SplitFrame.java
src/jalview/gui/StructureChooser.java
src/jalview/gui/StructureChooser.java~ [deleted file]
src/jalview/gui/StructureViewerBase.java
src/jalview/gui/TextColourChooser.java
src/jalview/gui/TreeCanvas.java~ [deleted file]
src/jalview/gui/TreePanel.java
src/jalview/gui/UserDefinedColours.java
src/jalview/gui/WebserviceInfo.java
src/jalview/io/BackupFiles.java
src/jalview/io/FileLoader.java
src/jalview/io/HtmlSvgOutput.java
src/jalview/io/JalviewFileChooser.java
src/jalview/jbgui/GDesktop.java
src/jalview/project/Jalview2XML.java
src/jalview/renderer/OverviewRenderer.java
src/jalview/renderer/OverviewResColourFinder.java
src/jalview/schemes/JalviewColourScheme.java
src/jalview/schemes/NucleotideAmbiguityColourScheme.java [new file with mode: 0644]
src/jalview/schemes/ResidueProperties.java
src/jalview/util/Comparison.java
src/jalview/util/DBRefUtils.java
src/jalview/util/SparseCount.java~ [deleted file]
src/jalview/util/dialogrunner/DialogRunnerI.java
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/ws/dbsources/Pdb.java~ [deleted file]
src/jalview/xml/binding/embl/EntrySetType.java
src/jalview/xml/binding/embl/EntryType.java
src/jalview/xml/binding/embl/ObjectFactory.java
src/jalview/xml/binding/embl/ROOT.java
src/jalview/xml/binding/embl/XrefType.java
src/jalview/xml/binding/jalview/AlcodonFrame.java
src/jalview/xml/binding/jalview/Annotation.java
src/jalview/xml/binding/jalview/AnnotationColourScheme.java
src/jalview/xml/binding/jalview/AnnotationElement.java
src/jalview/xml/binding/jalview/DoubleMatrix.java
src/jalview/xml/binding/jalview/DoubleVector.java
src/jalview/xml/binding/jalview/Feature.java
src/jalview/xml/binding/jalview/FeatureMatcher.java
src/jalview/xml/binding/jalview/FeatureMatcherSet.java
src/jalview/xml/binding/jalview/FilterBy.java
src/jalview/xml/binding/jalview/JalviewModel.java
src/jalview/xml/binding/jalview/JalviewModelType.java [deleted file]
src/jalview/xml/binding/jalview/JalviewUserColours.java
src/jalview/xml/binding/jalview/MapListType.java
src/jalview/xml/binding/jalview/Mapping.java
src/jalview/xml/binding/jalview/NoValueColour.java
src/jalview/xml/binding/jalview/ObjectFactory.java
src/jalview/xml/binding/jalview/PcaDataType.java
src/jalview/xml/binding/jalview/Pdbentry.java
src/jalview/xml/binding/jalview/Sequence.java
src/jalview/xml/binding/jalview/SequenceSet.java
src/jalview/xml/binding/jalview/SequenceType.java
src/jalview/xml/binding/jalview/ThresholdType.java
src/jalview/xml/binding/jalview/VAMSAS.java
src/jalview/xml/binding/jalview/WebServiceParameterSet.java
src/jalview/xml/binding/jalview/package-info.java
src/jalview/xml/binding/uniprot/CitationType.java
src/jalview/xml/binding/uniprot/CofactorType.java
src/jalview/xml/binding/uniprot/CommentType.java
src/jalview/xml/binding/uniprot/ConsortiumType.java
src/jalview/xml/binding/uniprot/DbReferenceType.java
src/jalview/xml/binding/uniprot/Entry.java
src/jalview/xml/binding/uniprot/EventType.java
src/jalview/xml/binding/uniprot/EvidenceType.java
src/jalview/xml/binding/uniprot/EvidencedStringType.java
src/jalview/xml/binding/uniprot/FeatureType.java
src/jalview/xml/binding/uniprot/GeneLocationType.java
src/jalview/xml/binding/uniprot/GeneNameType.java
src/jalview/xml/binding/uniprot/GeneType.java
src/jalview/xml/binding/uniprot/ImportedFromType.java
src/jalview/xml/binding/uniprot/InteractantType.java
src/jalview/xml/binding/uniprot/IsoformType.java
src/jalview/xml/binding/uniprot/KeywordType.java
src/jalview/xml/binding/uniprot/LocationType.java
src/jalview/xml/binding/uniprot/MoleculeType.java
src/jalview/xml/binding/uniprot/NameListType.java
src/jalview/xml/binding/uniprot/ObjectFactory.java
src/jalview/xml/binding/uniprot/OrganismNameType.java
src/jalview/xml/binding/uniprot/OrganismType.java
src/jalview/xml/binding/uniprot/PersonType.java
src/jalview/xml/binding/uniprot/PhysiologicalReactionType.java
src/jalview/xml/binding/uniprot/PositionType.java
src/jalview/xml/binding/uniprot/PropertyType.java
src/jalview/xml/binding/uniprot/ProteinExistenceType.java
src/jalview/xml/binding/uniprot/ProteinType.java
src/jalview/xml/binding/uniprot/ReactionType.java
src/jalview/xml/binding/uniprot/ReferenceType.java
src/jalview/xml/binding/uniprot/SequenceType.java
src/jalview/xml/binding/uniprot/SourceDataType.java
src/jalview/xml/binding/uniprot/SourceType.java
src/jalview/xml/binding/uniprot/StatusType.java
src/jalview/xml/binding/uniprot/SubcellularLocationType.java
src/jalview/xml/binding/uniprot/Uniprot.java
src/jalview/xml/binding/uniprot/package-info.java
test/jalview/analysis/CrossRefTest.java
test/jalview/datamodel/SequenceTest.java
test/jalview/gui/AlignmentPanelTest.java
test/jalview/gui/QuitHandlerTest.java [new file with mode: 0644]
test/jalview/gui/quitProps.jvprops [new file with mode: 0644]
test/jalview/project/Jalview2xmlTests.java
test/jalview/renderer/OverviewRendererTest.java
test/jalview/renderer/OverviewResColourFinderTest.java
test/jalview/schemes/ResiduePropertiesTest.java
test/jalview/util/ComparisonTest.java
test/jalview/util/comparisonTestProps.jvprops [new file with mode: 0644]
test/jalview/ws/dbsources/UniprotTest.java
utils/download_jdks.sh
utils/download_jres.sh
utils/install4j/auto_file_associations-i4j10.pl [new file with mode: 0755]
utils/install4j/file_associations_auto-Info_plist.xml
utils/install4j/file_associations_auto-install4j10.xml [new file with mode: 0644]
utils/install4j/file_associations_template-Info_plist.xml
utils/install4j/file_associations_template-install4j10.xml [new file with mode: 0644]
utils/install4j/install4j10_template.install4j [new file with mode: 0644]
utils/install4j/install4j9_template.install4j

diff --git a/RELEASE b/RELEASE
index bc0c6dd..cfbbf93 100644 (file)
--- a/RELEASE
+++ b/RELEASE
@@ -1,2 +1,2 @@
 jalview.release=releases/Release_2_11_3_Branch
-jalview.version=2.11.3
+jalview.version=2.11.3.0
index bde50b5..851c5f6 100644 (file)
@@ -47,7 +47,7 @@ plugins {
   id 'eclipse'
   id "com.diffplug.gradle.spotless" version "3.28.0"
   id 'com.github.johnrengelman.shadow' version '4.0.3'
-  id 'com.install4j.gradle' version '9.0.6'
+  id 'com.install4j.gradle' version '10.0.3'
   id 'com.dorongold.task-tree' version '2.1.0' // only needed to display task dependency tree with  gradle task1 [task2 ...] taskTree
   id 'com.palantir.git-version' version '0.13.0' apply false
 }
@@ -483,16 +483,10 @@ ext {
   // for install4j
   JAVA_MIN_VERSION = JAVA_VERSION
   JAVA_MAX_VERSION = JAVA_VERSION
-  def jreInstallsDir = string(jre_installs_dir)
+  jreInstallsDir = string(jre_installs_dir)
   if (jreInstallsDir.startsWith("~/")) {
     jreInstallsDir = System.getProperty("user.home") + jreInstallsDir.substring(1)
   }
-  macosJavaVMDir = string("${jreInstallsDir}/jre-${JAVA_INTEGER_VERSION}-mac-x64/jre")
-  windowsJavaVMDir = string("${jreInstallsDir}/jre-${JAVA_INTEGER_VERSION}-windows-x64/jre")
-  linuxJavaVMDir = string("${jreInstallsDir}/jre-${JAVA_INTEGER_VERSION}-linux-x64/jre")
-  macosJavaVMTgz = string("${jreInstallsDir}/tgz/jre_${JAVA_INTEGER_VERSION}_mac_x64.tar.gz")
-  windowsJavaVMTgz = string("${jreInstallsDir}/tgz/jre_${JAVA_INTEGER_VERSION}_windows_x64.tar.gz")
-  linuxJavaVMTgz = string("${jreInstallsDir}/tgz/jre_${JAVA_INTEGER_VERSION}_linux_x64.tar.gz")
   install4jDir = string("${jalviewDir}/${install4j_utils_dir}")
   install4jConfFileName = string("jalview-install4j-conf.install4j")
   install4jConfFile = file("${install4jDir}/${install4jConfFileName}")
@@ -2411,12 +2405,6 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) {
     'JAVA_VERSION': JAVA_VERSION,
     'JAVA_INTEGER_VERSION': JAVA_INTEGER_VERSION,
     'VERSION': JALVIEW_VERSION,
-    'MACOS_JAVA_VM_DIR': macosJavaVMDir,
-    'WINDOWS_JAVA_VM_DIR': windowsJavaVMDir,
-    'LINUX_JAVA_VM_DIR': linuxJavaVMDir,
-    'MACOS_JAVA_VM_TGZ': macosJavaVMTgz,
-    'WINDOWS_JAVA_VM_TGZ': windowsJavaVMTgz,
-    'LINUX_JAVA_VM_TGZ': linuxJavaVMTgz,
     'COPYRIGHT_MESSAGE': install4j_copyright_message,
     'BUNDLE_ID': install4jBundleId,
     'INTERNAL_ID': install4jInternalId,
@@ -2446,8 +2434,29 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) {
     'WINDOWS_ICONS_FILE': install4jWindowsIconsFile,
     'PNG_ICON_FILE': install4jPngIconFile,
     'BACKGROUND': install4jBackground,
+  ]
 
+  def varNameMap = [
+    'mac': 'MACOS',
+    'windows': 'WINDOWS',
+    'linux': 'LINUX'
+  ]
+  
+  // these are the bundled OS/architecture VMs needed by install4j
+  def osArch = [
+    [ "mac", "x64" ],
+    [ "mac", "aarch64" ],
+    [ "windows", "x64" ],
+    [ "linux", "x64" ],
+    [ "linux", "aarch64" ]
   ]
+  osArch.forEach { os, arch ->
+    variables[ sprintf("%s_%s_JAVA_VM_DIR", varNameMap[os], arch.toUpperCase(Locale.ROOT)) ] = sprintf("%s/jre-%s-%s-%s/jre", jreInstallsDir, JAVA_INTEGER_VERSION, os, arch)
+    // N.B. For some reason install4j requires the below filename to have underscores and not hyphens
+    // otherwise running `gradle installers` generates a non-useful error:
+    // `install4j: compilation failed. Reason: java.lang.NumberFormatException: For input string: "windows"`
+    variables[ sprintf("%s_%s_JAVA_VM_TGZ", varNameMap[os], arch.toUpperCase(Locale.ROOT)) ] = sprintf("%s/tgz/jre_%s_%s_%s.tar.gz", jreInstallsDir, JAVA_INTEGER_VERSION, os, arch)
+  }
 
   //println("INSTALL4J VARIABLES:")
   //variables.each{k,v->println("${k}=${v}")}
@@ -2481,8 +2490,6 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) {
   inputs.dir(getdownAppBaseDir)
   inputs.file(install4jConfFile)
   inputs.file("${install4jDir}/${install4j_info_plist_file_associations}")
-  inputs.dir(macosJavaVMDir)
-  inputs.dir(windowsJavaVMDir)
   outputs.dir("${jalviewDir}/${install4j_build_dir}/${JAVA_VERSION}")
 }
 
index acb65e9..e42f8b5 100644 (file)
@@ -129,14 +129,14 @@ flexmark_css = utils/doc/github.css
 channel_properties_dir = utils/channels
 channel_props = channel.props
 
-install4j_home_dir = ~/buildtools/install4j9
+install4j_home_dir = ~/buildtools/install4j10
 install4j_copyright_message = ...
 install4j_bundle_id = org.jalview.jalview-desktop
 install4j_utils_dir = utils/install4j
 install4j_images_dir = utils/install4j
-install4j_template = install4j9_template.install4j
+install4j_template = install4j10_template.install4j
 install4j_info_plist_file_associations = file_associations_auto-Info_plist.xml
-install4j_installer_file_associations = file_associations_auto-install4j8.xml
+install4j_installer_file_associations = file_associations_auto-install4j10.xml
 #install4j_DMG_uninstaller_app_files = uninstall_old_jalview_files.xml
 install4j_build_dir = build/install4j
 install4j_executable_name = jalviewg
index 1710bbc..cd415ea 100755 (executable)
    <mapID target="colours.turn" url="html/colourSchemes/turn.html" />
    <mapID target="colours.buried" url="html/colourSchemes/buried.html" />
    <mapID target="colours.nucleotide" url="html/colourSchemes/nucleotide.html" />
+   <mapID target="colours.nucleotideambiguity" url="html/colourSchemes/nucleotideambiguity.html" />
    <mapID target="colours.blosum" url="html/colourSchemes/blosum.html" />
    <mapID target="colours.pid" url="html/colourSchemes/pid.html" />
    <mapID target="colours.user" url="html/colourSchemes/user.html"/>
index 3308456..877c758 100755 (executable)
                        <tocitem text="Turn propensity" target="colours.turn" />
                        <tocitem text="Buried index" target="colours.buried" />
                        <tocitem text="Nucleotide colours" target="colours.nucleotide" />
+                       <tocitem text="Nucleotide Ambiguity colours" target="colours.nucleotideambiguity" />
                        <tocitem text="Purine/Pyrimidine colours" target="colours.purinepyrimidine" />
                        <tocitem text="Blosum62" target="colours.blosum" />
                        <tocitem text="by Percentage Identity" target="colours.pid" />
index e006618..9ba0578 100755 (executable)
@@ -459,13 +459,11 @@ td {
                                                        <td>I</td>
                                                        <!--Inosine-->
                                                        <td>X</td>
-                                                       <!--Xanthine-->
+                                                       <!--Unknown (sometimes Xanthine)-->
                                                        <td>R</td>
                                                        <!--Unknown Purine-->
                                                        <td>Y</td>
                                                        <!--Unknown Pyrimidine-->
-                                                       <td>N</td>
-                                                       <!--Unknown-->
                                                        <td>W</td>
                                                        <!--Weak nucleotide (A or T)-->
                                                        <td>S</td>
@@ -481,7 +479,9 @@ td {
                                                        <td>D</td>
                                                        <!--Not C (A or G or T)-->
                                                        <td>V</td>
-                                                       <!--Not T (A or G or C-->
+                                                       <!--Not T (A or G or C)-->
+                                                       <td>N</td>
+                                                       <!--Unknown-->
                                                </tr>
                                                <tr>
                                                        <td height="24">Nucleotide</td>
@@ -505,6 +505,27 @@ td {
                                                        <td></td>
                                                </tr>
                                                <tr>
+                                                       <td height="24">Nucleotide Ambiguity</td>
+                                                       <td bgcolor="#f0fff0"></td>
+                                                       <td bgcolor="#f0fff0"></td>
+                                                       <td bgcolor="#f0fff0"></td>
+                                                       <td bgcolor="#f0fff0"></td>
+                                                       <td bgcolor="#f0fff0"></td>
+                                                       <td bgcolor="#ffffff"></td>
+                                                       <td bgcolor="#4f6f6f"></td>
+                                                       <td bgcolor="#CD5C5C"></td>
+                                                       <td bgcolor="#008000"></td>
+                                                       <td bgcolor="#4682B4"></td>
+                                                       <td bgcolor="#FF8C00"></td>
+                                                       <td bgcolor="#9ACD32"></td>
+                                                       <td bgcolor="#9932CC"></td>
+                                                       <td bgcolor="#8b4513"></td>
+                                                       <td bgcolor="#808080"></td>
+                                                       <td bgcolor="#483D8B"></td>
+                                                       <td bgcolor="#b8860b"></td>
+                                                       <td bgcolor="#2f4f4f"></td>
+                                               </tr>
+                                               <tr>
                                                        <td height="24">Purine/Pyrimidine</td>
                                                        <td bgcolor="#FF83FA"></td>
                                                        <td bgcolor="#40E0D0"></td>
diff --git a/help/help/html/colourSchemes/nucleotideambiguity.html b/help/help/html/colourSchemes/nucleotideambiguity.html
new file mode 100755 (executable)
index 0000000..c1ab548
--- /dev/null
@@ -0,0 +1,122 @@
+<html>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ 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.
+ -->
+<head>
+<title>Nucleotide Colour Scheme</title>
+<style type="text/css">
+<!--
+td {
+       text-align: center;
+}
+-->
+</style>
+</head>
+
+<body>
+  <p>
+    <strong>Nucleotide Ambiguity Colours</strong>
+  </p>
+  
+  
+  <p>
+  This colour scheme was devised by Suzanne Duce and the Jalview Team to highlight ambiguity codes used in nucleotide sequences.
+  </p>  
+  <p>
+  The use of X to represent an unknown base is acknowledged, but this is not recommended as the symbol refers to xanthine (see IUPAC-IUB Commission on Biochemical Nomenclature (CBN). <a href="https://iupac.qmul.ac.uk/misc/naabb.html">Abbreviations and Symbols for Nucleic Acids, Polynucleotides and their Constituents.</a>)
+  </p>
+  <div align="center">
+    <table width="200" border="1">
+      <tr>
+        <td bgcolor="#f0fff0">A</td>
+        <td>Adenine</td>
+      </tr>
+      <tr>
+        <td bgcolor="#f0fff0">C</td>
+        <td>Cytosine</td>
+      </tr>
+      <tr>
+        <td bgcolor="#f0fff0">G</td>
+        <td>Guanine</td>
+      </tr>
+      <tr>
+        <td bgcolor="#f0fff0">T</td>
+        <td>Thymine</td>
+      </tr>
+      <tr>
+        <td bgcolor="#f0fff0">U</td>
+        <td>Uracil</td>
+      </tr>
+      <tr>
+        <td bgcolor="#ffffff">I</td>
+        <td>Inosine</td>
+      </tr>
+      <tr>
+        <td bgcolor="#4f6f6f">X</td>
+        <td>Unknown (sometimes Xanthine)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#CD5C5C">R</td>
+        <td>Unknown Purine</td>
+      </tr>
+      <tr>
+        <td bgcolor="#008000">Y</td>
+        <td>Unknown Pyrimidine</td>
+      </tr>
+      <tr>
+        <td bgcolor="#4682B4">W</td>
+        <td>Weak nucleotide (A or T)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#FF8C00">S</td>
+        <td>Strong nucleotide (G or C)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#9ACD32">M</td>
+        <td>Amino (A or C)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#9932CC">K</td>
+        <td>Keto (G or T)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#8b4513">B</td>
+        <td>Not A (G or C or T)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#808080">H</td>
+        <td>Not G (A or C or T)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#483D8B">D</td>
+        <td>Not C (A or G or T)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#b8860b">V</td>
+        <td>Not T (A or G or C)</td>
+      </tr>
+      <tr>
+        <td bgcolor="#2f4f4f">N</td>
+        <td>Unknown</td>
+      </tr>
+    </table>
+  </div>
+</body>
+</html>
index 1a7286f..6534d2d 100755 (executable)
           Blosum62 Score, Percentage Identity, Zappo, Taylor,
          gecos:flower, gecos:blossom, gecos:sunset, gecos:ocean,
           Hydrophobicity, Helix Propensity, Strand Propensity, Turn
-          Propensity, Buried Index, Nucleotide, Purine/Pyrimidine, User
+          Propensity, Buried Index, Nucleotide, Nucleotide Ambiguity, Purine/Pyrimidine, User
           Defined<br>
       </strong> <em>See <a href="../colourSchemes/index.html">colours</a>
           for a description of all colour schemes.
index 0e10f44..5b8d00b 100755 (executable)
@@ -40,7 +40,7 @@
         Blosum62 Score, Percentage Identity, Zappo, Taylor,
        gecos:flower, gecos:blossom, gecos:sunset, gecos:ocean,
         Hydrophobicity, Helix Propensity, Strand Propensity, Turn
-        Propensity, Buried Index, Nucleotide, Purine/Pyrimidine, User
+        Propensity, Buried Index, Nucleotide, Nucleotide Ambiguity, Purine/Pyrimidine, User
         Defined<br>
     </strong> <em>See <a href="../colourSchemes/index.html">colours</a> for
         a description of all colour schemes.
diff --git a/help/markdown/releases/release-2_11_3.md b/help/markdown/releases/release-2_11_3.md
deleted file mode 100644 (file)
index 18b15ea..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
----
-version: 2.11.3
-date: 2022-12-12
-channel: "release"
----
-
-## New Features
-
-- <!-- JAL-4061 --> Find can search sequence features' type and description
-- <!-- JAL-4062 --> Hold down Shift + CMD/CTRL C to copy highlighted regions as new sequences
-JAL-4089       use selected columns for superposition
-JAL-4086       Highlight aligned positions on all associated structures when mousing over a column
-JAL-4083       Exceptions for multiple residue highlights in Jmol
-JAL-4075       Don't add string label version of DSSP secondary structure codes in secondary structure annotation rows
-JAL-4033       selections with visual feedback via contact matrix annotation
-JAL-4027       contact matrix datatype in Jalview
-JAL-3895       Alphafold red/orange/yellow/green colourscheme for structures
-JAL-3855       Discover and import alphafold2 models and metadata from https://alphafold.ebi.ac.uk/
-JAL-3416       FlatLAF default look and feel on Linux, OSX and everywhere else ?
-JAL-2961       Jmol view not always centred on structures when multiple structures are viewed
-JAL-2382       Import and display sequence-associated contact predictions in CASP-RR format
-JAL-2349       Contact prediction visualisation
-JAL-2348       modularise annotation renderer
-JAL-1551       Standard source code formatting and editing settings
diff --git a/help/markdown/releases/release-2_11_3_0.md b/help/markdown/releases/release-2_11_3_0.md
new file mode 100644 (file)
index 0000000..46de783
--- /dev/null
@@ -0,0 +1,53 @@
+---
+version: 2.11.3.0
+date: 2023-03-07
+channel: "release"
+---
+
+## New Features
+- <!-- JAL-4064 --> Native M1 build for macOS using Adoptium JRE 11 macos-aarch64
+- <!-- JAL-4054 --> Installers built with install4j10
+- <!-- JAL-3676 --> Allow log level configuration via Jalview's Java Console, and a Copy to Clipboard button
+- <!-- JAL-3416 --> FlatLAF default look and feel on Linux, OSX and everywhere else ?
+
+- <!-- JAL-4019 --> Ambiguous Base Colourscheme
+- <!-- JAL-4061 --> Find can search sequence features' type and description
+- <!-- JAL-4062 --> Hold down Shift + CMD/CTRL C to copy highlighted regions as new sequences
+- <!-- JAL-4089 --> Use selected columns for superposition
+- <!-- JAL-4086 --> Highlight aligned positions on all associated structures when mousing over a column
+
+- <!-- JAL-3895 --> Alphafold red/orange/yellow/green colourscheme for structures
+- <!-- JAL-4095 --> Interactive picking of low pAE score regions
+- <!-- JAL-4027 --> contact matrix datatype in Jalview
+- <!-- JAL-4033 --> Selections with visual feedback via contact matrix annotation
+
+- <!-- JAL-4075 --> Don't add string label version of DSSP secondary structure codes in secondary structure annotation rows
+- <!-- JAL-3855 --> Discover and import alphafold2 models and metadata from https://alphafold.ebi.ac.uk/
+
+- <!-- JAL-2961 --> Jmol view not always centred on structures when multiple structures are viewed
+
+- <!-- JAL-2528, JAL-1713 --> Overview window is saved in project file, and state of 'show hidden regions' is preserved.
+
+- <!-- JAL-3119 --> Name of alignment and view included in overview window's title
+
+- <!-- JAL-4091 --> Visual indication of relationship with associated sequence to distinguish different sequence associated annotation rows
+- <!-- JAL-4094 --> Shift+Click+Drag to adjust height of all annotation tracks of same type
+
+
+## Still in progress (delete on release)
+
+- <!-- JAL-2382 --> Import and display sequence-associated contact predictions in CASP-RR format
+- <!-- JAL-2349 --> Contact prediction visualisation
+- <!-- JAL-2348 --> modularise annotation renderer
+
+
+
+## Issues Resolved
+- <!-- JAL-3776 --> Cancelling interactive calculation leaves empty progress bar.
+- <!-- JAL-3772 --> Unsaved Alignment windows close without prompting to save, individually or at application quit.
+- <!-- JAL-1988 --> Can quit Jalview while 'save project' is in progress
+- <!-- JAL-4126 --> 'Use original colours' option of colour by annotation not honoured when restoring view from project
+- <!-- JAL-4116 --> PDB structures slow to view when Jalview Java Console is open (2.11.2.7 patch)
+- <!-- JAL-3784 --> Multiple overview windows can be opened for a particular alignment view when multiple views are present
+- <!-- JAL-3785 --> Overview windows opened automatically (due to preferences settings) lack title
+- <!-- JAL-2353 --> Show Crossrefs fails to retrieve CDS from ENA or Ensembl for sequences retrieved from Uniprot due to version numbers in cross-reference accession
\ No newline at end of file
diff --git a/help/markdown/whatsnew/whatsnew-2_11_3_0.md b/help/markdown/whatsnew/whatsnew-2_11_3_0.md
new file mode 100644 (file)
index 0000000..59495d5
--- /dev/null
@@ -0,0 +1,5 @@
+The 2.11.3 series includes support for in-depth exploration of predicted alignment error matrices from AlphaFold in the context of multiple alignments, along with support for standard colourschemes for shading models according to their pLDDT.
+
+It also introduces new support for native ARM-based OSX architectures, and a few other goodies!
+
+
diff --git a/j11lib/flatlaf-2.3.jar b/j11lib/flatlaf-2.3.jar
deleted file mode 100644 (file)
index 9f292d2..0000000
Binary files a/j11lib/flatlaf-2.3.jar and /dev/null differ
diff --git a/j11lib/flatlaf-3.0.jar b/j11lib/flatlaf-3.0.jar
new file mode 100644 (file)
index 0000000..75d90d3
Binary files /dev/null and b/j11lib/flatlaf-3.0.jar differ
similarity index 70%
rename from j8lib/flatlaf-extras-2.3.jar
rename to j11lib/flatlaf-extras-3.0.jar
index 39e9701..1f6bbc3 100644 (file)
Binary files a/j8lib/flatlaf-extras-2.3.jar and b/j11lib/flatlaf-extras-3.0.jar differ
diff --git a/j8lib/flatlaf-2.3.jar b/j8lib/flatlaf-2.3.jar
deleted file mode 100644 (file)
index 9f292d2..0000000
Binary files a/j8lib/flatlaf-2.3.jar and /dev/null differ
diff --git a/j8lib/flatlaf-3.0.jar b/j8lib/flatlaf-3.0.jar
new file mode 100644 (file)
index 0000000..75d90d3
Binary files /dev/null and b/j8lib/flatlaf-3.0.jar differ
similarity index 70%
rename from j11lib/flatlaf-extras-2.3.jar
rename to j8lib/flatlaf-extras-3.0.jar
index 39e9701..1f6bbc3 100644 (file)
Binary files a/j11lib/flatlaf-extras-2.3.jar and b/j8lib/flatlaf-extras-3.0.jar differ
index 7f6e9a5..91ae958 100644 (file)
@@ -32,7 +32,17 @@ action.load_project = Load Project
 action.save_project = Save Project
 action.save_project_as = Save Project as...
 action.quit = Quit
-label.quit_jalview = Quit Jalview?
+action.force_quit = Force quit
+label.quit_jalview = Are you sure you want to quit Jalview?
+label.wait_for_save = Wait for save
+label.unsaved_changes = There are unsaved changes.
+label.save_in_progress = Some files are still saving:
+label.unknown = Unknown
+label.quit_after_saving = Jalview will quit after saving.
+label.all_saved = All files saved.
+label.quitting_bye = Quitting, bye!
+action.wait = Wait
+action.cancel_quit = Cancel quit
 action.expand_views = Expand Views
 action.gather_views = Gather Views
 action.page_setup = Page Setup...
@@ -203,6 +213,7 @@ label.colourScheme_turnpropensity = Turn Propensity
 label.colourScheme_buriedindex = Buried Index
 label.colourScheme_purine/pyrimidine = Purine/Pyrimidine
 label.colourScheme_nucleotide = Nucleotide
+label.colourScheme_nucleotideambiguity = Nucleotide Ambiguity
 label.colourScheme_t-coffeescores = T-Coffee Scores
 label.colourScheme_rnahelices = By RNA Helices
 label.colourScheme_sequenceid = Sequence ID Colour
index 13eb15e..79274d0 100644 (file)
@@ -32,7 +32,17 @@ action.load_project = Cargar proyecto
 action.save_project = Guardar proyecto
 action.save_project_as = Guardar proyecto como...
 action.quit = Salir
-label.quit_jalview = Salir de Jalview?
+action.force_quit = Forzar la salida
+label.quit_jalview = ¿Estás seguro de que quieres salir de Jalview?
+label.wait_for_save = Esperar a guardar
+label.unsaved_changes = Hay cambios sin guardar.
+label.save_in_progress = Algunos archivos aún se están guardando:
+label.unknown = desconocido
+label.quit_after_saving = Jalview se cerrará después de guardar.
+label.all_saved = Todos los archivos guardados.
+label.quitting_bye = Saliendo ¡chao!
+action.wait = Espere
+action.cancel_quit = Cancelar la salida
 action.expand_views = Expandir vistas
 action.gather_views = Capturar vistas
 action.page_setup = Configuración de la página
@@ -194,6 +204,7 @@ label.colourScheme_turnpropensity = Tendencia de giro
 label.colourScheme_buriedindex = Índice de encubrimiento
 label.colourScheme_purine/pyrimidine = Purina/Pirimidina
 label.colourScheme_nucleotide = Nucleótido
+label.colourScheme_nucleotideambiguity = Ambigüedad de nucleótido
 label.colourScheme_t-coffeescores = Puntuación del T-Coffee
 label.colourScheme_rnahelices = Por hélices de RNA
 label.colourScheme_sequenceid = Color de ID de secuencia
index 1d2235e..cd05e5f 100755 (executable)
                                                                        </xs:complexContent>
                                                                </xs:complexType>
                                                        </xs:element>
+                                                       <xs:element name="overview" minOccurs="0">
+                                                         <xs:complexType>
+                                                               <xs:attributeGroup ref="jv:swingwindow" />
+                                                               <xs:attribute name="showHidden" type="xs:boolean" />
+                                                               <xs:attribute name="residueColour" type="xs:int" />
+                                                               <xs:attribute name="gapColour" type="xs:int" />
+                                                               <xs:attribute name="hiddenColour" type="xs:int" />
+                                                               <xs:attribute name="title" type="xs:string" />
+                                                         </xs:complexType>
+                                                       </xs:element>
                                                </xs:sequence>
                                                <xs:attributeGroup ref="jv:swingwindow" />
                                                <xs:attribute name="conservationSelected" type="xs:boolean" />
diff --git a/src/jalview/appletgui/#OverviewPanel.java# b/src/jalview/appletgui/#OverviewPanel.java#
deleted file mode 100755 (executable)
index 14c3158..0000000
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ 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;
-
-import jalview.datamodel.SequenceI;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.datamodel.AlignmentI;
-import jalview.renderer.seqfeatures.FeatureColourFinder;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Frame;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Panel;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-
-public class OverviewPanel extends Panel implements Runnable,
-        MouseMotionListener, MouseListener
-{
-  private OverviewDimensions od;
-
-  private Image miniMe;
-
-  private Image offscreen;
-
-  private AlignViewport av;
-
-  private AlignmentPanel ap;
-
-  private boolean resizing = false;
-
-  // This is set true if the user resizes whilst
-  // the overview is being calculated
-  private boolean resizeAgain = false;
-
-  // Can set different properties in this seqCanvas than
-  // main visible SeqCanvas
-  private SequenceRenderer sr;
-
-  private FeatureRenderer fr;
-
-  private Frame nullFrame;
-
-  public OverviewPanel(AlignmentPanel alPanel)
-  {
-    this.av = alPanel.av;
-    this.ap = alPanel;
-    setLayout(null);
-    nullFrame = new Frame();
-    nullFrame.addNotify();
-
-    sr = new SequenceRenderer(av);
-    sr.graphics = nullFrame.getGraphics();
-    sr.renderGaps = false;
-    sr.forOverview = true;
-    fr = new FeatureRenderer(av);
-
-    od = new OverviewDimensions(av.getRanges(), av.isShowAnnotation());
-
-    setSize(new Dimension(od.getWidth(), od.getHeight()));
-    addComponentListener(new ComponentAdapter()
-    {
-
-      @Override
-      public void componentResized(ComponentEvent evt)
-      {
-        if ((getWidth() != od.getWidth())
-                || (getHeight() != (od.getHeight())))
-        {
-          updateOverviewImage();
-        }
-      }
-    });
-
-    addMouseMotionListener(this);
-
-    addMouseListener(this);
-
-    updateOverviewImage();
-
-  }
-
-  @Override
-  public void mouseEntered(MouseEvent evt)
-  {
-  }
-
-  @Override
-  public void mouseExited(MouseEvent evt)
-  {
-  }
-
-  @Override
-  public void mouseClicked(MouseEvent evt)
-  {
-  }
-
-  @Override
-  public void mouseMoved(MouseEvent evt)
-  {
-  }
-
-  @Override
-  public void mousePressed(MouseEvent evt)
-  {
-    mouseAction(evt);
-  }
-
-  @Override
-  public void mouseReleased(MouseEvent evt)
-  {
-    mouseAction(evt);
-  }
-
-  @Override
-  public void mouseDragged(MouseEvent evt)
-  {
-    mouseAction(evt);
-  }
-
-  private void mouseAction(MouseEvent evt)
-  {
-    od.updateViewportFromMouse(evt.getX(), evt.getY(), av.getAlignment()
-            .getHiddenSequences(), av.getColumnSelection(), av
-            .getRanges());
-    ap.setScrollValues(od.getScrollCol(), od.getScrollRow());
-    ap.paintAlignment(false);
-  }
-
-  /**
-   * Updates the overview image when the related alignment panel is updated
-   */
-  public void updateOverviewImage()
-  {
-    if (resizing)
-    {
-      resizeAgain = true;
-      return;
-    }
-
-    if (av.isShowSequenceFeatures())
-    {
-      fr.transferSettings(ap.seqPanel.seqCanvas.fr);
-    }
-
-    resizing = true;
-
-    if ((getSize().width > 0) && (getSize().height > 0))
-    {
-      od.setWidth(getSize().width);
-      od.setHeight(getSize().height);
-    }
-    setSize(new Dimension(od.getWidth(), od.getHeight()));
-
-    Thread thread = new Thread(this);
-    thread.start();
-    repaint();
-  }
-
-  @Override
-  public void run()
-  {
-    miniMe = null;
-
-    if (av.isShowSequenceFeatures())
-    {
-      fr.transferSettings(ap.seqPanel.seqCanvas.getFeatureRenderer());
-    }
-
-    if (getSize().width > 0 && getSize().height > 0)
-    {
-      od.setWidth(getSize().width);
-      od.setHeight(getSize().height);
-    }
-
-    setSize(new Dimension(od.getWidth(), od.getHeight()));
-
-    miniMe = nullFrame.createImage(od.getWidth(), od.getHeight());
-    offscreen = nullFrame.createImage(od.getWidth(), od.getHeight());
-
-    Graphics mg = miniMe.getGraphics();
-<<<<<<< HEAD
-
-    int alwidth = av.getAlignment().getWidth();
-    int alheight = av.getAlignment().getAbsoluteHeight();
-    float sampleCol = alwidth / (float) od.getWidth();
-    float sampleRow = alheight / (float) od.getSequencesHeight();
-=======
-    float sampleCol = (float) alwidth / (float) width;
-    float sampleRow = (float) alheight / (float) sequencesHeight;
-
-    int lastcol = 0, lastrow = 0;
-    int xstart = 0, ystart = 0;
-    Color color = Color.yellow;
-    int row, col, sameRow = 0, sameCol = 0;
-    jalview.datamodel.SequenceI seq;
-    final boolean hasHiddenRows = av.hasHiddenRows(), hasHiddenCols = av
-            .hasHiddenColumns();
-    boolean hiddenRow = false;
-    AlignmentI alignment = av.getAlignment();
-
-    FeatureColourFinder finder = new FeatureColourFinder(fr);
-    for (row = 0; row <= sequencesHeight; row++)
-    {
-      if (resizeAgain)
-      {
-        break;
-      }
-      if ((int) (row * sampleRow) == lastrow)
-      {
-        sameRow++;
-        continue;
-      }
-
-      hiddenRow = false;
-      if (hasHiddenRows)
-      {
-        seq = alignment.getHiddenSequences().getHiddenSequence(lastrow);
-        if (seq == null)
-        {
-          int index = alignment.getHiddenSequences()
-                  .findIndexWithoutHiddenSeqs(lastrow);
-
-          seq = alignment.getSequenceAt(index);
-        }
-        else
-        {
-          hiddenRow = true;
-        }
-      }
-      else
-      {
-        seq = alignment.getSequenceAt(lastrow);
-      }
-
-      for (col = 0; col < width; col++)
-      {
-        if ((int) (col * sampleCol) == lastcol
-                && (int) (row * sampleRow) == lastrow)
-        {
-          sameCol++;
-          continue;
-        }
-
-        lastcol = (int) (col * sampleCol);
-
-        if (seq.getLength() > lastcol)
-        {
-          color = sr.getResidueColour(seq, lastcol, finder);
-        }
-        else
-        {
-          color = Color.white;
-        }
-
-        if (hiddenRow
-                || (hasHiddenCols && !av.getColumnSelection().isVisible(
-                        lastcol)))
-        {
-          color = color.darker().darker();
-        }
-
-        mg.setColor(color);
-        if (sameCol == 1 && sameRow == 1)
-        {
-          mg.drawLine(xstart, ystart, xstart, ystart);
-        }
-        else
-        {
-          mg.fillRect(xstart, ystart, sameCol, sameRow);
-        }
->>>>>>> bug/JAL-2436featureRendererThreading
-
-    buildImage(sampleRow, sampleCol, mg);
-
-    if (av.isShowAnnotation())
-    {
-      for (int col = 0; col < od.getWidth() && !resizeAgain; col++)
-      {
-        mg.translate(col, od.getSequencesHeight());
-        ap.annotationPanel.renderer.drawGraph(mg,
-                av.getAlignmentConservationAnnotation(),
-                av.getAlignmentConservationAnnotation().annotations,
-                (int) (sampleCol) + 1, od.getGraphHeight(),
-                (int) (col * sampleCol), (int) (col * sampleCol) + 1);
-        mg.translate(-col, -od.getSequencesHeight());
-      }
-    }
-    System.gc();
-
-    resizing = false;
-
-    setBoxPosition();
-
-    if (resizeAgain)
-    {
-      resizeAgain = false;
-      updateOverviewImage();
-    }
-  }
-
-  /*
-   * Build the overview panel image
-   */
-  private void buildImage(float sampleRow, float sampleCol, Graphics mg)
-  {
-    int lastcol = 0;
-    int lastrow = 0;
-    int xstart = 0;
-    int ystart = 0;
-    Color color = Color.yellow;
-    int sameRow = 0;
-    int sameCol = 0;
-
-    SequenceI seq = null;
-
-    final boolean hasHiddenCols = av.hasHiddenColumns();
-    boolean hiddenRow = false;
-
-    for (int row = 0; row <= od.getSequencesHeight() && !resizeAgain; row++)
-    {
-      if ((int) (row * sampleRow) == lastrow)
-      {
-        sameRow++;
-      }
-      else
-      {
-        // get the sequence which would be at alignment index 'lastrow' if no
-        // columns were hidden, and determine whether it is hidden or not
-        hiddenRow = av.getAlignment().isHidden(lastrow);
-        seq = av.getAlignment().getSequenceAtAbsoluteIndex(lastrow);
-
-        for (int col = 0; col < od.getWidth(); col++)
-        {
-          if ((int) (col * sampleCol) == lastcol
-                  && (int) (row * sampleRow) == lastrow)
-          {
-            sameCol++;
-          }
-          else
-          {
-            lastcol = (int) (col * sampleCol);
-
-            color = getColumnColourFromSequence(seq, hiddenRow,
-                    hasHiddenCols, lastcol);
-
-            mg.setColor(color);
-            if (sameCol == 1 && sameRow == 1)
-            {
-              mg.drawLine(xstart, ystart, xstart, ystart);
-            }
-            else
-            {
-              mg.fillRect(xstart, ystart, sameCol, sameRow);
-            }
-
-            xstart = col;
-            sameCol = 1;
-          }
-        }
-        lastrow = (int) (row * sampleRow);
-        ystart = row;
-        sameRow = 1;
-      }
-    }
-  }
-
-  /*
-   * Find the colour of a sequence at a specified column position
-   */
-  private Color getColumnColourFromSequence(
-          jalview.datamodel.SequenceI seq, boolean hiddenRow,
-          boolean hasHiddenCols, int lastcol)
-  {
-    Color color;
-    if (seq.getLength() > lastcol)
-    {
-      color = sr.getResidueBoxColour(seq, lastcol);
-
-      if (av.isShowSequenceFeatures())
-      {
-        color = fr.findFeatureColour(color, seq, lastcol);
-      }
-    }
-    else
-    {
-      color = Color.white;
-    }
-
-    if (hiddenRow
-            || (hasHiddenCols && !av.getColumnSelection()
-                    .isVisible(lastcol)))
-    {
-      color = color.darker().darker();
-    }
-    return color;
-  }
-
-  /**
-   * Update the overview panel box when the associated alignment panel is
-   * changed
-   * 
-   */
-  public void setBoxPosition()
-  {
-    od.setBoxPosition(av.getAlignment()
-            .getHiddenSequences(), av.getColumnSelection(), av.getRanges());
-    repaint();
-  }
-
-  @Override
-  public void update(Graphics g)
-  {
-    paint(g);
-  }
-
-  @Override
-  public void paint(Graphics g)
-  {
-    Graphics og = offscreen.getGraphics();
-    if (miniMe != null)
-    {
-      og.drawImage(miniMe, 0, 0, this);
-      og.setColor(Color.red);
-      od.drawBox(og);
-      g.drawImage(offscreen, 0, 0, this);
-    }
-  }
-
-}
index 7ff7309..a75a27f 100755 (executable)
@@ -1200,6 +1200,7 @@ public class Cache
     sb.append("Java version: ");
     sb.append(System.getProperty("java.version"));
     sb.append("\n");
+    sb.append("Java platform: ");
     sb.append(System.getProperty("os.arch"));
     sb.append(" ");
     sb.append(System.getProperty("os.name"));
@@ -1220,17 +1221,19 @@ public class Cache
     sb.append(" (");
     sb.append(lafClass);
     sb.append(")\n");
+    appendIfNotNull(sb, "Channel: ",
+            ChannelProperties.getProperty("channel"), "\n", null);
     if (Console.isDebugEnabled()
             || !"release".equals(ChannelProperties.getProperty("channel")))
     {
-      appendIfNotNull(sb, "Channel: ",
-              ChannelProperties.getProperty("channel"), "\n", null);
       appendIfNotNull(sb, "Getdown appdir: ",
               System.getProperty("getdowninstanceappdir"), "\n", null);
       appendIfNotNull(sb, "Getdown appbase: ",
               System.getProperty("getdowninstanceappbase"), "\n", null);
       appendIfNotNull(sb, "Java home: ", System.getProperty("java.home"),
               "\n", "unknown");
+      appendIfNotNull(sb, "Preferences file: ", propertiesFile, "\n",
+              "unknown");
     }
     return sb.toString();
   }
index e259cc2..a988a09 100755 (executable)
@@ -49,6 +49,7 @@ import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 import javax.swing.UIManager.LookAndFeelInfo;
+import javax.swing.UnsupportedLookAndFeelException;
 
 import com.formdev.flatlaf.FlatLightLaf;
 import com.formdev.flatlaf.util.SystemInfo;
@@ -62,6 +63,8 @@ import jalview.ext.so.SequenceOntology;
 import jalview.gui.AlignFrame;
 import jalview.gui.Desktop;
 import jalview.gui.PromptUserConfig;
+import jalview.gui.QuitHandler;
+import jalview.gui.QuitHandler.QResponse;
 import jalview.io.AppletFormatAdapter;
 import jalview.io.BioJsHTMLOutput;
 import jalview.io.DataSourceType;
@@ -272,6 +275,28 @@ public class Jalview
     if (!Platform.isJS())
     {
       System.setSecurityManager(null);
+
+      Runtime.getRuntime().addShutdownHook(new Thread()
+      {
+        public void run()
+        {
+          Console.debug("Running shutdown hook");
+          if (QuitHandler.gotQuitResponse() == QResponse.CANCEL_QUIT)
+          {
+            // Got to here by a SIGTERM signal.
+            // Note we will not actually cancel the quit from here -- it's too
+            // late -- but we can wait for saving files.
+            Console.debug("Checking for saving files");
+            QuitHandler.getQuitResponse(false);
+          }
+          else
+          {
+            Console.debug("Nothing more to do");
+          }
+          Console.debug("Exiting, bye!");
+          // shutdownHook cannot be cancelled, JVM will now halt
+        }
+      });
     }
 
     System.out
@@ -280,6 +305,7 @@ public class Jalview
     System.out.println(System.getProperty("os.arch") + " "
             + System.getProperty("os.name") + " "
             + System.getProperty("os.version"));
+
     String val = System.getProperty("sys.install4jVersion");
     if (val != null)
     {
@@ -301,6 +327,7 @@ public class Jalview
 
     // old ArgsParser
     ArgsParser aparser = new ArgsParser(args);
+
     boolean headless = false;
 
     try
@@ -315,7 +342,8 @@ public class Jalview
     }
 
     String usrPropsFile = aparser.getValue("props");
-    Cache.loadProperties(usrPropsFile); // must do this before
+    Cache.loadProperties(usrPropsFile); // must do this
+                                        // before
     if (usrPropsFile != null)
     {
       System.out.println(
@@ -587,8 +615,11 @@ public class Jalview
     }
 
     String file = null, data = null;
+
     FileFormatI format = null;
+
     DataSourceType protocol = null;
+
     FileLoader fileLoader = new FileLoader(!headless);
 
     String groovyscript = null; // script to execute after all loading is
@@ -602,6 +633,7 @@ public class Jalview
       System.out.println("No files to open!");
       System.exit(1);
     }
+
     long progress = -1;
     // Finally, deal with the remaining input data.
     if (file != null)
@@ -861,6 +893,7 @@ public class Jalview
         }
       }
     }
+
     AlignFrame startUpAlframe = null;
     // We'll only open the default file if the desktop is visible.
     // And the user
@@ -1030,7 +1063,7 @@ public class Jalview
       setSystemLookAndFeel();
       if (Platform.isLinux())
       {
-        setMetalLookAndFeel();
+        setLinuxLookAndFeel();
       }
       if (Platform.isMac())
       {
@@ -1121,8 +1154,29 @@ public class Jalview
 
   private static boolean setFlatLookAndFeel()
   {
-    boolean set = setSpecificLookAndFeel("flatlaf light",
-            "com.formdev.flatlaf.FlatLightLaf", false);
+    boolean set = false;
+    if (Platform.isMac()) {
+      try
+      {
+        UIManager.setLookAndFeel("com.formdev.flatlaf.themes.FlatMacLightLaf");
+        set = true;
+      } catch (ClassNotFoundException | InstantiationException
+              | IllegalAccessException | UnsupportedLookAndFeelException e)
+      {
+        Console.debug("Exception loading FlatMacLightLaf", e);
+      }
+    }
+    if (!set) {
+      try
+      {
+        UIManager.setLookAndFeel("com.formdev.flatlaf.FlatLightLaf");
+        set = true;
+      } catch (ClassNotFoundException | InstantiationException
+              | IllegalAccessException | UnsupportedLookAndFeelException e)
+      {
+        Console.debug("Exception loading FlatLightLaf", e);
+      }
+    }
     if (set)
     {
       if (Platform.isMac())
@@ -1155,6 +1209,8 @@ public class Jalview
       UIManager.put("TabbedPane.tabWidthMode", "compact");
       UIManager.put("TabbedPane.selectedBackground", Color.white);
     }
+
+    Desktop.setLiveDragMode(Cache.getDefault("FLAT_LIVE_DRAG_MODE", true));
     return set;
   }
 
@@ -1191,6 +1247,18 @@ public class Jalview
     return set;
   }
 
+  private static boolean setLinuxLookAndFeel()
+  {
+    boolean set = false;
+    set = setFlatLookAndFeel();
+    if (!set)
+      set = setMetalLookAndFeel();
+    // avoid GtkLookAndFeel -- not good results especially on HiDPI
+    if (!set)
+      set = setNimbusLookAndFeel();
+    return set;
+  }
+
   private static void showUsage()
   {
     System.out.println(
@@ -1401,19 +1469,12 @@ public class Jalview
   }
 
   /**
-   * Quit method delegates to Desktop.quit - unless running in headless mode
-   * when it just ends the JVM
+   * jalview.bin.Jalview.quit() will just run the non-GUI shutdownHook and exit
    */
   public void quit()
   {
-    if (desktop != null)
-    {
-      desktop.quit();
-    }
-    else
-    {
-      System.exit(0);
-    }
+    // System.exit will run the shutdownHook first
+    System.exit(0);
   }
 
   public static AlignFrame getCurrentAlignFrame()
diff --git a/src/jalview/datamodel/Profile.java~ b/src/jalview/datamodel/Profile.java~
deleted file mode 100644 (file)
index 5464596..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-package jalview.datamodel;
-
-
-/**
- * A profile for one column of an alignment
- * 
- * @author gmcarstairs
- *
- */
-public class Profile implements ProfileI
-{
-  /*
-   * an object holding counts of symbols in the profile
-   */
-  private ResidueCount counts;
-
-  /*
-   * the number of sequences (gapped or not) in the profile
-   */
-  private int height;
-
-  /*
-   * the number of non-gapped sequences in the profile
-   */
-  private int gapped;
-
-  /*
-   * the highest count for any residue in the profile
-   */
-  private int maxCount;
-
-  /*
-   * the residue (e.g. K) or residues (e.g. KQW) with the
-   * highest count in the profile
-   */
-  private String modalResidue;
-
-  /**
-   * Constructor which allows derived data to be stored without having to store
-   * the full profile
-   * 
-   * @param seqCount
-   *          the number of sequences in the profile
-   * @param gaps
-   *          the number of gapped sequences
-   * @param max
-   *          the highest count for any residue
-   * @param modalres
-   *          the residue (or concatenated residues) with the highest count
-   */
-  public Profile(int seqCount, int gaps, int max, String modalRes)
-  {
-    this.height = seqCount;
-    this.gapped = gaps;
-    this.maxCount = max;
-    this.modalResidue = modalRes;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#setCounts(jalview.datamodel.ResidueCount)
-   */
-  @Override
-  public void setCounts(ResidueCount residueCounts)
-  {
-    this.counts = residueCounts;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#getPercentageIdentity(boolean)
-   */
-  @Override
-  public float getPercentageIdentity(boolean ignoreGaps)
-  {
-    if (height == 0)
-    {
-      return 0f;
-    }
-    float pid = 0f;
-    if (ignoreGaps && gapped < height)
-    {
-      pid = (maxCount * 100f) / (height - gapped);
-    }
-    else
-    {
-      pid = (maxCount * 100f) / height;
-    }
-    return pid;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#getCounts()
-   */
-  @Override
-  public ResidueCount getCounts()
-  {
-    return counts;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#getHeight()
-   */
-  @Override
-  public int getHeight()
-  {
-    return height;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#getGapped()
-   */
-  @Override
-  public int getGapped()
-  {
-    return gapped;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#getMaxCount()
-   */
-  @Override
-  public int getMaxCount()
-  {
-    return maxCount;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#getModalResidue()
-   */
-  @Override
-  public String getModalResidue()
-  {
-    return modalResidue;
-  }
-
-  /* (non-Javadoc)
-   * @see jalview.datamodel.ProfileI#getNonGapped()
-   */
-  @Override
-  public int getNonGapped()
-  {
-    return height - gapped;
-  }
-}
diff --git a/src/jalview/datamodel/ProfileI.java~ b/src/jalview/datamodel/ProfileI.java~
deleted file mode 100644 (file)
index cf2b394..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-package jalview.datamodel;
-
-public interface ProfileI
-{
-
-  /**
-   * Set the full profile of counts
-   * 
-   * @param residueCounts
-   */
-  public abstract void setCounts(ResidueCount residueCounts);
-
-  /**
-   * Returns the percentage identity of the profile, i.e. the highest proportion
-   * of conserved (equal) symbols. The percentage is as a fraction of all
-   * sequences, or only ungapped sequences if flag ignoreGaps is set true.
-   * 
-   * @param ignoreGaps
-   * @return
-   */
-  public abstract float getPercentageIdentity(boolean ignoreGaps);
-
-  /**
-   * Returns the full symbol counts for this profile
-   * 
-   * @return
-   */
-  public abstract ResidueCount getCounts();
-
-  /**
-   * Returns the number of sequences in the profile
-   * 
-   * @return
-   */
-  public abstract int getHeight();
-
-  /**
-   * Returns the number of sequences in the profile which had a gap character
-   * (or were too short to be included in this column's profile)
-   * 
-   * @return
-   */
-  public abstract int getGapped();
-
-  /**
-   * Returns the highest count for any symbol(s) in the profile
-   * 
-   * @return
-   */
-  public abstract int getMaxCount();
-
-  /**
-   * Returns the symbol (or concatenated symbols) which have the highest count
-   * in the profile, or an empty string if there were no symbols counted
-   * 
-   * @return
-   */
-  public abstract String getModalResidue();
-
-  /**
-   * Answers the number of non-gapped sequences in the profile
-   * 
-   * @return
-   */
-  public abstract int getNonGapped();
-
-}
\ No newline at end of file
diff --git a/src/jalview/datamodel/Profiles.java~ b/src/jalview/datamodel/Profiles.java~
deleted file mode 100644 (file)
index 98a8c6d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package jalview.datamodel;
-
-public class Profiles implements ProfilesI
-{
-
-  private ProfileI[] profiles;
-
-  public Profiles(ProfileI[] p)
-  {
-    profiles = p;
-  }
-
-  /**
-   * Returns the profile for the given column, or null if none found
-   * 
-   * @param col
-   */
-  @Override
-  public ProfileI get(int col)
-  {
-    return profiles != null && col >= 0 && col < profiles.length ? profiles[col]
-            : null;
-  }
-
-  /**
-   * Returns the first column (base 0) covered by the profiles
-   */
-  @Override
-  public int getStartColumn()
-  {
-    return 0;
-  }
-
-  /**
-   * Returns the last column (base 0) covered by the profiles
-   */
-  @Override
-  public int getEndColumn()
-  {
-    return profiles == null ? 0 : profiles.length - 1;
-  }
-
-}
diff --git a/src/jalview/datamodel/ProfilesI.java~ b/src/jalview/datamodel/ProfilesI.java~
deleted file mode 100644 (file)
index 6719de6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-package jalview.datamodel;
-
-public interface ProfilesI
-{
-
-  ProfileI get(int i);
-
-  int getStartColumn();
-
-  int getEndColumn();
-
-}
diff --git a/src/jalview/datamodel/ResidueCount.java~ b/src/jalview/datamodel/ResidueCount.java~
deleted file mode 100644 (file)
index 0d0348c..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-package jalview.datamodel;
-
-import jalview.util.Comparison;
-import jalview.util.Format;
-import jalview.util.QuickSort;
-import jalview.util.SparseCount;
-
-/**
- * A class to count occurrences of residues in a profile, optimised for speed
- * and memory footprint.
- * @author gmcarstairs
- *
- */
-public class ResidueCount
-{
-  /**
-   * A data bean to hold the results of counting symbols
-   */
-  public class SymbolCounts
-  {
-    /**
-     * the symbols seen (as char values), in no particular order
-     */
-    public final char[] symbols;
-
-    /**
-     * the counts for each symbol, in the same order as the symbols
-     */
-    public final int[] values;
-
-    SymbolCounts(char[] s, int[] v)
-    {
-      symbols = s;
-      values = v;
-    }
-  }
-
-  private static final int TOUPPERCASE = 'A' - 'a';
-
-  /*
-   * nucleotide symbols to count (including N unknown)
-   */
-  private static final String NUCS = "ACGNTU";
-
-  /*
-   * amino acid symbols to count (including X unknown)
-   * NB we also include U so as to support counting of RNA bases
-   * in the "don't know" case of nucleotide / peptide
-   */
-  private static final String AAS = "ACDEFGHIKLMNPQRSTUVWXY";
-
-  private static final int GAP_COUNT = 0;
-
-  /*
-   * fast lookup tables holding the index into our count
-   * arrays of each symbol; index 0 is reserved for gap counting
-   */
-  private static int[] NUC_INDEX = new int[26];
-
-  private static int[] AA_INDEX = new int[26];
-  static
-  {
-    for (int i = 0; i < NUCS.length(); i++)
-    {
-      NUC_INDEX[NUCS.charAt(i) - 'A'] = i + 1;
-    }
-    for (int i = 0; i < AAS.length(); i++)
-    {
-      AA_INDEX[AAS.charAt(i) - 'A'] = i + 1;
-    }
-  }
-
-  /*
-   * counts array, just big enough for the nucleotide or peptide
-   * character set (plus gap counts in position 0)
-   */
-  private short[] counts;
-
-  /*
-   * alternative array of int counts for use if any count 
-   * exceeds the maximum value of short (32767)
-   */
-  private int[] intCounts;
-
-  /*
-   * flag set if we switch from short to int counts
-   */
-  private boolean useIntCounts;
-
-  /*
-   * general-purpose counter, only for use for characters
-   * that are not in the expected alphabet
-   */
-  private SparseCount otherData;
-
-  /*
-   * keeps track of the maximum count value recorded
-   * (if this class ever allows decrements, would need to
-   * calculate this on request instead) 
-   */
-  int maxCount;
-
-  /*
-   * if we think we are counting nucleotide, can get by with smaller
-   * array to hold counts
-   */
-  private boolean isNucleotide;
-
-  /**
-   * Default constructor allocates arrays able to count either nucleotide or
-   * peptide bases. Use this constructor if not sure which the data is.
-   */
-  public ResidueCount()
-  {
-    this(false);
-  }
-
-  /**
-   * Constructor that allocates an array just big enough for the anticipated
-   * characters, plus one position to count gaps
-   */
-  public ResidueCount(boolean nucleotide)
-  {
-    isNucleotide = nucleotide;
-    int charsToCount = nucleotide ? NUCS.length() : AAS.length();
-    counts = new short[charsToCount + 1];
-  }
-
-  /**
-   * Increments the count for the given character. The supplied character may be
-   * upper or lower case but counts are for the upper case only. Gap characters
-   * (space, ., -) are all counted together.
-   * 
-   * @param c
-   * @return the new value of the count for the character
-   */
-  public int add(final char c)
-  {
-    char u = toUpperCase(c);
-    int newValue = 0;
-    int offset = getOffset(u);
-
-    /*
-     * offset 0 is reserved for gap counting, so 0 here means either
-     * an unexpected character, or a gap character passed in error
-     */
-    if (offset == 0)
-    {
-      if (Comparison.isGap(u))
-      {
-        newValue = addGap();
-      }
-      else
-      {
-        newValue = addOtherCharacter(u);
-      }
-    }
-    else
-    {
-      newValue = increment(offset);
-    }
-    return newValue;
-  }
-
-  /**
-   * Increment the count at the specified offset. If this would result in short
-   * overflow, promote to counting int values instead.
-   * 
-   * @param offset
-   * @return the new value of the count at this offset
-   */
-  int increment(int offset)
-  {
-    int newValue = 0;
-    if (useIntCounts)
-    {
-      newValue = intCounts[offset];
-      intCounts[offset] = ++newValue;
-    }
-    else
-    {
-      if (counts[offset] == Short.MAX_VALUE)
-      {
-        handleOverflow();
-        newValue = intCounts[offset];
-        intCounts[offset] = ++newValue;
-      }
-      else
-      {
-        newValue = counts[offset];
-        counts[offset] = (short) ++newValue;
-      }
-    }
-    maxCount = Math.max(maxCount, newValue);
-    return newValue;
-  }
-
-  /**
-   * Switch from counting in short to counting in int
-   */
-  synchronized void handleOverflow()
-  {
-    intCounts = new int[counts.length];
-    for (int i = 0; i < counts.length; i++)
-    {
-      intCounts[i] = counts[i];
-    }
-    counts = null;
-    useIntCounts = true;
-  }
-
-  /**
-   * Returns this character's offset in the count array
-   * 
-   * @param c
-   * @return
-   */
-  int getOffset(char c)
-  {
-    int offset = 0;
-    if ('A' <= c && c <= 'Z')
-    {
-      offset = isNucleotide ? NUC_INDEX[c - 'A'] : AA_INDEX[c - 'A'];
-    }
-    return offset;
-  }
-
-  /**
-   * @param c
-   * @return
-   */
-  protected char toUpperCase(final char c)
-  {
-    char u = c;
-    if ('a' <= c && c <= 'z')
-    {
-      u = (char) (c + TOUPPERCASE);
-    }
-    return u;
-  }
-
-  /**
-   * Increment count for some unanticipated character. The first time this
-   * called, a SparseCount is instantiated to hold these 'extra' counts.
-   * 
-   * @param c
-   * @return the new value of the count for the character
-   */
-  int addOtherCharacter(char c)
-  {
-    if (otherData == null)
-    {
-      otherData = new SparseCount();
-    }
-    int newValue = otherData.add(c, 1);
-    maxCount = Math.max(maxCount, newValue);
-    return newValue;
-  }
-
-  /**
-   * Set count for some unanticipated character. The first time this called, a
-   * SparseCount is instantiated to hold these 'extra' counts.
-   * 
-   * @param c
-   * @param value
-   */
-  void setOtherCharacter(char c, int value)
-  {
-    if (otherData == null)
-    {
-      otherData = new SparseCount();
-    }
-    otherData.put(c, value);
-  }
-
-  /**
-   * Increment count of gap characters
-   * 
-   * @return the new count of gaps
-   */
-  public int addGap()
-  {
-    int newValue;
-    if (useIntCounts)
-    {
-      newValue = ++intCounts[GAP_COUNT];
-    }
-    else
-    {
-      newValue = ++counts[GAP_COUNT];
-    }
-    return newValue;
-  }
-
-  /**
-   * Answers true if we are counting ints (only after overflow of short counts)
-   * 
-   * @return
-   */
-  boolean isCountingInts()
-  {
-    return useIntCounts;
-  }
-
-  /**
-   * Sets the count for the given character. The supplied character may be upper
-   * or lower case but counts are for the upper case only.
-   * 
-   * @param c
-   * @param count
-   */
-  public void put(char c, int count)
-  {
-    char u = toUpperCase(c);
-    int offset = getOffset(u);
-
-    /*
-     * offset 0 is reserved for gap counting, so 0 here means either
-     * an unexpected character, or a gap character passed in error
-     */
-    if (offset == 0)
-    {
-      if (Comparison.isGap(u))
-      {
-        set(0, count);
-      }
-      else
-      {
-        setOtherCharacter(u, count);
-        maxCount = Math.max(maxCount, count);
-      }
-    }
-    else
-    {
-      set(offset, count);
-      maxCount = Math.max(maxCount, count);
-    }
-  }
-
-  /**
-   * Sets the count at the specified offset. If this would result in short
-   * overflow, promote to counting int values instead.
-   * 
-   * @param offset
-   * @param value
-   */
-  void set(int offset, int value)
-  {
-    if (useIntCounts)
-    {
-      intCounts[offset] = value;
-    }
-    else
-    {
-      if (value > Short.MAX_VALUE || value < Short.MIN_VALUE)
-      {
-        handleOverflow();
-        intCounts[offset] = value;
-      }
-      else
-      {
-        counts[offset] = (short) value;
-      }
-    }
-  }
-
-  /**
-   * Returns the count for the given character, or zero if no count held
-   * 
-   * @param c
-   * @return
-   */
-  public int getCount(char c)
-  {
-    char u = toUpperCase(c);
-    int offset = getOffset(u);
-    if (offset == 0)
-    {
-      if (!Comparison.isGap(u))
-      {
-        // should have called getGapCount()
-        return otherData == null ? 0 : otherData.get(u);
-      }
-    }
-    return useIntCounts ? intCounts[offset] : counts[offset];
-  }
-
-  public int getGapCount()
-  {
-    return useIntCounts ? intCounts[0] : counts[0];
-  }
-
-  /**
-   * Answers true if this object wraps a counter for unexpected characters
-   * 
-   * @return
-   */
-  boolean isUsingOtherData()
-  {
-    return otherData != null;
-  }
-
-  /**
-   * Returns the character (or concatenated characters) for the symbol(s) with
-   * the given count in the profile. Can be used to get the modal residue by
-   * supplying the modal count value. Returns an empty string if no symbol has
-   * the given count. The symbols are in alphabetic order of standard peptide or
-   * nucleotide characters, followed by 'other' symbols if any.
-   * 
-   * @return
-   */
-  public String getResiduesForCount(int count)
-  {
-    if (count == 0)
-    {
-      return "";
-    }
-
-    /*
-     * find counts for the given value and append the
-     * corresponding symbol
-     */
-    StringBuilder modal = new StringBuilder();
-    if (useIntCounts)
-    {
-      for (int i = 1; i < intCounts.length; i++)
-      {
-        if (intCounts[i] == count)
-        {
-          modal.append(isNucleotide ? NUCS.charAt(i - 1) : AAS
-                  .charAt(i - 1));
-        }
-      }
-    }
-    else
-    {
-      for (int i = 1; i < counts.length; i++)
-      {
-        if (counts[i] == count)
-        {
-          modal.append(isNucleotide ? NUCS.charAt(i - 1) : AAS
-                  .charAt(i - 1));
-        }
-      }
-    }
-    if (otherData != null)
-    {
-      for (int i = 0; i < otherData.size(); i++)
-      {
-        if (otherData.valueAt(i) == count)
-        {
-          modal.append((char) otherData.keyAt(i));
-        }
-      }
-    }
-    return modal.toString();
-  }
-
-  /**
-   * Returns the highest count for any symbol(s) in the profile (excluding gap)
-   * 
-   * @return
-   */
-  public int getModalCount()
-  {
-    return maxCount;
-  }
-
-  /**
-   * Returns the number of distinct symbols with a non-zero count (excluding the
-   * gap symbol)
-   * 
-   * @return
-   */
-  public int size() {
-    int size = 0;
-    if (useIntCounts)
-    {
-      for (int i = 1; i < intCounts.length; i++)
-      {
-        if (intCounts[i] > 0)
-        {
-          size++;
-        }
-      }
-    }
-    else
-    {
-      for (int i = 1; i < counts.length; i++)
-      {
-        if (counts[i] > 0)
-        {
-          size++;
-        }
-      }
-    }
-
-    /*
-     * include 'other' characters recorded (even if count is zero
-     * though that would be a strange use case)
-     */
-    if (otherData != null)
-    {
-      size += otherData.size();
-    }
-
-    return size;
-  }
-
-  /**
-   * Returns a data bean holding those symbols that have a non-zero count
-   * (excluding the gap symbol), with their counts.
-   * 
-   * @return
-   */
-  public SymbolCounts getSymbolCounts()
-  {
-    int size = size();
-    char[] symbols = new char[size];
-    int[] values = new int[size];
-    int j = 0;
-
-    if (useIntCounts)
-    {
-      for (int i = 1; i < intCounts.length; i++)
-      {
-        if (intCounts[i] > 0)
-        {
-          char symbol = isNucleotide ? NUCS.charAt(i - 1) : AAS
-                  .charAt(i - 1);
-          symbols[j] = symbol;
-          values[j] = intCounts[i];
-          j++;
-        }
-      }
-    }
-    else
-    {
-      for (int i = 1; i < counts.length; i++)
-      {
-        if (counts[i] > 0)
-        {
-          char symbol = isNucleotide ? NUCS.charAt(i - 1) : AAS
-                  .charAt(i - 1);
-          symbols[j] = symbol;
-          values[j] = counts[i];
-          j++;
-        }
-      }
-    }
-    if (otherData != null)
-    {
-      for (int i = 0; i < otherData.size(); i++)
-      {
-        symbols[j] = (char) otherData.keyAt(i);
-        values[j] = otherData.valueAt(i);
-        j++;
-      }
-    }
-
-    return new SymbolCounts(symbols, values);
-  }
-
-  /**
-   * Returns a tooltip string showing residues in descending order of their
-   * percentage frequency in the profile
-   * 
-   * @param normaliseBy
-   *          the divisor for residue counts (may or may not include gapped
-   *          sequence count)
-   * @param percentageDecPl
-   *          the number of decimal places to show in percentages
-   * @return
-   */
-  public String getTooltip(int normaliseBy, int percentageDecPl)
-  {
-    SymbolCounts symbolCounts = getSymbolCounts();
-    char[] ca = symbolCounts.symbols;
-    int[] vl = symbolCounts.values;
-
-    /*
-     * sort characters into ascending order of their counts
-     */
-    QuickSort.sort(vl, ca);
-
-    /*
-     * traverse in reverse order (highest count first) to build tooltip
-     */
-    boolean first = true;
-    StringBuilder sb = new StringBuilder(64);
-    for (int c = ca.length - 1; c >= 0; c--)
-    {
-      final char residue = ca[c];
-      // TODO combine residues which share a percentage
-      // (see AAFrequency.completeCdnaConsensus)
-      float tval = (vl[c] * 100f) / normaliseBy;
-      sb.append(first ? "" : "; ").append(residue).append(" ");
-      Format.appendPercentage(sb, tval, percentageDecPl);
-      sb.append("%");
-      first = false;
-    }
-    return sb.toString();
-  }
-
-  /**
-   * Returns a string representation of the symbol counts, for debug purposes.
-   */
-  @Override
-  public String toString()
-  {
-    StringBuilder sb = new StringBuilder();
-    sb.append("[ ");
-    SymbolCounts sc = getSymbolCounts();
-    for (int i = 0; i < sc.symbols.length; i++)
-    {
-      sb.append(sc.symbols[i]).append(":").append(sc.values[i]).append(" ");
-    }
-    sb.append("]");
-    return sb.toString();
-  }
-}
diff --git a/src/jalview/datamodel/SearchResultMatchI.java~ b/src/jalview/datamodel/SearchResultMatchI.java~
deleted file mode 100644 (file)
index 732f1dc..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package jalview.datamodel;
-
-/**
- * An interface that describes one matched region of an alignment, as one
- * contiguous portion of a single dataset sequence
- */
-public interface SearchResultMatchI
-{
-  /**
-   * Returns the matched sequence
-   * 
-   * @return
-   */
-  SequenceI getSequence();
-
-  /**
-   * Returns the start position of the match in the sequence (base 1)
-   * 
-   * @return
-   */
-  int getStart();
-
-  /**
-   * Returns the end position of the match in the sequence (base 1)
-   * 
-   * @return
-   */
-  int getEnd();
-
-}
\ No newline at end of file
diff --git a/src/jalview/datamodel/SearchResultsI.java~ b/src/jalview/datamodel/SearchResultsI.java~
deleted file mode 100644 (file)
index 93183f2..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-package jalview.datamodel;
-
-import java.util.BitSet;
-import java.util.List;
-
-/**
- * An interface describing the result of a search or other operation which
- * highlights matched regions of an alignment
- */
-public interface SearchResultsI
-{
-
-  /**
-   * Adds one region to the results
-   * 
-   * @param seq
-   *          Sequence
-   * @param start
-   *          int
-   * @param end
-   *          int
-   * @return
-   */
-  SearchResultMatchI addResult(SequenceI seq, int start, int end);
-
-  /**
-   * Answers true if the search results include the given sequence (or its
-   * dataset sequence), else false
-   * 
-   * @param sequence
-   * @return
-   */
-  boolean involvesSequence(SequenceI sequence);
-
-  /**
-   * Returns an array of [from, to, from, to..] matched columns (base 0) between
-   * the given start and end columns of the given sequence. Returns null if no
-   * matches overlap the specified region.
-   * <p>
-   * Implementations should provide an optimised method to return locations to
-   * highlight on a visible portion of an alignment.
-   * 
-   * @param sequence
-   * @param start
-   *          first column of range (base 0, inclusive)
-   * @param end
-   *          last column of range base 0, inclusive)
-   * @return int[]
-   */
-  int[] getResults(SequenceI sequence, int start, int end);
-
-  /**
-   * Returns the number of matches found
-   * 
-   * @return
-   */
-  int getSize();
-
-  /**
-   * Returns true if no search result matches are held.
-   * 
-   * @return
-   */
-  boolean isEmpty();
-
-  /**
-   * Returns the list of matches.
-   * 
-   * @return
-   */
-  List<SearchResultMatchI> getResults();
-
-  /**
-   * Set bits in a bitfield for all columns in the given sequence collection
-   * that are highlighted
-   * 
-   * @param sqcol
-   *          the set of sequences to search for highlighted regions
-   * @param bs
-   *          bitset to set
-   * @return number of bits set
-   */
-  int markColumns(SequenceCollectionI sqcol, BitSet bs);
-}
\ No newline at end of file
diff --git a/src/jalview/ext/jmol/JmolParser.java~ b/src/jalview/ext/jmol/JmolParser.java~
deleted file mode 100644 (file)
index 9b32846..0000000
+++ /dev/null
@@ -1,670 +0,0 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ 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.ext.jmol;
-
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.PDBEntry;
-import jalview.datamodel.SequenceI;
-import jalview.io.FileParse;
-import jalview.io.StructureFile;
-import jalview.schemes.ResidueProperties;
-import jalview.structure.StructureImportSettings;
-import jalview.util.Format;
-import jalview.util.MessageManager;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import javajs.awt.Dimension;
-
-import org.jmol.api.JmolStatusListener;
-import org.jmol.api.JmolViewer;
-import org.jmol.c.CBK;
-import org.jmol.c.STR;
-import org.jmol.modelset.ModelSet;
-import org.jmol.viewer.Viewer;
-
-import MCview.Atom;
-import MCview.PDBChain;
-import MCview.Residue;
-
-/**
- * Import and process files with Jmol for file like PDB, mmCIF
- * 
- * @author jprocter
- * 
- */
-public class JmolParser extends StructureFile implements JmolStatusListener
-{
-  Viewer viewer = null;
-
-  public JmolParser(String inFile, String type) throws IOException
-  {
-    super(inFile, type);
-  }
-
-  public JmolParser(FileParse fp) throws IOException
-  {
-    super(fp);
-  }
-
-  public JmolParser()
-  {
-  }
-
-  /**
-   * Calls the Jmol library to parse the PDB/mmCIF file, and then inspects the
-   * resulting object model to generate Jalview-style sequences, with secondary
-   * structure annotation added where available (i.e. where it has been computed
-   * by Jmol using DSSP).
-   * 
-   * @see jalview.io.AlignFile#parse()
-   */
-  @Override
-  public void parse() throws IOException
-  {
-    setChains(new Vector<PDBChain>());
-    Viewer jmolModel = getJmolData();
-    jmolModel.openReader(getDataName(), getDataName(), getReader());
-    waitForScript(jmolModel);
-
-    /*
-     * Convert one or more Jmol Model objects to Jalview sequences
-     */
-    if (jmolModel.ms.mc > 0)
-    {
-      // ideally we do this
-      // try
-      // {
-      // setStructureFileType(jmolModel.evalString("show _fileType"));
-      // } catch (Exception q)
-      // {
-      // }
-      // ;
-      // instead, we distinguish .cif from non-.cif by filename
-      setStructureFileType(getDataName().toLowerCase().endsWith(".cif") ? PDBEntry.Type.MMCIF
-              .toString() : "PDB");
-
-      transformJmolModelToJalview(jmolModel.ms);
-    }
-  }
-
-  /**
-   * create a headless jmol instance for dataprocessing
-   * 
-   * @return
-   */
-  private Viewer getJmolData()
-  {
-    if (viewer == null)
-    {
-      try
-      {
-        /*
-         * params -o (output to sysout) -n (nodisplay) -x (exit when finished)
-         * see http://wiki.jmol.org/index.php/Jmol_Application
-         */
-        viewer = (Viewer) JmolViewer.allocateViewer(null, null, null, null,
-                null, "-x -o -n", this);
-        // ensure the 'new' (DSSP) not 'old' (Ramachandran) SS method is used
-        viewer.setBooleanProperty("defaultStructureDSSP", true);
-      } catch (ClassCastException x)
-      {
-        throw new Error(MessageManager.formatMessage(
-                "error.jmol_version_not_compatible_with_jalview_version",
-                new String[] { JmolViewer.getJmolVersion() }), x);
-      }
-    }
-    return viewer;
-  }
-
-  public void transformJmolModelToJalview(ModelSet ms) throws IOException
-  {
-    try
-    {
-      String lastID = "";
-      List<SequenceI> rna = new ArrayList<SequenceI>();
-      List<SequenceI> prot = new ArrayList<SequenceI>();
-      PDBChain tmpchain;
-      String pdbId = (String) ms.getInfo(0, "title");
-
-      if (pdbId == null)
-      {
-        setId(safeName(getDataName()));
-        setPDBIdAvailable(false);
-      }
-      else
-      {
-        setId(pdbId);
-        setPDBIdAvailable(true);
-      }
-      List<Atom> significantAtoms = convertSignificantAtoms(ms);
-      for (Atom tmpatom : significantAtoms)
-      {
-        try
-        {
-          tmpchain = findChain(tmpatom.chain);
-          if (tmpatom.resNumIns.trim().equals(lastID))
-          {
-            // phosphorylated protein - seen both CA and P..
-            continue;
-          }
-          tmpchain.atoms.addElement(tmpatom);
-        } catch (Exception e)
-        {
-          tmpchain = new PDBChain(getId(), tmpatom.chain);
-          getChains().add(tmpchain);
-          tmpchain.atoms.addElement(tmpatom);
-        }
-        lastID = tmpatom.resNumIns.trim();
-      }
-      xferSettings();
-
-      makeResidueList();
-      makeCaBondList();
-
-<<<<<<< HEAD
-=======
-      if (getId() == null)
-      {
-        // always use resource name, not the hardwired file
-        // Does the value of ID get used ? Behaviour needs to be
-        // documented and tested
-        setId(getDataName());
-      }
->>>>>>> spike/JAL-2040_JAL-2137_phyre2
-      for (PDBChain chain : getChains())
-      {
-        SequenceI chainseq = postProcessChain(chain);
-        if (isRNA(chainseq))
-        {
-          rna.add(chainseq);
-        }
-        else
-        {
-          prot.add(chainseq);
-        }
-
-        if (StructureImportSettings.isProcessSecondaryStructure())
-        {
-          createAnnotation(chainseq, chain, ms.at);
-        }
-      }
-    } catch (OutOfMemoryError er)
-    {
-      System.out
-              .println("OUT OF MEMORY LOADING TRANSFORMING JMOL MODEL TO JALVIEW MODEL");
-      throw new IOException(
-              MessageManager
-                      .getString("exception.outofmemory_loading_mmcif_file"));
-    }
-  }
-
-  private List<Atom> convertSignificantAtoms(ModelSet ms)
-  {
-    List<Atom> significantAtoms = new ArrayList<Atom>();
-    HashMap<String, org.jmol.modelset.Atom> chainTerMap = new HashMap<String, org.jmol.modelset.Atom>();
-    org.jmol.modelset.Atom prevAtom = null;
-    for (org.jmol.modelset.Atom atom : ms.at)
-    {
-      if (atom.getAtomName().equalsIgnoreCase("CA")
-              || atom.getAtomName().equalsIgnoreCase("P"))
-      {
-        if (!atomValidated(atom, prevAtom, chainTerMap))
-        {
-          continue;
-        }
-        Atom curAtom = new Atom(atom.x, atom.y, atom.z);
-        curAtom.atomIndex = atom.getIndex();
-        curAtom.chain = atom.getChainIDStr();
-        curAtom.insCode = atom.group.getInsertionCode() == '\000' ? ' '
-                : atom.group.getInsertionCode();
-        curAtom.name = atom.getAtomName();
-        curAtom.number = atom.getAtomNumber();
-        curAtom.resName = atom.getGroup3(true);
-        curAtom.resNumber = atom.getResno();
-        curAtom.occupancy = ms.occupancies != null ? ms.occupancies[atom
-                .getIndex()] : Float.valueOf(atom.getOccupancy100());
-        String fmt = new Format("%4i").form(curAtom.resNumber);
-        curAtom.resNumIns = (fmt + curAtom.insCode);
-        curAtom.tfactor = atom.getBfactor100() / 100f;
-        curAtom.type = 0;
-        // significantAtoms.add(curAtom);
-        // ignore atoms from subsequent models
-        if (!significantAtoms.contains(curAtom))
-        {
-          significantAtoms.add(curAtom);
-        }
-        prevAtom = atom;
-      }
-    }
-    return significantAtoms;
-  }
-
-  private boolean atomValidated(org.jmol.modelset.Atom curAtom,
-          org.jmol.modelset.Atom prevAtom,
-          HashMap<String, org.jmol.modelset.Atom> chainTerMap)
-  {
-    // System.out.println("Atom: " + curAtom.getAtomNumber()
-    // + "   Last atom index " + curAtom.group.lastAtomIndex);
-    if (chainTerMap == null || prevAtom == null)
-    {
-      return true;
-    }
-    String curAtomChId = curAtom.getChainIDStr();
-    String prevAtomChId = prevAtom.getChainIDStr();
-    // new chain encoutered
-    if (!prevAtomChId.equals(curAtomChId))
-    {
-      // On chain switch add previous chain termination to xTerMap if not exists
-      if (!chainTerMap.containsKey(prevAtomChId))
-      {
-        chainTerMap.put(prevAtomChId, prevAtom);
-      }
-      // if current atom belongs to an already terminated chain and the resNum
-      // diff < 5 then mark as valid and update termination Atom
-      if (chainTerMap.containsKey(curAtomChId))
-      {
-        if (curAtom.getResno() < chainTerMap.get(curAtomChId).getResno())
-        {
-          return false;
-        }
-        if ((curAtom.getResno() - chainTerMap.get(curAtomChId).getResno()) < 5)
-        {
-          chainTerMap.put(curAtomChId, curAtom);
-          return true;
-        }
-        return false;
-      }
-    }
-    // atom with previously terminated chain encountered
-    else if (chainTerMap.containsKey(curAtomChId))
-    {
-      if (curAtom.getResno() < chainTerMap.get(curAtomChId).getResno())
-      {
-        return false;
-      }
-      if ((curAtom.getResno() - chainTerMap.get(curAtomChId).getResno()) < 5)
-      {
-        chainTerMap.put(curAtomChId, curAtom);
-        return true;
-      }
-      return false;
-    }
-    // HETATM with resNum jump > 2
-    return !(curAtom.isHetero() && ((curAtom.getResno() - prevAtom
-            .getResno()) > 2));
-  }
-
-  private void createAnnotation(SequenceI sequence, PDBChain chain,
-          org.jmol.modelset.Atom[] jmolAtoms)
-  {
-    char[] secstr = new char[sequence.getLength()];
-    char[] secstrcode = new char[sequence.getLength()];
-
-    // Ensure Residue size equals Seq size
-    if (chain.residues.size() != sequence.getLength())
-    {
-      return;
-    }
-    int annotIndex = 0;
-    for (Residue residue : chain.residues)
-    {
-      Atom repAtom = residue.getAtoms().get(0);
-      STR proteinStructureSubType = jmolAtoms[repAtom.atomIndex].group
-              .getProteinStructureSubType();
-      setSecondaryStructure(proteinStructureSubType, annotIndex, secstr,
-              secstrcode);
-      ++annotIndex;
-    }
-    addSecondaryStructureAnnotation(chain.pdbid, sequence, secstr,
-            secstrcode, chain.id, sequence.getStart());
-  }
-
-  /**
-   * Helper method that adds an AlignmentAnnotation for secondary structure to
-   * the sequence, provided at least one secondary structure prediction has been
-   * made
-   * 
-   * @param modelTitle
-   * @param seq
-   * @param secstr
-   * @param secstrcode
-   * @param chainId
-   * @param firstResNum
-   * @return
-   */
-  protected void addSecondaryStructureAnnotation(String modelTitle,
-          SequenceI sq, char[] secstr, char[] secstrcode, String chainId,
-          int firstResNum)
-  {
-    char[] seq = sq.getSequence();
-    boolean ssFound = false;
-    Annotation asecstr[] = new Annotation[seq.length + firstResNum - 1];
-    for (int p = 0; p < seq.length; p++)
-    {
-      if (secstr[p] >= 'A' && secstr[p] <= 'z')
-      {
-        try
-        {
-          asecstr[p] = new Annotation(String.valueOf(secstr[p]), null,
-                  secstrcode[p], Float.NaN);
-          ssFound = true;
-        } catch (Exception e)
-        {
-          // e.printStackTrace();
-        }
-      }
-    }
-
-    if (ssFound)
-    {
-      String mt = modelTitle == null ? getDataName() : modelTitle;
-      mt += chainId;
-      AlignmentAnnotation ann = new AlignmentAnnotation(
-              "Secondary Structure", "Secondary Structure for " + mt,
-              asecstr);
-      ann.belowAlignment = true;
-      ann.visible = true;
-      ann.autoCalculated = false;
-      ann.setCalcId(getClass().getName());
-      ann.adjustForAlignment();
-      ann.validateRangeAndDisplay();
-      annotations.add(ann);
-      sq.addAlignmentAnnotation(ann);
-    }
-  }
-
-  private void waitForScript(Viewer jmd)
-  {
-    while (jmd.isScriptExecuting())
-    {
-      try
-      {
-        Thread.sleep(50);
-
-      } catch (InterruptedException x)
-      {
-      }
-    }
-  }
-
-  /**
-   * Convert Jmol's secondary structure code to Jalview's, and stored it in the
-   * secondary structure arrays at the given sequence position
-   * 
-   * @param proteinStructureSubType
-   * @param pos
-   * @param secstr
-   * @param secstrcode
-   */
-  protected void setSecondaryStructure(STR proteinStructureSubType,
-          int pos, char[] secstr, char[] secstrcode)
-  {
-    switch (proteinStructureSubType)
-    {
-    case HELIX310:
-      secstr[pos] = '3';
-      break;
-    case HELIX:
-    case HELIXALPHA:
-      secstr[pos] = 'H';
-      break;
-    case HELIXPI:
-      secstr[pos] = 'P';
-      break;
-    case SHEET:
-      secstr[pos] = 'E';
-      break;
-    default:
-      secstr[pos] = 0;
-    }
-
-    switch (proteinStructureSubType)
-    {
-    case HELIX310:
-    case HELIXALPHA:
-    case HELIXPI:
-    case HELIX:
-      secstrcode[pos] = 'H';
-      break;
-    case SHEET:
-      secstrcode[pos] = 'E';
-      break;
-    default:
-      secstrcode[pos] = 0;
-    }
-  }
-
-  /**
-   * Convert any non-standard peptide codes to their standard code table
-   * equivalent. (Initial version only does Selenomethionine MSE->MET.)
-   * 
-   * @param threeLetterCode
-   * @param seq
-   * @param pos
-   */
-  protected void replaceNonCanonicalResidue(String threeLetterCode,
-          char[] seq, int pos)
-  {
-    String canonical = ResidueProperties
-            .getCanonicalAminoAcid(threeLetterCode);
-    if (canonical != null && !canonical.equalsIgnoreCase(threeLetterCode))
-    {
-      seq[pos] = ResidueProperties.getSingleCharacterCode(canonical);
-    }
-  }
-
-  /**
-   * Not implemented - returns null
-   */
-  @Override
-  public String print()
-  {
-    return null;
-  }
-
-  /**
-   * Not implemented
-   */
-  @Override
-  public void setCallbackFunction(String callbackType,
-          String callbackFunction)
-  {
-  }
-
-  @Override
-  public void notifyCallback(CBK cbType, Object[] data)
-  {
-    String strInfo = (data == null || data[1] == null ? null : data[1]
-            .toString());
-    switch (cbType)
-    {
-    case ECHO:
-      sendConsoleEcho(strInfo);
-      break;
-    case SCRIPT:
-      notifyScriptTermination((String) data[2],
-              ((Integer) data[3]).intValue());
-      break;
-    case MEASURE:
-      String mystatus = (String) data[3];
-      if (mystatus.indexOf("Picked") >= 0
-              || mystatus.indexOf("Sequence") >= 0)
-      {
-        // Picking mode
-        sendConsoleMessage(strInfo);
-      }
-      else if (mystatus.indexOf("Completed") >= 0)
-      {
-        sendConsoleEcho(strInfo.substring(strInfo.lastIndexOf(",") + 2,
-                strInfo.length() - 1));
-      }
-      break;
-    case MESSAGE:
-      sendConsoleMessage(data == null ? null : strInfo);
-      break;
-    case PICK:
-      sendConsoleMessage(strInfo);
-      break;
-    default:
-      break;
-    }
-  }
-
-  String lastConsoleEcho = "";
-
-  private void sendConsoleEcho(String string)
-  {
-    lastConsoleEcho += string;
-    lastConsoleEcho += "\n";
-  }
-
-  String lastConsoleMessage = "";
-
-  private void sendConsoleMessage(String string)
-  {
-    lastConsoleMessage += string;
-    lastConsoleMessage += "\n";
-  }
-
-  int lastScriptTermination = -1;
-
-  String lastScriptMessage = "";
-
-  private void notifyScriptTermination(String string, int intValue)
-  {
-    lastScriptMessage += string;
-    lastScriptMessage += "\n";
-    lastScriptTermination = intValue;
-  }
-
-  @Override
-  public boolean notifyEnabled(CBK callbackPick)
-  {
-    switch (callbackPick)
-    {
-    case MESSAGE:
-    case SCRIPT:
-    case ECHO:
-    case LOADSTRUCT:
-    case ERROR:
-      return true;
-    default:
-      return false;
-    }
-  }
-
-  /**
-   * Not implemented - returns null
-   */
-  @Override
-  public String eval(String strEval)
-  {
-    return null;
-  }
-
-  /**
-   * Not implemented - returns null
-   */
-  @Override
-  public float[][] functionXY(String functionName, int x, int y)
-  {
-    return null;
-  }
-
-  /**
-   * Not implemented - returns null
-   */
-  @Override
-  public float[][][] functionXYZ(String functionName, int nx, int ny, int nz)
-  {
-    return null;
-  }
-
-  /**
-   * Not implemented - returns null
-   */
-  @Override
-  public String createImage(String fileName, String imageType,
-          Object text_or_bytes, int quality)
-  {
-    return null;
-  }
-
-  /**
-   * Not implemented - returns null
-   */
-  @Override
-  public Map<String, Object> getRegistryInfo()
-  {
-    return null;
-  }
-
-  /**
-   * Not implemented
-   */
-  @Override
-  public void showUrl(String url)
-  {
-  }
-
-  /**
-   * Not implemented - returns null
-   */
-  @Override
-  public Dimension resizeInnerPanel(String data)
-  {
-    return null;
-  }
-
-  @Override
-  public Map<String, Object> getJSpecViewProperty(String arg0)
-  {
-    return null;
-  }
-
-  public boolean isPredictSecondaryStructure()
-  {
-    return predictSecondaryStructure;
-  }
-
-  public void setPredictSecondaryStructure(boolean predictSecondaryStructure)
-  {
-    this.predictSecondaryStructure = predictSecondaryStructure;
-  }
-
-  public boolean isVisibleChainAnnotation()
-  {
-    return visibleChainAnnotation;
-  }
-
-  public void setVisibleChainAnnotation(boolean visibleChainAnnotation)
-  {
-    this.visibleChainAnnotation = visibleChainAnnotation;
-  }
-
-}
diff --git a/src/jalview/gui/#OverviewPanel.java# b/src/jalview/gui/#OverviewPanel.java#
deleted file mode 100755 (executable)
index ce3abb5..0000000
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ 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.gui;
-
-import jalview.datamodel.SequenceI;
-import jalview.renderer.AnnotationRenderer;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.renderer.seqfeatures.FeatureColourFinder;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseMotionAdapter;
-import java.awt.image.BufferedImage;
-
-import javax.swing.JPanel;
-
-/**
- * Panel displaying an overview of the full alignment, with an interactive box
- * representing the viewport onto the alignment.
- * 
- * @author $author$
- * @version $Revision$
- */
-public class OverviewPanel extends JPanel implements Runnable
-{
-  private static final Color TRANS_GREY = new Color(100, 100, 100, 25);
-
-  private final AnnotationRenderer renderer = new AnnotationRenderer();
-
-  private OverviewDimensions od;
-
-  private BufferedImage miniMe;
-
-  private BufferedImage lastMiniMe = null;
-
-  private AlignViewport av;
-
-  private AlignmentPanel ap;
-
-  //
-  private boolean resizing = false;
-
-  // This is set true if the user resizes whilst
-  // the overview is being calculated
-  private boolean resizeAgain = false;
-
-  // Can set different properties in this seqCanvas than
-  // main visible SeqCanvas
-  private SequenceRenderer sr;
-
-  private jalview.renderer.seqfeatures.FeatureRenderer fr;
-
-  /**
-   * Creates a new OverviewPanel object.
-   * 
-   * @param alPanel
-   *          The alignment panel which is shown in the overview panel
-   */
-  public OverviewPanel(AlignmentPanel alPanel)
-  {
-    this.av = alPanel.av;
-    this.ap = alPanel;
-    setLayout(null);
-
-    sr = new SequenceRenderer(av);
-    sr.renderGaps = false;
-    sr.forOverview = true;
-    fr = new FeatureRenderer(alPanel);
-
-    od = new OverviewDimensions(av.getRanges(), av.isShowAnnotation());
-
-    addComponentListener(new ComponentAdapter()
-    {
-      @Override
-      public void componentResized(ComponentEvent evt)
-      {
-        if ((getWidth() != od.getWidth())
-                || (getHeight() != (od.getHeight())))
-        {
-          updateOverviewImage();
-        }
-      }
-    });
-
-    addMouseMotionListener(new MouseMotionAdapter()
-    {
-      @Override
-      public void mouseDragged(MouseEvent evt)
-      {
-        if (!av.getWrapAlignment())
-        {
-          od.updateViewportFromMouse(evt.getX(), evt.getY(), av
-                  .getAlignment().getHiddenSequences(), av
-                  .getColumnSelection(), av.getRanges());
-          ap.setScrollValues(od.getScrollCol(), od.getScrollRow());
-        }
-      }
-    });
-
-    addMouseListener(new MouseAdapter()
-    {
-      @Override
-      public void mousePressed(MouseEvent evt)
-      {
-        if (!av.getWrapAlignment())
-        {
-          od.updateViewportFromMouse(evt.getX(), evt.getY(), av
-                  .getAlignment().getHiddenSequences(), av
-                  .getColumnSelection(), av.getRanges());
-          ap.setScrollValues(od.getScrollCol(), od.getScrollRow());
-        }
-      }
-    });
-
-    updateOverviewImage();
-  }
-
-  /**
-   * Updates the overview image when the related alignment panel is updated
-   */
-  public void updateOverviewImage()
-  {
-    if (resizing)
-    {
-      resizeAgain = true;
-      return;
-    }
-
-    resizing = true;
-
-    if ((getWidth() > 0) && (getHeight() > 0))
-    {
-      od.setWidth(getWidth());
-      od.setHeight(getHeight());
-    }
-
-    setPreferredSize(new Dimension(od.getWidth(), od.getHeight()));
-
-    Thread thread = new Thread(this);
-    thread.start();
-    repaint();
-  }
-
-  @Override
-  public void run()
-  {
-    miniMe = null;
-
-    if (av.isShowSequenceFeatures())
-    {
-      fr.transferSettings(ap.getSeqPanel().seqCanvas.getFeatureRenderer());
-    }
-
-    // why do we need to set preferred size again? was set in
-    // updateOverviewImage
-    setPreferredSize(new Dimension(od.getWidth(), od.getHeight()));
-
-    miniMe = new BufferedImage(od.getWidth(), od.getHeight(),
-            BufferedImage.TYPE_INT_RGB);
-
-    Graphics mg = miniMe.getGraphics();
-    mg.setColor(Color.orange);
-    mg.fillRect(0, 0, od.getWidth(), miniMe.getHeight());
-
-<<<<<<< HEAD
-    // calculate sampleCol and sampleRow
-    // alignment width is max number of residues/bases
-    // alignment height is number of sequences
-    int alwidth = av.getAlignment().getWidth();
-    int alheight = av.getAlignment().getAbsoluteHeight();
-
-    // sampleCol or sampleRow is the width/height allocated to each residue
-    // in particular, sometimes we may need more than one row/col of the
-    // BufferedImage allocated
-    // sampleCol is how much of a residue to assign to each pixel
-    // sampleRow is how many sequences to assign to each pixel
-    float sampleCol = alwidth / (float) od.getWidth();
-    float sampleRow = alheight / (float) od.getSequencesHeight();
-
-    buildImage(sampleRow, sampleCol);
-=======
-    float sampleCol = (float) alwidth / (float) width;
-    float sampleRow = (float) alheight / (float) sequencesHeight;
-
-    int lastcol = -1, lastrow = -1;
-    Color color = Color.white;
-    int row, col;
-    jalview.datamodel.SequenceI seq;
-    final boolean hasHiddenRows = av.hasHiddenRows(), hasHiddenCols = av
-            .hasHiddenColumns();
-    boolean hiddenRow = false;
-    // get hidden row and hidden column map once at beginning.
-    // clone featureRenderer settings to avoid race conditions... if state is
-    // updated just need to refresh again
-
-    FeatureColourFinder finder = new FeatureColourFinder(fr);
-
-    for (row = 0; row < sequencesHeight; row++)
-    {
-      if (resizeAgain)
-      {
-        break;
-      }
-      if ((int) (row * sampleRow) == lastrow)
-      {
-        // No need to recalculate the colours,
-        // Just copy from the row above
-        for (col = 0; col < width; col++)
-        {
-          if (resizeAgain)
-          {
-            break;
-          }
-          miniMe.setRGB(col, row, miniMe.getRGB(col, row - 1));
-        }
-        continue;
-      }
-
-      lastrow = (int) (row * sampleRow);
-
-      hiddenRow = false;
-      if (hasHiddenRows)
-      {
-        seq = av.getAlignment().getHiddenSequences()
-                .getHiddenSequence(lastrow);
-        if (seq == null)
-        {
-          int index = av.getAlignment().getHiddenSequences()
-                  .findIndexWithoutHiddenSeqs(lastrow);
-
-          seq = av.getAlignment().getSequenceAt(index);
-        }
-        else
-        {
-          hiddenRow = true;
-        }
-      }
-      else
-      {
-        seq = av.getAlignment().getSequenceAt(lastrow);
-      }
-
-      if (seq == null)
-      {
-        System.out.println(lastrow + " null");
-        continue;
-      }
-
-      for (col = 0; col < width; col++)
-      {
-        if (resizeAgain)
-        {
-          break;
-        }
-        if ((int) (col * sampleCol) == lastcol
-                && (int) (row * sampleRow) == lastrow)
-        {
-          miniMe.setRGB(col, row, color.getRGB());
-          continue;
-        }
-
-        lastcol = (int) (col * sampleCol);
-
-        if (seq.getLength() > lastcol)
-        {
-          color = sr.getResidueColour(seq, lastcol, finder);
-        }
-        else
-        {
-          color = Color.WHITE;
-        }
-
-        if (hiddenRow
-                || (hasHiddenCols && !av.getColumnSelection().isVisible(
-                        lastcol)))
-        {
-          color = color.darker().darker();
-        }
-
-        miniMe.setRGB(col, row, color.getRGB());
->>>>>>> bug/JAL-2436featureRendererThreading
-
-    if (av.isShowAnnotation())
-    {
-      renderer.updateFromAlignViewport(av);
-      for (int col = 0; col < od.getWidth() && !resizeAgain; col++)
-      {
-        mg.translate(col, od.getSequencesHeight());
-        renderer.drawGraph(mg, av.getAlignmentConservationAnnotation(),
-                av.getAlignmentConservationAnnotation().annotations,
-                (int) (sampleCol) + 1, od.getGraphHeight(),
-                (int) (col * sampleCol), (int) (col * sampleCol) + 1);
-        mg.translate(-col, -od.getSequencesHeight());
-
-      }
-    }
-    System.gc();
-
-    resizing = false;
-
-    if (resizeAgain)
-    {
-      resizeAgain = false;
-      updateOverviewImage();
-    }
-    else
-    {
-      lastMiniMe = miniMe;
-    }
-
-    setBoxPosition();
-  }
-
-  /*
-   * Build the overview panel image
-   */
-  private void buildImage(float sampleRow, float sampleCol)
-  {
-    int lastcol = -1;
-    int lastrow = -1;
-    int color = Color.white.getRGB();
-
-    SequenceI seq = null;
-
-    final boolean hasHiddenCols = av.hasHiddenColumns();
-    boolean hiddenRow = false;
-    // get hidden row and hidden column map once at beginning.
-    // clone featureRenderer settings to avoid race conditions... if state is
-    // updated just need to refresh again
-    for (int row = 0; row < od.getSequencesHeight() && !resizeAgain; row++)
-    {
-      boolean doCopy = true;
-      int currentrow = (int) (row * sampleRow);
-      if (currentrow != lastrow)
-      {
-        doCopy = false;
-
-        lastrow = currentrow;
-
-        // get the sequence which would be at alignment index 'lastrow' if no
-        // rows were hidden, and determine whether it is hidden or not
-        hiddenRow = av.getAlignment().isHidden(lastrow);
-        seq = av.getAlignment().getSequenceAtAbsoluteIndex(lastrow);
-      }
-
-      for (int col = 0; col < od.getWidth() && !resizeAgain; col++)
-      {
-        if (doCopy)
-        {
-          color = miniMe.getRGB(col, row - 1);
-        }
-        else if ((int) (col * sampleCol) != lastcol
-                || (int) (row * sampleRow) != lastrow)
-        {
-          lastcol = (int) (col * sampleCol);
-          color = getColumnColourFromSequence(seq, hiddenRow, hasHiddenCols,
-                  lastcol);
-        }
-        // else we just use the color we already have , so don't need to set it
-
-        miniMe.setRGB(col, row, color);
-      }
-    }
-  }
-
-  /*
-   * Find the colour of a sequence at a specified column position
-   */
-  private int getColumnColourFromSequence(jalview.datamodel.SequenceI seq,
-          boolean hiddenRow, boolean hasHiddenCols, int lastcol)
-  {
-    int color;
-
-    if (seq == null)
-    {
-      color = Color.white.getRGB();
-    }
-    else if (seq.getLength() > lastcol)
-    {
-      color = sr.getResidueBoxColour(seq, lastcol).getRGB();
-
-      if (av.isShowSequenceFeatures())
-      {
-        color = fr.findFeatureColour(color, seq, lastcol);
-      }
-    }
-    else
-    {
-      color = Color.white.getRGB();
-    }
-
-    if (hiddenRow
-            || (hasHiddenCols && !av.getColumnSelection()
-                    .isVisible(lastcol)))
-    {
-      color = new Color(color).darker().darker().getRGB();
-    }
-
-    return color;
-  }
-
-  /**
-   * Update the overview panel box when the associated alignment panel is
-   * changed
-   * 
-   */
-  public void setBoxPosition()
-  {
-    od.setBoxPosition(av.getAlignment()
-            .getHiddenSequences(), av.getColumnSelection(), av.getRanges());
-    repaint();
-  }
-
-
-  @Override
-  public void paintComponent(Graphics g)
-  {
-    if (resizing || resizeAgain)
-    {
-      if (lastMiniMe == null)
-      {
-        g.setColor(Color.white);
-        g.fillRect(0, 0, getWidth(), getHeight());
-      }
-      else
-      {
-        g.drawImage(lastMiniMe, 0, 0, getWidth(), getHeight(), this);
-      }
-      g.setColor(TRANS_GREY);
-      g.fillRect(0, 0, getWidth(), getHeight());
-    }
-    else if (lastMiniMe != null)
-    {
-      g.drawImage(lastMiniMe, 0, 0, this);
-      if (lastMiniMe != miniMe)
-      {
-        g.setColor(TRANS_GREY);
-        g.fillRect(0, 0, getWidth(), getHeight());
-      }
-    }
-
-    g.setColor(Color.red);
-    od.drawBox(g);
-  }
-}
similarity index 55%
rename from src/jalview/jbgui/APQHandlers.java
rename to src/jalview/gui/APQHandlers.java
index 1a7e971..00ec217 100644 (file)
  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
-package jalview.jbgui;
-
-import javax.swing.JFrame;
-import javax.swing.JOptionPane;
+package jalview.gui;
 
 import com.formdev.flatlaf.extras.FlatDesktop;
 import com.formdev.flatlaf.extras.FlatDesktop.Action;
 
-import jalview.util.MessageManager;
 import jalview.util.Platform;
 
 public class APQHandlers
@@ -37,7 +33,7 @@ public class APQHandlers
 
   public static boolean setQuit = false;
 
-  public static boolean setAPQHandlers(GDesktop desktop)
+  public static boolean setAPQHandlers(Desktop desktop)
   {
     if (Platform.isJS())
     {
@@ -59,47 +55,7 @@ public class APQHandlers
     }
     if (FlatDesktop.isSupported(Action.APP_QUIT_HANDLER))
     {
-      FlatDesktop.setQuitHandler(response -> {
-        boolean confirmQuit = jalview.bin.Cache.getDefault(
-                jalview.gui.Desktop.CONFIRM_KEYBOARD_QUIT, true);
-        boolean canQuit = !confirmQuit;
-        int n;
-        if (confirmQuit)
-        {
-          // ensure Jalview window is brought to front for Quit confirmation
-          // window to be visible
-
-          // this method of raising the Jalview window is broken in java
-          // jalviewDesktop.setVisible(true);
-          // jalviewDesktop.toFront();
-
-          // a better hack which works instead
-          JFrame dialogParent = new JFrame();
-          dialogParent.setAlwaysOnTop(true);
-
-          n = JOptionPane.showConfirmDialog(dialogParent,
-                  MessageManager.getString("label.quit_jalview"),
-                  MessageManager.getString("action.quit"),
-                  JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
-                  null);
-
-          dialogParent.setAlwaysOnTop(false);
-          dialogParent.dispose();
-        }
-        else
-        {
-          n = JOptionPane.OK_OPTION;
-        }
-        canQuit = (n == JOptionPane.OK_OPTION);
-        if (canQuit)
-        {
-          response.performQuit();
-        }
-        else
-        {
-          response.cancelQuit();
-        }
-      });
+      QuitHandler.setQuitHandler();
       setQuit = true;
     }
     // if we got to here, no exceptions occurred when we set the handlers.
index 08ff021..a23cbfa 100644 (file)
  */
 package jalview.gui;
 
-import jalview.api.AlignExportSettingsI;
-import jalview.api.AlignViewportI;
-import jalview.io.FileFormatI;
-import jalview.util.MessageManager;
-
 import java.awt.BorderLayout;
 import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
+import java.util.concurrent.Callable;
 
 import javax.swing.JCheckBox;
 import javax.swing.JPanel;
 
+import jalview.api.AlignExportSettingsI;
+import jalview.api.AlignViewportI;
+import jalview.io.FileFormatI;
+import jalview.util.MessageManager;
+
 /**
  * A dialog that allows the user to specify whether to include hidden columns or
  * sequences in an alignment export, and possibly features, annotations and
@@ -119,7 +120,7 @@ public class AlignExportOptions extends JPanel
    * 
    * @param action
    */
-  public void setResponseAction(Object response, Runnable action)
+  public void setResponseAction(Object response, Callable action)
   {
     dialog.setResponseHandler(response, action);
   }
index f9381b4..7b310b1 100644 (file)
@@ -59,6 +59,7 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Locale;
 import java.util.Vector;
+import java.util.concurrent.Callable;
 
 import javax.swing.ButtonGroup;
 import javax.swing.JCheckBoxMenuItem;
@@ -349,6 +350,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   void init()
   {
+    setFrameIcon(null);
+
     // setBackground(Color.white); // BH 2019
 
     if (!Jalview.isHeadlessMode())
@@ -1259,6 +1262,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       lastSaveSuccessful = new Jalview2XML().saveAlignment(this, file,
               shortName);
 
+      Console.debug("lastSaveSuccessful=" + lastSaveSuccessful);
+      if (lastSaveSuccessful)
+      {
+        this.getViewport().setSavedUpToDate(true);
+      }
+
       statusBar.setText(MessageManager.formatMessage(
               "label.successfully_saved_to_file_in_format", new Object[]
               { file, format }));
@@ -1267,97 +1276,89 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     AlignExportSettingsI options = new AlignExportSettingsAdapter(false);
-    Runnable cancelAction = new Runnable()
-    {
-      @Override
-      public void run()
+    Callable<Void> cancelAction = () -> {
+      lastSaveSuccessful = false;
+      return null;
+    };
+    Callable<Void> outputAction = () -> {
+      // todo defer this to inside formatSequences (or later)
+      AlignmentExportData exportData = viewport.getAlignExportData(options);
+      String output = new FormatAdapter(alignPanel, options)
+              .formatSequences(format, exportData.getAlignment(),
+                      exportData.getOmitHidden(),
+                      exportData.getStartEndPostions(),
+                      viewport.getAlignment().getHiddenColumns());
+      if (output == null)
       {
         lastSaveSuccessful = false;
       }
-    };
-    Runnable outputAction = new Runnable()
-    {
-      @Override
-      public void run()
+      else
       {
-        // todo defer this to inside formatSequences (or later)
-        AlignmentExportData exportData = viewport
-                .getAlignExportData(options);
-        String output = new FormatAdapter(alignPanel, options)
-                .formatSequences(format, exportData.getAlignment(),
-                        exportData.getOmitHidden(),
-                        exportData.getStartEndPostions(),
-                        viewport.getAlignment().getHiddenColumns());
-        if (output == null)
+        // create backupfiles object and get new temp filename destination
+        boolean doBackup = BackupFiles.getEnabled();
+        BackupFiles backupfiles = null;
+        if (doBackup)
         {
-          lastSaveSuccessful = false;
+          Console.trace("ALIGNFRAME making backupfiles object for " + file);
+          backupfiles = new BackupFiles(file);
         }
-        else
+        try
         {
-          // create backupfiles object and get new temp filename destination
-          boolean doBackup = BackupFiles.getEnabled();
-          BackupFiles backupfiles = null;
-          if (doBackup)
+          String tempFilePath = doBackup ? backupfiles.getTempFilePath()
+                  : file;
+          Console.trace("ALIGNFRAME setting PrintWriter");
+          PrintWriter out = new PrintWriter(new FileWriter(tempFilePath));
+
+          if (backupfiles != null)
           {
-            Console.trace(
-                    "ALIGNFRAME making backupfiles object for " + file);
-            backupfiles = new BackupFiles(file);
+            Console.trace("ALIGNFRAME about to write to temp file "
+                    + backupfiles.getTempFilePath());
           }
-          try
-          {
-            String tempFilePath = doBackup ? backupfiles.getTempFilePath()
-                    : file;
-            Console.trace("ALIGNFRAME setting PrintWriter");
-            PrintWriter out = new PrintWriter(new FileWriter(tempFilePath));
 
-            if (backupfiles != null)
-            {
-              Console.trace("ALIGNFRAME about to write to temp file "
-                      + backupfiles.getTempFilePath());
-            }
+          out.print(output);
+          Console.trace("ALIGNFRAME about to close file");
+          out.close();
+          Console.trace("ALIGNFRAME closed file");
+          AlignFrame.this.setTitle(file);
+          statusBar.setText(MessageManager.formatMessage(
+                  "label.successfully_saved_to_file_in_format", new Object[]
+                  { fileName, format.getName() }));
+          lastSaveSuccessful = true;
+        } catch (IOException e)
+        {
+          lastSaveSuccessful = false;
+          Console.error(
+                  "ALIGNFRAME Something happened writing the temp file");
+          Console.error(e.getMessage());
+          Console.debug(Cache.getStackTraceString(e));
+        } catch (Exception ex)
+        {
+          lastSaveSuccessful = false;
+          Console.error(
+                  "ALIGNFRAME Something unexpected happened writing the temp file");
+          Console.error(ex.getMessage());
+          Console.debug(Cache.getStackTraceString(ex));
+        }
 
-            out.print(output);
-            Console.trace("ALIGNFRAME about to close file");
-            out.close();
-            Console.trace("ALIGNFRAME closed file");
-            AlignFrame.this.setTitle(file);
-            statusBar.setText(MessageManager.formatMessage(
-                    "label.successfully_saved_to_file_in_format",
-                    new Object[]
-                    { fileName, format.getName() }));
-            lastSaveSuccessful = true;
-          } catch (IOException e)
-          {
-            lastSaveSuccessful = false;
-            Console.error(
-                    "ALIGNFRAME Something happened writing the temp file");
-            Console.error(e.getMessage());
-            Console.debug(Cache.getStackTraceString(e));
-          } catch (Exception ex)
-          {
-            lastSaveSuccessful = false;
-            Console.error(
-                    "ALIGNFRAME Something unexpected happened writing the temp file");
-            Console.error(ex.getMessage());
-            Console.debug(Cache.getStackTraceString(ex));
-          }
+        if (doBackup)
+        {
+          backupfiles.setWriteSuccess(lastSaveSuccessful);
+          Console.debug("ALIGNFRAME writing temp file was "
+                  + (lastSaveSuccessful ? "" : "NOT ") + "successful");
+          // do the backup file roll and rename the temp file to actual file
+          Console.trace("ALIGNFRAME about to rollBackupsAndRenameTempFile");
+          lastSaveSuccessful = backupfiles.rollBackupsAndRenameTempFile();
+          Console.debug("ALIGNFRAME performed rollBackupsAndRenameTempFile "
+                  + (lastSaveSuccessful ? "" : "un") + "successfully");
+        }
 
-          if (doBackup)
-          {
-            backupfiles.setWriteSuccess(lastSaveSuccessful);
-            Console.debug("ALIGNFRAME writing temp file was "
-                    + (lastSaveSuccessful ? "" : "NOT ") + "successful");
-            // do the backup file roll and rename the temp file to actual file
-            Console.trace(
-                    "ALIGNFRAME about to rollBackupsAndRenameTempFile");
-            lastSaveSuccessful = backupfiles.rollBackupsAndRenameTempFile();
-            Console.debug(
-                    "ALIGNFRAME performed rollBackupsAndRenameTempFile "
-                            + (lastSaveSuccessful ? "" : "un")
-                            + "successfully");
-          }
+        Console.debug("lastSaveSuccessful=" + lastSaveSuccessful);
+        if (lastSaveSuccessful)
+        {
+          AlignFrame.this.getViewport().setSavedUpToDate(true);
         }
       }
+      return null;
     };
 
     /*
@@ -1373,7 +1374,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
     else
     {
-      outputAction.run();
+      try
+      {
+        outputAction.call();
+      } catch (Exception e)
+      {
+        // TODO Auto-generated catch block
+        e.printStackTrace();
+      }
     }
   }
 
@@ -1390,34 +1398,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     FileFormatI fileFormat = FileFormats.getInstance()
             .forName(fileFormatName);
     AlignExportSettingsI options = new AlignExportSettingsAdapter(false);
-    Runnable outputAction = new Runnable()
-    {
-      @Override
-      public void run()
+    Callable<Void> outputAction = () -> {
+      // todo defer this to inside formatSequences (or later)
+      AlignmentExportData exportData = viewport.getAlignExportData(options);
+      CutAndPasteTransfer cap = new CutAndPasteTransfer();
+      cap.setForInput(null);
+      try
       {
-        // todo defer this to inside formatSequences (or later)
-        AlignmentExportData exportData = viewport
-                .getAlignExportData(options);
-        CutAndPasteTransfer cap = new CutAndPasteTransfer();
-        cap.setForInput(null);
-        try
-        {
-          FileFormatI format = fileFormat;
-          cap.setText(new FormatAdapter(alignPanel, options)
-                  .formatSequences(format, exportData.getAlignment(),
-                          exportData.getOmitHidden(),
-                          exportData.getStartEndPostions(),
-                          viewport.getAlignment().getHiddenColumns()));
-          Desktop.addInternalFrame(cap, MessageManager.formatMessage(
-                  "label.alignment_output_command", new Object[]
-                  { fileFormat.getName() }), 600, 500);
-        } catch (OutOfMemoryError oom)
-        {
-          new OOMWarning("Outputting alignment as " + fileFormat.getName(),
-                  oom);
-          cap.dispose();
-        }
+        FileFormatI format = fileFormat;
+        cap.setText(new FormatAdapter(alignPanel, options).formatSequences(
+                format, exportData.getAlignment(),
+                exportData.getOmitHidden(),
+                exportData.getStartEndPostions(),
+                viewport.getAlignment().getHiddenColumns()));
+        Desktop.addInternalFrame(cap, MessageManager.formatMessage(
+                "label.alignment_output_command", new Object[]
+                { fileFormat.getName() }), 600, 500);
+      } catch (OutOfMemoryError oom)
+      {
+        new OOMWarning("Outputting alignment as " + fileFormat.getName(),
+                oom);
+        cap.dispose();
       }
+      return null;
     };
 
     /*
@@ -1432,7 +1435,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
     else
     {
-      outputAction.run();
+      try
+      {
+        outputAction.call();
+      } catch (Exception e)
+      {
+        e.printStackTrace();
+      }
     }
   }
 
@@ -1540,15 +1549,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             .getString("label.load_jalview_annotations");
     chooser.setDialogTitle(tooltip);
     chooser.setToolTipText(tooltip);
-    chooser.setResponseHandler(0, new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        String choice = chooser.getSelectedFile().getPath();
-        Cache.setProperty("LAST_DIRECTORY", choice);
-        loadJalviewDataFile(chooser.getSelectedFile(), null, null, null);
-      }
+    chooser.setResponseHandler(0, () -> {
+      String choice = chooser.getSelectedFile().getPath();
+      Cache.setProperty("LAST_DIRECTORY", choice);
+      loadJalviewDataFile(chooser.getSelectedFile(), null, null, null);
+      return null;
     });
 
     chooser.showOpenDialog(this);
@@ -2470,36 +2475,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       return;
     }
 
-    Runnable okAction = new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        SequenceI[] cut = sg.getSequences()
-                .toArray(new SequenceI[sg.getSize()]);
+    Callable okAction = () -> {
+      SequenceI[] cut = sg.getSequences()
+              .toArray(new SequenceI[sg.getSize()]);
 
-        addHistoryItem(new EditCommand(
-                MessageManager.getString("label.cut_sequences"), Action.CUT,
-                cut, sg.getStartRes(),
-                sg.getEndRes() - sg.getStartRes() + 1,
-                viewport.getAlignment()));
+      addHistoryItem(new EditCommand(
+              MessageManager.getString("label.cut_sequences"), Action.CUT,
+              cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1,
+              viewport.getAlignment()));
 
-        viewport.setSelectionGroup(null);
-        viewport.sendSelection();
-        viewport.getAlignment().deleteGroup(sg);
+      viewport.setSelectionGroup(null);
+      viewport.sendSelection();
+      viewport.getAlignment().deleteGroup(sg);
 
-        viewport.firePropertyChange("alignment", null,
-                viewport.getAlignment().getSequences());
-        if (viewport.getAlignment().getHeight() < 1)
+      viewport.firePropertyChange("alignment", null,
+              viewport.getAlignment().getSequences());
+      if (viewport.getAlignment().getHeight() < 1)
+      {
+        try
+        {
+          AlignFrame.this.setClosed(true);
+        } catch (Exception ex)
         {
-          try
-          {
-            AlignFrame.this.setClosed(true);
-          } catch (Exception ex)
-          {
-          }
         }
       }
+      return null;
     };
 
     /*
@@ -2523,7 +2523,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
     else
     {
-      okAction.run();
+      try
+      {
+        okAction.call();
+      } catch (Exception e)
+      {
+        e.printStackTrace();
+      }
     }
   }
 
@@ -2909,6 +2915,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       viewport.setGatherViewsHere(true);
     }
     tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1);
+
     return newap;
   }
 
@@ -3424,28 +3431,33 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   }
 
   /**
-   * DOCUMENT ME!
+   * Opens an Overview panel for the alignment, unless one is open already
    * 
    * @param e
-   *          DOCUMENT ME!
    */
   @Override
   public void overviewMenuItem_actionPerformed(ActionEvent e)
   {
+    boolean showHiddenRegions = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
+                false);
+    openOverviewPanel(showHiddenRegions);
+  }
+
+  public OverviewPanel openOverviewPanel(boolean showHidden)
+  {
     if (alignPanel.overviewPanel != null)
     {
-      return;
+      return alignPanel.overviewPanel;
     }
-
     JInternalFrame frame = new JInternalFrame();
-    final OverviewPanel overview = new OverviewPanel(alignPanel);
+    final OverviewPanel overview = new OverviewPanel(alignPanel, frame, showHidden);
     frame.setContentPane(overview);
-    Desktop.addInternalFrame(frame, MessageManager
-            .formatMessage("label.overview_params", new Object[]
-            { this.getTitle() }), true, frame.getWidth(), frame.getHeight(),
+    Desktop.addInternalFrame(frame, "", true, frame.getWidth(), frame.getHeight(),
             true, true);
+    frame.setFrameIcon(null);
     frame.pack();
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
+    final AlignmentPanel thePanel = this.alignPanel; 
     frame.addInternalFrameListener(
             new javax.swing.event.InternalFrameAdapter()
             {
@@ -3454,7 +3466,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                       javax.swing.event.InternalFrameEvent evt)
               {
                 overview.dispose();
-                alignPanel.setOverviewPanel(null);
+                thePanel.setOverviewPanel(null);
               }
             });
     if (getKeyListeners().length > 0)
@@ -3463,6 +3475,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     alignPanel.setOverviewPanel(overview);
+    alignPanel.setOverviewTitle(this);
+    
+    return overview;
   }
 
   @Override
@@ -4076,36 +4091,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     chooser.setToolTipText(
             MessageManager.getString("label.load_tree_file"));
 
-    chooser.setResponseHandler(0, new Runnable()
-    {
-      @Override
-      public void run()
+    chooser.setResponseHandler(0, () -> {
+      String filePath = chooser.getSelectedFile().getPath();
+      Cache.setProperty("LAST_DIRECTORY", filePath);
+      NewickFile fin = null;
+      try
       {
-        String filePath = chooser.getSelectedFile().getPath();
-        Cache.setProperty("LAST_DIRECTORY", filePath);
-        NewickFile fin = null;
-        try
-        {
-          fin = new NewickFile(new FileParse(chooser.getSelectedFile(),
-                  DataSourceType.FILE));
-          viewport.setCurrentTree(showNewickTree(fin, filePath).getTree());
-        } catch (Exception ex)
-        {
-          JvOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(),
-                  MessageManager
-                          .getString("label.problem_reading_tree_file"),
-                  JvOptionPane.WARNING_MESSAGE);
-          ex.printStackTrace();
-        }
-        if (fin != null && fin.hasWarningMessage())
-        {
-          JvOptionPane.showMessageDialog(Desktop.desktop,
-                  fin.getWarningMessage(),
-                  MessageManager.getString(
-                          "label.possible_problem_with_tree_file"),
-                  JvOptionPane.WARNING_MESSAGE);
-        }
+        fin = new NewickFile(new FileParse(chooser.getSelectedFile(),
+                DataSourceType.FILE));
+        viewport.setCurrentTree(showNewickTree(fin, filePath).getTree());
+      } catch (Exception ex)
+      {
+        JvOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(),
+                MessageManager.getString("label.problem_reading_tree_file"),
+                JvOptionPane.WARNING_MESSAGE);
+        ex.printStackTrace();
+      }
+      if (fin != null && fin.hasWarningMessage())
+      {
+        JvOptionPane.showMessageDialog(Desktop.desktop,
+                fin.getWarningMessage(),
+                MessageManager
+                        .getString("label.possible_problem_with_tree_file"),
+                JvOptionPane.WARNING_MESSAGE);
       }
+      return null;
     });
     chooser.showOpenDialog(this);
   }
@@ -4959,7 +4969,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     if (index > -1)
     {
+      /*
+       * update current Overview window title (if there is one)
+       * to add view name "Original" if necessary
+       */
+      alignPanel.setOverviewTitle(this);
+      
+      /*
+       * switch panels and set Overview title (if there is one
+       * because it was opened automatically)
+       */
       alignPanel = alignPanels.get(index);
+      alignPanel.setOverviewTitle(this);
+
       viewport = alignPanel.av;
       avc.setViewportAndAlignmentPanel(viewport, alignPanel);
       setMenusFromViewport(viewport);
@@ -5884,16 +5906,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     chooser.setDialogTitle(MessageManager.getString("label.load_vcf_file"));
     chooser.setToolTipText(MessageManager.getString("label.load_vcf_file"));
     final AlignFrame us = this;
-    chooser.setResponseHandler(0, new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        String choice = chooser.getSelectedFile().getPath();
-        Cache.setProperty("LAST_DIRECTORY", choice);
-        SequenceI[] seqs = viewport.getAlignment().getSequencesArray();
-        new VCFLoader(choice).loadVCF(seqs, us);
-      }
+    chooser.setResponseHandler(0, () -> {
+      String choice = chooser.getSelectedFile().getPath();
+      Cache.setProperty("LAST_DIRECTORY", choice);
+      SequenceI[] seqs = viewport.getAlignment().getSequencesArray();
+      new VCFLoader(choice).loadVCF(seqs, us);
+      return null;
     });
     chooser.showOpenDialog(null);
 
index 3b1b147..fea74db 100644 (file)
@@ -801,27 +801,15 @@ public class AlignViewport extends AlignmentViewport
      * in reverse order)
      */
     JvOptionPane dialog = JvOptionPane.newOptionDialog(Desktop.desktop)
-            .setResponseHandler(0, new Runnable()
-            {
-              @Override
-              public void run()
-              {
-                addDataToAlignment(al);
-              }
-            }).setResponseHandler(1, new Runnable()
-            {
-              @Override
-              public void run()
-              {
-                us.openLinkedAlignmentAs(al, title, true);
-              }
-            }).setResponseHandler(2, new Runnable()
-            {
-              @Override
-              public void run()
-              {
-                us.openLinkedAlignmentAs(al, title, false);
-              }
+            .setResponseHandler(0, () -> {
+              addDataToAlignment(al);
+              return null;
+            }).setResponseHandler(1, () -> {
+              us.openLinkedAlignmentAs(al, title, true);
+              return null;
+            }).setResponseHandler(2, () -> {
+              us.openLinkedAlignmentAs(al, title, false);
+              return null;
             });
     dialog.showDialog(question,
             MessageManager.getString("label.open_split_window"),
index e84aae0..e545776 100644 (file)
@@ -1742,4 +1742,42 @@ public class AlignmentPanel extends GAlignmentPanel implements
     return calculationDialog;
   }
 
+  /**
+   * Constructs and sets the title for the Overview window (if there is one),
+   * including the align frame's title, and view name (if applicable). Returns
+   * the title, or null if this panel has no Overview window open.
+   * 
+   * @param alignFrame
+   * @return
+   */
+  public String setOverviewTitle(AlignFrame alignFrame)
+  {
+    if (this.overviewPanel == null)
+    {
+      return null;
+    }
+    String overviewTitle = MessageManager
+            .formatMessage("label.overview_params", new Object[]
+            { alignFrame.getTitle() });
+    String viewName = getViewName();
+    if (viewName != null)
+    {
+      overviewTitle += (" " + viewName);
+    }
+    overviewPanel.setTitle(overviewTitle);
+    return overviewTitle;
+  }
+
+  /**
+   * If this alignment panel has an Overview panel open, closes it
+   */
+  public void closeOverviewPanel()
+  {
+    if (overviewPanel != null)
+    {
+      overviewPanel.close();
+      overviewPanel = null;
+    }
+  }
+
 }
index 791421d..d976815 100644 (file)
  */
 package jalview.gui;
 
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceGroup;
-import jalview.util.MessageManager;
-
 import java.awt.BorderLayout;
 import java.awt.Checkbox;
 import java.awt.CheckboxGroup;
@@ -45,6 +40,11 @@ import javax.swing.JInternalFrame;
 import javax.swing.JLayeredPane;
 import javax.swing.JPanel;
 
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceGroup;
+import jalview.util.MessageManager;
+
 /**
  * A panel that allows the user to select which sequence-associated annotation
  * rows to show or hide.
@@ -602,6 +602,7 @@ public class AnnotationChooser extends JPanel
   private void showFrame()
   {
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
     Desktop.addInternalFrame(frame,
index f1e8402..a0ab709 100644 (file)
@@ -86,6 +86,7 @@ public class AnnotationColourChooser extends AnnotationRowFilter
       }
     }
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
     Desktop.addInternalFrame(frame,
index 0b1ad93..c6c0e10 100644 (file)
@@ -97,6 +97,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter
   {
     super(av, ap);
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
     Desktop.addInternalFrame(frame,
index 1efd100..894db79 100644 (file)
  */
 package jalview.gui;
 
-import java.util.Locale;
-
-import jalview.api.FeatureRenderer;
-import jalview.bin.Cache;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.SequenceI;
-import jalview.io.AnnotationFile;
-import jalview.io.FeaturesFile;
-import jalview.io.JalviewFileChooser;
-import jalview.io.JalviewFileView;
-import jalview.util.MessageManager;
-
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.FileWriter;
 import java.io.PrintWriter;
+import java.util.Locale;
 
 import javax.swing.BoxLayout;
 import javax.swing.ButtonGroup;
@@ -50,6 +39,16 @@ import javax.swing.JPanel;
 import javax.swing.JRadioButton;
 import javax.swing.SwingConstants;
 
+import jalview.api.FeatureRenderer;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.SequenceI;
+import jalview.io.AnnotationFile;
+import jalview.io.FeaturesFile;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.util.MessageManager;
+
 /**
  * 
  * GUI dialog for exporting features or alignment annotations depending upon
@@ -108,6 +107,7 @@ public class AnnotationExporter extends JPanel
     }
 
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
     Dimension preferredSize = frame.getPreferredSize();
index 2c563f1..804ab7b 100755 (executable)
@@ -292,25 +292,21 @@ public class AnnotationLabels extends JPanel
     EditNameDialog dialog = new EditNameDialog(annotation.label,
             annotation.description, name, description);
 
-    dialog.showDialog(ap.alignFrame, title, new Runnable()
-    {
-      @Override
-      public void run()
+    dialog.showDialog(ap.alignFrame, title, () -> {
+      annotation.label = dialog.getName();
+      String text = dialog.getDescription();
+      if (text != null && text.length() == 0)
       {
-        annotation.label = dialog.getName();
-        String text = dialog.getDescription();
-        if (text != null && text.length() == 0)
-        {
-          text = null;
-        }
-        annotation.description = text;
-        if (addNew)
-        {
-          ap.av.getAlignment().addAnnotation(annotation);
-          ap.av.getAlignment().setAnnotationIndex(annotation, 0);
-        }
-        ap.refresh(true);
+        text = null;
+      }
+      annotation.description = text;
+      if (addNew)
+      {
+        ap.av.getAlignment().addAnnotation(annotation);
+        ap.av.getAlignment().setAnnotationIndex(annotation, 0);
       }
+      ap.refresh(true);
+      return null;
     });
   }
 
index 3a64716..6fac8fc 100644 (file)
  */
 package jalview.gui;
 
-import jalview.analysis.AlignSeq;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.HiddenColumns;
-import jalview.datamodel.RnaViewerModel;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.ext.varna.RnaModel;
-import jalview.structure.SecondaryStructureListener;
-import jalview.structure.SelectionListener;
-import jalview.structure.SelectionSource;
-import jalview.structure.StructureSelectionManager;
-import jalview.structure.VamsasSource;
-import jalview.util.Comparison;
-import jalview.util.MessageManager;
-import jalview.util.ShiftList;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.util.Collection;
@@ -60,6 +43,22 @@ import fr.orsay.lri.varna.models.FullBackup;
 import fr.orsay.lri.varna.models.annotations.HighlightRegionAnnotation;
 import fr.orsay.lri.varna.models.rna.ModeleBase;
 import fr.orsay.lri.varna.models.rna.RNA;
+import jalview.analysis.AlignSeq;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.HiddenColumns;
+import jalview.datamodel.RnaViewerModel;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.ext.varna.RnaModel;
+import jalview.structure.SecondaryStructureListener;
+import jalview.structure.SelectionListener;
+import jalview.structure.SelectionSource;
+import jalview.structure.StructureSelectionManager;
+import jalview.structure.VamsasSource;
+import jalview.util.Comparison;
+import jalview.util.MessageManager;
+import jalview.util.ShiftList;
 
 public class AppVarna extends JInternalFrame
         implements SelectionListener, SecondaryStructureListener,
@@ -216,6 +215,7 @@ public class AppVarna extends JInternalFrame
    */
   protected AppVarna(AlignmentPanel ap)
   {
+    this.setFrameIcon(null);
     this.ap = ap;
     this.viewId = System.currentTimeMillis() + "." + this.hashCode();
     vab = new AppVarnaBinding();
index f7e5413..af41e58 100644 (file)
  */
 package jalview.gui;
 
-import jalview.analysis.TreeBuilder;
-import jalview.analysis.scoremodels.ScoreModels;
-import jalview.analysis.scoremodels.SimilarityParams;
-import jalview.api.analysis.ScoreModelI;
-import jalview.api.analysis.SimilarityParamsI;
-import jalview.bin.Cache;
-import jalview.datamodel.SequenceGroup;
-import jalview.util.MessageManager;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
@@ -61,6 +52,15 @@ import javax.swing.JRadioButton;
 import javax.swing.event.InternalFrameAdapter;
 import javax.swing.event.InternalFrameEvent;
 
+import jalview.analysis.TreeBuilder;
+import jalview.analysis.scoremodels.ScoreModels;
+import jalview.analysis.scoremodels.SimilarityParams;
+import jalview.api.analysis.ScoreModelI;
+import jalview.api.analysis.SimilarityParamsI;
+import jalview.bin.Cache;
+import jalview.datamodel.SequenceGroup;
+import jalview.util.MessageManager;
+
 /**
  * A dialog where a user can choose and action Tree or PCA calculation options
  */
@@ -130,6 +130,7 @@ public class CalculationChooser extends JPanel
   {
     setLayout(new BorderLayout());
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     this.setBackground(Color.white);
     frame.addFocusListener(new FocusListener()
index 9cf2cc9..5a23048 100644 (file)
@@ -114,6 +114,7 @@ public class Console extends WindowAdapter
     Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
     frame = initFrame("Java Console", screenSize.width / 2,
             screenSize.height / 2, -1, -1);
+    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     initConsole(true);
   }
 
@@ -551,10 +552,12 @@ public class Console extends WindowAdapter
       {
       }
     }
+    /*
     if (!frame.isVisible())
     {
       frame.dispose();
     }
+    */
     // System.exit(0);
   }
 
index 6e0032f..4469ceb 100644 (file)
  */
 package jalview.gui;
 
-import jalview.bin.Cache;
-import jalview.io.JalviewFileChooser;
-import jalview.io.JalviewFileView;
-import jalview.jbgui.GCutAndPasteHtmlTransfer;
-import jalview.util.MessageManager;
-import jalview.viewmodel.AlignmentViewport;
-
 import java.awt.Toolkit;
 import java.awt.datatransfer.Clipboard;
 import java.awt.datatransfer.StringSelection;
@@ -44,6 +37,13 @@ import javax.swing.event.HyperlinkEvent;
 import javax.swing.event.HyperlinkEvent.EventType;
 import javax.swing.event.HyperlinkListener;
 
+import jalview.bin.Cache;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.jbgui.GCutAndPasteHtmlTransfer;
+import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
+
 /**
  * Cut'n'paste files into the desktop See JAL-1105
  * 
@@ -58,6 +58,7 @@ public class CutAndPasteHtmlTransfer extends GCutAndPasteHtmlTransfer
   public CutAndPasteHtmlTransfer()
   {
     super();
+    this.setFrameIcon(null);
     displaySource.setSelected(false);
     textarea.addKeyListener(new KeyListener()
     {
index 112d502..bc3c0d2 100644 (file)
  */
 package jalview.gui;
 
-import jalview.bin.Cache;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+import javax.swing.SwingUtilities;
+
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.api.ComplexAlignFile;
 import jalview.api.FeatureSettingsModelI;
 import jalview.api.FeaturesDisplayedI;
 import jalview.api.FeaturesSourceI;
+import jalview.bin.Cache;
 import jalview.bin.Jalview;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.HiddenColumns;
@@ -45,22 +61,6 @@ import jalview.json.binding.biojson.v1.ColourSchemeMapper;
 import jalview.schemes.ColourSchemeI;
 import jalview.util.MessageManager;
 
-import java.awt.Toolkit;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.StringSelection;
-import java.awt.datatransfer.Transferable;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.swing.JMenuItem;
-import javax.swing.JPopupMenu;
-import javax.swing.SwingUtilities;
-
 /**
  * Cut'n'paste files into the desktop See JAL-1105
  * 
@@ -78,6 +78,7 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
 
   public CutAndPasteTransfer()
   {
+    this.setFrameIcon(null);
     SwingUtilities.invokeLater(new Runnable()
     {
       @Override
index 16603df..6a67148 100644 (file)
@@ -64,6 +64,7 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.Locale;
 import java.util.Vector;
+import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Semaphore;
@@ -81,6 +82,7 @@ import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JDesktopPane;
+import javax.swing.JFrame;
 import javax.swing.JInternalFrame;
 import javax.swing.JLabel;
 import javax.swing.JMenuItem;
@@ -90,6 +92,7 @@ import javax.swing.JProgressBar;
 import javax.swing.JTextField;
 import javax.swing.KeyStroke;
 import javax.swing.SwingUtilities;
+import javax.swing.WindowConstants;
 import javax.swing.event.HyperlinkEvent;
 import javax.swing.event.HyperlinkEvent.EventType;
 import javax.swing.event.InternalFrameAdapter;
@@ -102,6 +105,7 @@ import jalview.api.AlignmentViewPanel;
 import jalview.bin.Cache;
 import jalview.bin.Jalview;
 import jalview.gui.ImageExporter.ImageWriterI;
+import jalview.gui.QuitHandler.QResponse;
 import jalview.io.BackupFiles;
 import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
@@ -187,6 +191,16 @@ public class Desktop extends jalview.jbgui.GDesktop
 
   public static HashMap<String, FileWriter> savingFiles = new HashMap<String, FileWriter>();
 
+  private static int DRAG_MODE = JDesktopPane.OUTLINE_DRAG_MODE;
+
+  public static void setLiveDragMode(boolean b)
+  {
+    DRAG_MODE = b ? JDesktopPane.LIVE_DRAG_MODE
+            : JDesktopPane.OUTLINE_DRAG_MODE;
+    if (desktop != null)
+      desktop.setDragMode(DRAG_MODE);
+  }
+
   private JalviewChangeSupport changeSupport = new JalviewChangeSupport();
 
   public static boolean nosplash = false;
@@ -451,13 +465,14 @@ public class Desktop extends jalview.jbgui.GDesktop
 
     setIconImages(ChannelProperties.getIconList());
 
+    // override quit handling when GUI OS close [X] button pressed
+    this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
     addWindowListener(new WindowAdapter()
     {
-
       @Override
       public void windowClosing(WindowEvent ev)
       {
-        quit();
+        QuitHandler.QResponse ret = desktopQuit(true, true); // ui, disposeFlag
       }
     });
 
@@ -482,7 +497,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     }
 
     getContentPane().add(desktop, BorderLayout.CENTER);
-    desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
+    desktop.setDragMode(DRAG_MODE);
 
     // This line prevents Windows Look&Feel resizing all new windows to maximum
     // if previous window was maximised
@@ -571,15 +586,6 @@ public class Desktop extends jalview.jbgui.GDesktop
 
     this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
 
-    this.addWindowListener(new WindowAdapter()
-    {
-      @Override
-      public void windowClosing(WindowEvent evt)
-      {
-        quit();
-      }
-    });
-
     MouseAdapter ma;
     this.addMouseListener(ma = new MouseAdapter()
     {
@@ -1180,36 +1186,32 @@ public class Desktop extends jalview.jbgui.GDesktop
             MessageManager.getString("label.open_local_file"));
     chooser.setToolTipText(MessageManager.getString("action.open"));
 
-    chooser.setResponseHandler(0, new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        File selectedFile = chooser.getSelectedFile();
-        Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
+    chooser.setResponseHandler(0, () -> {
+      File selectedFile = chooser.getSelectedFile();
+      Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
 
-        FileFormatI format = chooser.getSelectedFormat();
+      FileFormatI format = chooser.getSelectedFormat();
 
-        /*
-         * Call IdentifyFile to verify the file contains what its extension implies.
-         * Skip this step for dynamically added file formats, because IdentifyFile does
-         * not know how to recognise them.
-         */
-        if (FileFormats.getInstance().isIdentifiable(format))
+      /*
+       * Call IdentifyFile to verify the file contains what its extension implies.
+       * Skip this step for dynamically added file formats, because IdentifyFile does
+       * not know how to recognise them.
+       */
+      if (FileFormats.getInstance().isIdentifiable(format))
+      {
+        try
         {
-          try
-          {
-            format = new IdentifyFile().identify(selectedFile,
-                    DataSourceType.FILE);
-          } catch (FileFormatException e)
-          {
-            // format = null; //??
-          }
+          format = new IdentifyFile().identify(selectedFile,
+                  DataSourceType.FILE);
+        } catch (FileFormatException e)
+        {
+          // format = null; //??
         }
-
-        new FileLoader().LoadFile(viewport, selectedFile,
-                DataSourceType.FILE, format);
       }
+
+      new FileLoader().LoadFile(viewport, selectedFile, DataSourceType.FILE,
+              format);
+      return null;
     });
     chooser.showOpenDialog(this);
   }
@@ -1265,64 +1267,60 @@ public class Desktop extends jalview.jbgui.GDesktop
 
     Object[] options = new Object[] { MessageManager.getString("action.ok"),
         MessageManager.getString("action.cancel") };
-    Runnable action = new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        @SuppressWarnings("unchecked")
-        String url = (history instanceof JTextField
-                ? ((JTextField) history).getText()
-                : ((JComboBox<String>) history).getEditor().getItem()
-                        .toString().trim());
+    Callable<Void> action = () -> {
+      @SuppressWarnings("unchecked")
+      String url = (history instanceof JTextField
+              ? ((JTextField) history).getText()
+              : ((JComboBox<String>) history).getEditor().getItem()
+                      .toString().trim());
 
-        if (url.toLowerCase(Locale.ROOT).endsWith(".jar"))
+      if (url.toLowerCase(Locale.ROOT).endsWith(".jar"))
+      {
+        if (viewport != null)
         {
-          if (viewport != null)
-          {
-            new FileLoader().LoadFile(viewport, url, DataSourceType.URL,
-                    FileFormat.Jalview);
-          }
-          else
-          {
-            new FileLoader().LoadFile(url, DataSourceType.URL,
-                    FileFormat.Jalview);
-          }
+          new FileLoader().LoadFile(viewport, url, DataSourceType.URL,
+                  FileFormat.Jalview);
         }
         else
         {
-          FileFormatI format = null;
-          try
-          {
-            format = new IdentifyFile().identify(url, DataSourceType.URL);
-          } catch (FileFormatException e)
-          {
-            // TODO revise error handling, distinguish between
-            // URL not found and response not valid
-          }
+          new FileLoader().LoadFile(url, DataSourceType.URL,
+                  FileFormat.Jalview);
+        }
+      }
+      else
+      {
+        FileFormatI format = null;
+        try
+        {
+          format = new IdentifyFile().identify(url, DataSourceType.URL);
+        } catch (FileFormatException e)
+        {
+          // TODO revise error handling, distinguish between
+          // URL not found and response not valid
+        }
 
-          if (format == null)
-          {
-            String msg = MessageManager
-                    .formatMessage("label.couldnt_locate", url);
-            JvOptionPane.showInternalMessageDialog(Desktop.desktop, msg,
-                    MessageManager.getString("label.url_not_found"),
-                    JvOptionPane.WARNING_MESSAGE);
+        if (format == null)
+        {
+          String msg = MessageManager.formatMessage("label.couldnt_locate",
+                  url);
+          JvOptionPane.showInternalMessageDialog(Desktop.desktop, msg,
+                  MessageManager.getString("label.url_not_found"),
+                  JvOptionPane.WARNING_MESSAGE);
 
-            return;
-          }
+          return null; // Void
+        }
 
-          if (viewport != null)
-          {
-            new FileLoader().LoadFile(viewport, url, DataSourceType.URL,
-                    format);
-          }
-          else
-          {
-            new FileLoader().LoadFile(url, DataSourceType.URL, format);
-          }
+        if (viewport != null)
+        {
+          new FileLoader().LoadFile(viewport, url, DataSourceType.URL,
+                  format);
+        }
+        else
+        {
+          new FileLoader().LoadFile(url, DataSourceType.URL, format);
         }
       }
+      return null; // Void
     };
     String dialogOption = MessageManager
             .getString("label.input_alignment_from_url");
@@ -1352,39 +1350,79 @@ public class Desktop extends jalview.jbgui.GDesktop
   }
 
   /*
-   * Exit the program
+   * Check with user and saving files before actually quitting
    */
-  @Override
-  public void quit()
+  public void desktopQuit()
   {
-    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
-    Cache.setProperty("SCREENGEOMETRY_WIDTH", screen.width + "");
-    Cache.setProperty("SCREENGEOMETRY_HEIGHT", screen.height + "");
-    storeLastKnownDimensions("", new Rectangle(getBounds().x, getBounds().y,
-            getWidth(), getHeight()));
+    desktopQuit(true, false);
+  }
 
-    if (jconsole != null)
-    {
-      storeLastKnownDimensions("JAVA_CONSOLE_", jconsole.getBounds());
-      jconsole.stopConsole();
-    }
-    if (jvnews != null)
-    {
-      storeLastKnownDimensions("JALVIEW_RSS_WINDOW_", jvnews.getBounds());
+  public QuitHandler.QResponse desktopQuit(boolean ui, boolean disposeFlag)
+  {
+    final Callable<Void> doDesktopQuit = () -> {
+      Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
+      Cache.setProperty("SCREENGEOMETRY_WIDTH", screen.width + "");
+      Cache.setProperty("SCREENGEOMETRY_HEIGHT", screen.height + "");
+      storeLastKnownDimensions("", new Rectangle(getBounds().x,
+              getBounds().y, getWidth(), getHeight()));
 
-    }
-    if (dialogExecutor != null)
-    {
-      dialogExecutor.shutdownNow();
-    }
-    closeAll_actionPerformed(null);
+      if (jconsole != null)
+      {
+        storeLastKnownDimensions("JAVA_CONSOLE_", jconsole.getBounds());
+        jconsole.stopConsole();
+      }
 
-    if (groovyConsole != null)
-    {
-      // suppress a possible repeat prompt to save script
-      groovyConsole.setDirty(false);
-      groovyConsole.exit();
-    }
+      if (jvnews != null)
+      {
+        storeLastKnownDimensions("JALVIEW_RSS_WINDOW_", jvnews.getBounds());
+
+      }
+
+      if (dialogExecutor != null)
+      {
+        dialogExecutor.shutdownNow();
+      }
+
+      closeAll_actionPerformed(null);
+
+      if (groovyConsole != null)
+      {
+        // suppress a possible repeat prompt to save script
+        groovyConsole.setDirty(false);
+        groovyConsole.exit();
+      }
+
+      if (QuitHandler.gotQuitResponse() == QResponse.FORCE_QUIT)
+      {
+        // note that shutdown hook will not be run
+        jalview.bin.Console.debug("Force Quit selected by user");
+        Runtime.getRuntime().halt(0);
+      }
+
+      jalview.bin.Console.debug("Quit selected by user");
+      if (disposeFlag)
+      {
+        instance.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+        // instance.dispose();
+      }
+      instance.quit();
+
+      return null; // Void
+    };
+
+    return QuitHandler.getQuitResponse(ui, doDesktopQuit, doDesktopQuit,
+            QuitHandler.defaultCancelQuit);
+  }
+
+  /**
+   * Don't call this directly, use desktopQuit() above. Exits the program.
+   */
+  @Override
+  public void quit()
+  {
+    // this will run the shutdownHook but QuitHandler.getQuitResponse() should
+    // not run a second time if gotQuitResponse flag has been set (i.e. user
+    // confirmed quit of some kind).
     System.exit(0);
   }
 
@@ -1794,7 +1832,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     saveState_actionPerformed(true);
   }
 
-  private void setProjectFile(File choice)
+  protected void setProjectFile(File choice)
   {
     this.projectFile = choice;
   }
@@ -1822,42 +1860,37 @@ public class Desktop extends jalview.jbgui.GDesktop
     // allowBackupFiles
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(MessageManager.getString("label.restore_state"));
-    chooser.setResponseHandler(0, new Runnable()
-    {
-      @Override
-      public void run()
+    chooser.setResponseHandler(0, () -> {
+      File selectedFile = chooser.getSelectedFile();
+      setProjectFile(selectedFile);
+      String choice = selectedFile.getAbsolutePath();
+      Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
+      new Thread(new Runnable()
       {
-        File selectedFile = chooser.getSelectedFile();
-        setProjectFile(selectedFile);
-        String choice = selectedFile.getAbsolutePath();
-        Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
-        new Thread(new Runnable()
+        @Override
+        public void run()
         {
-          @Override
-          public void run()
+          try
           {
-            try
-            {
-              new Jalview2XML().loadJalviewAlign(selectedFile);
-            } catch (OutOfMemoryError oom)
-            {
-              new OOMWarning("Whilst loading project from " + choice, oom);
-            } catch (Exception ex)
-            {
-              jalview.bin.Console.error(
-                      "Problems whilst loading project from " + choice, ex);
-              JvOptionPane.showMessageDialog(Desktop.desktop,
-                      MessageManager.formatMessage(
-                              "label.error_whilst_loading_project_from",
-                              new Object[]
-                              { choice }),
-                      MessageManager
-                              .getString("label.couldnt_load_project"),
-                      JvOptionPane.WARNING_MESSAGE);
-            }
+            new Jalview2XML().loadJalviewAlign(selectedFile);
+          } catch (OutOfMemoryError oom)
+          {
+            new OOMWarning("Whilst loading project from " + choice, oom);
+          } catch (Exception ex)
+          {
+            jalview.bin.Console.error(
+                    "Problems whilst loading project from " + choice, ex);
+            JvOptionPane.showMessageDialog(Desktop.desktop,
+                    MessageManager.formatMessage(
+                            "label.error_whilst_loading_project_from",
+                            new Object[]
+                            { choice }),
+                    MessageManager.getString("label.couldnt_load_project"),
+                    JvOptionPane.WARNING_MESSAGE);
           }
-        }, "Project Loader").start();
-      }
+        }
+      }, "Project Loader").start();
+      return null;
     });
 
     chooser.showOpenDialog(this);
@@ -2521,7 +2554,7 @@ public class Desktop extends jalview.jbgui.GDesktop
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        quit();
+        desktopQuit();
       }
     });
   }
index 52791c8..ff0fe3a 100644 (file)
  */
 package jalview.gui;
 
-import jalview.util.MessageManager;
-
 import java.awt.FlowLayout;
 import java.awt.Font;
+import java.util.concurrent.Callable;
 
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
@@ -32,6 +31,8 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
+import jalview.util.MessageManager;
+
 /**
  * A dialog where a name and description may be edited
  */
@@ -111,7 +112,7 @@ public class EditNameDialog
    * 
    * @param action
    */
-  public void showDialog(JComponent parent, String title, Runnable action)
+  public void showDialog(JComponent parent, String title, Callable action)
   {
     Object[] options = new Object[] { MessageManager.getString("action.ok"),
         MessageManager.getString("action.cancel") };
index 844eee4..ba9da67 100644 (file)
@@ -33,6 +33,7 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.Callable;
 
 import javax.swing.JComboBox;
 import javax.swing.JLabel;
@@ -427,8 +428,9 @@ public class FeatureEditor
    */
   public void showDialog()
   {
-    Runnable okAction = forCreate ? getCreateAction() : getAmendAction();
-    Runnable cancelAction = getCancelAction();
+    Callable<Void> okAction = forCreate ? getCreateAction()
+            : getAmendAction();
+    Callable<Void> cancelAction = getCancelAction();
 
     /*
      * set dialog action handlers for OK (create/Amend) and Cancel options
@@ -474,16 +476,12 @@ public class FeatureEditor
    * 
    * @return
    */
-  protected Runnable getCancelAction()
+  protected Callable getCancelAction()
   {
-    Runnable okAction = new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        ap.highlightSearchResults(null);
-        ap.paintAlignment(false, false);
-      }
+    Callable<Void> okAction = () -> {
+      ap.highlightSearchResults(null);
+      ap.paintAlignment(false, false);
+      return null;
     };
     return okAction;
   }
@@ -498,14 +496,14 @@ public class FeatureEditor
    * 
    * @return
    */
-  protected Runnable getCreateAction()
+  protected Callable getCreateAction()
   {
-    Runnable okAction = new Runnable()
+    Callable<Void> okAction = new Callable()
     {
       boolean useLastDefaults = features.get(0).getType() == null;
 
       @Override
-      public void run()
+      public Void call()
       {
         final String enteredType = name.getText().trim();
         final String enteredGroup = group.getText().trim();
@@ -545,6 +543,7 @@ public class FeatureEditor
 
           repaintPanel();
         }
+        return null;
       }
     };
     return okAction;
@@ -557,19 +556,15 @@ public class FeatureEditor
    * 
    * @return
    */
-  protected Runnable getDeleteAction()
+  protected Callable getDeleteAction()
   {
-    Runnable deleteAction = new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        SequenceFeature sf = features.get(featureIndex);
-        sequences.get(0).getDatasetSequence().deleteFeature(sf);
-        fr.featuresAdded();
-        ap.getSeqPanel().seqCanvas.highlightSearchResults(null);
-        ap.paintAlignment(true, true);
-      }
+    Callable<Void> deleteAction = () -> {
+      SequenceFeature sf = features.get(featureIndex);
+      sequences.get(0).getDatasetSequence().deleteFeature(sf);
+      fr.featuresAdded();
+      ap.getSeqPanel().seqCanvas.highlightSearchResults(null);
+      ap.paintAlignment(true, true);
+      return null;
     };
     return deleteAction;
   }
@@ -660,9 +655,9 @@ public class FeatureEditor
    * 
    * @return
    */
-  protected Runnable getAmendAction()
+  protected Callable getAmendAction()
   {
-    Runnable okAction = new Runnable()
+    Callable<Void> okAction = new Callable()
     {
       boolean useLastDefaults = features.get(0).getType() == null;
 
@@ -671,7 +666,7 @@ public class FeatureEditor
       String featureGroup = group.getText();
 
       @Override
-      public void run()
+      public Void call()
       {
         final String enteredType = name.getText().trim();
         final String enteredGroup = group.getText().trim();
@@ -734,6 +729,7 @@ public class FeatureEditor
           fr.featuresAdded();
         }
         repaintPanel();
+        return null;
       }
     };
     return okAction;
index bb15b55..2c8f47a 100644 (file)
@@ -20,8 +20,6 @@
  */
 package jalview.gui;
 
-import java.util.Locale;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
@@ -54,6 +52,7 @@ import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
@@ -63,7 +62,6 @@ import javax.swing.BorderFactory;
 import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
-import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JInternalFrame;
 import javax.swing.JLabel;
 import javax.swing.JLayeredPane;
@@ -413,6 +411,7 @@ public class FeatureSettings extends JPanel
     {
       frame = new JInternalFrame();
       frame.setContentPane(this);
+      frame.setFrameIcon(null);
       Rectangle bounds = af.getFeatureSettingsGeometry();
       String title;
       if (af.getAlignPanels().size() > 1 || Desktop.getAlignmentPanels(
@@ -949,14 +948,10 @@ public class FeatureSettings extends JPanel
     chooser.setDialogTitle(
             MessageManager.getString("label.load_feature_colours"));
     chooser.setToolTipText(MessageManager.getString("action.load"));
-    chooser.setResponseHandler(0, new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        File file = chooser.getSelectedFile();
-        load(file);
-      }
+    chooser.setResponseHandler(0, () -> {
+      File file = chooser.getSelectedFile();
+      load(file);
+      return null;
     });
     chooser.showOpenDialog(this);
   }
index c40b958..2756b14 100755 (executable)
@@ -108,6 +108,7 @@ public class Finder extends GFinder
     focusFixed = fixedFocus;
     finders = new HashMap<>();
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     frame.setLayer(JLayeredPane.PALETTE_LAYER);
     frame.addInternalFrameListener(new InternalFrameAdapter()
index 92cc4c6..f532706 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.bin.Cache;
-import jalview.jbgui.GFontChooser;
-import jalview.util.MessageManager;
-
 import java.awt.Font;
 import java.awt.FontMetrics;
 import java.awt.geom.Rectangle2D;
@@ -31,6 +27,10 @@ import java.awt.geom.Rectangle2D;
 import javax.swing.JInternalFrame;
 import javax.swing.JLayeredPane;
 
+import jalview.bin.Cache;
+import jalview.jbgui.GFontChooser;
+import jalview.util.MessageManager;
+
 /**
  * DOCUMENT ME!
  * 
@@ -112,6 +112,7 @@ public class FontChooser extends GFontChooser
   void init()
   {
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
 
     smoothFont.setSelected(ap.av.antiAlias);
index ce1cb46..d849ba2 100644 (file)
  */
 package jalview.gui;
 
+import java.awt.Component;
+import java.awt.Graphics;
+import java.io.File;
+import java.util.concurrent.Callable;
+import java.util.concurrent.atomic.AtomicBoolean;
+
 import jalview.bin.Cache;
 import jalview.bin.Jalview;
 import jalview.io.JalviewFileChooser;
@@ -29,11 +35,6 @@ import jalview.util.ImageMaker.TYPE;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
 
-import java.awt.Component;
-import java.awt.Graphics;
-import java.io.File;
-import java.util.concurrent.atomic.AtomicBoolean;
-
 /**
  * A class that marshals steps in exporting a view in image graphics format
  * <ul>
@@ -155,25 +156,22 @@ public class ImageExporter
             && !Jalview.isHeadlessMode())
     {
       final File chosenFile = file;
-      Runnable okAction = new Runnable()
-      {
-        @Override
-        public void run()
-        {
-          exportImage(chosenFile, !textSelected.get(), width, height,
-                  messageId);
-        }
+      Callable<Void> okAction = () -> {
+        exportImage(chosenFile, !textSelected.get(), width, height,
+                messageId);
+        return null;
       };
       LineartOptions epsOption = new LineartOptions(TYPE.EPS.getName(),
               textSelected);
-      epsOption.setResponseAction(1, new Runnable()
+      epsOption.setResponseAction(1, new Callable<Void>()
       {
         @Override
-        public void run()
+        public Void call()
         {
           setStatus(MessageManager.formatMessage(
                   "status.cancelled_image_export_operation",
                   imageType.getName()), messageId);
+          return null;
         }
       });
       epsOption.setResponseAction(0, okAction);
index 028e50b..0e0b13d 100644 (file)
  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
-
 package jalview.gui;
 
+import java.awt.AWTEvent;
+import java.awt.ActiveEvent;
 import java.awt.Component;
+import java.awt.Container;
 import java.awt.Dialog.ModalityType;
+import java.awt.EventQueue;
 import java.awt.HeadlessException;
+import java.awt.MenuComponent;
+import java.awt.Toolkit;
 import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseMotionAdapter;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.ArrayList;
@@ -34,16 +41,23 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.Callable;
 import java.util.concurrent.Executors;
 
 import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JDialog;
+import javax.swing.JFrame;
 import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
+import javax.swing.event.InternalFrameEvent;
+import javax.swing.event.InternalFrameListener;
 
+import jalview.util.ChannelProperties;
 import jalview.util.Platform;
 import jalview.util.dialogrunner.DialogRunnerI;
 
@@ -58,17 +72,18 @@ public class JvOptionPane extends JOptionPane
 
   private Component parentComponent;
 
-  private Map<Object, Runnable> callbacks = new HashMap<>();
+  private Map<Object, Callable<Void>> callbacks = new HashMap<>();
 
   /*
-   * JalviewJS reports user choice in the dialog as the selected
-   * option (text); this list allows conversion to index (int)
+   * JalviewJS reports user choice in the dialog as the selected option (text);
+   * this list allows conversion to index (int)
    */
   List<Object> ourOptions;
 
   public JvOptionPane(final Component parent)
   {
     this.parentComponent = Platform.isJS() ? this : parent;
+    this.setIcon(null);
   }
 
   public static int showConfirmDialog(Component parentComponent,
@@ -758,6 +773,11 @@ public class JvOptionPane extends JOptionPane
    * @param string2
    * @return
    */
+  public static JvOptionPane newOptionDialog()
+  {
+    return new JvOptionPane(null);
+  }
+
   public static JvOptionPane newOptionDialog(Component parentComponent)
   {
     return new JvOptionPane(parentComponent);
@@ -770,13 +790,22 @@ public class JvOptionPane extends JOptionPane
             initialValue, true);
   }
 
-  public void showDialog(String message, String title, int optionType,
+  public void showDialog(Object message, String title, int optionType,
           int messageType, Icon icon, Object[] options, Object initialValue,
           boolean modal)
   {
+    showDialog(message, title, optionType, messageType, icon, options,
+            initialValue, modal, null);
+  }
+
+  public void showDialog(Object message, String title, int optionType,
+          int messageType, Icon icon, Object[] options, Object initialValue,
+          boolean modal, JButton[] buttons)
+  {
     if (!isInteractiveMode())
     {
       handleResponse(getMockResponse());
+      return;
     }
     // two uses:
     //
@@ -797,13 +826,102 @@ public class JvOptionPane extends JOptionPane
 
     if (modal)
     {
+      boolean useButtons = false;
+      Object initialValueButton = null;
+      NOTNULL: if (buttons != null)
+      {
+        if (buttons.length != options.length)
+        {
+          jalview.bin.Console.error(
+                  "Supplied buttons array not the same length as supplied options array.");
+          break NOTNULL;
+        }
+        int[] buttonActions = { JOptionPane.YES_OPTION,
+            JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION };
+        for (int i = 0; i < options.length; i++)
+        {
+          Object o = options[i];
+          jalview.bin.Console.debug(
+                  "Setting button " + i + " to '" + o.toString() + "'");
+          JButton jb = buttons[i];
+
+          if (o.equals(initialValue))
+            initialValueButton = jb;
+
+          int buttonAction = buttonActions[i];
+          Callable<Void> action = callbacks.get(buttonAction);
+          jb.setText((String) o);
+          jb.addActionListener(new ActionListener()
+          {
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+
+              Object obj = e.getSource();
+              if (obj == null || !(obj instanceof Component))
+              {
+                jalview.bin.Console.debug(
+                        "Could not find Component source of event object "
+                                + obj);
+                return;
+              }
+              Object joptionpaneObject = SwingUtilities.getAncestorOfClass(
+                      JOptionPane.class, (Component) obj);
+              if (joptionpaneObject == null
+                      || !(joptionpaneObject instanceof JOptionPane))
+              {
+                jalview.bin.Console.debug(
+                        "Could not find JOptionPane ancestor of event object "
+                                + obj);
+                return;
+              }
+              JOptionPane joptionpane = (JOptionPane) joptionpaneObject;
+              joptionpane.setValue(buttonAction);
+              if (action != null)
+                Executors.newSingleThreadExecutor().submit(action);
+              joptionpane.transferFocusBackward();
+              joptionpane.setVisible(false);
+              // put focus and raise parent window if possible, unless cancel or
+              // no button pressed
+              boolean raiseParent = (parentComponent != null);
+              if (buttonAction == JOptionPane.CANCEL_OPTION)
+                raiseParent = false;
+              if (optionType == JOptionPane.YES_NO_OPTION
+                      && buttonAction == JOptionPane.NO_OPTION)
+                raiseParent = false;
+              if (raiseParent)
+              {
+                parentComponent.requestFocus();
+                if (parentComponent instanceof JInternalFrame)
+                {
+                  JInternalFrame jif = (JInternalFrame) parentComponent;
+                  jif.show();
+                  jif.moveToFront();
+                  jif.grabFocus();
+                }
+                else if (parentComponent instanceof Window)
+                {
+                  Window w = (Window) parentComponent;
+                  w.toFront();
+                  w.requestFocus();
+                }
+              }
+              joptionpane.setVisible(false);
+            }
+          });
+
+        }
+        useButtons = true;
+      }
       // use a JOptionPane as usual
       int response = JOptionPane.showOptionDialog(parentComponent, message,
-              title, optionType, messageType, icon, options, initialValue);
+              title, optionType, messageType, icon,
+              useButtons ? buttons : options,
+              useButtons ? initialValueButton : initialValue);
 
       /*
-       * In Java, the response is returned to this thread and handled here;
-       * (for Javascript, see propertyChange)
+       * In Java, the response is returned to this thread and handled here; (for
+       * Javascript, see propertyChange)
        */
       if (!Platform.isJS())
       /**
@@ -818,9 +936,9 @@ public class JvOptionPane extends JOptionPane
     else
     {
       /*
-       * This is java similar to the swingjs handling, with the callbacks
-       * attached to the button press of the dialog.  This means we can use
-       * a non-modal JDialog for the confirmation without blocking the GUI.
+       * This is java similar to the swingjs handling, with the callbacks attached to
+       * the button press of the dialog. This means we can use a non-modal JDialog for
+       * the confirmation without blocking the GUI.
        */
       JOptionPane joptionpane = new JOptionPane();
       // Make button options
@@ -849,13 +967,14 @@ public class JvOptionPane extends JOptionPane
 
       ArrayList<JButton> options_btns = new ArrayList<>();
       Object initialValue_btn = null;
-      if (!Platform.isJS()) // JalviewJS already uses callback, don't need to add them here
+      if (!Platform.isJS()) // JalviewJS already uses callback, don't need to
+                            // add them here
       {
         for (int i = 0; i < options.length && i < 3; i++)
         {
           Object o = options[i];
           int buttonAction = buttonActions[i];
-          Runnable action = callbacks.get(buttonAction);
+          Callable<Void> action = callbacks.get(buttonAction);
           JButton jb = new JButton();
           jb.setText((String) o);
           jb.addActionListener(new ActionListener()
@@ -865,7 +984,7 @@ public class JvOptionPane extends JOptionPane
             {
               joptionpane.setValue(buttonAction);
               if (action != null)
-                Executors.defaultThreadFactory().newThread(action).start();
+                Executors.newSingleThreadExecutor().submit(action);
               // joptionpane.transferFocusBackward();
               joptionpane.transferFocusBackward();
               joptionpane.setVisible(false);
@@ -912,6 +1031,7 @@ public class JvOptionPane extends JOptionPane
               Platform.isJS() ? initialValue : initialValue_btn);
 
       JDialog dialog = joptionpane.createDialog(parentComponent, title);
+      dialog.setIconImages(ChannelProperties.getIconList());
       dialog.setModalityType(modal ? ModalityType.APPLICATION_MODAL
               : ModalityType.MODELESS);
       dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
@@ -928,20 +1048,77 @@ public class JvOptionPane extends JOptionPane
       handleResponse(getMockResponse());
     }
 
+    // need to set these separately so we can set the title bar icon later
+    this.setOptionType(yesNoCancelOption);
+    this.setMessageType(questionMessage);
+    this.setIcon(icon);
+    this.setInitialValue(initresponse);
+    this.setOptions(options);
+    this.setMessage(mainPanel);
+
     ourOptions = Arrays.asList(options);
     int response;
     if (parentComponent != this)
     {
-      response = JOptionPane.showInternalOptionDialog(parentComponent,
-              mainPanel, title, yesNoCancelOption, questionMessage, icon,
-              options, initresponse);
+      JInternalFrame jif = this.createInternalFrame(parentComponent, title);
+      jif.setFrameIcon(null);
+      jif.addInternalFrameListener(new InternalFrameListener()
+      {
+        @Override
+        public void internalFrameActivated(InternalFrameEvent arg0)
+        {
+        }
+
+        @Override
+        public void internalFrameClosed(InternalFrameEvent arg0)
+        {
+          JvOptionPane.this.internalDialogHandleResponse();
+        }
+
+        @Override
+        public void internalFrameClosing(InternalFrameEvent arg0)
+        {
+        }
+
+        @Override
+        public void internalFrameDeactivated(InternalFrameEvent arg0)
+        {
+        }
+
+        @Override
+        public void internalFrameDeiconified(InternalFrameEvent arg0)
+        {
+        }
+
+        @Override
+        public void internalFrameIconified(InternalFrameEvent arg0)
+        {
+        }
+
+        @Override
+        public void internalFrameOpened(InternalFrameEvent arg0)
+        {
+        }
+      });
+      jif.setVisible(true);
+      startModal(jif);
+      return;
     }
     else
     {
-      response = JOptionPane.showOptionDialog(parentComponent, mainPanel,
-              title, yesNoCancelOption, questionMessage, icon, options,
-              initresponse);
+      JDialog dialog = this.createDialog(parentComponent, title);
+      dialog.setIconImages(ChannelProperties.getIconList());
+      dialog.setVisible(true); // blocking
+      this.internalDialogHandleResponse();
+      return;
     }
+  }
+
+  private void internalDialogHandleResponse()
+  {
+    String responseString = (String) this.getValue();
+    int response = ourOptions.indexOf(responseString);
+
     if (!Platform.isJS())
     /**
      * Java only
@@ -953,14 +1130,105 @@ public class JvOptionPane extends JOptionPane
     }
   }
 
+  /*
+   * @Override public JvOptionPane setResponseHandler(Object response, Runnable
+   * action) { callbacks.put(response, new Callable<Void>() {
+   * 
+   * @Override public Void call() { action.run(); return null; } }); return this;
+   * }
+   */
   @Override
-  public JvOptionPane setResponseHandler(Object response, Runnable action)
+  public JvOptionPane setResponseHandler(Object response,
+          Callable<Void> action)
   {
     callbacks.put(response, action);
     return this;
   }
 
   /**
+   * showDialogOnTop will create a dialog that (attempts to) come to top of OS
+   * desktop windows
+   */
+  public static int showDialogOnTop(String label, String actionString,
+          int JOPTIONPANE_OPTION, int JOPTIONPANE_MESSAGETYPE)
+  {
+    if (!isInteractiveMode())
+    {
+      return (int) getMockResponse();
+    }
+    // Ensure Jalview window is brought to front (primarily for Quit
+    // confirmation window to be visible)
+
+    // This method of raising the Jalview window is broken in java
+    // jalviewDesktop.setVisible(true);
+    // jalviewDesktop.toFront();
+
+    // A better hack which works is to create a new JFrame parent with
+    // setAlwaysOnTop(true)
+    JFrame dialogParent = new JFrame();
+    dialogParent.setIconImages(ChannelProperties.getIconList());
+    dialogParent.setAlwaysOnTop(true);
+
+    int answer = JOptionPane.showConfirmDialog(dialogParent, label,
+            actionString, JOPTIONPANE_OPTION, JOPTIONPANE_MESSAGETYPE);
+
+    dialogParent.setAlwaysOnTop(false);
+    dialogParent.dispose();
+
+    return answer;
+  }
+
+  public void showDialogOnTopAsync(String label, String actionString,
+          int JOPTIONPANE_OPTION, int JOPTIONPANE_MESSAGETYPE, Icon icon,
+          Object[] options, Object initialValue, boolean modal)
+  {
+    JFrame frame = new JFrame();
+    frame.setIconImages(ChannelProperties.getIconList());
+    showDialogOnTopAsync(frame, label, actionString, JOPTIONPANE_OPTION,
+            JOPTIONPANE_MESSAGETYPE, icon, options, initialValue, modal);
+  }
+
+  public void showDialogOnTopAsync(JFrame dialogParent, Object label,
+          String actionString, int JOPTIONPANE_OPTION,
+          int JOPTIONPANE_MESSAGETYPE, Icon icon, Object[] options,
+          Object initialValue, boolean modal)
+  {
+    showDialogOnTopAsync(dialogParent, label, actionString,
+            JOPTIONPANE_OPTION, JOPTIONPANE_MESSAGETYPE, icon, options,
+            initialValue, modal, null);
+  }
+
+  public void showDialogOnTopAsync(JFrame dialogParent, Object label,
+          String actionString, int JOPTIONPANE_OPTION,
+          int JOPTIONPANE_MESSAGETYPE, Icon icon, Object[] options,
+          Object initialValue, boolean modal, JButton[] buttons)
+  {
+    if (!isInteractiveMode())
+    {
+      handleResponse(getMockResponse());
+      return;
+    }
+    // Ensure Jalview window is brought to front (primarily for Quit
+    // confirmation window to be visible)
+
+    // This method of raising the Jalview window is broken in java
+    // jalviewDesktop.setVisible(true);
+    // jalviewDesktop.toFront();
+
+    // A better hack which works is to create a new JFrame parent with
+    // setAlwaysOnTop(true)
+    dialogParent.setAlwaysOnTop(true);
+    parentComponent = dialogParent;
+
+    showDialog(label, actionString, JOPTIONPANE_OPTION,
+            JOPTIONPANE_MESSAGETYPE, icon, options, initialValue, modal,
+            buttons);
+
+    dialogParent.setAlwaysOnTop(false);
+    dialogParent.dispose();
+  }
+
+  /**
    * JalviewJS signals option selection by a property change event for the
    * option e.g. "OK". This methods responds to that by running the response
    * action that corresponds to that option.
@@ -987,17 +1255,248 @@ public class JvOptionPane extends JOptionPane
   public void handleResponse(Object response)
   {
     /*
-    * this test is for NaN in Chrome
-    */
+     * this test is for NaN in Chrome
+     */
     if (response != null && !response.equals(response))
     {
       return;
     }
-    Runnable action = callbacks.get(response);
+    Callable<Void> action = callbacks.get(response);
     if (action != null)
     {
-      action.run();
-      parentComponent.requestFocus();
+      try
+      {
+        action.call();
+      } catch (Exception e)
+      {
+        e.printStackTrace();
+      }
+      if (parentComponent != null)
+        parentComponent.requestFocus();
+    }
+  }
+
+  /**
+   * Create a non-modal confirm dialog
+   */
+  public JDialog createDialog(Component parentComponent, Object message,
+          String title, int optionType, int messageType, Icon icon,
+          Object[] options, Object initialValue, boolean modal)
+  {
+    return createDialog(parentComponent, message, title, optionType,
+            messageType, icon, options, initialValue, modal, null);
+  }
+
+  public JDialog createDialog(Component parentComponent, Object message,
+          String title, int optionType, int messageType, Icon icon,
+          Object[] options, Object initialValue, boolean modal,
+          JButton[] buttons)
+  {
+    if (!isInteractiveMode())
+    {
+      handleResponse(getMockResponse());
+      return null;
+    }
+    JButton[] optionsButtons = null;
+    Object initialValueButton = null;
+    JOptionPane joptionpane = new JOptionPane();
+    // Make button options
+    int[] buttonActions = { JOptionPane.YES_OPTION, JOptionPane.NO_OPTION,
+        JOptionPane.CANCEL_OPTION };
+
+    // we need the strings to make the buttons with actionEventListener
+    if (options == null)
+    {
+      ArrayList<String> options_default = new ArrayList<>();
+      options_default.add(UIManager.getString("OptionPane.yesButtonText"));
+      if (optionType == JOptionPane.YES_NO_OPTION
+              || optionType == JOptionPane.YES_NO_CANCEL_OPTION)
+      {
+        options_default.add(UIManager.getString("OptionPane.noButtonText"));
+      }
+      if (optionType == JOptionPane.YES_NO_CANCEL_OPTION)
+      {
+        options_default
+                .add(UIManager.getString("OptionPane.cancelButtonText"));
+      }
+      options = options_default.toArray();
+    }
+    if (!Platform.isJS()) // JalviewJS already uses callback, don't need to
+                          // add them here
+    {
+      if (((optionType == JOptionPane.YES_OPTION
+              || optionType == JOptionPane.NO_OPTION
+              || optionType == JOptionPane.CANCEL_OPTION
+              || optionType == JOptionPane.OK_OPTION
+              || optionType == JOptionPane.DEFAULT_OPTION)
+              && options.length < 1)
+              || ((optionType == JOptionPane.YES_NO_OPTION
+                      || optionType == JOptionPane.OK_CANCEL_OPTION)
+                      && options.length < 2)
+              || (optionType == JOptionPane.YES_NO_CANCEL_OPTION
+                      && options.length < 3))
+      {
+        jalview.bin.Console
+                .debug("JvOptionPane: not enough options for dialog type");
+      }
+      optionsButtons = new JButton[options.length];
+      for (int i = 0; i < options.length && i < 3; i++)
+      {
+        Object o = options[i];
+        int buttonAction = buttonActions[i];
+        Callable<Void> action = callbacks.get(buttonAction);
+        JButton jb;
+        if (buttons != null && buttons.length > i && buttons[i] != null)
+        {
+          jb = buttons[i];
+        }
+        else
+        {
+          jb = new JButton();
+        }
+        jb.setText((String) o);
+        jb.addActionListener(new ActionListener()
+        {
+          @Override
+          public void actionPerformed(ActionEvent e)
+          {
+            joptionpane.setValue(buttonAction);
+            if (action != null)
+              Executors.newSingleThreadExecutor().submit(action);
+            // joptionpane.transferFocusBackward();
+            joptionpane.transferFocusBackward();
+            joptionpane.setVisible(false);
+            // put focus and raise parent window if possible, unless cancel
+            // button pressed
+            boolean raiseParent = (parentComponent != null);
+            if (buttonAction == JOptionPane.CANCEL_OPTION)
+              raiseParent = false;
+            if (optionType == JOptionPane.YES_NO_OPTION
+                    && buttonAction == JOptionPane.NO_OPTION)
+              raiseParent = false;
+            if (raiseParent)
+            {
+              parentComponent.requestFocus();
+              if (parentComponent instanceof JInternalFrame)
+              {
+                JInternalFrame jif = (JInternalFrame) parentComponent;
+                jif.show();
+                jif.moveToFront();
+                jif.grabFocus();
+              }
+              else if (parentComponent instanceof Window)
+              {
+                Window w = (Window) parentComponent;
+                w.toFront();
+                w.requestFocus();
+              }
+            }
+            joptionpane.setVisible(false);
+          }
+        });
+        optionsButtons[i] = jb;
+        if (o.equals(initialValue))
+          initialValueButton = jb;
+      }
+    }
+    joptionpane.setMessage(message);
+    joptionpane.setMessageType(messageType);
+    joptionpane.setOptionType(optionType);
+    joptionpane.setIcon(icon);
+    joptionpane.setOptions(Platform.isJS() ? options : optionsButtons);
+    joptionpane.setInitialValue(
+            Platform.isJS() ? initialValue : initialValueButton);
+
+    JDialog dialog = joptionpane.createDialog(parentComponent, title);
+    dialog.setIconImages(ChannelProperties.getIconList());
+    dialog.setModalityType(
+            modal ? ModalityType.APPLICATION_MODAL : ModalityType.MODELESS);
+    dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+    return dialog;
+  }
+
+  /**
+   * Utility to programmatically click a button on a JOptionPane (as a JFrame)
+   * 
+   * returns true if button was found
+   */
+  public static boolean clickButton(JFrame frame, int buttonType)
+  {
+
+    return false;
+  }
+
+  /**
+   * This helper method makes the JInternalFrame wait until it is notified by an
+   * InternalFrameClosing event. This method also adds the given JOptionPane to
+   * the JInternalFrame and sizes it according to the JInternalFrame's preferred
+   * size.
+   *
+   * @param f
+   *          The JInternalFrame to make modal.
+   */
+  private static void startModal(JInternalFrame f)
+  {
+    // We need to add an additional glasspane-like component directly
+    // below the frame, which intercepts all mouse events that are not
+    // directed at the frame itself.
+    JPanel modalInterceptor = new JPanel();
+    modalInterceptor.setOpaque(false);
+    JLayeredPane lp = JLayeredPane.getLayeredPaneAbove(f);
+    lp.setLayer(modalInterceptor, JLayeredPane.MODAL_LAYER.intValue());
+    modalInterceptor.setBounds(0, 0, lp.getWidth(), lp.getHeight());
+    modalInterceptor.addMouseListener(new MouseAdapter()
+    {
+    });
+    modalInterceptor.addMouseMotionListener(new MouseMotionAdapter()
+    {
+    });
+    lp.add(modalInterceptor);
+    f.toFront();
+
+    // We need to explicitly dispatch events when we are blocking the event
+    // dispatch thread.
+    EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
+    try
+    {
+      while (!f.isClosed())
+      {
+        if (EventQueue.isDispatchThread())
+        {
+          // The getNextEventMethod() issues wait() when no
+          // event is available, so we don't need do explicitly wait().
+          AWTEvent ev = queue.getNextEvent();
+          // This mimics EventQueue.dispatchEvent(). We can't use
+          // EventQueue.dispatchEvent() directly, because it is
+          // protected, unfortunately.
+          if (ev instanceof ActiveEvent)
+            ((ActiveEvent) ev).dispatch();
+          else if (ev.getSource() instanceof Component)
+            ((Component) ev.getSource()).dispatchEvent(ev);
+          else if (ev.getSource() instanceof MenuComponent)
+            ((MenuComponent) ev.getSource()).dispatchEvent(ev);
+          // Other events are ignored as per spec in
+          // EventQueue.dispatchEvent
+        }
+        else
+        {
+          // Give other threads a chance to become active.
+          Thread.yield();
+        }
+      }
+    } catch (InterruptedException ex)
+    {
+      // If we get interrupted, then leave the modal state.
+    } finally
+    {
+      // Clean up the modal interceptor.
+      lp.remove(modalInterceptor);
+
+      // Remove the internal frame from its parent, so it is no longer
+      // lurking around and clogging memory.
+      Container parent = f.getParent();
+      if (parent != null)
+        parent.remove(f);
     }
   }
 }
index 62ad108..8a530ac 100644 (file)
@@ -23,6 +23,7 @@ package jalview.gui;
 import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import javax.swing.BorderFactory;
@@ -95,7 +96,7 @@ public class LineartOptions extends JPanel
    * 
    * @param action
    */
-  public void setResponseAction(Object response, Runnable action)
+  public void setResponseAction(Object response, Callable action)
   {
     dialog.setResponseHandler(response, action);
   }
index 470fd64..586ac2c 100644 (file)
  */
 package jalview.gui;
 
-import jalview.api.AlignViewportI;
-import jalview.bin.Cache;
-import jalview.renderer.OverviewRenderer;
-import jalview.renderer.OverviewResColourFinder;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.viewmodel.seqfeatures.FeatureRendererModel;
-
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Graphics;
@@ -34,8 +27,26 @@ import java.awt.image.BufferedImage;
 
 import javax.swing.JPanel;
 
+import jalview.api.AlignViewportI;
+import jalview.bin.Cache;
+import jalview.renderer.OverviewRenderer;
+import jalview.renderer.OverviewResColourFinder;
+import jalview.viewmodel.OverviewDimensions;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel;
+
 public class OverviewCanvas extends JPanel
 {
+  public static final Color OVERVIEW_DEFAULT_GAP = Color.lightGray;
+
+  public static final Color OVERVIEW_DEFAULT_LEGACY_GAP = Color.white;
+
+  public static final Color OVERVIEW_DEFAULT_RESIDUE = Color.white;
+
+  public static final Color OVERVIEW_DEFAULT_LEGACY_RESIDUE = Color.lightGray;
+
+  public static final Color OVERVIEW_DEFAULT_HIDDEN = Color.darkGray
+          .darker();
+
   private static final Color TRANS_GREY = new Color(100, 100, 100, 25);
 
   // This is set true if the alignment view changes whilst
@@ -79,10 +90,12 @@ public class OverviewCanvas extends JPanel
 
     boolean useLegacy = Cache.getDefault(Preferences.USE_LEGACY_GAP, false);
     Color gapCol = Cache.getDefaultColour(Preferences.GAP_COLOUR,
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP);
+            OVERVIEW_DEFAULT_GAP);
     Color hiddenCol = Cache.getDefaultColour(Preferences.HIDDEN_COLOUR,
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN);
-    cf = new OverviewResColourFinder(useLegacy, gapCol, hiddenCol);
+            OVERVIEW_DEFAULT_HIDDEN);
+    Color residueCol = useLegacy ? OVERVIEW_DEFAULT_LEGACY_RESIDUE : OVERVIEW_DEFAULT_RESIDUE;
+    
+    cf = new OverviewResColourFinder(gapCol, residueCol, hiddenCol);
 
     setSize(od.getWidth(), od.getHeight());
   }
@@ -268,4 +281,31 @@ public class OverviewCanvas extends JPanel
       }
     }
   }
+
+  public Color getGapColour()
+  {
+    return cf.getGapColour();
+  }
+
+  public Color getHiddenColour()
+  {
+    return cf.getHiddenColour();
+  }
+
+  public Color getResidueColour()
+  {
+    return cf.getResidueColour();
+  }
+
+  /**
+   * Sets the colours to use for gaps, residues and hidden regions
+   * 
+   * @param gaps
+   * @param residues
+   * @param hidden
+   */
+  public void setColours(Color gaps, Color residues, Color hidden)
+  {
+    cf = new OverviewResColourFinder(gaps, residues, hidden);
+  }
 }
index adde919..872d142 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.bin.Cache;
-import jalview.renderer.OverviewRenderer;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.viewmodel.OverviewDimensions;
-import jalview.viewmodel.OverviewDimensionsHideHidden;
-import jalview.viewmodel.OverviewDimensionsShowHidden;
-import jalview.viewmodel.ViewportListenerI;
-
 import java.awt.BorderLayout;
 import java.awt.Cursor;
 import java.awt.Dimension;
+import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ComponentAdapter;
@@ -48,6 +40,14 @@ import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.SwingUtilities;
 
+import jalview.renderer.OverviewRenderer;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.viewmodel.OverviewDimensions;
+import jalview.viewmodel.OverviewDimensionsHideHidden;
+import jalview.viewmodel.OverviewDimensionsShowHidden;
+import jalview.viewmodel.ViewportListenerI;
+
 /**
  * Panel displaying an overview of the full alignment, with an interactive box
  * representing the viewport onto the alignment.
@@ -67,6 +67,8 @@ public class OverviewPanel extends JPanel
 
   private AlignmentPanel ap;
 
+  private JInternalFrame internalFrame;
+
   protected JCheckBoxMenuItem displayToggle;
 
   protected boolean showHidden = true;
@@ -80,14 +82,18 @@ public class OverviewPanel extends JPanel
    * 
    * @param alPanel
    *          The alignment panel which is shown in the overview panel
+   * @param frame
+   * @param isShowHidden
+   *          TODO
    */
-  public OverviewPanel(AlignmentPanel alPanel)
+  public OverviewPanel(AlignmentPanel alPanel, JInternalFrame frame,
+          boolean isShowHidden)
   {
     this.av = alPanel.av;
     this.ap = alPanel;
+    this.internalFrame = frame;
 
-    showHidden = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START,
-            false);
+    showHidden = isShowHidden;
     if (showHidden)
     {
       od = new OverviewDimensionsShowHidden(av.getRanges(),
@@ -420,6 +426,68 @@ public class OverviewPanel extends JPanel
       oviewCanvas = null;
       ap = null;
       od = null;
+      internalFrame = null;
     }
   }
+
+  public boolean isShowHiddenRegions()
+  {
+    return showHidden;
+  }
+
+  public OverviewCanvas getCanvas()
+  {
+    return oviewCanvas;
+  }
+
+  /**
+   * Sets the title of the enclosing frame
+   * 
+   * @param title
+   */
+  public void setTitle(String title)
+  {
+    internalFrame.setTitle(title);
+  }
+
+  /**
+   * Returns the title of the enclosing frame
+   * 
+   * @return title
+   */
+  public String getTitle()
+  {
+    return internalFrame.getTitle();
+  }
+
+  /**
+   * Sets the bounds of the frame holding the Overview panel
+   * 
+   * @param xpos
+   * @param ypos
+   * @param width
+   * @param height
+   */
+  public void setFrameBounds(int xpos, int ypos, int width, int height)
+  {
+    internalFrame.setBounds(xpos, ypos, width, height);
+  }
+
+  /**
+   * Returns the bounds of the enclosing frame
+   * 
+   * @return
+   */
+  public Rectangle getFrameBounds()
+  {
+    return internalFrame.getBounds();
+  }
+
+  /**
+   * Closes the frame containing the overview panel
+   */
+  public void close()
+  {
+    internalFrame.dispose();
+  }
 }
index e6b6b83..26db8c3 100644 (file)
  */
 package jalview.gui;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterException;
+import java.awt.print.PrinterJob;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JMenuItem;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.event.InternalFrameAdapter;
+import javax.swing.event.InternalFrameEvent;
+
 import jalview.analysis.scoremodels.ScoreModels;
 import jalview.api.AlignViewportI;
 import jalview.api.analysis.ScoreModelI;
@@ -39,23 +56,6 @@ import jalview.util.MessageManager;
 import jalview.viewmodel.AlignmentViewport;
 import jalview.viewmodel.PCAModel;
 
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.print.PageFormat;
-import java.awt.print.Printable;
-import java.awt.print.PrinterException;
-import java.awt.print.PrinterJob;
-
-import javax.swing.ButtonGroup;
-import javax.swing.JMenuItem;
-import javax.swing.JRadioButtonMenuItem;
-import javax.swing.event.InternalFrameAdapter;
-import javax.swing.event.InternalFrameEvent;
-
 /**
  * The panel holding the Principal Component Analysis 3-D visualisation
  */
@@ -92,6 +92,7 @@ public class PCAPanel extends GPCAPanel
           SimilarityParamsI params)
   {
     super();
+    this.setFrameIcon(null);
     this.av = alignPanel.av;
     this.ap = alignPanel;
     boolean nucleotide = av.getAlignment().isNucleotide();
index 6903034..1c03d6a 100644 (file)
@@ -20,8 +20,6 @@
  */
 package jalview.gui;
 
-import java.util.Locale;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.event.ActionEvent;
@@ -34,6 +32,7 @@ import java.util.Collections;
 import java.util.Hashtable;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
 import java.util.SortedMap;
@@ -1987,15 +1986,11 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
             MessageManager.getString("label.group_description"));
     dialog.showDialog(ap.alignFrame,
             MessageManager.getString("label.edit_group_name_description"),
-            new Runnable()
-            {
-              @Override
-              public void run()
-              {
-                sg.setName(dialog.getName());
-                sg.setDescription(dialog.getDescription());
-                refresh();
-              }
+            () -> {
+              sg.setName(dialog.getName());
+              sg.setDescription(dialog.getDescription());
+              refresh();
+              return null;
             });
   }
 
@@ -2027,30 +2022,26 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
             sequence.getDescription(),
             MessageManager.getString("label.sequence_name"),
             MessageManager.getString("label.sequence_description"));
-    dialog.showDialog(ap.alignFrame, MessageManager.getString(
-            "label.edit_sequence_name_description"), new Runnable()
-            {
-              @Override
-              public void run()
+    dialog.showDialog(ap.alignFrame, MessageManager
+            .getString("label.edit_sequence_name_description"), () -> {
+              if (dialog.getName() != null)
               {
-                if (dialog.getName() != null)
+                if (dialog.getName().indexOf(" ") > -1)
                 {
-                  if (dialog.getName().indexOf(" ") > -1)
-                  {
-                    JvOptionPane.showMessageDialog(ap,
-                            MessageManager.getString(
-                                    "label.spaces_converted_to_underscores"),
-                            MessageManager.getString(
-                                    "label.no_spaces_allowed_sequence_name"),
-                            JvOptionPane.WARNING_MESSAGE);
-                  }
-                  sequence.setName(dialog.getName().replace(' ', '_'));
-                  ap.paintAlignment(false, false);
+                  JvOptionPane.showMessageDialog(ap,
+                          MessageManager.getString(
+                                  "label.spaces_converted_to_underscores"),
+                          MessageManager.getString(
+                                  "label.no_spaces_allowed_sequence_name"),
+                          JvOptionPane.WARNING_MESSAGE);
                 }
-                sequence.setDescription(dialog.getDescription());
-                ap.av.firePropertyChange("alignment", null,
-                        ap.av.getAlignment().getSequences());
+                sequence.setName(dialog.getName().replace(' ', '_'));
+                ap.paintAlignment(false, false);
               }
+              sequence.setDescription(dialog.getDescription());
+              ap.av.firePropertyChange("alignment", null,
+                      ap.av.getAlignment().getSequences());
+              return null;
             });
   }
 
@@ -2272,25 +2263,20 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
               seq.getSequenceAsString(sg.getStartRes(), sg.getEndRes() + 1),
               null, MessageManager.getString("label.edit_sequence"), null);
       dialog.showDialog(ap.alignFrame,
-              MessageManager.getString("label.edit_sequence"),
-              new Runnable()
-              {
-                @Override
-                public void run()
-                {
-                  EditCommand editCommand = new EditCommand(
-                          MessageManager.getString("label.edit_sequences"),
-                          Action.REPLACE,
-                          dialog.getName().replace(' ',
-                                  ap.av.getGapCharacter()),
-                          sg.getSequencesAsArray(
-                                  ap.av.getHiddenRepSequences()),
-                          sg.getStartRes(), sg.getEndRes() + 1,
-                          ap.av.getAlignment());
-                  ap.alignFrame.addHistoryItem(editCommand);
-                  ap.av.firePropertyChange("alignment", null,
-                          ap.av.getAlignment().getSequences());
-                }
+              MessageManager.getString("label.edit_sequence"), () -> {
+                EditCommand editCommand = new EditCommand(
+                        MessageManager.getString("label.edit_sequences"),
+                        Action.REPLACE,
+                        dialog.getName().replace(' ',
+                                ap.av.getGapCharacter()),
+                        sg.getSequencesAsArray(
+                                ap.av.getHiddenRepSequences()),
+                        sg.getStartRes(), sg.getEndRes() + 1,
+                        ap.av.getAlignment());
+                ap.alignFrame.addHistoryItem(editCommand);
+                ap.av.firePropertyChange("alignment", null,
+                        ap.av.getAlignment().getSequences());
+                return null;
               });
     }
   }
index 06d3a60..493deee 100755 (executable)
@@ -249,6 +249,7 @@ public class Preferences extends GPreferences
   {
     super();
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     if (!Platform.isJS())
     /**
@@ -385,9 +386,9 @@ public class Preferences extends GPreferences
      * Set overview panel defaults
      */
     gapColour.setBackground(Cache.getDefaultColour(GAP_COLOUR,
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP));
+            OverviewCanvas.OVERVIEW_DEFAULT_GAP));
     hiddenColour.setBackground(Cache.getDefaultColour(HIDDEN_COLOUR,
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN));
+            OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN));
     useLegacyGap.setSelected(Cache.getDefault(USE_LEGACY_GAP, false));
     gapLabel.setEnabled(!useLegacyGap.isSelected());
     gapColour.setEnabled(!useLegacyGap.isSelected());
@@ -1306,13 +1307,11 @@ public class Preferences extends GPreferences
     boolean enabled = useLegacyGap.isSelected();
     if (enabled)
     {
-      gapColour.setBackground(
-              jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_LEGACY_GAP);
+      gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_LEGACY_GAP);
     }
     else
     {
-      gapColour.setBackground(
-              jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP);
+      gapColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_GAP);
     }
     gapColour.setEnabled(!enabled);
     gapLabel.setEnabled(!enabled);
@@ -1324,8 +1323,7 @@ public class Preferences extends GPreferences
     useLegacyGap.setSelected(false);
     useLegacyGaps_actionPerformed(null);
     showHiddenAtStart.setSelected(false);
-    hiddenColour.setBackground(
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_HIDDEN);
+    hiddenColour.setBackground(OverviewCanvas.OVERVIEW_DEFAULT_HIDDEN);
   }
 
   @Override
diff --git a/src/jalview/gui/QuitHandler.java b/src/jalview/gui/QuitHandler.java
new file mode 100644 (file)
index 0000000..77eed81
--- /dev/null
@@ -0,0 +1,411 @@
+package jalview.gui;
+
+import java.io.File;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.JTextPane;
+
+import com.formdev.flatlaf.extras.FlatDesktop;
+
+import jalview.api.AlignmentViewPanel;
+import jalview.bin.Cache;
+import jalview.bin.Console;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+import jalview.io.BackupFiles;
+import jalview.project.Jalview2XML;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+
+public class QuitHandler
+{
+  private static final int MIN_WAIT_FOR_SAVE = 1000;
+
+  private static final int MAX_WAIT_FOR_SAVE = 20000;
+
+  private static boolean interactive = true;
+
+  public static enum QResponse
+  {
+    NULL, QUIT, CANCEL_QUIT, FORCE_QUIT
+  };
+
+  private static ExecutorService executor = Executors.newFixedThreadPool(3);
+
+  public static QResponse setQuitHandler()
+  {
+    FlatDesktop.setQuitHandler(response -> {
+      Callable<Void> performQuit = () -> {
+        response.performQuit();
+        setResponse(QResponse.QUIT);
+        return null;
+      };
+      Callable<Void> performForceQuit = () -> {
+        response.performQuit();
+        setResponse(QResponse.FORCE_QUIT);
+        return null;
+      };
+      Callable<Void> cancelQuit = () -> {
+        response.cancelQuit();
+        // reset
+        setResponse(QResponse.NULL);
+        return null;
+      };
+      getQuitResponse(true, performQuit, performForceQuit, cancelQuit);
+    });
+
+    return gotQuitResponse();
+  }
+
+  private static QResponse gotQuitResponse = QResponse.NULL;
+
+  protected static QResponse setResponse(QResponse qresponse)
+  {
+    gotQuitResponse = qresponse;
+    return qresponse;
+  }
+
+  public static QResponse gotQuitResponse()
+  {
+    return gotQuitResponse;
+  }
+
+  public static final Callable<Void> defaultCancelQuit = () -> {
+    Console.debug("QuitHandler: (default) Quit action CANCELLED by user");
+    // reset
+    setResponse(QResponse.CANCEL_QUIT);
+    return null;
+  };
+
+  public static final Callable<Void> defaultOkQuit = () -> {
+    Console.debug("QuitHandler: (default) Quit action CONFIRMED by user");
+    setResponse(QResponse.QUIT);
+    return null;
+  };
+
+  public static final Callable<Void> defaultForceQuit = () -> {
+    Console.debug("QuitHandler: (default) Quit action FORCED by user");
+    // note that shutdown hook will not be run
+    Runtime.getRuntime().halt(0);
+    setResponse(QResponse.FORCE_QUIT); // this line never reached!
+    return null;
+  };
+
+  public static QResponse getQuitResponse(boolean ui)
+  {
+    return getQuitResponse(ui, defaultOkQuit, defaultForceQuit,
+            defaultCancelQuit);
+  }
+
+  public static QResponse getQuitResponse(boolean ui, Callable<Void> okQuit,
+          Callable<Void> forceQuit, Callable<Void> cancelQuit)
+  {
+    QResponse got = gotQuitResponse();
+    if (got != QResponse.NULL && got != QResponse.CANCEL_QUIT)
+    {
+      // quit has already been selected, continue with calling quit method
+      return got;
+    }
+
+    interactive = ui && !Platform.isHeadless();
+    // confirm quit if needed and wanted
+    boolean confirmQuit = true;
+
+    if (!interactive)
+    {
+      Console.debug("Non interactive quit -- not confirming");
+      confirmQuit = false;
+    }
+    else if (Jalview2XML.allSavedUpToDate())
+    {
+      Console.debug("Nothing changed -- not confirming quit");
+      confirmQuit = false;
+    }
+    else
+    {
+      confirmQuit = jalview.bin.Cache
+              .getDefault(jalview.gui.Desktop.CONFIRM_KEYBOARD_QUIT, true);
+      Console.debug("Jalview property '"
+              + jalview.gui.Desktop.CONFIRM_KEYBOARD_QUIT
+              + "' is/defaults to " + confirmQuit + " -- "
+              + (confirmQuit ? "" : "not ") + "confirming quit");
+    }
+    got = confirmQuit ? QResponse.NULL : QResponse.QUIT;
+    setResponse(got);
+
+    if (confirmQuit)
+    {
+      JvOptionPane.newOptionDialog()
+              .setResponseHandler(JOptionPane.YES_OPTION, defaultOkQuit)
+              .setResponseHandler(JOptionPane.NO_OPTION, cancelQuit)
+              .showDialogOnTopAsync(
+                      new StringBuilder(MessageManager
+                              .getString("label.quit_jalview"))
+                              .append("\n")
+                              .append(MessageManager
+                                      .getString("label.unsaved_changes"))
+                              .toString(),
+                      MessageManager.getString("action.quit"),
+                      JOptionPane.YES_NO_OPTION,
+                      JOptionPane.QUESTION_MESSAGE, null, new Object[]
+                      { MessageManager.getString("action.quit"),
+                          MessageManager.getString("action.cancel") },
+                      MessageManager.getString("action.quit"), true);
+    }
+
+    got = gotQuitResponse();
+    boolean wait = false;
+    if (got == QResponse.CANCEL_QUIT)
+    {
+      // reset
+      Console.debug("Cancelling quit.  Resetting response to NULL");
+      setResponse(QResponse.NULL);
+      // but return cancel
+      return QResponse.CANCEL_QUIT;
+    }
+    else if (got == QResponse.QUIT)
+    {
+      if (Cache.getDefault("WAIT_FOR_SAVE", true)
+              && BackupFiles.hasSavesInProgress())
+      {
+        waitQuit(interactive, okQuit, forceQuit, cancelQuit);
+        QResponse waitResponse = gotQuitResponse();
+        wait = waitResponse == QResponse.QUIT;
+      }
+    }
+
+    Callable<Void> next = null;
+    switch (gotQuitResponse())
+    {
+    case QUIT:
+      next = okQuit;
+      break;
+    case FORCE_QUIT: // not actually an option at this stage
+      next = forceQuit;
+      break;
+    default:
+      next = cancelQuit;
+      break;
+    }
+    try
+    {
+      executor.submit(next).get();
+      got = gotQuitResponse();
+    } catch (InterruptedException | ExecutionException e)
+    {
+      jalview.bin.Console
+              .debug("Exception during quit handling (final choice)", e);
+    }
+    setResponse(got);
+
+    if (gotQuitResponse() == QResponse.CANCEL_QUIT)
+    {
+      // reset if cancelled
+      setResponse(QResponse.NULL);
+      return QResponse.CANCEL_QUIT;
+    }
+    return gotQuitResponse();
+  }
+
+  private static QResponse waitQuit(boolean interactive,
+          Callable<Void> okQuit, Callable<Void> forceQuit,
+          Callable<Void> cancelQuit)
+  {
+    // check for saves in progress
+    if (!BackupFiles.hasSavesInProgress())
+      return QResponse.QUIT;
+
+    int size = 0;
+    AlignFrame[] afArray = Desktop.getAlignFrames();
+    if (!(afArray == null || afArray.length == 0))
+    {
+      for (int i = 0; i < afArray.length; i++)
+      {
+        AlignFrame af = afArray[i];
+        List<? extends AlignmentViewPanel> avpList = af.getAlignPanels();
+        for (AlignmentViewPanel avp : avpList)
+        {
+          AlignmentI a = avp.getAlignment();
+          List<SequenceI> sList = a.getSequences();
+          for (SequenceI s : sList)
+          {
+            size += s.getLength();
+          }
+        }
+      }
+    }
+    int waitTime = Math.min(MAX_WAIT_FOR_SAVE,
+            Math.max(MIN_WAIT_FOR_SAVE, size / 2));
+    Console.debug("Set waitForSave to " + waitTime);
+
+    int iteration = 0;
+    boolean doIterations = true; // note iterations not used in the gui now,
+                                 // only one pass without the "Wait" button
+    while (doIterations && BackupFiles.hasSavesInProgress()
+            && iteration++ < (interactive ? 100 : 5))
+    {
+      // future that returns a Boolean when all files are saved
+      CompletableFuture<Boolean> filesAllSaved = new CompletableFuture<>();
+
+      // callback as each file finishes saving
+      for (CompletableFuture<Boolean> cf : BackupFiles
+              .savesInProgressCompletableFutures(false))
+      {
+        // if this is the last one then complete filesAllSaved
+        cf.whenComplete((ret, e) -> {
+          if (!BackupFiles.hasSavesInProgress())
+          {
+            filesAllSaved.complete(true);
+          }
+        });
+      }
+      try
+      {
+        filesAllSaved.get(waitTime, TimeUnit.MILLISECONDS);
+      } catch (InterruptedException | ExecutionException e1)
+      {
+        Console.debug(
+                "Exception whilst waiting for files to save before quit",
+                e1);
+      } catch (TimeoutException e2)
+      {
+        // this Exception to be expected
+      }
+
+      if (interactive && BackupFiles.hasSavesInProgress())
+      {
+        boolean showForceQuit = iteration > 0; // iteration > 1 to not show
+                                               // force quit the first time
+        JFrame parent = new JFrame();
+        JButton[] buttons = { new JButton(), new JButton() };
+        JvOptionPane waitDialog = JvOptionPane.newOptionDialog();
+        JTextPane messagePane = new JTextPane();
+        messagePane.setBackground(waitDialog.getBackground());
+        messagePane.setBorder(null);
+        messagePane.setText(waitingForSaveMessage());
+        // callback as each file finishes saving
+        for (CompletableFuture<Boolean> cf : BackupFiles
+                .savesInProgressCompletableFutures(false))
+        {
+          cf.whenComplete((ret, e) -> {
+            if (BackupFiles.hasSavesInProgress())
+            {
+              // update the list of saving files as they save too
+              messagePane.setText(waitingForSaveMessage());
+            }
+            else
+            {
+              if (!(QuitHandler.gotQuitResponse() == QResponse.CANCEL_QUIT
+                      || QuitHandler.gotQuitResponse() == QResponse.NULL))
+              {
+                for (int i = 0; i < buttons.length; i++)
+                {
+                  Console.debug("DISABLING BUTTON " + buttons[i].getText());
+                  buttons[i].setEnabled(false);
+                  buttons[i].setVisible(false);
+                }
+                // if this is the last one then close the dialog
+                messagePane.setText(new StringBuilder()
+                        .append(MessageManager.getString("label.all_saved"))
+                        .append("\n")
+                        .append(MessageManager
+                                .getString("label.quitting_bye"))
+                        .toString());
+                messagePane.setEditable(false);
+                try
+                {
+                  Thread.sleep(1500);
+                } catch (InterruptedException e1)
+                {
+                }
+                parent.dispose();
+              }
+            }
+          });
+        }
+
+        String[] options;
+        int dialogType = -1;
+        if (showForceQuit)
+        {
+          options = new String[2];
+          options[0] = MessageManager.getString("action.force_quit");
+          options[1] = MessageManager.getString("action.cancel_quit");
+          dialogType = JOptionPane.YES_NO_OPTION;
+          waitDialog.setResponseHandler(JOptionPane.YES_OPTION, forceQuit)
+                  .setResponseHandler(JOptionPane.NO_OPTION, cancelQuit);
+        }
+        else
+        {
+          options = new String[1];
+          options[0] = MessageManager.getString("action.cancel_quit");
+          dialogType = JOptionPane.YES_OPTION;
+          waitDialog.setResponseHandler(JOptionPane.YES_OPTION, cancelQuit);
+        }
+        waitDialog.showDialogOnTopAsync(parent, messagePane,
+                MessageManager.getString("label.wait_for_save"), dialogType,
+                JOptionPane.WARNING_MESSAGE, null, options,
+                MessageManager.getString("action.cancel_quit"), true,
+                buttons);
+
+        parent.dispose();
+        final QResponse thisWaitResponse = gotQuitResponse();
+        switch (thisWaitResponse)
+        {
+        case QUIT: // wait -- do another iteration
+          break;
+        case FORCE_QUIT:
+          doIterations = false;
+          break;
+        case CANCEL_QUIT:
+          doIterations = false;
+          break;
+        case NULL: // already cancelled
+          doIterations = false;
+          break;
+        default:
+        }
+      } // end if interactive
+
+    } // end while wait iteration loop
+    return gotQuitResponse();
+  };
+
+  private static String waitingForSaveMessage()
+  {
+    StringBuilder messageSB = new StringBuilder();
+
+    messageSB.append(MessageManager.getString("label.save_in_progress"));
+    List<File> files = BackupFiles.savesInProgressFiles(false);
+    boolean any = files.size() > 0;
+    if (any)
+    {
+      for (File file : files)
+      {
+        messageSB.append("\n\u2022 ").append(file.getName());
+      }
+    }
+    else
+    {
+      messageSB.append(MessageManager.getString("label.unknown"));
+    }
+    messageSB.append("\n\n")
+            .append(MessageManager.getString("label.quit_after_saving"));
+    return messageSB.toString();
+  }
+
+  public static void abortQuit()
+  {
+    setResponse(QResponse.CANCEL_QUIT);
+  }
+}
\ No newline at end of file
index 6ed3248..8d66a44 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.analysis.AlignSeq;
-import jalview.commands.CommandI;
-import jalview.commands.EditCommand;
-import jalview.commands.EditCommand.Action;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.jbgui.GSliderPanel;
-import jalview.util.MessageManager;
-
 import java.awt.event.ActionEvent;
 import java.util.ArrayList;
 import java.util.List;
@@ -42,6 +33,15 @@ import javax.swing.event.ChangeListener;
 import javax.swing.event.InternalFrameAdapter;
 import javax.swing.event.InternalFrameEvent;
 
+import jalview.analysis.AlignSeq;
+import jalview.commands.CommandI;
+import jalview.commands.EditCommand;
+import jalview.commands.EditCommand.Action;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.jbgui.GSliderPanel;
+import jalview.util.MessageManager;
+
 /**
  * DOCUMENT ME!
  * 
@@ -100,6 +100,7 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
     worker.start();
 
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     Desktop.addInternalFrame(frame,
             MessageManager
index e596fbf..6b4c74a 100755 (executable)
@@ -186,6 +186,7 @@ public class SequenceFetcher extends JPanel implements Runnable
 
     frame = new JInternalFrame();
     frame.setContentPane(this);
+    frame.setFrameIcon(null);
     Desktop.addInternalFrame(frame, getFrameTitle(), true, 400,
             Platform.isAMacAndNotJS() ? 240 : 180);
   }
index 5e1357a..1d59853 100755 (executable)
@@ -156,6 +156,7 @@ public class SliderPanel extends GSliderPanel
     {
       sliderPanel = new SliderPanel(ap, rs.getConservationInc(), true, rs);
       conservationSlider = new JInternalFrame();
+      conservationSlider.setFrameIcon(null);
       conservationSlider.setContentPane(sliderPanel);
       conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);
     }
@@ -269,6 +270,7 @@ public class SliderPanel extends GSliderPanel
     {
       sliderPanel = new SliderPanel(ap, threshold, false, rs);
       PIDSlider = new JInternalFrame();
+      PIDSlider.setFrameIcon(null);
       PIDSlider.setContentPane(sliderPanel);
       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);
     }
index 6ebedb7..08d6e03 100644 (file)
@@ -105,6 +105,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
    */
   protected void init()
   {
+    setFrameIcon(null);
     getTopFrame().setSplitFrame(this);
     getBottomFrame().setSplitFrame(this);
     getTopFrame().setVisible(true);
index 30b3c06..9f259bb 100644 (file)
@@ -31,6 +31,7 @@ import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Locale;
+import java.util.concurrent.Callable;
 import java.util.concurrent.Executors;
 
 import javax.swing.JCheckBox;
@@ -327,53 +328,43 @@ public class StructureChooser extends GStructureChooser
     };
 
     // fetch db refs if OK pressed
-    final Runnable discoverCanonicalDBrefs = new Runnable()
-    {
-      @Override
-      public void run()
+    final Callable discoverCanonicalDBrefs = () -> {
+      btn_queryTDB.setEnabled(false);
+      populateSeqsWithoutSourceDBRef();
+
+      final int y = seqsWithoutSourceDBRef.size();
+      if (y > 0)
       {
-        btn_queryTDB.setEnabled(false);
-        populateSeqsWithoutSourceDBRef();
+        final SequenceI[] seqWithoutSrcDBRef = seqsWithoutSourceDBRef
+                .toArray(new SequenceI[y]);
+        DBRefFetcher dbRefFetcher = new DBRefFetcher(seqWithoutSrcDBRef,
+                progressBar, new DbSourceProxy[]
+                { new jalview.ws.dbsources.Uniprot() }, null, false);
+        dbRefFetcher.addListener(afterDbRefFetch);
+        // ideally this would also gracefully run with callbacks
 
-        final int y = seqsWithoutSourceDBRef.size();
-        if (y > 0)
-        {
-          final SequenceI[] seqWithoutSrcDBRef = seqsWithoutSourceDBRef
-                  .toArray(new SequenceI[y]);
-          DBRefFetcher dbRefFetcher = new DBRefFetcher(seqWithoutSrcDBRef,
-                  progressBar, new DbSourceProxy[]
-                  { new jalview.ws.dbsources.Uniprot() }, null, false);
-          dbRefFetcher.addListener(afterDbRefFetch);
-          // ideally this would also gracefully run with callbacks
-
-          dbRefFetcher.fetchDBRefs(true);
-        }
-        else
-        {
-          // call finished action directly
-          afterDbRefFetch.finished();
-        }
+        dbRefFetcher.fetchDBRefs(true);
       }
-
+      else
+      {
+        // call finished action directly
+        afterDbRefFetch.finished();
+      }
+      return null;
     };
-    final Runnable revertview = new Runnable()
-    {
-      @Override
-      public void run()
+    final Callable revertview = () -> {
+      if (lastSelected != null)
       {
-        if (lastSelected != null)
-        {
-          cmb_filterOption.setSelectedItem(lastSelected);
-        }
-      };
+        cmb_filterOption.setSelectedItem(lastSelected);
+      }
+      return null;
     };
     int threshold = Cache.getDefault("UNIPROT_AUTOFETCH_THRESHOLD",
             THRESHOLD_WARN_UNIPROT_FETCH_NEEDED);
     Console.debug("Using Uniprot fetch threshold of " + threshold);
     if (ignoreGui || seqsWithoutSourceDBRef.size() < threshold)
     {
-      Executors.defaultThreadFactory().newThread(discoverCanonicalDBrefs)
-              .start();
+      Executors.newSingleThreadExecutor().submit(discoverCanonicalDBrefs);
       return;
     }
     // need cancel and no to result in the discoverPDB action - mocked is
diff --git a/src/jalview/gui/StructureChooser.java~ b/src/jalview/gui/StructureChooser.java~
deleted file mode 100644 (file)
index 5d6bef1..0000000
+++ /dev/null
@@ -1,1161 +0,0 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ 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.gui;
-
-import jalview.bin.Jalview;
-import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.DBRefSource;
-import jalview.datamodel.PDBEntry;
-import jalview.datamodel.SequenceI;
-import jalview.fts.api.FTSData;
-import jalview.fts.api.FTSDataColumnI;
-import jalview.fts.api.FTSRestClientI;
-import jalview.fts.core.FTSRestRequest;
-import jalview.fts.core.FTSRestResponse;
-import jalview.fts.service.pdb.PDBFTSRestClient;
-import jalview.jbgui.GStructureChooser;
-import jalview.structure.StructureSelectionManager;
-import jalview.util.MessageManager;
-import jalview.ws.DBRefFetcher;
-import jalview.ws.sifts.SiftsSettings;
-
-import java.awt.event.ItemEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Vector;
-
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.table.AbstractTableModel;
-
-/**
- * Provides the behaviors for the Structure chooser Panel
- * 
- * @author tcnofoegbu
- *
- */
-@SuppressWarnings("serial")
-public class StructureChooser extends GStructureChooser implements
-        IProgressIndicator
-{
-  private boolean structuresDiscovered = false;
-
-  private SequenceI selectedSequence;
-
-  private SequenceI[] selectedSequences;
-
-  private IProgressIndicator progressIndicator;
-
-  private Collection<FTSData> discoveredStructuresSet;
-
-  private FTSRestRequest lastPdbRequest;
-
-  private FTSRestClientI pdbRestCleint;
-
-  private String selectedPdbFileName;
-
-  private boolean isValidPBDEntry;
-
-  public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
-          AlignmentPanel ap)
-  {
-    this.ap = ap;
-    this.selectedSequence = selectedSeq;
-    this.selectedSequences = selectedSeqs;
-    this.progressIndicator = (ap == null) ? null : ap.alignFrame;
-    init();
-  }
-
-  /**
-   * Initializes parameters used by the Structure Chooser Panel
-   */
-  public void init()
-  {
-    if (!Jalview.isHeadlessMode())
-    {
-      progressBar = new ProgressBar(this.statusPanel, this.statusBar);
-    }
-
-    Thread discoverPDBStructuresThread = new Thread(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        long startTime = System.currentTimeMillis();
-        updateProgressIndicator(MessageManager
-                .getString("status.loading_cached_pdb_entries"), startTime);
-        loadLocalCachedPDBEntries();
-        updateProgressIndicator(null, startTime);
-        updateProgressIndicator(MessageManager
-                .getString("status.searching_for_pdb_structures"),
-                startTime);
-        fetchStructuresMetaData();
-        populateFilterComboBox();
-        updateProgressIndicator(null, startTime);
-        mainFrame.setVisible(true);
-        updateCurrentView();
-      }
-    });
-    discoverPDBStructuresThread.start();
-  }
-
-  /**
-   * Updates the progress indicator with the specified message
-   * 
-   * @param message
-   *          displayed message for the operation
-   * @param id
-   *          unique handle for this indicator
-   */
-  public void updateProgressIndicator(String message, long id)
-  {
-    if (progressIndicator != null)
-    {
-      progressIndicator.setProgressBar(message, id);
-    }
-  }
-
-  /**
-   * Retrieve meta-data for all the structure(s) for a given sequence(s) in a
-   * selection group
-   */
-  public void fetchStructuresMetaData()
-  {
-    long startTime = System.currentTimeMillis();
-    pdbRestCleint = PDBFTSRestClient.getInstance();
-    Collection<FTSDataColumnI> wantedFields = pdbDocFieldPrefs
-            .getStructureSummaryFields();
-
-    discoveredStructuresSet = new LinkedHashSet<FTSData>();
-    HashSet<String> errors = new HashSet<String>();
-    for (SequenceI seq : selectedSequences)
-    {
-      FTSRestRequest pdbRequest = new FTSRestRequest();
-      pdbRequest.setAllowEmptySeq(false);
-      pdbRequest.setResponseSize(500);
-      pdbRequest.setFieldToSearchBy("(");
-      pdbRequest.setWantedFields(wantedFields);
-      pdbRequest.setSearchTerm(buildQuery(seq) + ")");
-      pdbRequest.setAssociatedSequence(seq);
-      FTSRestResponse resultList;
-      try
-      {
-        resultList = pdbRestCleint.executeRequest(pdbRequest);
-      } catch (Exception e)
-      {
-        e.printStackTrace();
-        errors.add(e.getMessage());
-        continue;
-      }
-      lastPdbRequest = pdbRequest;
-      if (resultList.getSearchSummary() != null
-              && !resultList.getSearchSummary().isEmpty())
-      {
-        discoveredStructuresSet.addAll(resultList.getSearchSummary());
-      }
-    }
-
-    int noOfStructuresFound = 0;
-    String totalTime = (System.currentTimeMillis() - startTime)
-            + " milli secs";
-    if (discoveredStructuresSet != null
-            && !discoveredStructuresSet.isEmpty())
-    {
-      getResultTable().setModel(
-              FTSRestResponse.getTableModel(lastPdbRequest,
-              discoveredStructuresSet));
-      structuresDiscovered = true;
-      noOfStructuresFound = discoveredStructuresSet.size();
-      mainFrame.setTitle(MessageManager.formatMessage(
-              "label.structure_chooser_no_of_structures",
-              noOfStructuresFound, totalTime));
-    }
-    else
-    {
-      mainFrame.setTitle(MessageManager
-              .getString("label.structure_chooser_manual_association"));
-      if (errors.size() > 0)
-      {
-        StringBuilder errorMsg = new StringBuilder();
-        for (String error : errors)
-        {
-          errorMsg.append(error).append("\n");
-        }
-        JOptionPane.showMessageDialog(this, errorMsg.toString(),
-                MessageManager.getString("label.pdb_web-service_error"),
-                JOptionPane.ERROR_MESSAGE);
-      }
-    }
-  }
-
-  public void loadLocalCachedPDBEntries()
-  {
-    ArrayList<CachedPDB> entries = new ArrayList<CachedPDB>();
-    for (SequenceI seq : selectedSequences)
-    {
-      if (seq.getDatasetSequence() != null
-              && seq.getDatasetSequence().getAllPDBEntries() != null)
-      {
-        for (PDBEntry pdbEntry : seq.getDatasetSequence()
-                .getAllPDBEntries())
-        {
-          if (pdbEntry.getFile() != null)
-          {
-            entries.add(new CachedPDB(seq, pdbEntry));
-          }
-        }
-      }
-    }
-
-    PDBEntryTableModel tableModelx = new PDBEntryTableModel(entries);
-    tbl_local_pdb.setModel(tableModelx);
-  }
-
-  /**
-   * Builds a query string for a given sequences using its DBRef entries
-   * 
-   * @param seq
-   *          the sequences to build a query for
-   * @return the built query string
-   */
-
-  public static String buildQuery(SequenceI seq)
-  {
-    boolean isPDBRefsFound = false;
-    boolean isUniProtRefsFound = false;
-    StringBuilder queryBuilder = new StringBuilder();
-    HashSet<String> seqRefs = new LinkedHashSet<String>();
-
-    if (seq.getAllPDBEntries() != null)
-    {
-      for (PDBEntry entry : seq.getAllPDBEntries())
-      {
-        if (isValidSeqName(entry.getId()))
-        {
-          queryBuilder.append("pdb_id")
-                  .append(":")
-.append(entry.getId().toLowerCase())
-                  .append(" OR ");
-          isPDBRefsFound = true;
-          // seqRefs.add(entry.getId());
-        }
-      }
-    }
-
-    if (seq.getDBRefs() != null && seq.getDBRefs().length != 0)
-    {
-      for (DBRefEntry dbRef : seq.getDBRefs())
-      {
-        if (isValidSeqName(getDBRefId(dbRef)))
-        {
-          if (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT))
-          {
-            queryBuilder
-.append("uniprot_accession").append(":")
-                    .append(getDBRefId(dbRef))
-                    .append(" OR ");
-            queryBuilder
-.append("uniprot_id")
-                    .append(":")
-                    .append(getDBRefId(dbRef)).append(" OR ");
-            isUniProtRefsFound = true;
-          }
-          else if (dbRef.getSource().equalsIgnoreCase(DBRefSource.PDB))
-          {
-
-            queryBuilder.append("pdb_id")
-                    .append(":").append(getDBRefId(dbRef).toLowerCase())
-                    .append(" OR ");
-            isPDBRefsFound = true;
-          }
-          else
-          {
-            seqRefs.add(getDBRefId(dbRef));
-          }
-        }
-      }
-    }
-
-    if (!isPDBRefsFound && !isUniProtRefsFound)
-    {
-      String seqName = seq.getName();
-      seqName = sanitizeSeqName(seqName);
-      String[] names = seqName.toLowerCase().split("\\|");
-      for (String name : names)
-      {
-        // System.out.println("Found name : " + name);
-        name.trim();
-        if (isValidSeqName(name))
-        {
-          seqRefs.add(name);
-        }
-      }
-
-      for (String seqRef : seqRefs)
-      {
-        queryBuilder.append("text:").append(seqRef).append(" OR ");
-      }
-    }
-
-    int endIndex = queryBuilder.lastIndexOf(" OR ");
-    if (queryBuilder.toString().length() < 6)
-    {
-      return null;
-    }
-    String query = queryBuilder.toString().substring(0, endIndex);
-    return query;
-  }
-
-  /**
-   * Remove the following special characters from input string +, -, &, !, (, ),
-   * {, }, [, ], ^, ", ~, *, ?, :, \
-   * 
-   * @param seqName
-   * @return
-   */
-  static String sanitizeSeqName(String seqName)
-  {
-    Objects.requireNonNull(seqName);
-    return seqName.replaceAll("\\[\\d*\\]", "")
-            .replaceAll("[^\\dA-Za-z|_]", "").replaceAll("\\s+", "+");
-  }
-
-
-  /**
-   * Ensures sequence ref names are not less than 3 characters and does not
-   * contain a database name
-   * 
-   * @param seqName
-   * @return
-   */
-  public static boolean isValidSeqName(String seqName)
-  {
-    // System.out.println("seqName : " + seqName);
-    String ignoreList = "pdb,uniprot,swiss-prot";
-    if (seqName.length() < 3)
-    {
-      return false;
-    }
-    if (seqName.contains(":"))
-    {
-      return false;
-    }
-    seqName = seqName.toLowerCase();
-    for (String ignoredEntry : ignoreList.split(","))
-    {
-      if (seqName.contains(ignoredEntry))
-      {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  public static String getDBRefId(DBRefEntry dbRef)
-  {
-    String ref = dbRef.getAccessionId().replaceAll("GO:", "");
-    return ref;
-  }
-
-  /**
-   * Filters a given list of discovered structures based on supplied argument
-   * 
-   * @param fieldToFilterBy
-   *          the field to filter by
-   */
-  public void filterResultSet(final String fieldToFilterBy)
-  {
-    Thread filterThread = new Thread(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        long startTime = System.currentTimeMillis();
-        pdbRestCleint = PDBFTSRestClient.getInstance();
-        lbl_loading.setVisible(true);
-        Collection<FTSDataColumnI> wantedFields = pdbDocFieldPrefs
-                .getStructureSummaryFields();
-        Collection<FTSData> filteredResponse = new HashSet<FTSData>();
-        HashSet<String> errors = new HashSet<String>();
-
-        for (SequenceI seq : selectedSequences)
-        {
-          FTSRestRequest pdbRequest = new FTSRestRequest();
-          if (fieldToFilterBy.equalsIgnoreCase("uniprot_coverage"))
-          {
-            pdbRequest.setAllowEmptySeq(false);
-            pdbRequest.setResponseSize(1);
-            pdbRequest.setFieldToSearchBy("(");
-            pdbRequest.setSearchTerm(buildQuery(seq) + ")");
-            pdbRequest.setWantedFields(wantedFields);
-            pdbRequest.setAssociatedSequence(seq);
-            pdbRequest.setFacet(true);
-            pdbRequest.setFacetPivot(fieldToFilterBy + ",entry_entity");
-            pdbRequest.setFacetPivotMinCount(1);
-          }
-          else
-          {
-            pdbRequest.setAllowEmptySeq(false);
-            pdbRequest.setResponseSize(1);
-            pdbRequest.setFieldToSearchBy("(");
-            pdbRequest.setFieldToSortBy(fieldToFilterBy,
-                    !chk_invertFilter.isSelected());
-            pdbRequest.setSearchTerm(buildQuery(seq) + ")");
-            pdbRequest.setWantedFields(wantedFields);
-            pdbRequest.setAssociatedSequence(seq);
-          }
-          FTSRestResponse resultList;
-          try
-          {
-            resultList = pdbRestCleint.executeRequest(pdbRequest);
-          } catch (Exception e)
-          {
-            e.printStackTrace();
-            errors.add(e.getMessage());
-            continue;
-          }
-          lastPdbRequest = pdbRequest;
-          if (resultList.getSearchSummary() != null
-                  && !resultList.getSearchSummary().isEmpty())
-          {
-            filteredResponse.addAll(resultList.getSearchSummary());
-          }
-        }
-
-        String totalTime = (System.currentTimeMillis() - startTime)
-                + " milli secs";
-        if (!filteredResponse.isEmpty())
-        {
-          final int filterResponseCount = filteredResponse.size();
-          Collection<FTSData> reorderedStructuresSet = new LinkedHashSet<FTSData>();
-          reorderedStructuresSet.addAll(filteredResponse);
-          reorderedStructuresSet.addAll(discoveredStructuresSet);
-          getResultTable().setModel(
-                  FTSRestResponse.getTableModel(
-                  lastPdbRequest, reorderedStructuresSet));
-
-          FTSRestResponse.configureTableColumn(getResultTable(),
-                  wantedFields);
-          getResultTable().getColumn("Ref Sequence").setPreferredWidth(120);
-          getResultTable().getColumn("Ref Sequence").setMinWidth(100);
-          getResultTable().getColumn("Ref Sequence").setMaxWidth(200);
-          // Update table selection model here
-          getResultTable().addRowSelectionInterval(0,
-                  filterResponseCount - 1);
-          mainFrame.setTitle(MessageManager.formatMessage(
-                  "label.structure_chooser_filter_time", totalTime));
-        }
-        else
-        {
-          mainFrame.setTitle(MessageManager.formatMessage(
-                  "label.structure_chooser_filter_time", totalTime));
-          if (errors.size() > 0)
-          {
-            StringBuilder errorMsg = new StringBuilder();
-            for (String error : errors)
-            {
-              errorMsg.append(error).append("\n");
-            }
-            JOptionPane.showMessageDialog(
-                    null,
-                    errorMsg.toString(),
-                    MessageManager.getString("label.pdb_web-service_error"),
-                    JOptionPane.ERROR_MESSAGE);
-          }
-        }
-
-        lbl_loading.setVisible(false);
-
-        validateSelections();
-      }
-    });
-    filterThread.start();
-  }
-
-  /**
-   * Handles action event for btn_pdbFromFile
-   */
-  @Override
-  public void pdbFromFile_actionPerformed()
-  {
-    jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
-            jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
-    chooser.setFileView(new jalview.io.JalviewFileView());
-    chooser.setDialogTitle(MessageManager.formatMessage(
-            "label.select_pdb_file_for",
-            selectedSequence.getDisplayId(false)));
-    chooser.setToolTipText(MessageManager.formatMessage(
-            "label.load_pdb_file_associate_with_sequence",
-            selectedSequence.getDisplayId(false)));
-
-    int value = chooser.showOpenDialog(null);
-    if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION)
-    {
-      selectedPdbFileName = chooser.getSelectedFile().getPath();
-      jalview.bin.Cache.setProperty("LAST_DIRECTORY", selectedPdbFileName);
-      validateSelections();
-    }
-  }
-
-  /**
-   * Populates the filter combo-box options dynamically depending on discovered
-   * structures
-   */
-  @Override
-  protected void populateFilterComboBox()
-  {
-    if (isStructuresDiscovered())
-    {
-      cmb_filterOption.addItem(new FilterOption("Best Quality",
-              "overall_quality", VIEWS_FILTER));
-      cmb_filterOption.addItem(new FilterOption("Best Resolution",
-              "resolution", VIEWS_FILTER));
-      cmb_filterOption.addItem(new FilterOption("Most Protein Chain",
-              "number_of_protein_chains", VIEWS_FILTER));
-      cmb_filterOption.addItem(new FilterOption("Most Bound Molecules",
-              "number_of_bound_molecules", VIEWS_FILTER));
-      cmb_filterOption.addItem(new FilterOption("Most Polymer Residues",
-              "number_of_polymer_residues", VIEWS_FILTER));
-    }
-    cmb_filterOption.addItem(new FilterOption("Enter PDB Id", "-",
-            VIEWS_ENTER_ID));
-    cmb_filterOption.addItem(new FilterOption("From File", "-",
-            VIEWS_FROM_FILE));
-    cmb_filterOption.addItem(new FilterOption("Cached PDB Entries", "-",
-            VIEWS_LOCAL_PDB));
-  }
-
-  /**
-   * Updates the displayed view based on the selected filter option
-   */
-  @Override
-  protected void updateCurrentView()
-  {
-    FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
-            .getSelectedItem());
-    layout_switchableViews.show(pnl_switchableViews,
-            selectedFilterOpt.getView());
-    String filterTitle = mainFrame.getTitle();
-    mainFrame.setTitle(frameTitle);
-    chk_invertFilter.setVisible(false);
-    if (selectedFilterOpt.getView() == VIEWS_FILTER)
-    {
-      mainFrame.setTitle(filterTitle);
-      chk_invertFilter.setVisible(true);
-      filterResultSet(selectedFilterOpt.getValue());
-    }
-    else if (selectedFilterOpt.getView() == VIEWS_ENTER_ID
-            || selectedFilterOpt.getView() == VIEWS_FROM_FILE)
-    {
-      mainFrame.setTitle(MessageManager
-              .getString("label.structure_chooser_manual_association"));
-      idInputAssSeqPanel.loadCmbAssSeq();
-      fileChooserAssSeqPanel.loadCmbAssSeq();
-    }
-    validateSelections();
-  }
-
-  /**
-   * Validates user selection and activates the view button if all parameters
-   * are correct
-   */
-  @Override
-  public void validateSelections()
-  {
-    FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
-            .getSelectedItem());
-    btn_view.setEnabled(false);
-    String currentView = selectedFilterOpt.getView();
-    if (currentView == VIEWS_FILTER)
-    {
-      if (getResultTable().getSelectedRows().length > 0)
-      {
-        btn_view.setEnabled(true);
-      }
-    }
-    else if (currentView == VIEWS_LOCAL_PDB)
-    {
-      if (tbl_local_pdb.getSelectedRows().length > 0)
-      {
-        btn_view.setEnabled(true);
-      }
-    }
-    else if (currentView == VIEWS_ENTER_ID)
-    {
-      validateAssociationEnterPdb();
-    }
-    else if (currentView == VIEWS_FROM_FILE)
-    {
-      validateAssociationFromFile();
-    }
-  }
-
-  /**
-   * Validates inputs from the Manual PDB entry panel
-   */
-  public void validateAssociationEnterPdb()
-  {
-    AssociateSeqOptions assSeqOpt = (AssociateSeqOptions) idInputAssSeqPanel
-            .getCmb_assSeq().getSelectedItem();
-    lbl_pdbManualFetchStatus.setIcon(errorImage);
-    lbl_pdbManualFetchStatus.setToolTipText("");
-    if (txt_search.getText().length() > 0)
-    {
-      lbl_pdbManualFetchStatus
-              .setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager
-                      .formatMessage("info.no_pdb_entry_found_for",
-                              txt_search.getText())));
-    }
-
-    if (errorWarning.length() > 0)
-    {
-      lbl_pdbManualFetchStatus.setIcon(warningImage);
-      lbl_pdbManualFetchStatus.setToolTipText(JvSwingUtils.wrapTooltip(
-              true, errorWarning.toString()));
-    }
-
-    if (selectedSequences.length == 1
-            || !assSeqOpt.getName().equalsIgnoreCase(
-                    "-Select Associated Seq-"))
-    {
-      txt_search.setEnabled(true);
-      if (isValidPBDEntry)
-      {
-        btn_view.setEnabled(true);
-        lbl_pdbManualFetchStatus.setToolTipText("");
-        lbl_pdbManualFetchStatus.setIcon(goodImage);
-      }
-    }
-    else
-    {
-      txt_search.setEnabled(false);
-      lbl_pdbManualFetchStatus.setIcon(errorImage);
-    }
-  }
-
-  /**
-   * Validates inputs for the manual PDB file selection options
-   */
-  public void validateAssociationFromFile()
-  {
-    AssociateSeqOptions assSeqOpt = (AssociateSeqOptions) fileChooserAssSeqPanel
-            .getCmb_assSeq().getSelectedItem();
-    lbl_fromFileStatus.setIcon(errorImage);
-    if (selectedSequences.length == 1
-            || (assSeqOpt != null && !assSeqOpt.getName().equalsIgnoreCase(
-                    "-Select Associated Seq-")))
-    {
-      btn_pdbFromFile.setEnabled(true);
-      if (selectedPdbFileName != null && selectedPdbFileName.length() > 0)
-      {
-        btn_view.setEnabled(true);
-        lbl_fromFileStatus.setIcon(goodImage);
-      }
-    }
-    else
-    {
-      btn_pdbFromFile.setEnabled(false);
-      lbl_fromFileStatus.setIcon(errorImage);
-    }
-  }
-
-  @Override
-  public void cmbAssSeqStateChanged()
-  {
-    validateSelections();
-  }
-
-  /**
-   * Handles the state change event for the 'filter' combo-box and 'invert'
-   * check-box
-   */
-  @Override
-  protected void stateChanged(ItemEvent e)
-  {
-    if (e.getSource() instanceof JCheckBox)
-    {
-      updateCurrentView();
-    }
-    else
-    {
-      if (e.getStateChange() == ItemEvent.SELECTED)
-      {
-        updateCurrentView();
-      }
-    }
-
-  }
-
-  /**
-   * Handles action event for btn_ok
-   */
-  @Override
-  public void ok_ActionPerformed()
-  {
-    final StructureSelectionManager ssm = ap.getStructureSelectionManager();
-    new Thread(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-    FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
-            .getSelectedItem());
-    String currentView = selectedFilterOpt.getView();
-    if (currentView == VIEWS_FILTER)
-    {
-          int pdbIdColIndex = getResultTable().getColumn("PDB Id")
-                  .getModelIndex();
-          int refSeqColIndex = getResultTable().getColumn("Ref Sequence")
-              .getModelIndex();
-          int[] selectedRows = getResultTable().getSelectedRows();
-      PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
-      int count = 0;
-      ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
-      for (int row : selectedRows)
-      {
-            String pdbIdStr = getResultTable().getValueAt(row,
-                    pdbIdColIndex)
-                .toString();
-            SequenceI selectedSeq = (SequenceI) getResultTable()
-                    .getValueAt(row,
-                refSeqColIndex);
-        selectedSeqsToView.add(selectedSeq);
-            PDBEntry pdbEntry = selectedSeq.getPDBEntry(pdbIdStr);
-            if (pdbEntry == null)
-            {
-              pdbEntry = getFindEntry(pdbIdStr,
-                      selectedSeq.getAllPDBEntries());
-            }
-        if (pdbEntry == null)
-        {
-          pdbEntry = new PDBEntry();
-          pdbEntry.setId(pdbIdStr);
-          pdbEntry.setType(PDBEntry.Type.PDB);
-          selectedSeq.getDatasetSequence().addPDBId(pdbEntry);
-        }
-        pdbEntriesToView[count++] = pdbEntry;
-      }
-      SequenceI[] selectedSeqs = selectedSeqsToView
-              .toArray(new SequenceI[selectedSeqsToView.size()]);
-          launchStructureViewer(ssm, pdbEntriesToView, ap,
-                  selectedSeqs);
-    }
-    else if (currentView == VIEWS_LOCAL_PDB)
-    {
-      int[] selectedRows = tbl_local_pdb.getSelectedRows();
-      PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
-      int count = 0;
-          int pdbIdColIndex = tbl_local_pdb.getColumn("PDB Id")
-                  .getModelIndex();
-      int refSeqColIndex = tbl_local_pdb.getColumn("Ref Sequence")
-              .getModelIndex();
-      ArrayList<SequenceI> selectedSeqsToView = new ArrayList<SequenceI>();
-      for (int row : selectedRows)
-      {
-        PDBEntry pdbEntry = (PDBEntry) tbl_local_pdb.getValueAt(row,
-                pdbIdColIndex);
-        pdbEntriesToView[count++] = pdbEntry;
-        SequenceI selectedSeq = (SequenceI) tbl_local_pdb.getValueAt(row,
-                refSeqColIndex);
-        selectedSeqsToView.add(selectedSeq);
-      }
-      SequenceI[] selectedSeqs = selectedSeqsToView
-              .toArray(new SequenceI[selectedSeqsToView.size()]);
-          launchStructureViewer(ssm, pdbEntriesToView, ap,
-                  selectedSeqs);
-    }
-    else if (currentView == VIEWS_ENTER_ID)
-    {
-      SequenceI userSelectedSeq = ((AssociateSeqOptions) idInputAssSeqPanel
-              .getCmb_assSeq().getSelectedItem()).getSequence();
-      if (userSelectedSeq != null)
-      {
-        selectedSequence = userSelectedSeq;
-      }
-
-      String pdbIdStr = txt_search.getText();
-      PDBEntry pdbEntry = selectedSequence.getPDBEntry(pdbIdStr);
-      if (pdbEntry == null)
-      {
-        pdbEntry = new PDBEntry();
-            if (pdbIdStr.split(":").length > 1)
-            {
-              pdbEntry.setChainCode(pdbIdStr.split(":")[1]);
-            }
-        pdbEntry.setId(pdbIdStr);
-        pdbEntry.setType(PDBEntry.Type.PDB);
-        selectedSequence.getDatasetSequence().addPDBId(pdbEntry);
-      }
-
-      PDBEntry[] pdbEntriesToView = new PDBEntry[] { pdbEntry };
-          launchStructureViewer(ssm, pdbEntriesToView, ap,
-                  new SequenceI[] { selectedSequence });
-    }
-    else if (currentView == VIEWS_FROM_FILE)
-    {
-      SequenceI userSelectedSeq = ((AssociateSeqOptions) fileChooserAssSeqPanel
-              .getCmb_assSeq().getSelectedItem()).getSequence();
-      if (userSelectedSeq != null)
-      {
-        selectedSequence = userSelectedSeq;
-      }
-      PDBEntry fileEntry = new AssociatePdbFileWithSeq()
-              .associatePdbWithSeq(selectedPdbFileName,
-                      jalview.io.AppletFormatAdapter.FILE,
-                      selectedSequence, true, Desktop.instance);
-
-          launchStructureViewer(ssm,
-                  new PDBEntry[] { fileEntry }, ap,
-                  new SequenceI[] { selectedSequence });
-    }
-    mainFrame.dispose();
-      }
-    }).start();
-  }
-
-  private PDBEntry getFindEntry(String id, Vector<PDBEntry> pdbEntries)
-  {
-    Objects.requireNonNull(id);
-    Objects.requireNonNull(pdbEntries);
-    PDBEntry foundEntry = null;
-    for (PDBEntry entry : pdbEntries)
-    {
-      if (entry.getId().equalsIgnoreCase(id))
-      {
-        return entry;
-      }
-    }
-    return foundEntry;
-  }
-
-  private void launchStructureViewer(StructureSelectionManager ssm,
-          final PDBEntry[] pdbEntriesToView,
-          final AlignmentPanel alignPanel, SequenceI[] sequences)
-  {
-    long progressId = sequences.hashCode();
-    setProgressBar(MessageManager
-            .getString("status.launching_3d_structure_viewer"), progressId);
-    final StructureViewer sViewer = new StructureViewer(ssm);
-    setProgressBar(null, progressId);
-
-    if (SiftsSettings.isMapWithSifts())
-    {
-      // TODO: prompt user if there are lots of sequences without dbrefs.
-      // It can take a long time if we need to fetch all dbrefs for all
-      // sequences!
-      ArrayList<SequenceI> seqsWithoutSourceDBRef = new ArrayList<SequenceI>();
-      for (SequenceI seq : sequences)
-      {
-        if (seq.getSourceDBRef() == null && seq.getDBRefs() == null)
-        {
-            seqsWithoutSourceDBRef.add(seq);
-            continue;
-          }
-      }
-      if (!seqsWithoutSourceDBRef.isEmpty())
-      {
-        int y = seqsWithoutSourceDBRef.size();
-        setProgressBar(MessageManager.formatMessage(
-                "status.fetching_dbrefs_for_sequences_without_valid_refs",
-                y,
-                progressId);
-        SequenceI[] seqWithoutSrcDBRef = new SequenceI[y];
-        int x = 0;
-        for (SequenceI fSeq : seqsWithoutSourceDBRef)
-        {
-          seqWithoutSrcDBRef[x++] = fSeq;
-        }
-        new DBRefFetcher(seqWithoutSrcDBRef).fetchDBRefs(true);
-        setProgressBar("Fetch complete.", progressId); // todo i18n
-      }
-    }
-    if (pdbEntriesToView.length > 1)
-    {
-      ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
-      for (SequenceI seq : sequences)
-      {
-        seqsMap.add(new SequenceI[] { seq });
-      }
-      SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
-<<<<<<< Updated upstream
-      ssm.setProgressBar(null);
-      ssm.setProgressBar(MessageManager
-              .getString("status.fetching_3d_structures_for_selected_entries"));
-=======
-      setProgressBar("Fetching structure data", progressId);
->>>>>>> Stashed changes
-      sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
-    }
-    else
-    {
-<<<<<<< Updated upstream
-      ssm.setProgressBar(null);
-      ssm.setProgressBar(MessageManager.formatMessage(
-              "status.fetching_3d_structures_for",
-              pdbEntriesToView[0].getId()));
-=======
-      setProgressBar(
-              "Fetching structure for " + pdbEntriesToView[0].getId(),
-              progressId);
->>>>>>> Stashed changes
-      sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
-    }
-    setProgressBar(null, progressId);
-  }
-
-  /**
-   * Populates the combo-box used in associating manually fetched structures to
-   * a unique sequence when more than one sequence selection is made.
-   */
-  @Override
-  public void populateCmbAssociateSeqOptions(
-          JComboBox<AssociateSeqOptions> cmb_assSeq, JLabel lbl_associateSeq)
-  {
-    cmb_assSeq.removeAllItems();
-    cmb_assSeq.addItem(new AssociateSeqOptions("-Select Associated Seq-",
-            null));
-    lbl_associateSeq.setVisible(false);
-    if (selectedSequences.length > 1)
-    {
-      for (SequenceI seq : selectedSequences)
-      {
-        cmb_assSeq.addItem(new AssociateSeqOptions(seq));
-      }
-    }
-    else
-    {
-      String seqName = selectedSequence.getDisplayId(false);
-      seqName = seqName.length() <= 40 ? seqName : seqName.substring(0, 39);
-      lbl_associateSeq.setText(seqName);
-      lbl_associateSeq.setVisible(true);
-      cmb_assSeq.setVisible(false);
-    }
-  }
-
-  public boolean isStructuresDiscovered()
-  {
-    return structuresDiscovered;
-  }
-
-  public void setStructuresDiscovered(boolean structuresDiscovered)
-  {
-    this.structuresDiscovered = structuresDiscovered;
-  }
-
-  public Collection<FTSData> getDiscoveredStructuresSet()
-  {
-    return discoveredStructuresSet;
-  }
-
-  @Override
-  protected void txt_search_ActionPerformed()
-  {
-    new Thread()
-    {
-      @Override
-      public void run()
-      {
-        errorWarning.setLength(0);
-        isValidPBDEntry = false;
-        if (txt_search.getText().length() > 0)
-        {
-          String searchTerm = txt_search.getText().toLowerCase();
-          searchTerm = searchTerm.split(":")[0];
-          // System.out.println(">>>>> search term : " + searchTerm);
-          List<FTSDataColumnI> wantedFields = new ArrayList<FTSDataColumnI>();
-          FTSRestRequest pdbRequest = new FTSRestRequest();
-          pdbRequest.setAllowEmptySeq(false);
-          pdbRequest.setResponseSize(1);
-          pdbRequest.setFieldToSearchBy("(pdb_id:");
-          pdbRequest.setWantedFields(wantedFields);
-          pdbRequest
-.setSearchTerm(searchTerm + ")");
-          pdbRequest.setAssociatedSequence(selectedSequence);
-          pdbRestCleint = PDBFTSRestClient.getInstance();
-          wantedFields.add(pdbRestCleint.getPrimaryKeyColumn());
-          FTSRestResponse resultList;
-          try
-          {
-            resultList = pdbRestCleint.executeRequest(pdbRequest);
-          } catch (Exception e)
-          {
-            errorWarning.append(e.getMessage());
-            return;
-          } finally
-          {
-            validateSelections();
-          }
-          if (resultList.getSearchSummary() != null
-                  && resultList.getSearchSummary().size() > 0)
-          {
-            isValidPBDEntry = true;
-          }
-        }
-        validateSelections();
-      }
-    }.start();
-  }
-
-  @Override
-  public void tabRefresh()
-  {
-    if (selectedSequences != null)
-    {
-      Thread refreshThread = new Thread(new Runnable()
-      {
-        @Override
-        public void run()
-        {
-          fetchStructuresMetaData();
-          filterResultSet(((FilterOption) cmb_filterOption
-                  .getSelectedItem()).getValue());
-        }
-      });
-      refreshThread.start();
-    }
-  }
-
-  public class PDBEntryTableModel extends AbstractTableModel
-  {
-    String[] columns = { "Ref Sequence", "PDB Id", "Chain", "Type", "File" };
-
-    private List<CachedPDB> pdbEntries;
-
-    public PDBEntryTableModel(List<CachedPDB> pdbEntries)
-    {
-      this.pdbEntries = new ArrayList<CachedPDB>(pdbEntries);
-    }
-
-    @Override
-    public String getColumnName(int columnIndex)
-    {
-      return columns[columnIndex];
-    }
-
-    @Override
-    public int getRowCount()
-    {
-      return pdbEntries.size();
-    }
-
-    @Override
-    public int getColumnCount()
-    {
-      return columns.length;
-    }
-
-    @Override
-    public boolean isCellEditable(int row, int column)
-    {
-      return false;
-    }
-
-    @Override
-    public Object getValueAt(int rowIndex, int columnIndex)
-    {
-      Object value = "??";
-      CachedPDB entry = pdbEntries.get(rowIndex);
-      switch (columnIndex)
-      {
-      case 0:
-        value = entry.getSequence();
-        break;
-      case 1:
-        value = entry.getPdbEntry();
-        break;
-      case 2:
-        value = entry.getPdbEntry().getChainCode() == null ? "_" : entry
-                .getPdbEntry().getChainCode();
-        break;
-      case 3:
-        value = entry.getPdbEntry().getType();
-        break;
-      case 4:
-        value = entry.getPdbEntry().getFile();
-        break;
-      }
-      return value;
-    }
-
-    @Override
-    public Class<?> getColumnClass(int columnIndex)
-    {
-      return columnIndex == 0 ? SequenceI.class : PDBEntry.class;
-    }
-
-    public CachedPDB getPDBEntryAt(int row)
-    {
-      return pdbEntries.get(row);
-    }
-
-  }
-
-  private class CachedPDB
-  {
-    private SequenceI sequence;
-
-    private PDBEntry pdbEntry;
-
-    public CachedPDB(SequenceI sequence, PDBEntry pdbEntry)
-    {
-      this.sequence = sequence;
-      this.pdbEntry = pdbEntry;
-    }
-
-    public SequenceI getSequence()
-    {
-      return sequence;
-    }
-
-    public PDBEntry getPdbEntry()
-    {
-      return pdbEntry;
-    }
-
-  }
-
-  private IProgressIndicator progressBar;
-
-  @Override
-  public void setProgressBar(String message, long id)
-  {
-    progressBar.setProgressBar(message, id);
-  }
-
-  @Override
-  public void registerHandler(long id, IProgressIndicatorHandler handler)
-  {
-    progressBar.registerHandler(id, handler);
-  }
-
-  @Override
-  public boolean operationInProgress()
-  {
-    return progressBar.operationInProgress();
-  }
-}
index ec5579c..1e12f7f 100644 (file)
@@ -135,6 +135,7 @@ public abstract class StructureViewerBase extends GStructureViewer
   public StructureViewerBase()
   {
     super();
+    setFrameIcon(null);
   }
 
   /**
@@ -1280,6 +1281,9 @@ public abstract class StructureViewerBase extends GStructureViewer
         if (confirm == JvOptionPane.CANCEL_OPTION
                 || confirm == JvOptionPane.CLOSED_OPTION)
         {
+          // abort possible quit handling if CANCEL chosen
+          if (confirm == JvOptionPane.CANCEL_OPTION)
+            QuitHandler.abortQuit();
           return;
         }
         forceClose = confirm == JvOptionPane.YES_OPTION;
index f9ff337..e72a084 100644 (file)
@@ -27,6 +27,7 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.Callable;
 
 import javax.swing.BorderFactory;
 import javax.swing.JLabel;
@@ -151,13 +152,10 @@ public class TextColourChooser
         MessageManager.getString("action.cancel") };
     String title = MessageManager
             .getString("label.adjust_foreground_text_colour_threshold");
-    Runnable action = new Runnable() // response for 1 = Cancel
+    Callable<Void> action = () -> // response for 1 = Cancel
     {
-      @Override
-      public void run()
-      {
-        restoreInitialSettings();
-      }
+      restoreInitialSettings();
+      return null;
     };
     JvOptionPane.newOptionDialog(alignPanel.alignFrame)
             .setResponseHandler(1, action).showInternalDialog(bigpanel,
diff --git a/src/jalview/gui/TreeCanvas.java~ b/src/jalview/gui/TreeCanvas.java~
deleted file mode 100755 (executable)
index 90c74be..0000000
+++ /dev/null
@@ -1,1080 +0,0 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ 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.gui;
-
-import jalview.analysis.Conservation;
-import jalview.analysis.NJTree;
-import jalview.api.AlignViewportI;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.datamodel.SequenceNode;
-import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ColourSchemeProperty;
-import jalview.schemes.ResidueProperties;
-import jalview.schemes.UserColourScheme;
-import jalview.structure.SelectionSource;
-import jalview.util.Format;
-import jalview.util.MappingUtils;
-import jalview.util.MessageManager;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.RenderingHints;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-import java.awt.event.MouseMotionListener;
-import java.awt.print.PageFormat;
-import java.awt.print.Printable;
-import java.awt.print.PrinterException;
-import java.awt.print.PrinterJob;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Vector;
-
-import javax.swing.JColorChooser;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.SwingUtilities;
-import javax.swing.ToolTipManager;
-
-/**
- * DOCUMENT ME!
- * 
- * @author $author$
- * @version $Revision$
- */
-public class TreeCanvas extends JPanel implements MouseListener, Runnable,
-        Printable, MouseMotionListener, SelectionSource
-{
-  /** DOCUMENT ME!! */
-  public static final String PLACEHOLDER = " * ";
-
-  NJTree tree;
-
-  JScrollPane scrollPane;
-
-  TreePanel tp;
-
-  AlignViewport av;
-
-  AlignmentPanel ap;
-
-  Font font;
-
-  FontMetrics fm;
-
-  boolean fitToWindow = true;
-
-  boolean showDistances = false;
-
-  boolean showBootstrap = false;
-
-  boolean markPlaceholders = false;
-
-  int offx = 20;
-
-  int offy;
-
-  float threshold;
-
-  String longestName;
-
-  int labelLength = -1;
-
-  Hashtable nameHash = new Hashtable();
-
-  Hashtable nodeHash = new Hashtable();
-
-  SequenceNode highlightNode;
-
-  boolean applyToAllViews = false;
-
-  /**
-   * Creates a new TreeCanvas object.
-   * 
-   * @param av
-   *          DOCUMENT ME!
-   * @param tree
-   *          DOCUMENT ME!
-   * @param scroller
-   *          DOCUMENT ME!
-   * @param label
-   *          DOCUMENT ME!
-   */
-  public TreeCanvas(TreePanel tp, AlignmentPanel ap, JScrollPane scroller)
-  {
-    this.tp = tp;
-    this.av = ap.av;
-    this.ap = ap;
-    font = av.getFont();
-    scrollPane = scroller;
-    addMouseListener(this);
-    addMouseMotionListener(this);
-    ToolTipManager.sharedInstance().registerComponent(this);
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param sequence
-   *          DOCUMENT ME!
-   */
-  public void treeSelectionChanged(SequenceI sequence)
-  {
-    AlignmentPanel[] aps = getAssociatedPanels();
-
-    for (int a = 0; a < aps.length; a++)
-    {
-      SequenceGroup selected = aps[a].av.getSelectionGroup();
-
-      if (selected == null)
-      {
-        selected = new SequenceGroup();
-        aps[a].av.setSelectionGroup(selected);
-      }
-
-      selected.setEndRes(aps[a].av.getAlignment().getWidth() - 1);
-      selected.addOrRemove(sequence, true);
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param tree
-   *          DOCUMENT ME!
-   */
-  public void setTree(NJTree tree)
-  {
-    this.tree = tree;
-    tree.findHeight(tree.getTopNode());
-
-    // Now have to calculate longest name based on the leaves
-    Vector leaves = tree.findLeaves(tree.getTopNode(), new Vector());
-    boolean has_placeholders = false;
-    longestName = "";
-
-    for (int i = 0; i < leaves.size(); i++)
-    {
-      SequenceNode lf = (SequenceNode) leaves.elementAt(i);
-
-      if (lf.isPlaceholder())
-      {
-        has_placeholders = true;
-      }
-
-      if (longestName.length() < ((Sequence) lf.element()).getName()
-              .length())
-      {
-        longestName = TreeCanvas.PLACEHOLDER
-                + ((Sequence) lf.element()).getName();
-      }
-    }
-
-    setMarkPlaceholders(has_placeholders);
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param g
-   *          DOCUMENT ME!
-   * @param node
-   *          DOCUMENT ME!
-   * @param chunk
-   *          DOCUMENT ME!
-   * @param scale
-   *          DOCUMENT ME!
-   * @param width
-   *          DOCUMENT ME!
-   * @param offx
-   *          DOCUMENT ME!
-   * @param offy
-   *          DOCUMENT ME!
-   */
-  public void drawNode(Graphics g, SequenceNode node, float chunk,
-          float scale, int width, int offx, int offy)
-  {
-    if (node == null)
-    {
-      return;
-    }
-
-    if ((node.left() == null) && (node.right() == null))
-    {
-      // Drawing leaf node
-      float height = node.height;
-      float dist = node.dist;
-
-      int xstart = (int) ((height - dist) * scale) + offx;
-      int xend = (int) (height * scale) + offx;
-
-      int ypos = (int) (node.ycount * chunk) + offy;
-
-      if (node.element() instanceof SequenceI)
-      {
-        SequenceI seq = (SequenceI) node.element();
-
-        if (av.getSequenceColour(seq) == Color.white)
-        {
-          g.setColor(Color.black);
-        }
-        else
-        {
-          g.setColor(av.getSequenceColour(seq).darker());
-        }
-      }
-      else
-      {
-        g.setColor(Color.black);
-      }
-
-      // Draw horizontal line
-      g.drawLine(xstart, ypos, xend, ypos);
-
-      String nodeLabel = "";
-
-      if (showDistances && (node.dist > 0))
-      {
-        nodeLabel = new Format("%-.2f").form(node.dist);
-      }
-
-      if (showBootstrap && node.bootstrap > -1)
-      {
-        if (showDistances)
-        {
-          nodeLabel = nodeLabel + " : ";
-        }
-
-        nodeLabel = nodeLabel + String.valueOf(node.bootstrap);
-      }
-
-      if (!nodeLabel.equals(""))
-      {
-        g.drawString(nodeLabel, xstart + 2, ypos - 2);
-      }
-
-      String name = (markPlaceholders && node.isPlaceholder()) ? (PLACEHOLDER + node
-              .getName()) : node.getName();
-
-      int charWidth = fm.stringWidth(name) + 3;
-      int charHeight = font.getSize();
-
-      Rectangle rect = new Rectangle(xend + 10, ypos - charHeight / 2,
-              charWidth, charHeight);
-
-      nameHash.put(node.element(), rect);
-
-      // Colour selected leaves differently
-      SequenceGroup selected = av.getSelectionGroup();
-
-      if ((selected != null)
-              && selected.getSequences(null).contains(node.element()))
-      {
-        g.setColor(Color.gray);
-
-        g.fillRect(xend + 10, ypos - charHeight / 2, charWidth, charHeight);
-        g.setColor(Color.white);
-      }
-
-      g.drawString(name, xend + 10, ypos + fm.getDescent());
-      g.setColor(Color.black);
-    }
-    else
-    {
-      drawNode(g, (SequenceNode) node.left(), chunk, scale, width, offx,
-              offy);
-      drawNode(g, (SequenceNode) node.right(), chunk, scale, width, offx,
-              offy);
-
-      float height = node.height;
-      float dist = node.dist;
-
-      int xstart = (int) ((height - dist) * scale) + offx;
-      int xend = (int) (height * scale) + offx;
-      int ypos = (int) (node.ycount * chunk) + offy;
-
-      g.setColor(node.color.darker());
-
-      // Draw horizontal line
-      g.drawLine(xstart, ypos, xend, ypos);
-      if (node == highlightNode)
-      {
-        g.fillRect(xend - 3, ypos - 3, 6, 6);
-      }
-      else
-      {
-        g.fillRect(xend - 2, ypos - 2, 4, 4);
-      }
-
-      int ystart = (int) (((SequenceNode) node.left()).ycount * chunk)
-              + offy;
-      int yend = (int) (((SequenceNode) node.right()).ycount * chunk)
-              + offy;
-
-      Rectangle pos = new Rectangle(xend - 2, ypos - 2, 5, 5);
-      nodeHash.put(node, pos);
-
-      g.drawLine((int) (height * scale) + offx, ystart,
-              (int) (height * scale) + offx, yend);
-
-      String nodeLabel = "";
-
-      if (showDistances && (node.dist > 0))
-      {
-        nodeLabel = new Format("%-.2f").form(node.dist);
-      }
-
-      if (showBootstrap && node.bootstrap > -1)
-      {
-        if (showDistances)
-        {
-          nodeLabel = nodeLabel + " : ";
-        }
-
-        nodeLabel = nodeLabel + String.valueOf(node.bootstrap);
-      }
-
-      if (!nodeLabel.equals(""))
-      {
-        g.drawString(nodeLabel, xstart + 2, ypos - 2);
-      }
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param x
-   *          DOCUMENT ME!
-   * @param y
-   *          DOCUMENT ME!
-   * 
-   * @return DOCUMENT ME!
-   */
-  public Object findElement(int x, int y)
-  {
-    Enumeration keys = nameHash.keys();
-
-    while (keys.hasMoreElements())
-    {
-      Object ob = keys.nextElement();
-      Rectangle rect = (Rectangle) nameHash.get(ob);
-
-      if ((x >= rect.x) && (x <= (rect.x + rect.width)) && (y >= rect.y)
-              && (y <= (rect.y + rect.height)))
-      {
-        return ob;
-      }
-    }
-
-    keys = nodeHash.keys();
-
-    while (keys.hasMoreElements())
-    {
-      Object ob = keys.nextElement();
-      Rectangle rect = (Rectangle) nodeHash.get(ob);
-
-      if ((x >= rect.x) && (x <= (rect.x + rect.width)) && (y >= rect.y)
-              && (y <= (rect.y + rect.height)))
-      {
-        return ob;
-      }
-    }
-
-    return null;
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param pickBox
-   *          DOCUMENT ME!
-   */
-  public void pickNodes(Rectangle pickBox)
-  {
-    int width = getWidth();
-    int height = getHeight();
-
-    SequenceNode top = tree.getTopNode();
-
-    float wscale = (float) ((width * .8) - (offx * 2))
-            / tree.getMaxHeight();
-
-    if (top.count == 0)
-    {
-      top.count = ((SequenceNode) top.left()).count
-              + ((SequenceNode) top.right()).count;
-    }
-
-    float chunk = (float) (height - (offy)) / top.count;
-
-    pickNode(pickBox, top, chunk, wscale, width, offx, offy);
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param pickBox
-   *          DOCUMENT ME!
-   * @param node
-   *          DOCUMENT ME!
-   * @param chunk
-   *          DOCUMENT ME!
-   * @param scale
-   *          DOCUMENT ME!
-   * @param width
-   *          DOCUMENT ME!
-   * @param offx
-   *          DOCUMENT ME!
-   * @param offy
-   *          DOCUMENT ME!
-   */
-  public void pickNode(Rectangle pickBox, SequenceNode node, float chunk,
-          float scale, int width, int offx, int offy)
-  {
-    if (node == null)
-    {
-      return;
-    }
-
-    if ((node.left() == null) && (node.right() == null))
-    {
-      float height = node.height;
-      float dist = node.dist;
-
-      int xstart = (int) ((height - dist) * scale) + offx;
-      int xend = (int) (height * scale) + offx;
-
-      int ypos = (int) (node.ycount * chunk) + offy;
-
-      if (pickBox.contains(new Point(xend, ypos)))
-      {
-        if (node.element() instanceof SequenceI)
-        {
-          SequenceI seq = (SequenceI) node.element();
-          SequenceGroup sg = av.getSelectionGroup();
-
-          if (sg != null)
-          {
-            sg.addOrRemove(seq, true);
-          }
-        }
-      }
-    }
-    else
-    {
-      pickNode(pickBox, (SequenceNode) node.left(), chunk, scale, width,
-              offx, offy);
-      pickNode(pickBox, (SequenceNode) node.right(), chunk, scale, width,
-              offx, offy);
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param node
-   *          DOCUMENT ME!
-   * @param c
-   *          DOCUMENT ME!
-   */
-  public void setColor(SequenceNode node, Color c)
-  {
-    if (node == null)
-    {
-      return;
-    }
-
-    if ((node.left() == null) && (node.right() == null)) // TODO: internal node
-    {
-      node.color = c;
-
-      if (node.element() instanceof SequenceI)
-      {
-        AlignmentPanel[] aps = getAssociatedPanels();
-        if (aps != null)
-        {
-          for (int a = 0; a < aps.length; a++)
-          {
-            final SequenceI seq = (SequenceI) node.element();
-            aps[a].av.setSequenceColour(seq, c);
-          }
-        }
-      }
-    }
-    else
-    {
-      node.color = c;
-      setColor((SequenceNode) node.left(), c);
-      setColor((SequenceNode) node.right(), c);
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   */
-  void startPrinting()
-  {
-    Thread thread = new Thread(this);
-    thread.start();
-  }
-
-  // put printing in a thread to avoid painting problems
-  @Override
-  public void run()
-  {
-    PrinterJob printJob = PrinterJob.getPrinterJob();
-    PageFormat pf = printJob.pageDialog(printJob.defaultPage());
-
-    printJob.setPrintable(this, pf);
-
-    if (printJob.printDialog())
-    {
-      try
-      {
-        printJob.print();
-      } catch (Exception PrintException)
-      {
-        PrintException.printStackTrace();
-      }
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param pg
-   *          DOCUMENT ME!
-   * @param pf
-   *          DOCUMENT ME!
-   * @param pi
-   *          DOCUMENT ME!
-   * 
-   * @return DOCUMENT ME!
-   * 
-   * @throws PrinterException
-   *           DOCUMENT ME!
-   */
-  @Override
-  public int print(Graphics pg, PageFormat pf, int pi)
-          throws PrinterException
-  {
-    pg.setFont(font);
-    pg.translate((int) pf.getImageableX(), (int) pf.getImageableY());
-
-    int pwidth = (int) pf.getImageableWidth();
-    int pheight = (int) pf.getImageableHeight();
-
-    int noPages = getHeight() / pheight;
-
-    if (pi > noPages)
-    {
-      return Printable.NO_SUCH_PAGE;
-    }
-
-    if (pwidth > getWidth())
-    {
-      pwidth = getWidth();
-    }
-
-    if (fitToWindow)
-    {
-      if (pheight > getHeight())
-      {
-        pheight = getHeight();
-      }
-
-      noPages = 0;
-    }
-    else
-    {
-      FontMetrics fm = pg.getFontMetrics(font);
-      int height = fm.getHeight() * nameHash.size();
-      pg.translate(0, -pi * pheight);
-      pg.setClip(0, pi * pheight, pwidth, (pi * pheight) + pheight);
-
-      // translate number of pages,
-      // height is screen size as this is the
-      // non overlapping text size
-      pheight = height;
-    }
-
-    draw(pg, pwidth, pheight);
-
-    return Printable.PAGE_EXISTS;
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param g
-   *          DOCUMENT ME!
-   */
-  @Override
-  public void paintComponent(Graphics g)
-  {
-    super.paintComponent(g);
-    g.setFont(font);
-
-    if (tree == null)
-    {
-      g.drawString(MessageManager.getString("label.calculating_tree")
-              + "....", 20, getHeight() / 2);
-    }
-    else
-    {
-      fm = g.getFontMetrics(font);
-
-      if (nameHash.size() == 0)
-      {
-        repaint();
-      }
-
-      if (fitToWindow
-              || (!fitToWindow && (scrollPane.getHeight() > ((fm
-                      .getHeight() * nameHash.size()) + offy))))
-      {
-        draw(g, scrollPane.getWidth(), scrollPane.getHeight());
-        setPreferredSize(null);
-      }
-      else
-      {
-        setPreferredSize(new Dimension(scrollPane.getWidth(),
-                fm.getHeight() * nameHash.size()));
-        draw(g, scrollPane.getWidth(), fm.getHeight() * nameHash.size());
-      }
-
-      scrollPane.revalidate();
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param fontSize
-   *          DOCUMENT ME!
-   */
-  @Override
-  public void setFont(Font font)
-  {
-    this.font = font;
-    repaint();
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param g1
-   *          DOCUMENT ME!
-   * @param width
-   *          DOCUMENT ME!
-   * @param height
-   *          DOCUMENT ME!
-   */
-  public void draw(Graphics g1, int width, int height)
-  {
-    Graphics2D g2 = (Graphics2D) g1;
-    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
-            RenderingHints.VALUE_ANTIALIAS_ON);
-    g2.setColor(Color.white);
-    g2.fillRect(0, 0, width, height);
-    g2.setFont(font);
-
-    if (longestName == null || tree == null)
-    {
-      g2.drawString("Calculating tree.", 20, 20);
-    }
-    offy = font.getSize() + 10;
-
-    fm = g2.getFontMetrics(font);
-
-    labelLength = fm.stringWidth(longestName) + 20; // 20 allows for scrollbar
-
-    float wscale = (width - labelLength - (offx * 2)) / tree.getMaxHeight();
-
-    SequenceNode top = tree.getTopNode();
-
-    if (top.count == 0)
-    {
-      top.count = ((SequenceNode) top.left()).count
-              + ((SequenceNode) top.right()).count;
-    }
-
-    float chunk = (float) (height - (offy)) / top.count;
-
-    drawNode(g2, tree.getTopNode(), chunk, wscale, width, offx, offy);
-
-    if (threshold != 0)
-    {
-      if (av.getCurrentTree() == tree)
-      {
-        g2.setColor(Color.red);
-      }
-      else
-      {
-        g2.setColor(Color.gray);
-      }
-
-      int x = (int) ((threshold * (getWidth() - labelLength - (2 * offx))) + offx);
-
-      g2.drawLine(x, 0, x, getHeight());
-    }
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param e
-   *          DOCUMENT ME!
-   */
-  @Override
-  public void mouseReleased(MouseEvent e)
-  {
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param e
-   *          DOCUMENT ME!
-   */
-  @Override
-  public void mouseEntered(MouseEvent e)
-  {
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param e
-   *          DOCUMENT ME!
-   */
-  @Override
-  public void mouseExited(MouseEvent e)
-  {
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param e
-   *          DOCUMENT ME!
-   */
-  @Override
-  public void mouseClicked(MouseEvent evt)
-  {
-    if (highlightNode != null)
-    {
-      if (SwingUtilities.isRightMouseButton(evt))
-      {
-        Color col = JColorChooser.showDialog(this,
-                MessageManager.getString("label.select_subtree_colour"),
-                highlightNode.color);
-        if (col != null)
-        {
-          setColor(highlightNode, col);
-        }
-      }
-      else if (evt.getClickCount() > 1)
-      {
-        tree.swapNodes(highlightNode);
-        tree.reCount(tree.getTopNode());
-        tree.findHeight(tree.getTopNode());
-      }
-      else
-      {
-        Vector leaves = new Vector();
-        tree.findLeaves(highlightNode, leaves);
-
-        for (int i = 0; i < leaves.size(); i++)
-        {
-          SequenceI seq = (SequenceI) ((SequenceNode) leaves.elementAt(i))
-                  .element();
-          treeSelectionChanged(seq);
-        }
-        av.sendSelection();
-      }
-
-      PaintRefresher.Refresh(tp, av.getSequenceSetId());
-      repaint();
-    }
-  }
-
-  @Override
-  public void mouseMoved(MouseEvent evt)
-  {
-    av.setCurrentTree(tree);
-
-    Object ob = findElement(evt.getX(), evt.getY());
-
-    if (ob instanceof SequenceNode)
-    {
-      highlightNode = (SequenceNode) ob;
-      this.setToolTipText("<html>"
-              + MessageManager.getString("label.highlightnode"));
-      repaint();
-
-    }
-    else
-    {
-      if (highlightNode != null)
-      {
-        highlightNode = null;
-        setToolTipText(null);
-        repaint();
-      }
-    }
-  }
-
-  @Override
-  public void mouseDragged(MouseEvent ect)
-  {
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param e
-   *          DOCUMENT ME!
-   */
-  @Override
-  public void mousePressed(MouseEvent e)
-  {
-    av.setCurrentTree(tree);
-
-    int x = e.getX();
-    int y = e.getY();
-
-    Object ob = findElement(x, y);
-
-    if (ob instanceof SequenceI)
-    {
-      treeSelectionChanged((Sequence) ob);
-      PaintRefresher.Refresh(tp, ap.av.getSequenceSetId());
-      repaint();
-      av.sendSelection();
-      return;
-    }
-    else if (!(ob instanceof SequenceNode))
-    {
-      // Find threshold
-      if (tree.getMaxHeight() != 0)
-      {
-        threshold = (float) (x - offx)
-                / (float) (getWidth() - labelLength - (2 * offx));
-
-        tree.getGroups().removeAllElements();
-        tree.groupNodes(tree.getTopNode(), threshold);
-        setColor(tree.getTopNode(), Color.black);
-
-        AlignmentPanel[] aps = getAssociatedPanels();
-
-        // TODO push calls below into a single AlignViewportI method?
-        // see also AlignViewController.deleteGroups
-        for (int a = 0; a < aps.length; a++)
-        {
-          aps[a].av.setSelectionGroup(null);
-          aps[a].av.getAlignment().deleteAllGroups();
-          aps[a].av.clearSequenceColours();
-          if (aps[a].av.getCodingComplement() != null)
-          {
-            aps[a].av.getCodingComplement().setSelectionGroup(null);
-            aps[a].av.getCodingComplement().getAlignment()
-                    .deleteAllGroups();
-            aps[a].av.getCodingComplement().clearSequenceColours();
-          }
-        }
-        colourGroups();
-      }
-
-      PaintRefresher.Refresh(tp, ap.av.getSequenceSetId());
-      repaint();
-    }
-
-  }
-
-  void colourGroups()
-  {
-    AlignmentPanel[] aps = getAssociatedPanels();
-    for (int i = 0; i < tree.getGroups().size(); i++)
-    {
-      Color col = new Color((int) (Math.random() * 255),
-              (int) (Math.random() * 255), (int) (Math.random() * 255));
-      setColor((SequenceNode) tree.getGroups().elementAt(i), col.brighter());
-
-      Vector l = tree.findLeaves(
-              (SequenceNode) tree.getGroups().elementAt(i), new Vector());
-
-      Vector sequences = new Vector();
-
-      for (int j = 0; j < l.size(); j++)
-      {
-        SequenceI s1 = (SequenceI) ((SequenceNode) l.elementAt(j))
-                .element();
-
-        if (!sequences.contains(s1))
-        {
-          sequences.addElement(s1);
-        }
-      }
-
-      ColourSchemeI cs = null;
-      SequenceGroup sg = new SequenceGroup(sequences, null, cs, true, true,
-              false, 0, av.getAlignment().getWidth() - 1);
-
-      if (av.getGlobalColourScheme() != null)
-      {
-        if (av.getGlobalColourScheme() instanceof UserColourScheme)
-        {
-          cs = new UserColourScheme(
-                  ((UserColourScheme) av.getGlobalColourScheme())
-                          .getColours());
-
-        }
-        else
-        {
-          cs = ColourSchemeProperty.getColour(sg, ColourSchemeProperty
-                  .getColourName(av.getGlobalColourScheme()));
-        }
-        // cs is null if shading is an annotationColourGradient
-        if (cs != null)
-        {
-          cs.setThreshold(av.getGlobalColourScheme().getThreshold(),
-                  av.isIgnoreGapsConsensus());
-        }
-      }
-      sg.cs = cs;
-      // sg.recalcConservation();
-      sg.setName("JTreeGroup:" + sg.hashCode());
-      sg.setIdColour(col);
-
-      for (int a = 0; a < aps.length; a++)
-      {
-        if (aps[a].av.getGlobalColourScheme() != null
-                && aps[a].av.getGlobalColourScheme().conservationApplied())
-        {
-          Conservation c = new Conservation("Group",
-                  ResidueProperties.propHash, 3, sg.getSequences(null),
-                  sg.getStartRes(), sg.getEndRes());
-
-          c.calculate();
-          c.verdict(false, aps[a].av.getConsPercGaps());
-          sg.cs.setConservation(c);
-        }
-
-        aps[a].av.getAlignment().addGroup(new SequenceGroup(sg));
-        // TODO can we push all of the below into AlignViewportI?
-        final AlignViewportI codingComplement = aps[a].av
-                .getCodingComplement();
-        if (codingComplement != null)
-        {
-          if (codingComplement != null)
-          {
-            SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup(sg,
-                    av, codingComplement);
-            if (mappedGroup.getSequences().size() > 0)
-            {
-              codingComplement.getAlignment().addGroup(mappedGroup);
-              for (SequenceI seq : mappedGroup.getSequences())
-              {
-                codingComplement.setSequenceColour(seq, col.brighter());
-              }
-            }
-          }
-        }
-      }
-    }
-
-    // notify the panel(s) to redo any group specific stuff.
-    for (int a = 0; a < aps.length; a++)
-    {
-      aps[a].updateAnnotation();
-      // TODO: JAL-868 - need to ensure view colour change message is broadcast
-      // to any Jmols listening in
-      final AlignViewportI codingComplement = aps[a].av
-              .getCodingComplement();
-      if (codingComplement != null)
-      {
-        ((AlignViewport) codingComplement).getAlignPanel()
-                .updateAnnotation();
-
-      }
-
-    }
-
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param state
-   *          DOCUMENT ME!
-   */
-  public void setShowDistances(boolean state)
-  {
-    this.showDistances = state;
-    repaint();
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param state
-   *          DOCUMENT ME!
-   */
-  public void setShowBootstrap(boolean state)
-  {
-    this.showBootstrap = state;
-    repaint();
-  }
-
-  /**
-   * DOCUMENT ME!
-   * 
-   * @param state
-   *          DOCUMENT ME!
-   */
-  public void setMarkPlaceholders(boolean state)
-  {
-    this.markPlaceholders = state;
-    repaint();
-  }
-
-  AlignmentPanel[] getAssociatedPanels()
-  {
-    if (applyToAllViews)
-    {
-      return PaintRefresher.getAssociatedPanels(av.getSequenceSetId());
-    }
-    else
-    {
-      return new AlignmentPanel[] { ap };
-    }
-  }
-}
index d735402..76e1884 100755 (executable)
  */
 package jalview.gui;
 
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Locale;
 
+import javax.swing.ButtonGroup;
+import javax.swing.JMenuItem;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.event.InternalFrameAdapter;
+import javax.swing.event.InternalFrameEvent;
+
+import org.jibble.epsgraphics.EpsGraphics2D;
+
 import jalview.analysis.AlignmentSorter;
 import jalview.analysis.AverageDistanceTree;
 import jalview.analysis.NJTree;
@@ -53,25 +71,6 @@ import jalview.util.ImageMaker.TYPE;
 import jalview.util.MessageManager;
 import jalview.viewmodel.AlignmentViewport;
 
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.ButtonGroup;
-import javax.swing.JMenuItem;
-import javax.swing.JRadioButtonMenuItem;
-import javax.swing.event.InternalFrameAdapter;
-import javax.swing.event.InternalFrameEvent;
-
-import org.jibble.epsgraphics.EpsGraphics2D;
-
 /**
  * DOCUMENT ME!
  * 
@@ -106,6 +105,7 @@ public class TreePanel extends GTreePanel
           SimilarityParamsI options)
   {
     super();
+    this.setFrameIcon(null);
     this.similarityParams = options;
     initTreePanel(ap, type, modelName, null, null);
 
@@ -118,6 +118,7 @@ public class TreePanel extends GTreePanel
           String theTitle, AlignmentView inputData)
   {
     super();
+    this.setFrameIcon(null);
     this.treeTitle = theTitle;
     initTreePanel(alignPanel, null, null, newtree, inputData);
   }
index 1836e33..298b8b4 100755 (executable)
  */
 package jalview.gui;
 
-import java.util.Locale;
-
-import jalview.bin.Cache;
-import jalview.io.JalviewFileChooser;
-import jalview.io.JalviewFileView;
-import jalview.jbgui.GUserDefinedColours;
-import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ColourSchemeLoader;
-import jalview.schemes.ColourSchemes;
-import jalview.schemes.ResidueProperties;
-import jalview.schemes.UserColourScheme;
-import jalview.util.ColorUtils;
-import jalview.util.Format;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.xml.binding.jalview.JalviewUserColours;
-import jalview.xml.binding.jalview.JalviewUserColours.Colour;
-import jalview.xml.binding.jalview.ObjectFactory;
-
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.Insets;
@@ -50,6 +31,7 @@ import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 import javax.swing.JButton;
 import javax.swing.JInternalFrame;
@@ -58,6 +40,23 @@ import javax.swing.event.ChangeListener;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.Marshaller;
 
+import jalview.bin.Cache;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.jbgui.GUserDefinedColours;
+import jalview.schemes.ColourSchemeI;
+import jalview.schemes.ColourSchemeLoader;
+import jalview.schemes.ColourSchemes;
+import jalview.schemes.ResidueProperties;
+import jalview.schemes.UserColourScheme;
+import jalview.util.ColorUtils;
+import jalview.util.Format;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.xml.binding.jalview.JalviewUserColours;
+import jalview.xml.binding.jalview.JalviewUserColours.Colour;
+import jalview.xml.binding.jalview.ObjectFactory;
+
 /**
  * This panel allows the user to assign colours to Amino Acid residue codes, and
  * save the colour scheme.
@@ -149,6 +148,7 @@ public class UserDefinedColours extends GUserDefinedColours
   {
     colorChooser.getSelectionModel().addChangeListener(this);
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     Desktop.addInternalFrame(frame,
             MessageManager.getString("label.user_defined_colours"),
@@ -652,45 +652,41 @@ public class UserDefinedColours extends GUserDefinedColours
     chooser.setDialogTitle(
             MessageManager.getString("label.load_colour_scheme"));
     chooser.setToolTipText(MessageManager.getString("action.load"));
-    chooser.setResponseHandler(0, new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        File choice = chooser.getSelectedFile();
-        Cache.setProperty(LAST_DIRECTORY, choice.getParent());
-
-        UserColourScheme ucs = ColourSchemeLoader
-                .loadColourScheme(choice.getAbsolutePath());
-        Color[] colors = ucs.getColours();
-        schemeName.setText(ucs.getSchemeName());
+    chooser.setResponseHandler(0, () -> {
+      File choice = chooser.getSelectedFile();
+      Cache.setProperty(LAST_DIRECTORY, choice.getParent());
 
-        if (ucs.getLowerCaseColours() != null)
-        {
-          caseSensitive.setSelected(true);
-          lcaseColour.setEnabled(true);
-          resetButtonPanel(true);
-          for (int i = 0; i < lowerCaseButtons.size(); i++)
-          {
-            JButton button = lowerCaseButtons.get(i);
-            button.setBackground(ucs.getLowerCaseColours()[i]);
-          }
-        }
-        else
-        {
-          caseSensitive.setSelected(false);
-          lcaseColour.setEnabled(false);
-          resetButtonPanel(false);
-        }
+      UserColourScheme ucs = ColourSchemeLoader
+              .loadColourScheme(choice.getAbsolutePath());
+      Color[] colors = ucs.getColours();
+      schemeName.setText(ucs.getSchemeName());
 
-        for (int i = 0; i < upperCaseButtons.size(); i++)
+      if (ucs.getLowerCaseColours() != null)
+      {
+        caseSensitive.setSelected(true);
+        lcaseColour.setEnabled(true);
+        resetButtonPanel(true);
+        for (int i = 0; i < lowerCaseButtons.size(); i++)
         {
-          JButton button = upperCaseButtons.get(i);
-          button.setBackground(colors[i]);
+          JButton button = lowerCaseButtons.get(i);
+          button.setBackground(ucs.getLowerCaseColours()[i]);
         }
+      }
+      else
+      {
+        caseSensitive.setSelected(false);
+        lcaseColour.setEnabled(false);
+        resetButtonPanel(false);
+      }
 
-        addNewColourScheme(choice.getPath());
+      for (int i = 0; i < upperCaseButtons.size(); i++)
+      {
+        JButton button = upperCaseButtons.get(i);
+        button.setBackground(colors[i]);
       }
+
+      addNewColourScheme(choice.getPath());
+      return null;
     });
 
     chooser.showOpenDialog(this);
index ee1b473..4aac062 100644 (file)
@@ -20,8 +20,6 @@
  */
 package jalview.gui;
 
-import java.util.Locale;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Dimension;
@@ -33,6 +31,7 @@ import java.awt.MediaTracker;
 import java.awt.RenderingHints;
 import java.awt.event.ActionEvent;
 import java.awt.image.BufferedImage;
+import java.util.Locale;
 import java.util.Vector;
 
 import javax.swing.JComponent;
@@ -324,6 +323,7 @@ public class WebserviceInfo extends GWebserviceInfo
           boolean makeVisible)
   {
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     Desktop.addInternalFrame(frame, title, makeVisible, width, height);
     frame.setClosable(false);
@@ -626,8 +626,8 @@ public class WebserviceInfo extends GWebserviceInfo
               true, false);
       ((JEditorPane) ((JScrollPane) jobPanes.get(which)).getViewport()
               .getComponent(0))
-                      .setText(ensureHtmlTagged(
-                              txt + getHtmlFragment(text, false, true)));
+              .setText(ensureHtmlTagged(
+                      txt + getHtmlFragment(text, false, true)));
     }
     else
     {
index 2039d3c..14c1260 100644 (file)
@@ -29,8 +29,14 @@ import java.nio.file.StandardCopyOption;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
 
 import jalview.bin.Cache;
 import jalview.bin.Console;
@@ -105,6 +111,117 @@ public class BackupFiles
 
   private static final String oldTempFileSuffix = "_oldfile_tobedeleted";
 
+  // thread pool used for completablefutures
+  private static final ExecutorService executorService = Executors
+          .newFixedThreadPool(3);
+
+  private static List<BackupFiles> savesInProgress = new ArrayList<>();
+
+  private CompletableFuture<Boolean> myFuture = null;
+
+  private boolean addSaveInProgress()
+  {
+    if (savesInProgress.contains(this))
+    {
+      return false;
+    }
+    else
+    {
+      this.setMyFuture();
+      savesInProgress.add(this);
+      return true;
+    }
+  }
+
+  private boolean removeSaveInProgress(boolean ret)
+  {
+    if (savesInProgress.contains(this))
+    {
+      this.getMyFuture().complete(ret);
+      // remove all occurrences
+      while (savesInProgress.remove(this))
+      {
+      }
+      return true;
+    }
+    return false;
+  }
+
+  private static CompletableFuture<Boolean> getNewFuture()
+  {
+    return new CompletableFuture<Boolean>()
+    {
+    };
+  }
+
+  private CompletableFuture<Boolean> getMyFuture()
+  {
+    return this.myFuture;
+  }
+
+  private void setMyFuture()
+  {
+    this.myFuture = getNewFuture();
+  }
+
+  public static boolean hasSavesInProgress()
+  {
+    boolean has = false;
+    for (CompletableFuture cf : savesInProgressCompletableFutures(true))
+    {
+      has |= !cf.isDone();
+    }
+    return has;
+  }
+
+  public static List<File> savesInProgressFiles(boolean all)
+  {
+    List<File> files = new ArrayList<>();
+    for (BackupFiles bfile : savesInProgress)
+    {
+      if (all || !bfile.getMyFuture().isDone())
+        files.add(bfile.getFile());
+    }
+    return files;
+  }
+
+  public static List<CompletableFuture<Boolean>> savesInProgressCompletableFutures(
+          boolean all)
+  {
+    List<CompletableFuture<Boolean>> cfs = new ArrayList<>();
+    for (BackupFiles bfile : savesInProgress)
+    {
+      if (all || !bfile.getMyFuture().isDone())
+        cfs.add(bfile.getMyFuture());
+    }
+    return cfs;
+  }
+
+  public static Future<Boolean> allSaved()
+  {
+    CompletableFuture<Boolean> f = new CompletableFuture<>();
+
+    executorService.submit(() -> {
+      for (BackupFiles buf : savesInProgress)
+      {
+        boolean allSaved = true;
+        try
+        {
+          allSaved &= buf.getMyFuture().get();
+        } catch (InterruptedException e)
+        {
+          Console.debug("InterruptedException waiting for files to save",
+                  e);
+        } catch (ExecutionException e)
+        {
+          Console.debug("ExecutionException waiting for files to save", e);
+        }
+        f.complete(allSaved);
+      }
+    });
+    return f;
+  }
+
   public BackupFiles(String filename)
   {
     this(new File(filename));
@@ -116,6 +233,10 @@ public class BackupFiles
   {
     classInit();
     this.file = file;
+
+    // add this file from the save in progress stack
+    addSaveInProgress();
+
     BackupFilesPresetEntry bfpe = BackupFilesPresetEntry
             .getSavedBackupEntry();
     this.suffix = bfpe.suffix;
@@ -132,6 +253,7 @@ public class BackupFiles
       {
         String tempfilename = file.getName();
         File tempdir = file.getParentFile();
+        tempdir.mkdirs();
         Console.trace(
                 "BACKUPFILES [file!=null] attempting to create temp file for "
                         + tempfilename + " in dir " + tempdir);
@@ -819,6 +941,9 @@ public class BackupFiles
       tidyUpFiles();
     }
 
+    // remove this file from the save in progress stack
+    removeSaveInProgress(rename);
+
     return rename;
   }
 
@@ -890,6 +1015,11 @@ public class BackupFiles
     return ret;
   }
 
+  public File getFile()
+  {
+    return file;
+  }
+
   public static boolean moveFileToFile(File oldFile, File newFile)
   {
     Console.initLogger();
index d3ac53f..1b82213 100755 (executable)
@@ -466,6 +466,7 @@ public class FileLoader implements Runnable
             {
               alignFrame.setFileName(file, format);
               alignFrame.setFileObject(selectedFile); // BH 2018 SwingJS
+              alignFrame.getViewport().setSavedUpToDate(true);
             }
             if (proxyColourScheme != null)
             {
@@ -485,6 +486,12 @@ public class FileLoader implements Runnable
               // that perform queries to find the 'current working alignment'
               Desktop.addInternalFrame(alignFrame, title,
                       AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
+
+              /*
+               * for an Overview automatically opened with alignment,
+               * set its title now alignFrame title has been set
+               */
+              alignFrame.alignPanel.setOverviewTitle(alignFrame);
             }
 
             try
index 4b66f81..9fb3720 100644 (file)
  */
 package jalview.io;
 
-import jalview.bin.Cache;
-import jalview.gui.AlignmentPanel;
-import jalview.gui.LineartOptions;
-import jalview.gui.OOMWarning;
-import jalview.math.AlignmentDimension;
-import jalview.util.MessageManager;
-
 import java.awt.Graphics;
 import java.awt.print.PrinterException;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.jfree.graphics2d.svg.SVGGraphics2D;
 import org.jfree.graphics2d.svg.SVGHints;
 
+import jalview.bin.Cache;
+import jalview.gui.AlignmentPanel;
+import jalview.gui.LineartOptions;
+import jalview.gui.OOMWarning;
+import jalview.math.AlignmentDimension;
+import jalview.util.MessageManager;
+
 public class HtmlSvgOutput extends HTMLOutput
 {
   public HtmlSvgOutput(AlignmentPanel ap)
@@ -211,13 +212,9 @@ public class HtmlSvgOutput extends HTMLOutput
       /*
        * configure the action to run on OK in the dialog
        */
-      Runnable okAction = new Runnable()
-      {
-        @Override
-        public void run()
-        {
-          doOutput(textOption.get());
-        }
+      Callable<Void> okAction = () -> {
+        doOutput(textOption.get());
+        return null;
       };
 
       /*
@@ -226,15 +223,11 @@ public class HtmlSvgOutput extends HTMLOutput
       if (renderStyle.equalsIgnoreCase("Prompt each time") && !isHeadless())
       {
         LineartOptions svgOption = new LineartOptions("HTML", textOption);
-        svgOption.setResponseAction(1, new Runnable()
-        {
-          @Override
-          public void run()
-          {
-            setProgressMessage(MessageManager.formatMessage(
-                    "status.cancelled_image_export_operation",
-                    getDescription()));
-          }
+        svgOption.setResponseAction(1, () -> {
+          setProgressMessage(MessageManager.formatMessage(
+                  "status.cancelled_image_export_operation",
+                  getDescription()));
+          return null;
         });
         svgOption.setResponseAction(0, okAction);
         svgOption.showDialog();
index a9101a1..3b6e325 100755 (executable)
@@ -44,18 +44,28 @@ import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.Vector;
+import java.util.concurrent.Callable;
 
 import javax.swing.BoxLayout;
 import javax.swing.DefaultListCellRenderer;
 import javax.swing.JCheckBox;
+import javax.swing.JDialog;
 import javax.swing.JFileChooser;
 import javax.swing.JList;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.SpringLayout;
 import javax.swing.filechooser.FileFilter;
 import javax.swing.plaf.basic.BasicFileChooserUI;
 
+import jalview.bin.Cache;
+import jalview.gui.JvOptionPane;
+import jalview.util.ChannelProperties;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.util.dialogrunner.DialogRunnerI;
+
 /**
  * Enhanced file chooser dialog box.
  *
@@ -70,7 +80,7 @@ public class JalviewFileChooser extends JFileChooser
 {
   private static final long serialVersionUID = 1L;
 
-  private Map<Object, Runnable> callbacks = new HashMap<>();
+  private Map<Object, Callable> callbacks = new HashMap<>();
 
   File selectedFile = null;
 
@@ -488,10 +498,13 @@ public class JalviewFileChooser extends JFileChooser
 
     if (selectedFile.exists())
     {
-      int confirm = JvOptionPane.showConfirmDialog(this,
-              MessageManager.getString("label.overwrite_existing_file"),
-              MessageManager.getString("label.file_already_exists"),
-              JvOptionPane.YES_NO_OPTION);
+      int confirm = Cache.getDefault("CONFIRM_OVERWRITE_FILE", true)
+              ? JvOptionPane.showConfirmDialog(this,
+                      MessageManager
+                              .getString("label.overwrite_existing_file"),
+                      MessageManager.getString("label.file_already_exists"),
+                      JvOptionPane.YES_NO_OPTION)
+              : JOptionPane.YES_OPTION;
 
       if (confirm != JvOptionPane.YES_OPTION)
       {
@@ -596,8 +609,26 @@ public class JalviewFileChooser extends JFileChooser
 
   }
 
+  /*
   @Override
-  public DialogRunnerI setResponseHandler(Object response, Runnable action)
+  public JalviewFileChooser setResponseHandler(Object response,
+          Runnable action)
+  {
+    callbacks.put(response, new Callable<Void>()
+    {
+      @Override
+      public Void call()
+      {
+        action.run();
+        return null;
+      }
+    });
+    return this;
+  }
+  */
+
+  @Override
+  public DialogRunnerI setResponseHandler(Object response, Callable action)
   {
     callbacks.put(response, action);
     return this;
@@ -613,10 +644,16 @@ public class JalviewFileChooser extends JFileChooser
     {
       return;
     }
-    Runnable action = callbacks.get(response);
+    Callable action = callbacks.get(response);
     if (action != null)
     {
-      action.run();
+      try
+      {
+        action.call();
+      } catch (Exception e)
+      {
+        e.printStackTrace();
+      }
     }
   }
 
@@ -641,4 +678,13 @@ public class JalviewFileChooser extends JFileChooser
       break;
     }
   }
+
+  @Override
+  protected JDialog createDialog(Component parent) throws HeadlessException
+  {
+    JDialog dialog = super.createDialog(parent);
+    dialog.setIconImages(ChannelProperties.getIconList());
+    return dialog;
+  }
+
 }
index ca95222..b0079b4 100755 (executable)
@@ -32,6 +32,8 @@ import javax.swing.JMenuItem;
 
 import jalview.api.AlignmentViewPanel;
 import jalview.bin.Cache;
+import jalview.gui.APQHandlers;
+import jalview.gui.Desktop;
 import jalview.io.FileFormatException;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
@@ -140,7 +142,6 @@ public class GDesktop extends JFrame
    */
   private void jbInit() throws Exception
   {
-    boolean apqHandlersSet = false;
     /**
      * APQHandlers sets handlers for About, Preferences and Quit actions
      * peculiar to macOS's application menu. APQHandlers will check to see if a
@@ -148,7 +149,7 @@ public class GDesktop extends JFrame
      */
     try
     {
-      apqHandlersSet = APQHandlers.setAPQHandlers(this);
+      APQHandlers.setAPQHandlers((Desktop) this);
     } catch (Exception e)
     {
       System.out.println("Cannot set APQHandlers");
@@ -213,7 +214,8 @@ public class GDesktop extends JFrame
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        quit();
+        if (Desktop.instance != null)
+          Desktop.instance.desktopQuit();
       }
     });
     aboutMenuItem.setText(MessageManager.getString("label.about"));
index d4b2c04..8d2efe0 100644 (file)
@@ -112,6 +112,7 @@ import jalview.gui.AppVarna;
 import jalview.gui.Desktop;
 import jalview.gui.JvOptionPane;
 import jalview.gui.OOMWarning;
+import jalview.gui.OverviewPanel;
 import jalview.gui.PCAPanel;
 import jalview.gui.PaintRefresher;
 import jalview.gui.SplitFrame;
@@ -185,6 +186,7 @@ import jalview.xml.binding.jalview.JalviewModel.UserColours;
 import jalview.xml.binding.jalview.JalviewModel.Viewport;
 import jalview.xml.binding.jalview.JalviewModel.Viewport.CalcIdParam;
 import jalview.xml.binding.jalview.JalviewModel.Viewport.HiddenColumns;
+import jalview.xml.binding.jalview.JalviewModel.Viewport.Overview;
 import jalview.xml.binding.jalview.JalviewUserColours;
 import jalview.xml.binding.jalview.JalviewUserColours.Colour;
 import jalview.xml.binding.jalview.MapListType.MapListFrom;
@@ -229,6 +231,11 @@ public class Jalview2XML
   private static final String UTF_8 = "UTF-8";
 
   /**
+   * used in decision if quit confirmation should be issued
+   */
+  private static boolean stateSavedUpToDate = false;
+
+  /**
    * prefix for recovering datasets for alignments with multiple views where
    * non-existent dataset IDs were written for some views
    */
@@ -616,6 +623,27 @@ public class Jalview2XML
   {
     AlignFrame[] frames = Desktop.getAlignFrames();
 
+    setStateSavedUpToDate(true);
+
+    if (Cache.getDefault("DEBUG_DELAY_SAVE", false))
+    {
+      int n = debugDelaySave;
+      int i = 0;
+      while (i < n)
+      {
+        Console.debug("***** debugging save sleep " + i + "/" + n);
+        try
+        {
+          Thread.sleep(1000);
+        } catch (InterruptedException e)
+        {
+          // TODO Auto-generated catch block
+          e.printStackTrace();
+        }
+        i++;
+      }
+    }
+
     if (frames == null)
     {
       return;
@@ -763,6 +791,25 @@ public class Jalview2XML
       FileOutputStream fos = new FileOutputStream(
               doBackup ? backupfiles.getTempFilePath() : jarFile);
 
+      if (Cache.getDefault("DEBUG_DELAY_SAVE", false))
+      {
+        int n = debugDelaySave;
+        int i = 0;
+        while (i < n)
+        {
+          Console.debug("***** debugging save sleep " + i + "/" + n);
+          try
+          {
+            Thread.sleep(1000);
+          } catch (InterruptedException e)
+          {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+          }
+          i++;
+        }
+      }
+
       JarOutputStream jout = new JarOutputStream(fos);
       List<AlignFrame> frames = new ArrayList<>();
 
@@ -1447,6 +1494,23 @@ public class Jalview2XML
       view.setStartRes(vpRanges.getStartRes());
       view.setStartSeq(vpRanges.getStartSeq());
 
+      OverviewPanel ov = ap.getOverviewPanel();
+      if (ov != null)
+      {
+        Overview overview = new Overview();
+        overview.setTitle(ov.getTitle());
+        Rectangle bounds = ov.getFrameBounds();
+        overview.setXpos(bounds.x);
+        overview.setYpos(bounds.y);
+        overview.setWidth(bounds.width);
+        overview.setHeight(bounds.height);
+        overview.setShowHidden(ov.isShowHiddenRegions());
+        overview.setGapColour(ov.getCanvas().getGapColour().getRGB());
+        overview.setResidueColour(
+                ov.getCanvas().getResidueColour().getRGB());
+        overview.setHiddenColour(ov.getCanvas().getHiddenColour().getRGB());
+        view.setOverview(overview);
+      } 
       if (av.getGlobalColourScheme() instanceof jalview.schemes.UserColourScheme)
       {
         view.setBgColour(setUserColourScheme(av.getGlobalColourScheme(),
@@ -4048,7 +4112,7 @@ public class Jalview2XML
     }
 
     /*
-     * Load any trees, PDB structures and viewers
+     * Load any trees, PDB structures and viewers, Overview
      * 
      * Not done if flag is false (when this method is used for New View)
      */
@@ -4058,12 +4122,49 @@ public class Jalview2XML
       loadPCAViewers(jalviewModel, ap);
       loadPDBStructures(jprovider, jseqs, af, ap);
       loadRnaViewers(jprovider, jseqs, ap);
+      loadOverview(view, jalviewModel.getVersion(), af);
     }
     // and finally return.
     return af;
   }
 
   /**
+   * Load Overview window, restoring colours, 'show hidden regions' flag, title
+   * and geometry as saved
+   * 
+   * @param view
+   * @param af
+   */
+  protected void loadOverview(Viewport view, String version, AlignFrame af)
+  {
+    if (!isVersionStringLaterThan("2.11.3",
+            version) && view.getOverview()==null)
+    {
+      return;
+    }
+    /*
+     * first close any Overview that was opened automatically
+     * (if so configured in Preferences) so that the view is
+     * restored in the same state as saved
+     */
+    af.alignPanel.closeOverviewPanel();
+
+    Overview overview = view.getOverview();
+    if (overview != null)
+    {
+      OverviewPanel overviewPanel = af
+              .openOverviewPanel(overview.isShowHidden());
+      overviewPanel.setTitle(overview.getTitle());
+      overviewPanel.setFrameBounds(overview.getXpos(), overview.getYpos(),
+              overview.getWidth(), overview.getHeight());
+      Color gap = new Color(overview.getGapColour());
+      Color residue = new Color(overview.getResidueColour());
+      Color hidden = new Color(overview.getHiddenColour());
+      overviewPanel.getCanvas().setColours(gap, residue, hidden);
+    }
+  }
+
+  /**
    * Instantiate and link any saved RNA (Varna) viewers. The state of the Varna
    * panel is restored from separate jar entries, two (gapped and trimmed) per
    * sequence and secondary structure.
@@ -4580,7 +4681,7 @@ public class Jalview2XML
    *          - minimum version we are comparing against
    * @param version
    *          - version of data being processsed
-   * @return
+   * @return true if version is equal to or later than supported
    */
   public static boolean isVersionStringLaterThan(String supported,
           String version)
@@ -4986,6 +5087,7 @@ public class Jalview2XML
     {
       splitFrameCandidates.put(view, af);
     }
+
     return af;
   }
 
@@ -5049,7 +5151,10 @@ public class Jalview2XML
               + annotationId);
       return null;
     }
-    if (matchedAnnotation.getThreshold() == null)
+    // belt-and-braces create a threshold line if the 
+    // colourscheme needs one but the matchedAnnotation doesn't have one
+    if (safeInt(viewAnnColour.getAboveThreshold()) != 0
+            && matchedAnnotation.getThreshold() == null)
     {
       matchedAnnotation.setThreshold(
               new GraphLine(safeFloat(viewAnnColour.getThreshold()),
@@ -6537,4 +6642,44 @@ public class Jalview2XML
 
     return colour;
   }
+
+  public static void setStateSavedUpToDate(boolean s)
+  {
+    Console.debug("Setting overall stateSavedUpToDate to " + s);
+    stateSavedUpToDate = s;
+  }
+
+  public static boolean stateSavedUpToDate()
+  {
+    Console.debug("Returning overall stateSavedUpToDate value: "
+            + stateSavedUpToDate);
+    return stateSavedUpToDate;
+  }
+
+  public static boolean allSavedUpToDate()
+  {
+    if (stateSavedUpToDate()) // nothing happened since last project save
+      return true;
+
+    AlignFrame[] frames = Desktop.getAlignFrames();
+    if (frames != null)
+    {
+      for (int i = 0; i < frames.length; i++)
+      {
+        if (frames[i] == null)
+          continue;
+        if (!frames[i].getViewport().savedUpToDate())
+          return false; // at least one alignment is not individually saved
+      }
+    }
+    return true;
+  }
+
+  // used for debugging and tests
+  private static int debugDelaySave = 20;
+
+  public static void setDebugDelaySave(int n)
+  {
+    debugDelaySave = n;
+  }
 }
index 1b5d5da..1ff032b 100644 (file)
@@ -225,7 +225,7 @@ public class OverviewRenderer
   int getColumnColourFromSequence(SequenceGroup[] allGroups, SequenceI seq,
           int lastcol)
   {
-    Color color = resColFinder.GAP_COLOUR;
+    Color color = resColFinder.gapColour;
 
     if ((seq != null) && (seq.getLength() > lastcol))
     {
index 57cae1c..ef4d04b 100644 (file)
  */
 package jalview.renderer;
 
+import java.awt.Color;
+
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.util.Comparison;
 
-import java.awt.Color;
-
 public class OverviewResColourFinder extends ResidueColourFinder
 {
-  final Color GAP_COLOUR; // default colour to use at gaps
-
-  final Color RESIDUE_COLOUR; // default colour to use at residues
-
-  final Color HIDDEN_COLOUR; // colour for hidden regions
-
-  boolean useLegacy = false;
-
-  public static final Color OVERVIEW_DEFAULT_GAP = Color.lightGray;
+  /*
+   * colour for gaps (unless overridden by colour scheme)
+   * - as set in Preferences, _or_ read from a project file
+   */
+  Color gapColour;
 
-  public static final Color OVERVIEW_DEFAULT_LEGACY_GAP = Color.white;
+  /*
+   * colour for residues if no colour scheme set (before feature colouring)
+   * - as set in Preferences, _or_ read from a project file
+   */
+  Color residueColour;
 
-  public static final Color OVERVIEW_DEFAULT_HIDDEN = Color.darkGray
-          .darker();
+  /*
+   * colour for hidden regions
+   * - as set in Preferences, _or_ read from a project file
+   */
+  Color hiddenColour;
 
   /**
    * Constructor without colour settings (used by applet)
+   * @deprecated
    */
+  @Deprecated
   public OverviewResColourFinder()
   {
-    this(false, OVERVIEW_DEFAULT_GAP, OVERVIEW_DEFAULT_HIDDEN);
+    this(Color.lightGray, Color.white, Color.darkGray.darker());
   }
 
   /**
-   * Constructor with colour settings
+   * Constructor given default colours for gaps, residues and hidden regions
    * 
-   * @param useLegacyColouring
-   *          whether to use legacy gap colouring (white gaps, grey residues)
-   * @param gapCol
-   *          gap colour if not legacy
-   * @param hiddenCol
-   *          hidden region colour (transparency applied by rendering code)
+   * @param gaps
+   * @param residues
+   * @param hidden
    */
-  public OverviewResColourFinder(boolean useLegacyColouring, Color gapCol,
-          Color hiddenCol)
+  public OverviewResColourFinder(Color gaps, Color residues, Color hidden)
   {
-    if (useLegacyColouring)
-    {
-      GAP_COLOUR = Color.white;
-      RESIDUE_COLOUR = Color.lightGray;
-      HIDDEN_COLOUR = hiddenCol;
-    }
-    else
-    {
-      GAP_COLOUR = gapCol;
-      RESIDUE_COLOUR = Color.white;
-      HIDDEN_COLOUR = hiddenCol;
-    }
+    gapColour = gaps;
+    residueColour = residues;
+    hiddenColour = hidden;
   }
 
   @Override
   public Color getBoxColour(ResidueShaderI shader, SequenceI seq, int i)
   {
-    Color resBoxColour = RESIDUE_COLOUR;
+    Color resBoxColour = residueColour;
     char currentChar = seq.getCharAt(i);
 
     // In the overview window, gaps are coloured grey, unless the colour scheme
@@ -92,7 +84,7 @@ public class OverviewResColourFinder extends ResidueColourFinder
       if (Comparison.isGap(currentChar)
               && (!shader.getColourScheme().hasGapColour()))
       {
-        resBoxColour = GAP_COLOUR;
+        resBoxColour = gapColour;
       }
       else
       {
@@ -101,7 +93,7 @@ public class OverviewResColourFinder extends ResidueColourFinder
     }
     else if (Comparison.isGap(currentChar))
     {
-      resBoxColour = GAP_COLOUR;
+      resBoxColour = gapColour;
     }
 
     return resBoxColour;
@@ -132,12 +124,34 @@ public class OverviewResColourFinder extends ResidueColourFinder
   }
 
   /**
-   * Supply hidden colour
+   * Returns the colour used for hidden regions
+   * 
+   * @return
+   */
+  public Color getHiddenColour()
+  {
+    return hiddenColour;
+  }
+
+  /**
+   * Returns the colour used for gaps, if not overridden by the alignment colour
+   * scheme
+   * 
+   * @return
+   */
+  public Color getGapColour()
+  {
+    return gapColour;
+  }
+
+  /**
+   * Returns the colour used for residues (before applying any feature
+   * colouring) if there is no alignment colour scheme
    * 
-   * @return colour of hidden regions
+   * @return
    */
-  protected Color getHiddenColour()
+  public Color getResidueColour()
   {
-    return HIDDEN_COLOUR;
+    return residueColour;
   }
 }
index 965a26b..accdc8a 100644 (file)
@@ -44,10 +44,12 @@ public enum JalviewColourScheme
   Turn("Turn Propensity", TurnColourScheme.class),
   Buried("Buried Index", BuriedColourScheme.class),
   Nucleotide("Nucleotide", NucleotideColourScheme.class),
+  NucleotideAmbiguity("Nucleotide Ambiguity",
+          NucleotideAmbiguityColourScheme.class),
   PurinePyrimidine("Purine/Pyrimidine", PurinePyrimidineColourScheme.class),
   RNAHelices("RNA Helices", RNAHelicesColour.class),
   TCoffee("T-Coffee Scores", TCoffeeColourScheme.class),
-  IdColour("Sequence ID", IdColourScheme.class);
+  IdColour("Sequence ID", IdColourScheme.class),;
   // RNAInteraction("RNA Interaction type", RNAInteractionColourScheme.class)
 
   private String name;
diff --git a/src/jalview/schemes/NucleotideAmbiguityColourScheme.java b/src/jalview/schemes/NucleotideAmbiguityColourScheme.java
new file mode 100644 (file)
index 0000000..dd42db3
--- /dev/null
@@ -0,0 +1,40 @@
+package jalview.schemes;
+
+import jalview.api.AlignViewportI;
+import jalview.datamodel.AnnotatedCollectionI;
+
+public class NucleotideAmbiguityColourScheme extends ResidueColourScheme
+{
+  /**
+   * Creates a new NucleotideColourScheme object.
+   */
+  public NucleotideAmbiguityColourScheme()
+  {
+    super(ResidueProperties.nucleotideIndex,
+            ResidueProperties.nucleotideAmbiguity);
+  }
+
+  @Override
+  public boolean isNucleotideSpecific()
+  {
+    return true;
+  }
+
+  @Override
+  public String getSchemeName()
+  {
+    return JalviewColourScheme.NucleotideAmbiguity.toString();
+  }
+
+  /**
+   * Returns a new instance of this colour scheme with which the given data may
+   * be coloured
+   */
+  @Override
+  public ColourSchemeI getInstance(AlignViewportI view,
+          AnnotatedCollectionI coll)
+  {
+    return new NucleotideAmbiguityColourScheme();
+  }
+
+}
index 7ad35c3..42d03ec 100755 (executable)
  */
 package jalview.schemes;
 
-import java.util.Locale;
-
-import jalview.analysis.GeneticCodes;
-
 import java.awt.Color;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -31,9 +27,12 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Vector;
 
+import jalview.analysis.GeneticCodes;
+
 public class ResidueProperties
 {
   // Stores residue codes/names and colours and other things
@@ -49,6 +48,8 @@ public class ResidueProperties
 
   public static final Map<String, String> nucleotideName = new HashMap<>();
 
+  public static final Map<String, String> nucleotideAmbiguityName = new HashMap<>();
+
   // lookup from modified amino acid (e.g. MSE) to canonical form (e.g. MET)
   public static final Map<String, String> modifications = new HashMap<>();
 
@@ -119,73 +120,48 @@ public class ResidueProperties
   /**
    * maximum (gap) index for matrices involving nucleotide alphabet
    */
-  public final static int maxNucleotideIndex = 10;
+  // public final static int maxNucleotideIndex = 10;
+  public final static int maxNucleotideIndex;
 
   static
   {
+    String[][] namesArray = { { "a", "Adenine" }, { "c", "Cytosine" },
+        { "g", "Guanine" },
+        { "t", "Thymine" },
+        { "u", "Uracil" },
+        { "i", "Inosine" },
+        { "x", "Xanthine" },
+        { "r", "Unknown Purine" },
+        { "y", "Unknown Pyrimidine" },
+        { "w", "Weak nucleotide (A or T)" },
+        { "s", "Strong nucleotide (G or C)" },
+        { "m", "Amino (A or C)" },
+        { "k", "Keto (G or T)" },
+        { "b", "Not A (G or C or T)" },
+        { "h", "Not G (A or C or T)" },
+        { "d", "Not C (A or G or T)" },
+        { "v", "Not T (A or G or C)" },
+        { "n", "Unknown" } };
+    // "gap" index
+    maxNucleotideIndex = namesArray.length;
+
     nucleotideIndex = new int[255];
     for (int i = 0; i < 255; i++)
     {
-      nucleotideIndex[i] = 10; // non-nucleotide symbols are all non-gap gaps.
+      nucleotideIndex[i] = maxNucleotideIndex; // non-nucleotide symbols are all
+                                               // non-gap gaps.
     }
 
-    nucleotideIndex['A'] = 0;
-    nucleotideIndex['a'] = 0;
-    nucleotideIndex['C'] = 1;
-    nucleotideIndex['c'] = 1;
-    nucleotideIndex['G'] = 2;
-    nucleotideIndex['g'] = 2;
-    nucleotideIndex['T'] = 3;
-    nucleotideIndex['t'] = 3;
-    nucleotideIndex['U'] = 4;
-    nucleotideIndex['u'] = 4;
-    nucleotideIndex['I'] = 5;
-    nucleotideIndex['i'] = 5;
-    nucleotideIndex['X'] = 6;
-    nucleotideIndex['x'] = 6;
-    nucleotideIndex['R'] = 7;
-    nucleotideIndex['r'] = 7;
-    nucleotideIndex['Y'] = 8;
-    nucleotideIndex['y'] = 8;
-    nucleotideIndex['N'] = 9;
-    nucleotideIndex['n'] = 9;
-
-    nucleotideName.put("A", "Adenine");
-    nucleotideName.put("a", "Adenine");
-    nucleotideName.put("G", "Guanine");
-    nucleotideName.put("g", "Guanine");
-    nucleotideName.put("C", "Cytosine");
-    nucleotideName.put("c", "Cytosine");
-    nucleotideName.put("T", "Thymine");
-    nucleotideName.put("t", "Thymine");
-    nucleotideName.put("U", "Uracil");
-    nucleotideName.put("u", "Uracil");
-    nucleotideName.put("I", "Inosine");
-    nucleotideName.put("i", "Inosine");
-    nucleotideName.put("X", "Xanthine");
-    nucleotideName.put("x", "Xanthine");
-    nucleotideName.put("R", "Unknown Purine");
-    nucleotideName.put("r", "Unknown Purine");
-    nucleotideName.put("Y", "Unknown Pyrimidine");
-    nucleotideName.put("y", "Unknown Pyrimidine");
-    nucleotideName.put("N", "Unknown");
-    nucleotideName.put("n", "Unknown");
-    nucleotideName.put("W", "Weak nucleotide (A or T)");
-    nucleotideName.put("w", "Weak nucleotide (A or T)");
-    nucleotideName.put("S", "Strong nucleotide (G or C)");
-    nucleotideName.put("s", "Strong nucleotide (G or C)");
-    nucleotideName.put("M", "Amino (A or C)");
-    nucleotideName.put("m", "Amino (A or C)");
-    nucleotideName.put("K", "Keto (G or T)");
-    nucleotideName.put("k", "Keto (G or T)");
-    nucleotideName.put("B", "Not A (G or C or T)");
-    nucleotideName.put("b", "Not A (G or C or T)");
-    nucleotideName.put("H", "Not G (A or C or T)");
-    nucleotideName.put("h", "Not G (A or C or T)");
-    nucleotideName.put("D", "Not C (A or G or T)");
-    nucleotideName.put("d", "Not C (A or G or T)");
-    nucleotideName.put("V", "Not T (A or G or C");
-    nucleotideName.put("v", "Not T (A or G or C");
+    for (int i = 0; i < namesArray.length; i++)
+    {
+      char c = namesArray[i][0].charAt(0);
+      nucleotideIndex[c] = i;
+      // Character.toUpperCase is Locale insensitive
+      nucleotideIndex[Character.toUpperCase(c)] = i;
+      nucleotideName.put(namesArray[i][0], namesArray[i][1]);
+      nucleotideName.put(namesArray[i][0].toUpperCase(Locale.ROOT),
+              namesArray[i][1]);
+    }
 
   }
 
@@ -363,6 +339,37 @@ public class ResidueProperties
       Color.white, // R
       Color.white, // Y
       Color.white, // N
+      Color.white, // w
+      Color.white, // s
+      Color.white, // m
+      Color.white, // k
+      Color.white, // b
+      Color.white, // h
+      Color.white, // d
+      Color.white, // v
+      Color.white, // Gap
+  };
+
+  // this colour scheme devised by sduce
+  public static final Color[] nucleotideAmbiguity = {
+      Color.decode("#f0fff0"), // a
+      Color.decode("#f0fff0"), // c
+      Color.decode("#f0fff0"), // g
+      Color.decode("#f0fff0"), // t
+      Color.decode("#f0fff0"), // u
+      Color.decode("#ffffff"), // i
+      Color.decode("#4f6f6f"), // x
+      Color.decode("#CD5C5C"), // r
+      Color.decode("#008000"), // y
+      Color.decode("#4682B4"), // w
+      Color.decode("#FF8C00"), // s
+      Color.decode("#9ACD32"), // m
+      Color.decode("#9932CC"), // k
+      Color.decode("#8b4513"), // b
+      Color.decode("#808080"), // h
+      Color.decode("#483D8B"), // d
+      Color.decode("#b8860b"), // v
+      Color.decode("#2f4f4f"), // n
       Color.white, // Gap
   };
 
index cd98ee7..9fea705 100644 (file)
  */
 package jalview.util;
 
-import jalview.datamodel.SequenceI;
-
 import java.util.ArrayList;
 import java.util.List;
 
+import jalview.bin.Cache;
+import jalview.bin.Console;
+import jalview.datamodel.SequenceI;
+
 /**
  * Assorted methods for analysing or comparing sequences.
  */
@@ -32,7 +34,15 @@ public class Comparison
 {
   private static final int EIGHTY_FIVE = 85;
 
-  private static final int TO_UPPER_CASE = 'a' - 'A';
+  private static final int NUCLEOTIDE_COUNT_PERCENT;
+
+  private static final int NUCLEOTIDE_COUNT_LONG_SEQUENCE_AMBIGUITY_PERCENT;
+
+  private static final int NUCLEOTIDE_COUNT_SHORT_SEQUENCE;
+
+  private static final int NUCLEOTIDE_COUNT_VERY_SHORT_SEQUENCE;
+
+  private static final boolean NUCLEOTIDE_AMBIGUITY_DETECTION;
 
   public static final char GAP_SPACE = ' ';
 
@@ -44,6 +54,21 @@ public class Comparison
           new char[]
           { GAP_SPACE, GAP_DOT, GAP_DASH });
 
+  static
+  {
+    // these options read only at start of session
+    NUCLEOTIDE_COUNT_PERCENT = Cache.getDefault("NUCLEOTIDE_COUNT_PERCENT",
+            55);
+    NUCLEOTIDE_COUNT_LONG_SEQUENCE_AMBIGUITY_PERCENT = Cache.getDefault(
+            "NUCLEOTIDE_COUNT_LONG_SEQUENCE_AMBIGUITY_PERCENT", 95);
+    NUCLEOTIDE_COUNT_SHORT_SEQUENCE = Cache
+            .getDefault("NUCLEOTIDE_COUNT_SHORT", 100);
+    NUCLEOTIDE_COUNT_VERY_SHORT_SEQUENCE = Cache
+            .getDefault("NUCLEOTIDE_COUNT_VERY_SHORT", 4);
+    NUCLEOTIDE_AMBIGUITY_DETECTION = Cache
+            .getDefault("NUCLEOTIDE_AMBIGUITY_DETECTION", true);
+  }
+
   /**
    * DOCUMENT ME!
    * 
@@ -91,7 +116,6 @@ public class Comparison
       jlen--;
     }
 
-    int count = 0;
     int match = 0;
     float pid = -1;
 
@@ -104,8 +128,6 @@ public class Comparison
         {
           match++;
         }
-
-        count++;
       }
 
       pid = (float) match / (float) ilen * 100;
@@ -119,8 +141,6 @@ public class Comparison
         {
           match++;
         }
-
-        count++;
       }
 
       pid = (float) match / (float) jlen * 100;
@@ -256,7 +276,7 @@ public class Comparison
    */
   public static final boolean isGap(char c)
   {
-    return (c == GAP_DASH || c == GAP_DOT || c == GAP_SPACE) ? true : false;
+    return c == GAP_DASH || c == GAP_DOT || c == GAP_SPACE;
   }
 
   /**
@@ -268,19 +288,22 @@ public class Comparison
    */
   public static final boolean isNucleotide(SequenceI seq)
   {
-    if (seq == null)
+    if (seq == null || seq.getLength() == 0)
     {
       return false;
     }
-    long ntCount = 0;
-    long aaCount = 0;
-    long nCount = 0;
+    long ntCount = 0; // nucleotide symbol count (does not include ntaCount)
+    long aaCount = 0; // non-nucleotide, non-gap symbol count (includes nCount
+                      // and ntaCount)
+    long nCount = 0; // "Unknown" (N) symbol count
+    long xCount = 0; // Also used as "Unknown" (X) symbol count
+    long ntaCount = 0; // nucleotide ambiguity symbol count
 
     int len = seq.getLength();
     for (int i = 0; i < len; i++)
     {
       char c = seq.getCharAt(i);
-      if (isNucleotide(c) || isX(c))
+      if (isNucleotide(c))
       {
         ntCount++;
       }
@@ -291,21 +314,112 @@ public class Comparison
         {
           nCount++;
         }
+        else
+        {
+          if (isX(c))
+          {
+            xCount++;
+          }
+          if (isNucleotideAmbiguity(c))
+          {
+            ntaCount++;
+          }
+        }
       }
     }
-    /*
-     * Check for nucleotide count > 85% of total count (in a form that evades
-     * int / float conversion or divide by zero).
-     */
-    if ((ntCount + nCount) * 100 > EIGHTY_FIVE * (ntCount + aaCount))
+    long allCount = ntCount + aaCount;
+
+    if (NUCLEOTIDE_AMBIGUITY_DETECTION)
     {
-      return ntCount > 0; // all N is considered protein. Could use a threshold
-                          // here too
+      Console.debug("Performing new nucleotide detection routine");
+      if (allCount > NUCLEOTIDE_COUNT_SHORT_SEQUENCE)
+      {
+        // a long sequence.
+        // check for at least 55% nucleotide, and nucleotide and ambiguity codes
+        // (including N) must make up 95%
+        return ntCount * 100 > NUCLEOTIDE_COUNT_PERCENT * allCount
+                && 100 * (ntCount + nCount
+                        + ntaCount) > NUCLEOTIDE_COUNT_LONG_SEQUENCE_AMBIGUITY_PERCENT
+                                * allCount;
+      }
+      else if (allCount > NUCLEOTIDE_COUNT_VERY_SHORT_SEQUENCE)
+      {
+        // a short sequence.
+        // check if a short sequence is at least 55% nucleotide and the rest of
+        // the symbols are all X or all N
+        if (ntCount * 100 > NUCLEOTIDE_COUNT_PERCENT * allCount
+                && (nCount == aaCount || xCount == aaCount))
+        {
+          return true;
+        }
+
+        // a short sequence.
+        // check for at least x% nucleotide and all the rest nucleotide
+        // ambiguity codes (including N), where x slides from 75% for sequences
+        // of length 4 (i.e. only one non-nucleotide) to 55% for sequences of
+        // length 100
+        return myShortSequenceNucleotideProportionCount(ntCount, allCount)
+                && nCount + ntaCount == aaCount;
+      }
+      else
+      {
+        // a very short sequence. (<4)
+        // all bases must be nucleotide
+        return ntCount > 0 && ntCount == allCount;
+      }
     }
     else
     {
-      return false;
+      Console.debug("Performing old nucleotide detection routine");
+      /*
+       * Check for nucleotide count > 85% of total count (in a form that evades
+       * int / float conversion or divide by zero).
+       */
+      if ((ntCount + nCount) * 100 > EIGHTY_FIVE * allCount)
+      {
+        return ntCount > 0; // all N is considered protein. Could use a
+                            // threshold here too
+      }
     }
+    return false;
+  }
+
+  protected static boolean myShortSequenceNucleotideProportionCount(
+          long ntCount, long allCount)
+  {
+    /**
+     * this method is valid only for NUCLEOTIDE_COUNT_VERY_SHORT_SEQUENCE <=
+     * allCount <= NUCLEOTIDE_COUNT_SHORT_SEQUENCE
+     */
+    // the following is a simplified integer version of:
+    //
+    // a := allCount # the number of bases in the sequence
+    // n : = ntCount # the number of definite nucleotide bases
+    // vs := NUCLEOTIDE_COUNT_VERY_SHORT_SEQUENCE
+    // s := NUCLEOTIDE_COUNT_SHORT_SEQUENCE
+    // lp := NUCLEOTIDE_COUNT_LOWER_PERCENT
+    // vsp := 1 - (1/a) # this is the proportion of required definite
+    // nucleotides
+    // # in a VERY_SHORT Sequence (4 bases).
+    // # This should be equivalent to all but one base in the sequence.
+    // p := (a - vs)/(s - vs) # proportion of the way between
+    // # VERY_SHORT and SHORT thresholds.
+    // tp := vsp + p * (lp/100 - vsp) # the proportion of definite nucleotides
+    // # required for this length of sequence.
+    // minNt := tp * a # the minimum number of definite nucleotide bases
+    // # required for this length of sequence.
+    //
+    // We are then essentially returning:
+    // # ntCount >= 55% of allCount and the rest are all nucleotide ambiguity:
+    // ntCount >= tp * allCount && nCount + ntaCount == aaCount
+    // but without going into float/double land
+    long LHS = 100 * allCount
+            * (NUCLEOTIDE_COUNT_SHORT_SEQUENCE
+                    - NUCLEOTIDE_COUNT_VERY_SHORT_SEQUENCE)
+            * (ntCount - allCount + 1);
+    long RHS = allCount * (allCount - NUCLEOTIDE_COUNT_VERY_SHORT_SEQUENCE)
+            * (allCount * NUCLEOTIDE_COUNT_PERCENT - 100 * allCount + 100);
+    return LHS >= RHS;
   }
 
   /**
@@ -350,11 +464,16 @@ public class Comparison
    */
   public static boolean isNucleotide(char c)
   {
-    if ('a' <= c && c <= 'z')
-    {
-      c -= TO_UPPER_CASE;
-    }
-    switch (c)
+    return isNucleotide(c, false);
+  }
+
+  /**
+   * includeAmbiguity = true also includes Nucleotide Ambiguity codes
+   */
+  public static boolean isNucleotide(char c, boolean includeAmbiguity)
+  {
+    char C = Character.toUpperCase(c);
+    switch (C)
     {
     case 'A':
     case 'C':
@@ -363,29 +482,48 @@ public class Comparison
     case 'U':
       return true;
     }
+    if (includeAmbiguity)
+    {
+      boolean ambiguity = isNucleotideAmbiguity(C);
+      if (ambiguity)
+        return true;
+    }
     return false;
   }
 
-  public static boolean isN(char c)
+  /**
+   * Tests *only* nucleotide ambiguity codes (and not definite nucleotide codes)
+   */
+  public static boolean isNucleotideAmbiguity(char c)
   {
-    switch (c)
+    switch (Character.toUpperCase(c))
     {
-    case 'N':
-    case 'n':
+    case 'I':
+    case 'X':
+    case 'R':
+    case 'Y':
+    case 'W':
+    case 'S':
+    case 'M':
+    case 'K':
+    case 'B':
+    case 'H':
+    case 'D':
+    case 'V':
       return true;
+    case 'N': // not counting N as nucleotide
     }
     return false;
   }
 
+  public static boolean isN(char c)
+  {
+    return 'n' == Character.toLowerCase(c);
+  }
+
   public static boolean isX(char c)
   {
-    switch (c)
-    {
-    case 'X':
-    case 'x':
-      return true;
-    }
-    return false;
+    return 'x' == Character.toLowerCase(c);
   }
 
   /**
@@ -398,6 +536,12 @@ public class Comparison
    */
   public static boolean isNucleotideSequence(String s, boolean allowGaps)
   {
+    return isNucleotideSequence(s, allowGaps, false);
+  }
+
+  public static boolean isNucleotideSequence(String s, boolean allowGaps,
+          boolean includeAmbiguous)
+  {
     if (s == null)
     {
       return false;
@@ -405,7 +549,7 @@ public class Comparison
     for (int i = 0; i < s.length(); i++)
     {
       char c = s.charAt(i);
-      if (!isNucleotide(c))
+      if (!isNucleotide(c, includeAmbiguous))
       {
         if (!allowGaps || !isGap(c))
         {
@@ -456,13 +600,7 @@ public class Comparison
   public static boolean isSameResidue(char c1, char c2,
           boolean caseSensitive)
   {
-    if (caseSensitive)
-    {
-      return (c1 == c2);
-    }
-    else
-    {
-      return Character.toUpperCase(c1) == Character.toUpperCase(c2);
-    }
+    return caseSensitive ? c1 == c2
+            : Character.toUpperCase(c1) == Character.toUpperCase(c2);
   }
 }
index e17a336..98d5e11 100755 (executable)
@@ -30,6 +30,7 @@ import java.util.Map;
 
 import com.stevesoft.pat.Regex;
 
+import jalview.bin.Console;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.DBRefSource;
 import jalview.datamodel.Mapping;
@@ -810,9 +811,12 @@ public class DBRefUtils
           // toPromote.add(cand);
           if (!cand.isPrimaryCandidate())
           {
-            System.out.println(
-                    "Warning: Couldn't promote dbref " + cand.toString()
-                            + " for sequence " + sequence.toString());
+            if (Console.isDebugEnabled())
+            {
+              Console.debug(
+                      "Warning: Couldn't promote dbref " + cand.toString()
+                              + " for sequence " + sequence.toString());
+            }
           }
         }
       }
diff --git a/src/jalview/util/SparseCount.java~ b/src/jalview/util/SparseCount.java~
deleted file mode 100644 (file)
index e6b45f2..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-package jalview.util;
-
-import jalview.ext.android.SparseIntArray;
-import jalview.ext.android.SparseShortArray;
-
-/**
- * A class to count occurrences of characters with minimal memory footprint.
- * Sparse arrays of short values are used to hold the counts, with automatic
- * promotion to arrays of int if any count exceeds the maximum value for a
- * short.
- * 
- * @author gmcarstairs
- *
- */
-public class SparseCount
-{
-  private static final int DEFAULT_PROFILE_SIZE = 2;
-
-  /*
-   * array of keys (chars) and values (counts)
-   * held either as shorts or (if shorts overflow) as ints 
-   */
-  private SparseShortArray shortProfile;
-
-  private SparseIntArray intProfile;
-
-  /*
-   * flag is set true after short overflow occurs
-   */
-  private boolean useInts;
-
-  /**
-   * Constructor which initially creates a new sparse array of short values to
-   * hold counts.
-   * 
-   * @param profileSize
-   */
-  public SparseCount(int profileSize)
-  {
-    this.shortProfile = new SparseShortArray(profileSize);
-  }
-
-  /**
-   * Constructor which allocates an initial count array for only two distinct
-   * values (the array will grow if needed)
-   */
-  public SparseCount()
-  {
-    this(DEFAULT_PROFILE_SIZE);
-  }
-
-  /**
-   * Adds the given value for the given key (or sets the initial value), and
-   * returns the new value
-   * 
-   * @param key
-   * @param value
-   */
-  public int add(int key, int value)
-  {
-    int newValue = 0;
-    if (useInts)
-    {
-      newValue = intProfile.add(key, value);
-    }
-    else
-    {
-      try {
-        newValue = shortProfile.add(key, value);
-      } catch (ArithmeticException e) {
-        handleOverflow();
-        newValue = intProfile.add(key, value);
-      }
-    }
-    return newValue;
-  }
-
-  /**
-   * Switch from counting shorts to counting ints
-   */
-  synchronized void handleOverflow()
-  {
-    int size = shortProfile.size();
-    intProfile = new SparseIntArray(size);
-    for (int i = 0; i < size; i++)
-    {
-      short key = shortProfile.keyAt(i);
-      short value = shortProfile.valueAt(i);
-      intProfile.put(key, value);
-    }
-    shortProfile = null;
-    useInts = true;
-  }
-
-  /**
-   * Returns the size of the profile (number of distinct items counted)
-   * 
-   * @return
-   */
-  public int size()
-  {
-    return useInts ? intProfile.size() : shortProfile.size();
-  }
-
-  /**
-   * Returns the value for the key (zero if no such key)
-   * 
-   * @param key
-   * @return
-   */
-  public int get(int key)
-  {
-    return useInts ? intProfile.get(key) : shortProfile.get(key);
-  }
-
-  /**
-   * Sets the value for the given key
-   * 
-   * @param key
-   * @param value
-   */
-  public void put(int key, int value)
-  {
-    if (useInts)
-    {
-      intProfile.put(key, value);
-    }
-    else
-    {
-      shortProfile.put(key, value);
-    }
-  }
-
-  public int keyAt(int k)
-  {
-    return useInts ? intProfile.keyAt(k) : shortProfile.keyAt(k);
-  }
-
-  public int valueAt(int k)
-  {
-    return useInts ? intProfile.valueAt(k) : shortProfile.valueAt(k);
-  }
-
-  /**
-   * Answers true if this object wraps arrays of int values, false if using
-   * short values
-   * 
-   * @return
-   */
-  boolean isUsingInt()
-  {
-    return useInts;
-  }
-}
index fde80f7..1fc41e7 100644 (file)
@@ -20,6 +20,8 @@
  */
 package jalview.util.dialogrunner;
 
+import java.util.concurrent.Callable;
+
 /**
  * An interface for blocking dialog response handling. This is motivated by
  * JalviewJS - when running as Javascript, there is only a single thread, and
@@ -41,7 +43,9 @@ public interface DialogRunnerI
    * @param action
    * @return
    */
-  DialogRunnerI setResponseHandler(Object response, Runnable action);
+  DialogRunnerI setResponseHandler(Object response, Callable<Void> action);
+
+  // DialogRunnerI setResponseHandler(Object response, Runnable action);
 
   /**
    * Runs the registered handler (if any) for the given response. The default
index 7849c2d..a648b34 100644 (file)
  */
 package jalview.viewmodel;
 
+import java.awt.Color;
+import java.beans.PropertyChangeSupport;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Deque;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.analysis.Conservation;
 import jalview.analysis.TreeModel;
@@ -29,6 +41,7 @@ import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.api.FeaturesDisplayedI;
 import jalview.api.ViewStyleI;
+import jalview.bin.Console;
 import jalview.commands.CommandI;
 import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.AlignmentAnnotation;
@@ -46,6 +59,7 @@ import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceCollectionI;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.project.Jalview2XML;
 import jalview.renderer.ResidueShader;
 import jalview.renderer.ResidueShaderI;
 import jalview.schemes.ColourSchemeI;
@@ -62,18 +76,6 @@ import jalview.workers.ComplementConsensusThread;
 import jalview.workers.ConsensusThread;
 import jalview.workers.StrucConsensusThread;
 
-import java.awt.Color;
-import java.beans.PropertyChangeSupport;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Deque;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 /**
  * base class holding visualization and analysis attributes and common logic for
  * an active alignment view displayed in the GUI
@@ -101,6 +103,11 @@ public abstract class AlignmentViewport
   protected Deque<CommandI> redoList = new ArrayDeque<>();
 
   /**
+   * used to determine if quit should be confirmed
+   */
+  private boolean savedUpToDate = false;
+
+  /**
    * alignment displayed in the viewport. Please use get/setter
    */
   protected AlignmentI alignment;
@@ -2615,6 +2622,8 @@ public abstract class AlignmentViewport
     {
       this.historyList.push(command);
       broadcastCommand(command, false);
+      setSavedUpToDate(false);
+      Jalview2XML.setStateSavedUpToDate(false);
     }
   }
 
@@ -3103,4 +3112,18 @@ public abstract class AlignmentViewport
     return (alignment.getHiddenColumns().getVisContigsIterator(start, end,
             false));
   }
+
+  public void setSavedUpToDate(boolean s)
+  {
+    Console.debug(
+            "Setting " + this.getViewId() + " setSavedUpToDate to " + s);
+    savedUpToDate = s;
+  }
+
+  public boolean savedUpToDate()
+  {
+    Console.debug("Returning " + this.getViewId() + " savedUpToDate value: "
+            + savedUpToDate);
+    return savedUpToDate;
+  }
 }
diff --git a/src/jalview/ws/dbsources/Pdb.java~ b/src/jalview/ws/dbsources/Pdb.java~
deleted file mode 100644 (file)
index 6c2f70a..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ 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.ws.dbsources;
-
-import jalview.api.FeatureSettingsModelI;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.DBRefSource;
-import jalview.datamodel.PDBEntry;
-import jalview.datamodel.SequenceI;
-import jalview.io.FormatAdapter;
-import jalview.io.PDBFeatureSettings;
-import jalview.util.MessageManager;
-import jalview.ws.ebi.EBIFetchClient;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Vector;
-
-import com.stevesoft.pat.Regex;
-
-/**
- * @author JimP
- * 
- */
-public class Pdb extends EbiFileRetrievedProxy
-{
-  public Pdb()
-  {
-    super();
-  }
-
-  public static final String FEATURE_INSERTION = "INSERTION";
-
-  public static final String FEATURE_RES_NUM = "RESNUM";
-
-  private static String currentDefaultFormat = DBRefSource.PDB;
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see jalview.ws.DbSourceProxy#getAccessionSeparator()
-   */
-  @Override
-  public String getAccessionSeparator()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see jalview.ws.DbSourceProxy#getAccessionValidator()
-   */
-  @Override
-  public Regex getAccessionValidator()
-  {
-    return new Regex("([1-9][0-9A-Za-z]{3}):?([ _A-Za-z0-9]?)");
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see jalview.ws.DbSourceProxy#getDbSource()
-   */
-  @Override
-  public String getDbSource()
-  {
-    return DBRefSource.PDB;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see jalview.ws.DbSourceProxy#getDbVersion()
-   */
-  @Override
-  public String getDbVersion()
-  {
-    return "0";
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see jalview.ws.DbSourceProxy#getSequenceRecords(java.lang.String[])
-   */
-  @Override
-  public AlignmentI getSequenceRecords(String queries) throws Exception
-  {
-    AlignmentI pdbAlignment = null;
-    Vector result = new Vector();
-    String chain = null;
-    String id = null;
-    if (queries.indexOf(":") > -1)
-    {
-      chain = queries.substring(queries.indexOf(":") + 1);
-      id = queries.substring(0, queries.indexOf(":"));
-    }
-    else
-    {
-      id = queries;
-    }
-    if (queries.length() > 4 && chain == null)
-    {
-      chain = queries.substring(4, 5);
-      id = queries.substring(0, 4);
-    }
-    if (!isValidReference(id))
-    {
-      System.err.println("Ignoring invalid pdb query: '" + id + "'");
-      stopQuery();
-      return null;
-    }
-    String ext = getCurrentDefaultFormat().equalsIgnoreCase("mmcif") ? ".cif"
-            : ".xml";
-    EBIFetchClient ebi = new EBIFetchClient();
-    file = ebi.fetchDataAsFile("pdb:" + id,
-<<<<<<< HEAD
-            getCurrentDefaultFomart().toLowerCase(), ext)
-=======
-            getCurrentDefaultFormat().toLowerCase(), "raw", ext)
->>>>>>> develop
-            .getAbsolutePath();
-    stopQuery();
-    if (file == null)
-    {
-      return null;
-    }
-    try
-    {
-
-      pdbAlignment = new FormatAdapter().readFile(file,
-              jalview.io.AppletFormatAdapter.FILE,
-              getCurrentDefaultFormat());
-      if (pdbAlignment != null)
-      {
-        List<SequenceI> toremove = new ArrayList<SequenceI>();
-        for (SequenceI pdbcs : pdbAlignment.getSequences())
-        {
-          String chid = null;
-          // Mapping map=null;
-          for (PDBEntry pid : pdbcs.getAllPDBEntries())
-          {
-            if (pid.getFile() == file)
-            {
-              chid = pid.getChainCode();
-
-            }
-            ;
-
-          }
-          if (chain == null
-                  || (chid != null && (chid.equals(chain)
-                          || chid.trim().equals(chain.trim()) || (chain
-                          .trim().length() == 0 && chid.equals("_")))))
-          {
-            pdbcs.setName(jalview.datamodel.DBRefSource.PDB + "|" + id
-                    + "|" + pdbcs.getName());
-            // Might need to add more metadata to the PDBEntry object
-            // like below
-            /*
-             * PDBEntry entry = new PDBEntry(); // Construct the PDBEntry
-             * entry.setId(id); if (entry.getProperty() == null)
-             * entry.setProperty(new Hashtable());
-             * entry.getProperty().put("chains", pdbchain.id + "=" +
-             * sq.getStart() + "-" + sq.getEnd());
-             * sq.getDatasetSequence().addPDBId(entry);
-             */
-            // Add PDB DB Refs
-            // We make a DBRefEtntry because we have obtained the PDB file from
-            // a
-            // verifiable source
-            // JBPNote - PDB DBRefEntry should also carry the chain and mapping
-            // information
-            DBRefEntry dbentry = new DBRefEntry(getDbSource(),
-                    getDbVersion(), (chid == null ? id : id + chid));
-            // dbentry.setMap()
-            pdbcs.addDBRef(dbentry);
-          }
-          else
-          {
-            // mark this sequence to be removed from the alignment
-            // - since it's not from the right chain
-            toremove.add(pdbcs);
-          }
-        }
-        // now remove marked sequences
-        for (SequenceI pdbcs : toremove)
-        {
-          pdbAlignment.deleteSequence(pdbcs);
-          if (pdbcs.getAnnotation() != null)
-          {
-            for (AlignmentAnnotation aa : pdbcs.getAnnotation())
-            {
-              pdbAlignment.deleteAnnotation(aa);
-            }
-          }
-        }
-      }
-
-      if (pdbAlignment == null || pdbAlignment.getHeight() < 1)
-      {
-        throw new Exception(MessageManager.formatMessage(
-                "exception.no_pdb_records_for_chain", new String[] { id,
-                    ((chain == null) ? "' '" : chain) }));
-      }
-
-    } catch (Exception ex) // Problem parsing PDB file
-    {
-      stopQuery();
-      throw (ex);
-    }
-    return pdbAlignment;
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see jalview.ws.DbSourceProxy#isValidReference(java.lang.String)
-   */
-  @Override
-  public boolean isValidReference(String accession)
-  {
-    Regex r = getAccessionValidator();
-    return r.search(accession.trim());
-  }
-
-  /**
-   * obtain human glyoxalase chain A sequence
-   */
-  @Override
-  public String getTestQuery()
-  {
-    return "1QIPA";
-  }
-
-  @Override
-  public String getDbName()
-  {
-    return "PDB"; // getDbSource();
-  }
-
-  @Override
-  public int getTier()
-  {
-    return 0;
-  }
-
-  public static String getCurrentDefaultFormat()
-  {
-    return currentDefaultFormat;
-  }
-
-  public static void setCurrentDefaultFormat(String currentDefaultFomart)
-  {
-    Pdb.currentDefaultFormat = currentDefaultFomart;
-  }
-
-  /**
-   * Returns a descriptor for suitable feature display settings with
-   * <ul>
-   * <li>ResNums or insertions features visible</li>
-   * <li>insertions features coloured red</li>
-   * <li>ResNum features coloured by label</li>
-   * <li>Insertions displayed above (on top of) ResNums</li>
-   * </ul>
-   */
-  @Override
-  public FeatureSettingsModelI getFeatureColourScheme()
-  {
-    return new PDBFeatureSettings();
-  }
-}
index 6e73e7b..7c061d7 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2018.09.14 at 02:46:00 PM BST 
+// Generated on: 2023.01.31 at 04:07:09 PM GMT 
 //
 
+
 package jalview.xml.binding.embl;
 
 import java.util.ArrayList;
@@ -14,13 +15,11 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for EntrySetType complex type.
+ * <p>Java class for EntrySetType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="EntrySetType">
@@ -37,42 +36,41 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "EntrySetType", propOrder = { "entry" })
-public class EntrySetType
-{
+@XmlType(name = "EntrySetType", propOrder = {
+    "entry"
+})
+public class EntrySetType {
 
-  @XmlElement(required = true)
-  protected List<EntryType> entry;
+    @XmlElement(required = true)
+    protected List<EntryType> entry;
 
-  /**
-   * Gets the value of the entry property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the entry property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEntry().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link EntryType }
-   * 
-   * 
-   */
-  public List<EntryType> getEntry()
-  {
-    if (entry == null)
-    {
-      entry = new ArrayList<EntryType>();
+    /**
+     * Gets the value of the entry property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the entry property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEntry().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EntryType }
+     * 
+     * 
+     */
+    public List<EntryType> getEntry() {
+        if (entry == null) {
+            entry = new ArrayList<EntryType>();
+        }
+        return this.entry;
     }
-    return this.entry;
-  }
 
 }
index 6bdc35f..2791f66 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2018.09.14 at 02:46:00 PM BST 
+// Generated on: 2023.01.31 at 04:07:09 PM GMT 
 //
 
+
 package jalview.xml.binding.embl;
 
 import java.math.BigInteger;
@@ -19,13 +20,11 @@ import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.datatype.XMLGregorianCalendar;
 
+
 /**
- * <p>
- * Java class for EntryType complex type.
+ * <p>Java class for EntryType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="EntryType">
@@ -226,1666 +225,669 @@ import javax.xml.datatype.XMLGregorianCalendar;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "EntryType",
-  propOrder =
-  { "secondaryAccession", "projectAccession", "description", "comment",
-      "keyword", "reference", "xref", "feature", "assembly", "contig",
-      "sequence" })
-public class EntryType
-{
-
-  protected List<String> secondaryAccession;
-
-  protected List<String> projectAccession;
-
-  @XmlElement(required = true)
-  protected String description;
-
-  protected String comment;
-
-  protected List<String> keyword;
-
-  protected List<EntryType.Reference> reference;
-
-  protected List<XrefType> xref;
-
-  protected List<EntryType.Feature> feature;
-
-  protected EntryType.Assembly assembly;
-
-  protected EntryType.Contig contig;
-
-  protected String sequence;
-
-  @XmlAttribute(name = "accession", required = true)
-  protected String accession;
-
-  @XmlAttribute(name = "version", required = true)
-  protected BigInteger version;
-
-  @XmlAttribute(name = "entryVersion")
-  protected BigInteger entryVersion;
-
-  @XmlAttribute(name = "dataClass", required = true)
-  protected String dataClass;
-
-  @XmlAttribute(name = "taxonomicDivision", required = true)
-  protected String taxonomicDivision;
-
-  @XmlAttribute(name = "moleculeType", required = true)
-  protected String moleculeType;
-
-  @XmlAttribute(name = "sequenceLength", required = true)
-  protected BigInteger sequenceLength;
-
-  @XmlAttribute(name = "topology", required = true)
-  protected String topology;
-
-  @XmlAttribute(name = "firstPublic")
-  @XmlSchemaType(name = "date")
-  protected XMLGregorianCalendar firstPublic;
-
-  @XmlAttribute(name = "firstPublicRelease")
-  protected BigInteger firstPublicRelease;
-
-  @XmlAttribute(name = "lastUpdated")
-  @XmlSchemaType(name = "date")
-  protected XMLGregorianCalendar lastUpdated;
-
-  @XmlAttribute(name = "lastUpdatedRelease")
-  protected BigInteger lastUpdatedRelease;
-
-  /**
-   * Gets the value of the secondaryAccession property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the secondaryAccession property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getSecondaryAccession().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getSecondaryAccession()
-  {
-    if (secondaryAccession == null)
-    {
-      secondaryAccession = new ArrayList<String>();
-    }
-    return this.secondaryAccession;
-  }
-
-  /**
-   * Gets the value of the projectAccession property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the projectAccession property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getProjectAccession().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getProjectAccession()
-  {
-    if (projectAccession == null)
-    {
-      projectAccession = new ArrayList<String>();
-    }
-    return this.projectAccession;
-  }
-
-  /**
-   * Gets the value of the description property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDescription()
-  {
-    return description;
-  }
-
-  /**
-   * Sets the value of the description property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDescription(String value)
-  {
-    this.description = value;
-  }
-
-  /**
-   * Gets the value of the comment property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getComment()
-  {
-    return comment;
-  }
-
-  /**
-   * Sets the value of the comment property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setComment(String value)
-  {
-    this.comment = value;
-  }
-
-  /**
-   * Gets the value of the keyword property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the keyword property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getKeyword().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getKeyword()
-  {
-    if (keyword == null)
-    {
-      keyword = new ArrayList<String>();
-    }
-    return this.keyword;
-  }
-
-  /**
-   * Gets the value of the reference property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the reference property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getReference().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EntryType.Reference }
-   * 
-   * 
-   */
-  public List<EntryType.Reference> getReference()
-  {
-    if (reference == null)
-    {
-      reference = new ArrayList<EntryType.Reference>();
-    }
-    return this.reference;
-  }
-
-  /**
-   * Gets the value of the xref property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the xref property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getXref().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link XrefType }
-   * 
-   * 
-   */
-  public List<XrefType> getXref()
-  {
-    if (xref == null)
-    {
-      xref = new ArrayList<XrefType>();
-    }
-    return this.xref;
-  }
-
-  /**
-   * Gets the value of the feature property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the feature property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getFeature().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EntryType.Feature }
-   * 
-   * 
-   */
-  public List<EntryType.Feature> getFeature()
-  {
-    if (feature == null)
-    {
-      feature = new ArrayList<EntryType.Feature>();
-    }
-    return this.feature;
-  }
-
-  /**
-   * Gets the value of the assembly property.
-   * 
-   * @return possible object is {@link EntryType.Assembly }
-   * 
-   */
-  public EntryType.Assembly getAssembly()
-  {
-    return assembly;
-  }
-
-  /**
-   * Sets the value of the assembly property.
-   * 
-   * @param value
-   *          allowed object is {@link EntryType.Assembly }
-   * 
-   */
-  public void setAssembly(EntryType.Assembly value)
-  {
-    this.assembly = value;
-  }
-
-  /**
-   * Gets the value of the contig property.
-   * 
-   * @return possible object is {@link EntryType.Contig }
-   * 
-   */
-  public EntryType.Contig getContig()
-  {
-    return contig;
-  }
-
-  /**
-   * Sets the value of the contig property.
-   * 
-   * @param value
-   *          allowed object is {@link EntryType.Contig }
-   * 
-   */
-  public void setContig(EntryType.Contig value)
-  {
-    this.contig = value;
-  }
-
-  /**
-   * Gets the value of the sequence property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getSequence()
-  {
-    return sequence;
-  }
-
-  /**
-   * Sets the value of the sequence property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setSequence(String value)
-  {
-    this.sequence = value;
-  }
-
-  /**
-   * Gets the value of the accession property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getAccession()
-  {
-    return accession;
-  }
-
-  /**
-   * Sets the value of the accession property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setAccession(String value)
-  {
-    this.accession = value;
-  }
-
-  /**
-   * Gets the value of the version property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getVersion()
-  {
-    return version;
-  }
-
-  /**
-   * Sets the value of the version property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setVersion(BigInteger value)
-  {
-    this.version = value;
-  }
-
-  /**
-   * Gets the value of the entryVersion property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getEntryVersion()
-  {
-    return entryVersion;
-  }
-
-  /**
-   * Sets the value of the entryVersion property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setEntryVersion(BigInteger value)
-  {
-    this.entryVersion = value;
-  }
-
-  /**
-   * Gets the value of the dataClass property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDataClass()
-  {
-    return dataClass;
-  }
-
-  /**
-   * Sets the value of the dataClass property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDataClass(String value)
-  {
-    this.dataClass = value;
-  }
-
-  /**
-   * Gets the value of the taxonomicDivision property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getTaxonomicDivision()
-  {
-    return taxonomicDivision;
-  }
-
-  /**
-   * Sets the value of the taxonomicDivision property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setTaxonomicDivision(String value)
-  {
-    this.taxonomicDivision = value;
-  }
-
-  /**
-   * Gets the value of the moleculeType property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getMoleculeType()
-  {
-    return moleculeType;
-  }
-
-  /**
-   * Sets the value of the moleculeType property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setMoleculeType(String value)
-  {
-    this.moleculeType = value;
-  }
-
-  /**
-   * Gets the value of the sequenceLength property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getSequenceLength()
-  {
-    return sequenceLength;
-  }
-
-  /**
-   * Sets the value of the sequenceLength property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setSequenceLength(BigInteger value)
-  {
-    this.sequenceLength = value;
-  }
-
-  /**
-   * Gets the value of the topology property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getTopology()
-  {
-    return topology;
-  }
-
-  /**
-   * Sets the value of the topology property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setTopology(String value)
-  {
-    this.topology = value;
-  }
-
-  /**
-   * Gets the value of the firstPublic property.
-   * 
-   * @return possible object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public XMLGregorianCalendar getFirstPublic()
-  {
-    return firstPublic;
-  }
-
-  /**
-   * Sets the value of the firstPublic property.
-   * 
-   * @param value
-   *          allowed object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public void setFirstPublic(XMLGregorianCalendar value)
-  {
-    this.firstPublic = value;
-  }
-
-  /**
-   * Gets the value of the firstPublicRelease property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getFirstPublicRelease()
-  {
-    return firstPublicRelease;
-  }
-
-  /**
-   * Sets the value of the firstPublicRelease property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setFirstPublicRelease(BigInteger value)
-  {
-    this.firstPublicRelease = value;
-  }
-
-  /**
-   * Gets the value of the lastUpdated property.
-   * 
-   * @return possible object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public XMLGregorianCalendar getLastUpdated()
-  {
-    return lastUpdated;
-  }
-
-  /**
-   * Sets the value of the lastUpdated property.
-   * 
-   * @param value
-   *          allowed object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public void setLastUpdated(XMLGregorianCalendar value)
-  {
-    this.lastUpdated = value;
-  }
-
-  /**
-   * Gets the value of the lastUpdatedRelease property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getLastUpdatedRelease()
-  {
-    return lastUpdatedRelease;
-  }
-
-  /**
-   * Sets the value of the lastUpdatedRelease property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setLastUpdatedRelease(BigInteger value)
-  {
-    this.lastUpdatedRelease = value;
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="range" maxOccurs="unbounded">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                 &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                 &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                 &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                 &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                 &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "range" })
-  public static class Assembly
-  {
-
+@XmlType(name = "EntryType", propOrder = {
+    "secondaryAccession",
+    "projectAccession",
+    "description",
+    "comment",
+    "keyword",
+    "reference",
+    "xref",
+    "feature",
+    "assembly",
+    "contig",
+    "sequence"
+})
+public class EntryType {
+
+    protected List<String> secondaryAccession;
+    protected List<String> projectAccession;
     @XmlElement(required = true)
-    protected List<EntryType.Assembly.Range> range;
+    protected String description;
+    protected String comment;
+    protected List<String> keyword;
+    protected List<EntryType.Reference> reference;
+    protected List<XrefType> xref;
+    protected List<EntryType.Feature> feature;
+    protected EntryType.Assembly assembly;
+    protected EntryType.Contig contig;
+    protected String sequence;
+    @XmlAttribute(name = "accession", required = true)
+    protected String accession;
+    @XmlAttribute(name = "version", required = true)
+    protected BigInteger version;
+    @XmlAttribute(name = "entryVersion")
+    protected BigInteger entryVersion;
+    @XmlAttribute(name = "dataClass", required = true)
+    protected String dataClass;
+    @XmlAttribute(name = "taxonomicDivision", required = true)
+    protected String taxonomicDivision;
+    @XmlAttribute(name = "moleculeType", required = true)
+    protected String moleculeType;
+    @XmlAttribute(name = "sequenceLength", required = true)
+    protected BigInteger sequenceLength;
+    @XmlAttribute(name = "topology", required = true)
+    protected String topology;
+    @XmlAttribute(name = "firstPublic")
+    @XmlSchemaType(name = "date")
+    protected XMLGregorianCalendar firstPublic;
+    @XmlAttribute(name = "firstPublicRelease")
+    protected BigInteger firstPublicRelease;
+    @XmlAttribute(name = "lastUpdated")
+    @XmlSchemaType(name = "date")
+    protected XMLGregorianCalendar lastUpdated;
+    @XmlAttribute(name = "lastUpdatedRelease")
+    protected BigInteger lastUpdatedRelease;
 
     /**
-     * Gets the value of the range property.
+     * Gets the value of the secondaryAccession property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the range property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the secondaryAccession property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getRange().add(newItem);
+     *    getSecondaryAccession().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link EntryType.Assembly.Range }
+     * {@link String }
      * 
      * 
      */
-    public List<EntryType.Assembly.Range> getRange()
-    {
-      if (range == null)
-      {
-        range = new ArrayList<EntryType.Assembly.Range>();
-      }
-      return this.range;
+    public List<String> getSecondaryAccession() {
+        if (secondaryAccession == null) {
+            secondaryAccession = new ArrayList<String>();
+        }
+        return this.secondaryAccession;
     }
 
     /**
-     * <p>
-     * Java class for anonymous complex type.
+     * Gets the value of the projectAccession property.
      * 
      * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the projectAccession property.
      * 
+     * <p>
+     * For example, to add a new item, do as follows:
      * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
+     *    getProjectAccession().add(newItem);
      * </pre>
      * 
      * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
      */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class Range
-    {
-
-      @XmlAttribute(name = "begin", required = true)
-      protected BigInteger begin;
-
-      @XmlAttribute(name = "end", required = true)
-      protected BigInteger end;
-
-      @XmlAttribute(name = "primaryBegin")
-      protected BigInteger primaryBegin;
-
-      @XmlAttribute(name = "primaryEnd")
-      protected BigInteger primaryEnd;
-
-      @XmlAttribute(name = "accession", required = true)
-      protected String accession;
-
-      @XmlAttribute(name = "version", required = true)
-      protected BigInteger version;
-
-      @XmlAttribute(name = "complement")
-      protected Boolean complement;
-
-      /**
-       * Gets the value of the begin property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getBegin()
-      {
-        return begin;
-      }
-
-      /**
-       * Sets the value of the begin property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setBegin(BigInteger value)
-      {
-        this.begin = value;
-      }
-
-      /**
-       * Gets the value of the end property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getEnd()
-      {
-        return end;
-      }
-
-      /**
-       * Sets the value of the end property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setEnd(BigInteger value)
-      {
-        this.end = value;
-      }
-
-      /**
-       * Gets the value of the primaryBegin property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getPrimaryBegin()
-      {
-        return primaryBegin;
-      }
-
-      /**
-       * Sets the value of the primaryBegin property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setPrimaryBegin(BigInteger value)
-      {
-        this.primaryBegin = value;
-      }
-
-      /**
-       * Gets the value of the primaryEnd property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getPrimaryEnd()
-      {
-        return primaryEnd;
-      }
-
-      /**
-       * Sets the value of the primaryEnd property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setPrimaryEnd(BigInteger value)
-      {
-        this.primaryEnd = value;
-      }
-
-      /**
-       * Gets the value of the accession property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getAccession()
-      {
-        return accession;
-      }
-
-      /**
-       * Sets the value of the accession property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setAccession(String value)
-      {
-        this.accession = value;
-      }
-
-      /**
-       * Gets the value of the version property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getVersion()
-      {
-        return version;
-      }
-
-      /**
-       * Sets the value of the version property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setVersion(BigInteger value)
-      {
-        this.version = value;
-      }
-
-      /**
-       * Gets the value of the complement property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public boolean isComplement()
-      {
-        if (complement == null)
-        {
-          return false;
-        }
-        else
-        {
-          return complement;
+    public List<String> getProjectAccession() {
+        if (projectAccession == null) {
+            projectAccession = new ArrayList<String>();
         }
-      }
-
-      /**
-       * Sets the value of the complement property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setComplement(Boolean value)
-      {
-        this.complement = value;
-      }
+        return this.projectAccession;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
 
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the comment property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getComment() {
+        return comment;
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;choice maxOccurs="unbounded" minOccurs="0">
-   *           &lt;element name="range">
-   *             &lt;complexType>
-   *               &lt;complexContent>
-   *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                   &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                   &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *                 &lt;/restriction>
-   *               &lt;/complexContent>
-   *             &lt;/complexType>
-   *           &lt;/element>
-   *           &lt;element name="gap">
-   *             &lt;complexType>
-   *               &lt;complexContent>
-   *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                   &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="length" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *                   &lt;attribute name="unknownLength" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *                 &lt;/restriction>
-   *               &lt;/complexContent>
-   *             &lt;/complexType>
-   *           &lt;/element>
-   *         &lt;/choice>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "rangeOrGap" })
-  public static class Contig
-  {
-
-    @XmlElements({
-        @XmlElement(name = "range", type = EntryType.Contig.Range.class),
-        @XmlElement(name = "gap", type = EntryType.Contig.Gap.class) })
-    protected List<Object> rangeOrGap;
+    /**
+     * Sets the value of the comment property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setComment(String value) {
+        this.comment = value;
+    }
 
     /**
-     * Gets the value of the rangeOrGap property.
+     * Gets the value of the keyword property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the rangeOrGap property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the keyword property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getRangeOrGap().add(newItem);
+     *    getKeyword().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link EntryType.Contig.Range } {@link EntryType.Contig.Gap }
+     * {@link String }
      * 
      * 
      */
-    public List<Object> getRangeOrGap()
-    {
-      if (rangeOrGap == null)
-      {
-        rangeOrGap = new ArrayList<Object>();
-      }
-      return this.rangeOrGap;
+    public List<String> getKeyword() {
+        if (keyword == null) {
+            keyword = new ArrayList<String>();
+        }
+        return this.keyword;
     }
 
     /**
-     * <p>
-     * Java class for anonymous complex type.
+     * Gets the value of the reference property.
      * 
      * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the reference property.
      * 
+     * <p>
+     * For example, to add a new item, do as follows:
      * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="length" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="unknownLength" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
+     *    getReference().add(newItem);
      * </pre>
      * 
      * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EntryType.Reference }
+     * 
+     * 
      */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class Gap
-    {
-
-      @XmlAttribute(name = "begin", required = true)
-      protected BigInteger begin;
-
-      @XmlAttribute(name = "end", required = true)
-      protected BigInteger end;
-
-      @XmlAttribute(name = "length", required = true)
-      protected BigInteger length;
-
-      @XmlAttribute(name = "unknownLength")
-      protected Boolean unknownLength;
-
-      /**
-       * Gets the value of the begin property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getBegin()
-      {
-        return begin;
-      }
-
-      /**
-       * Sets the value of the begin property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setBegin(BigInteger value)
-      {
-        this.begin = value;
-      }
-
-      /**
-       * Gets the value of the end property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getEnd()
-      {
-        return end;
-      }
-
-      /**
-       * Sets the value of the end property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setEnd(BigInteger value)
-      {
-        this.end = value;
-      }
-
-      /**
-       * Gets the value of the length property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getLength()
-      {
-        return length;
-      }
-
-      /**
-       * Sets the value of the length property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setLength(BigInteger value)
-      {
-        this.length = value;
-      }
-
-      /**
-       * Gets the value of the unknownLength property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public boolean isUnknownLength()
-      {
-        if (unknownLength == null)
-        {
-          return false;
+    public List<EntryType.Reference> getReference() {
+        if (reference == null) {
+            reference = new ArrayList<EntryType.Reference>();
         }
-        else
-        {
-          return unknownLength;
-        }
-      }
-
-      /**
-       * Sets the value of the unknownLength property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setUnknownLength(Boolean value)
-      {
-        this.unknownLength = value;
-      }
-
+        return this.reference;
     }
 
     /**
-     * <p>
-     * Java class for anonymous complex type.
+     * Gets the value of the xref property.
      * 
      * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the xref property.
      * 
+     * <p>
+     * For example, to add a new item, do as follows:
      * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-     *       &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
+     *    getXref().add(newItem);
      * </pre>
      * 
      * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link XrefType }
+     * 
+     * 
      */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class Range
-    {
-
-      @XmlAttribute(name = "begin", required = true)
-      protected BigInteger begin;
-
-      @XmlAttribute(name = "end", required = true)
-      protected BigInteger end;
-
-      @XmlAttribute(name = "primaryBegin")
-      protected BigInteger primaryBegin;
-
-      @XmlAttribute(name = "primaryEnd")
-      protected BigInteger primaryEnd;
-
-      @XmlAttribute(name = "accession", required = true)
-      protected String accession;
-
-      @XmlAttribute(name = "version", required = true)
-      protected BigInteger version;
-
-      @XmlAttribute(name = "complement")
-      protected Boolean complement;
-
-      /**
-       * Gets the value of the begin property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getBegin()
-      {
-        return begin;
-      }
-
-      /**
-       * Sets the value of the begin property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setBegin(BigInteger value)
-      {
-        this.begin = value;
-      }
-
-      /**
-       * Gets the value of the end property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getEnd()
-      {
-        return end;
-      }
-
-      /**
-       * Sets the value of the end property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setEnd(BigInteger value)
-      {
-        this.end = value;
-      }
-
-      /**
-       * Gets the value of the primaryBegin property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getPrimaryBegin()
-      {
-        return primaryBegin;
-      }
-
-      /**
-       * Sets the value of the primaryBegin property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setPrimaryBegin(BigInteger value)
-      {
-        this.primaryBegin = value;
-      }
-
-      /**
-       * Gets the value of the primaryEnd property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getPrimaryEnd()
-      {
-        return primaryEnd;
-      }
-
-      /**
-       * Sets the value of the primaryEnd property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setPrimaryEnd(BigInteger value)
-      {
-        this.primaryEnd = value;
-      }
-
-      /**
-       * Gets the value of the accession property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getAccession()
-      {
-        return accession;
-      }
-
-      /**
-       * Sets the value of the accession property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setAccession(String value)
-      {
-        this.accession = value;
-      }
-
-      /**
-       * Gets the value of the version property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getVersion()
-      {
-        return version;
-      }
-
-      /**
-       * Sets the value of the version property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setVersion(BigInteger value)
-      {
-        this.version = value;
-      }
-
-      /**
-       * Gets the value of the complement property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public boolean isComplement()
-      {
-        if (complement == null)
-        {
-          return false;
-        }
-        else
-        {
-          return complement;
+    public List<XrefType> getXref() {
+        if (xref == null) {
+            xref = new ArrayList<XrefType>();
         }
-      }
-
-      /**
-       * Sets the value of the complement property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setComplement(Boolean value)
-      {
-        this.complement = value;
-      }
-
+        return this.xref;
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="taxon" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;sequence>
-   *                   &lt;element name="lineage" minOccurs="0">
-   *                     &lt;complexType>
-   *                       &lt;complexContent>
-   *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                           &lt;sequence>
-   *                             &lt;element name="taxon" maxOccurs="unbounded">
-   *                               &lt;complexType>
-   *                                 &lt;complexContent>
-   *                                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                                     &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                                   &lt;/restriction>
-   *                                 &lt;/complexContent>
-   *                               &lt;/complexType>
-   *                             &lt;/element>
-   *                           &lt;/sequence>
-   *                         &lt;/restriction>
-   *                       &lt;/complexContent>
-   *                     &lt;/complexType>
-   *                   &lt;/element>
-   *                 &lt;/sequence>
-   *                 &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="commonName" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="taxId" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *         &lt;element name="xref" type="{}XrefType" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="qualifier" maxOccurs="unbounded" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;sequence>
-   *                   &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *                 &lt;/sequence>
-   *                 &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *       &lt;/sequence>
-   *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="location" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "taxon", "xref", "qualifier" })
-  public static class Feature
-  {
-
-    protected EntryType.Feature.FeatureTaxon taxon;
-
-    protected List<XrefType> xref;
+    /**
+     * Gets the value of the feature property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the feature property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getFeature().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EntryType.Feature }
+     * 
+     * 
+     */
+    public List<EntryType.Feature> getFeature() {
+        if (feature == null) {
+            feature = new ArrayList<EntryType.Feature>();
+        }
+        return this.feature;
+    }
 
-    protected List<EntryType.Feature.Qualifier> qualifier;
+    /**
+     * Gets the value of the assembly property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EntryType.Assembly }
+     *     
+     */
+    public EntryType.Assembly getAssembly() {
+        return assembly;
+    }
 
-    @XmlAttribute(name = "name", required = true)
-    protected String name;
+    /**
+     * Sets the value of the assembly property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EntryType.Assembly }
+     *     
+     */
+    public void setAssembly(EntryType.Assembly value) {
+        this.assembly = value;
+    }
 
-    @XmlAttribute(name = "location", required = true)
-    protected String location;
+    /**
+     * Gets the value of the contig property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EntryType.Contig }
+     *     
+     */
+    public EntryType.Contig getContig() {
+        return contig;
+    }
 
     /**
-     * Gets the value of the taxon property.
+     * Sets the value of the contig property.
      * 
-     * @return possible object is {@link EntryType.Feature.FeatureTaxon }
+     * @param value
+     *     allowed object is
+     *     {@link EntryType.Contig }
+     *     
+     */
+    public void setContig(EntryType.Contig value) {
+        this.contig = value;
+    }
+
+    /**
+     * Gets the value of the sequence property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public EntryType.Feature.FeatureTaxon getTaxon()
-    {
-      return taxon;
+    public String getSequence() {
+        return sequence;
     }
 
     /**
-     * Sets the value of the taxon property.
+     * Sets the value of the sequence property.
      * 
      * @param value
-     *          allowed object is {@link EntryType.Feature.FeatureTaxon }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSequence(String value) {
+        this.sequence = value;
+    }
+
+    /**
+     * Gets the value of the accession property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public void setTaxon(EntryType.Feature.FeatureTaxon value)
-    {
-      this.taxon = value;
+    public String getAccession() {
+        return accession;
     }
 
     /**
-     * Gets the value of the xref property.
+     * Sets the value of the accession property.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the xref property.
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAccession(String value) {
+        this.accession = value;
+    }
+
+    /**
+     * Gets the value of the version property.
      * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets the value of the version property.
      * 
-     * <pre>
-     * getXref().add(newItem);
-     * </pre>
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setVersion(BigInteger value) {
+        this.version = value;
+    }
+
+    /**
+     * Gets the value of the entryVersion property.
      * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getEntryVersion() {
+        return entryVersion;
+    }
+
+    /**
+     * Sets the value of the entryVersion property.
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link XrefType
-     * }
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setEntryVersion(BigInteger value) {
+        this.entryVersion = value;
+    }
+
+    /**
+     * Gets the value of the dataClass property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDataClass() {
+        return dataClass;
+    }
+
+    /**
+     * Sets the value of the dataClass property.
      * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public List<XrefType> getXref()
-    {
-      if (xref == null)
-      {
-        xref = new ArrayList<XrefType>();
-      }
-      return this.xref;
+    public void setDataClass(String value) {
+        this.dataClass = value;
     }
 
     /**
-     * Gets the value of the qualifier property.
+     * Gets the value of the taxonomicDivision property.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the qualifier property.
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTaxonomicDivision() {
+        return taxonomicDivision;
+    }
+
+    /**
+     * Sets the value of the taxonomicDivision property.
      * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTaxonomicDivision(String value) {
+        this.taxonomicDivision = value;
+    }
+
+    /**
+     * Gets the value of the moleculeType property.
      * 
-     * <pre>
-     * getQualifier().add(newItem);
-     * </pre>
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMoleculeType() {
+        return moleculeType;
+    }
+
+    /**
+     * Sets the value of the moleculeType property.
      * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMoleculeType(String value) {
+        this.moleculeType = value;
+    }
+
+    /**
+     * Gets the value of the sequenceLength property.
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EntryType.Feature.Qualifier }
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getSequenceLength() {
+        return sequenceLength;
+    }
+
+    /**
+     * Sets the value of the sequenceLength property.
      * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setSequenceLength(BigInteger value) {
+        this.sequenceLength = value;
+    }
+
+    /**
+     * Gets the value of the topology property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public List<EntryType.Feature.Qualifier> getQualifier()
-    {
-      if (qualifier == null)
-      {
-        qualifier = new ArrayList<EntryType.Feature.Qualifier>();
-      }
-      return this.qualifier;
+    public String getTopology() {
+        return topology;
     }
 
     /**
-     * Gets the value of the name property.
+     * Sets the value of the topology property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTopology(String value) {
+        this.topology = value;
+    }
+
+    /**
+     * Gets the value of the firstPublic property.
      * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
      */
-    public String getName()
-    {
-      return name;
+    public XMLGregorianCalendar getFirstPublic() {
+        return firstPublic;
     }
 
     /**
-     * Sets the value of the name property.
+     * Sets the value of the firstPublic property.
      * 
      * @param value
-     *          allowed object is {@link String }
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setFirstPublic(XMLGregorianCalendar value) {
+        this.firstPublic = value;
+    }
+
+    /**
+     * Gets the value of the firstPublicRelease property.
      * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
      */
-    public void setName(String value)
-    {
-      this.name = value;
+    public BigInteger getFirstPublicRelease() {
+        return firstPublicRelease;
     }
 
     /**
-     * Gets the value of the location property.
+     * Sets the value of the firstPublicRelease property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setFirstPublicRelease(BigInteger value) {
+        this.firstPublicRelease = value;
+    }
+
+    /**
+     * Gets the value of the lastUpdated property.
      * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
      */
-    public String getLocation()
-    {
-      return location;
+    public XMLGregorianCalendar getLastUpdated() {
+        return lastUpdated;
     }
 
     /**
-     * Sets the value of the location property.
+     * Sets the value of the lastUpdated property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
      */
-    public void setLocation(String value)
-    {
-      this.location = value;
+    public void setLastUpdated(XMLGregorianCalendar value) {
+        this.lastUpdated = value;
     }
 
     /**
-     * <p>
-     * Java class for anonymous complex type.
+     * Gets the value of the lastUpdatedRelease property.
      * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getLastUpdatedRelease() {
+        return lastUpdatedRelease;
+    }
+
+    /**
+     * Sets the value of the lastUpdatedRelease property.
      * 
-     * <pre>
-     * &lt;complexType>
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setLastUpdatedRelease(BigInteger value) {
+        this.lastUpdatedRelease = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
      *   &lt;complexContent>
      *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      *       &lt;sequence>
-     *         &lt;element name="lineage" minOccurs="0">
+     *         &lt;element name="range" maxOccurs="unbounded">
      *           &lt;complexType>
      *             &lt;complexContent>
      *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *                 &lt;sequence>
-     *                   &lt;element name="taxon" maxOccurs="unbounded">
-     *                     &lt;complexType>
-     *                       &lt;complexContent>
-     *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *                           &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *                         &lt;/restriction>
-     *                       &lt;/complexContent>
-     *                     &lt;/complexType>
-     *                   &lt;/element>
-     *                 &lt;/sequence>
+     *                 &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                 &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                 &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                 &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                 &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                 &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
      *               &lt;/restriction>
      *             &lt;/complexContent>
      *           &lt;/complexType>
      *         &lt;/element>
      *       &lt;/sequence>
-     *       &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="commonName" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="taxId" type="{http://www.w3.org/2001/XMLSchema}integer" />
      *     &lt;/restriction>
      *   &lt;/complexContent>
      * &lt;/complexType>
@@ -1894,198 +896,366 @@ public class EntryType
      * 
      */
     @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "lineage" })
-    public static class FeatureTaxon
-    {
-
-      protected EntryType.Feature.FeatureTaxon.Lineage lineage;
-
-      @XmlAttribute(name = "scientificName", required = true)
-      protected String scientificName;
-
-      @XmlAttribute(name = "commonName")
-      protected String commonName;
-
-      @XmlAttribute(name = "taxId")
-      protected BigInteger taxId;
-
-      /**
-       * Gets the value of the lineage property.
-       * 
-       * @return possible object is
-       *         {@link EntryType.Feature.FeatureTaxon.Lineage }
-       * 
-       */
-      public EntryType.Feature.FeatureTaxon.Lineage getLineage()
-      {
-        return lineage;
-      }
-
-      /**
-       * Sets the value of the lineage property.
-       * 
-       * @param value
-       *          allowed object is
-       *          {@link EntryType.Feature.FeatureTaxon.Lineage }
-       * 
-       */
-      public void setLineage(EntryType.Feature.FeatureTaxon.Lineage value)
-      {
-        this.lineage = value;
-      }
-
-      /**
-       * Gets the value of the scientificName property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getScientificName()
-      {
-        return scientificName;
-      }
-
-      /**
-       * Sets the value of the scientificName property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setScientificName(String value)
-      {
-        this.scientificName = value;
-      }
-
-      /**
-       * Gets the value of the commonName property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getCommonName()
-      {
-        return commonName;
-      }
-
-      /**
-       * Sets the value of the commonName property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setCommonName(String value)
-      {
-        this.commonName = value;
-      }
-
-      /**
-       * Gets the value of the taxId property.
-       * 
-       * @return possible object is {@link BigInteger }
-       * 
-       */
-      public BigInteger getTaxId()
-      {
-        return taxId;
-      }
-
-      /**
-       * Sets the value of the taxId property.
-       * 
-       * @param value
-       *          allowed object is {@link BigInteger }
-       * 
-       */
-      public void setTaxId(BigInteger value)
-      {
-        this.taxId = value;
-      }
-
-      /**
-       * <p>
-       * Java class for anonymous complex type.
-       * 
-       * <p>
-       * The following schema fragment specifies the expected content contained
-       * within this class.
-       * 
-       * <pre>
-       * &lt;complexType>
-       *   &lt;complexContent>
-       *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-       *       &lt;sequence>
-       *         &lt;element name="taxon" maxOccurs="unbounded">
-       *           &lt;complexType>
-       *             &lt;complexContent>
-       *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-       *                 &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-       *               &lt;/restriction>
-       *             &lt;/complexContent>
-       *           &lt;/complexType>
-       *         &lt;/element>
-       *       &lt;/sequence>
-       *     &lt;/restriction>
-       *   &lt;/complexContent>
-       * &lt;/complexType>
-       * </pre>
-       * 
-       * 
-       */
-      @XmlAccessorType(XmlAccessType.FIELD)
-      @XmlType(name = "", propOrder = { "taxon" })
-      public static class Lineage
-      {
+    @XmlType(name = "", propOrder = {
+        "range"
+    })
+    public static class Assembly {
 
         @XmlElement(required = true)
-        protected List<EntryType.Feature.FeatureTaxon.Lineage.Taxon> taxon;
+        protected List<EntryType.Assembly.Range> range;
 
         /**
-         * Gets the value of the taxon property.
+         * Gets the value of the range property.
          * 
          * <p>
-         * This accessor method returns a reference to the live list, not a
-         * snapshot. Therefore any modification you make to the returned list
-         * will be present inside the JAXB object. This is why there is not a
-         * <CODE>set</CODE> method for the taxon property.
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the range property.
          * 
          * <p>
          * For example, to add a new item, do as follows:
-         * 
          * <pre>
-         * getTaxon().add(newItem);
+         *    getRange().add(newItem);
          * </pre>
          * 
          * 
          * <p>
          * Objects of the following type(s) are allowed in the list
-         * {@link EntryType.Feature.FeatureTaxon.Lineage.Taxon }
+         * {@link EntryType.Assembly.Range }
+         * 
+         * 
+         */
+        public List<EntryType.Assembly.Range> getRange() {
+            if (range == null) {
+                range = new ArrayList<EntryType.Assembly.Range>();
+            }
+            return this.range;
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
          * 
          * 
          */
-        public List<EntryType.Feature.FeatureTaxon.Lineage.Taxon> getTaxon()
-        {
-          if (taxon == null)
-          {
-            taxon = new ArrayList<EntryType.Feature.FeatureTaxon.Lineage.Taxon>();
-          }
-          return this.taxon;
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class Range {
+
+            @XmlAttribute(name = "begin", required = true)
+            protected BigInteger begin;
+            @XmlAttribute(name = "end", required = true)
+            protected BigInteger end;
+            @XmlAttribute(name = "primaryBegin")
+            protected BigInteger primaryBegin;
+            @XmlAttribute(name = "primaryEnd")
+            protected BigInteger primaryEnd;
+            @XmlAttribute(name = "accession", required = true)
+            protected String accession;
+            @XmlAttribute(name = "version", required = true)
+            protected BigInteger version;
+            @XmlAttribute(name = "complement")
+            protected Boolean complement;
+
+            /**
+             * Gets the value of the begin property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getBegin() {
+                return begin;
+            }
+
+            /**
+             * Sets the value of the begin property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setBegin(BigInteger value) {
+                this.begin = value;
+            }
+
+            /**
+             * Gets the value of the end property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getEnd() {
+                return end;
+            }
+
+            /**
+             * Sets the value of the end property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setEnd(BigInteger value) {
+                this.end = value;
+            }
+
+            /**
+             * Gets the value of the primaryBegin property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getPrimaryBegin() {
+                return primaryBegin;
+            }
+
+            /**
+             * Sets the value of the primaryBegin property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setPrimaryBegin(BigInteger value) {
+                this.primaryBegin = value;
+            }
+
+            /**
+             * Gets the value of the primaryEnd property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getPrimaryEnd() {
+                return primaryEnd;
+            }
+
+            /**
+             * Sets the value of the primaryEnd property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setPrimaryEnd(BigInteger value) {
+                this.primaryEnd = value;
+            }
+
+            /**
+             * Gets the value of the accession property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getAccession() {
+                return accession;
+            }
+
+            /**
+             * Sets the value of the accession property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setAccession(String value) {
+                this.accession = value;
+            }
+
+            /**
+             * Gets the value of the version property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getVersion() {
+                return version;
+            }
+
+            /**
+             * Sets the value of the version property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setVersion(BigInteger value) {
+                this.version = value;
+            }
+
+            /**
+             * Gets the value of the complement property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Boolean }
+             *     
+             */
+            public boolean isComplement() {
+                if (complement == null) {
+                    return false;
+                } else {
+                    return complement;
+                }
+            }
+
+            /**
+             * Sets the value of the complement property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Boolean }
+             *     
+             */
+            public void setComplement(Boolean value) {
+                this.complement = value;
+            }
+
         }
 
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;choice maxOccurs="unbounded" minOccurs="0">
+     *           &lt;element name="range">
+     *             &lt;complexType>
+     *               &lt;complexContent>
+     *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                   &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                   &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *                 &lt;/restriction>
+     *               &lt;/complexContent>
+     *             &lt;/complexType>
+     *           &lt;/element>
+     *           &lt;element name="gap">
+     *             &lt;complexType>
+     *               &lt;complexContent>
+     *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                   &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="length" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *                   &lt;attribute name="unknownLength" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *                 &lt;/restriction>
+     *               &lt;/complexContent>
+     *             &lt;/complexType>
+     *           &lt;/element>
+     *         &lt;/choice>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "rangeOrGap"
+    })
+    public static class Contig {
+
+        @XmlElements({
+            @XmlElement(name = "range", type = EntryType.Contig.Range.class),
+            @XmlElement(name = "gap", type = EntryType.Contig.Gap.class)
+        })
+        protected List<Object> rangeOrGap;
+
         /**
+         * Gets the value of the rangeOrGap property.
+         * 
          * <p>
-         * Java class for anonymous complex type.
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the rangeOrGap property.
          * 
          * <p>
-         * The following schema fragment specifies the expected content
-         * contained within this class.
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getRangeOrGap().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EntryType.Contig.Range }
+         * {@link EntryType.Contig.Gap }
+         * 
+         * 
+         */
+        public List<Object> getRangeOrGap() {
+            if (rangeOrGap == null) {
+                rangeOrGap = new ArrayList<Object>();
+            }
+            return this.rangeOrGap;
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
          * 
          * <pre>
          * &lt;complexType>
          *   &lt;complexContent>
          *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-         *       &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="length" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="unknownLength" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
          *     &lt;/restriction>
          *   &lt;/complexContent>
          * &lt;/complexType>
@@ -2095,57 +1265,397 @@ public class EntryType
          */
         @XmlAccessorType(XmlAccessType.FIELD)
         @XmlType(name = "")
-        public static class Taxon
-        {
-
-          @XmlAttribute(name = "scientificName", required = true)
-          protected String scientificName;
-
-          /**
-           * Gets the value of the scientificName property.
-           * 
-           * @return possible object is {@link String }
-           * 
-           */
-          public String getScientificName()
-          {
-            return scientificName;
-          }
-
-          /**
-           * Sets the value of the scientificName property.
-           * 
-           * @param value
-           *          allowed object is {@link String }
-           * 
-           */
-          public void setScientificName(String value)
-          {
-            this.scientificName = value;
-          }
+        public static class Gap {
+
+            @XmlAttribute(name = "begin", required = true)
+            protected BigInteger begin;
+            @XmlAttribute(name = "end", required = true)
+            protected BigInteger end;
+            @XmlAttribute(name = "length", required = true)
+            protected BigInteger length;
+            @XmlAttribute(name = "unknownLength")
+            protected Boolean unknownLength;
+
+            /**
+             * Gets the value of the begin property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getBegin() {
+                return begin;
+            }
+
+            /**
+             * Sets the value of the begin property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setBegin(BigInteger value) {
+                this.begin = value;
+            }
+
+            /**
+             * Gets the value of the end property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getEnd() {
+                return end;
+            }
+
+            /**
+             * Sets the value of the end property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setEnd(BigInteger value) {
+                this.end = value;
+            }
+
+            /**
+             * Gets the value of the length property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getLength() {
+                return length;
+            }
+
+            /**
+             * Sets the value of the length property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setLength(BigInteger value) {
+                this.length = value;
+            }
+
+            /**
+             * Gets the value of the unknownLength property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Boolean }
+             *     
+             */
+            public boolean isUnknownLength() {
+                if (unknownLength == null) {
+                    return false;
+                } else {
+                    return unknownLength;
+                }
+            }
+
+            /**
+             * Sets the value of the unknownLength property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Boolean }
+             *     
+             */
+            public void setUnknownLength(Boolean value) {
+                this.unknownLength = value;
+            }
 
         }
 
-      }
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="primaryBegin" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="primaryEnd" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="accession" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="version" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *       &lt;attribute name="complement" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class Range {
+
+            @XmlAttribute(name = "begin", required = true)
+            protected BigInteger begin;
+            @XmlAttribute(name = "end", required = true)
+            protected BigInteger end;
+            @XmlAttribute(name = "primaryBegin")
+            protected BigInteger primaryBegin;
+            @XmlAttribute(name = "primaryEnd")
+            protected BigInteger primaryEnd;
+            @XmlAttribute(name = "accession", required = true)
+            protected String accession;
+            @XmlAttribute(name = "version", required = true)
+            protected BigInteger version;
+            @XmlAttribute(name = "complement")
+            protected Boolean complement;
+
+            /**
+             * Gets the value of the begin property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getBegin() {
+                return begin;
+            }
+
+            /**
+             * Sets the value of the begin property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setBegin(BigInteger value) {
+                this.begin = value;
+            }
+
+            /**
+             * Gets the value of the end property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getEnd() {
+                return end;
+            }
+
+            /**
+             * Sets the value of the end property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setEnd(BigInteger value) {
+                this.end = value;
+            }
+
+            /**
+             * Gets the value of the primaryBegin property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getPrimaryBegin() {
+                return primaryBegin;
+            }
+
+            /**
+             * Sets the value of the primaryBegin property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setPrimaryBegin(BigInteger value) {
+                this.primaryBegin = value;
+            }
+
+            /**
+             * Gets the value of the primaryEnd property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getPrimaryEnd() {
+                return primaryEnd;
+            }
+
+            /**
+             * Sets the value of the primaryEnd property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setPrimaryEnd(BigInteger value) {
+                this.primaryEnd = value;
+            }
+
+            /**
+             * Gets the value of the accession property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getAccession() {
+                return accession;
+            }
+
+            /**
+             * Sets the value of the accession property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setAccession(String value) {
+                this.accession = value;
+            }
+
+            /**
+             * Gets the value of the version property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getVersion() {
+                return version;
+            }
+
+            /**
+             * Sets the value of the version property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setVersion(BigInteger value) {
+                this.version = value;
+            }
+
+            /**
+             * Gets the value of the complement property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Boolean }
+             *     
+             */
+            public boolean isComplement() {
+                if (complement == null) {
+                    return false;
+                } else {
+                    return complement;
+                }
+            }
+
+            /**
+             * Sets the value of the complement property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Boolean }
+             *     
+             */
+            public void setComplement(Boolean value) {
+                this.complement = value;
+            }
+
+        }
 
     }
 
+
     /**
-     * <p>
-     * Java class for anonymous complex type.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
      * &lt;complexType>
      *   &lt;complexContent>
      *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      *       &lt;sequence>
-     *         &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="taxon" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;sequence>
+     *                   &lt;element name="lineage" minOccurs="0">
+     *                     &lt;complexType>
+     *                       &lt;complexContent>
+     *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                           &lt;sequence>
+     *                             &lt;element name="taxon" maxOccurs="unbounded">
+     *                               &lt;complexType>
+     *                                 &lt;complexContent>
+     *                                   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                                     &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                                   &lt;/restriction>
+     *                                 &lt;/complexContent>
+     *                               &lt;/complexType>
+     *                             &lt;/element>
+     *                           &lt;/sequence>
+     *                         &lt;/restriction>
+     *                       &lt;/complexContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                 &lt;/sequence>
+     *                 &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="commonName" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="taxId" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="xref" type="{}XrefType" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="qualifier" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;sequence>
+     *                   &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *                 &lt;/sequence>
+     *                 &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
      *       &lt;/sequence>
      *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="location" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
      *     &lt;/restriction>
      *   &lt;/complexContent>
      * &lt;/complexType>
@@ -2154,578 +1664,1017 @@ public class EntryType
      * 
      */
     @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "value" })
-    public static class Qualifier
-    {
-
-      protected String value;
-
-      @XmlAttribute(name = "name", required = true)
-      protected String name;
-
-      /**
-       * Gets the value of the value property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getValue()
-      {
-        return value;
-      }
-
-      /**
-       * Sets the value of the value property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setValue(String value)
-      {
-        this.value = value;
-      }
-
-      /**
-       * Gets the value of the name property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getName()
-      {
-        return name;
-      }
-
-      /**
-       * Sets the value of the name property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setName(String value)
-      {
-        this.name = value;
-      }
-
-    }
+    @XmlType(name = "", propOrder = {
+        "taxon",
+        "xref",
+        "qualifier"
+    })
+    public static class Feature {
+
+        protected EntryType.Feature.FeatureTaxon taxon;
+        protected List<XrefType> xref;
+        protected List<EntryType.Feature.Qualifier> qualifier;
+        @XmlAttribute(name = "name", required = true)
+        protected String name;
+        @XmlAttribute(name = "location", required = true)
+        protected String location;
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="title" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="author" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="applicant" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="consortium" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="submissionDate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
-   *         &lt;element name="journal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="year" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="volume" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="issue" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="firstPage" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="lastPage" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="referenceLocation" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
-   *         &lt;element name="xref" type="{}XrefType" maxOccurs="unbounded" minOccurs="0"/>
-   *       &lt;/sequence>
-   *       &lt;attribute name="type" use="required">
-   *         &lt;simpleType>
-   *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
-   *             &lt;enumeration value="submission"/>
-   *             &lt;enumeration value="book"/>
-   *             &lt;enumeration value="article"/>
-   *             &lt;enumeration value="patent"/>
-   *             &lt;enumeration value="thesis"/>
-   *             &lt;enumeration value="unpublished"/>
-   *           &lt;/restriction>
-   *         &lt;/simpleType>
-   *       &lt;/attribute>
-   *       &lt;attribute name="number" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
-   *       &lt;attribute name="location" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "title", "author", "applicant", "consortium", "submissionDate",
-        "journal", "year", "volume", "issue", "firstPage", "lastPage",
-        "comment", "referenceLocation", "xref" })
-  public static class Reference
-  {
-
-    protected String title;
-
-    protected List<String> author;
-
-    protected List<String> applicant;
-
-    protected String consortium;
+        /**
+         * Gets the value of the taxon property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EntryType.Feature.FeatureTaxon }
+         *     
+         */
+        public EntryType.Feature.FeatureTaxon getTaxon() {
+            return taxon;
+        }
 
-    @XmlSchemaType(name = "date")
-    protected XMLGregorianCalendar submissionDate;
+        /**
+         * Sets the value of the taxon property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EntryType.Feature.FeatureTaxon }
+         *     
+         */
+        public void setTaxon(EntryType.Feature.FeatureTaxon value) {
+            this.taxon = value;
+        }
 
-    protected String journal;
+        /**
+         * Gets the value of the xref property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the xref property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getXref().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link XrefType }
+         * 
+         * 
+         */
+        public List<XrefType> getXref() {
+            if (xref == null) {
+                xref = new ArrayList<XrefType>();
+            }
+            return this.xref;
+        }
 
-    protected String year;
+        /**
+         * Gets the value of the qualifier property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the qualifier property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getQualifier().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EntryType.Feature.Qualifier }
+         * 
+         * 
+         */
+        public List<EntryType.Feature.Qualifier> getQualifier() {
+            if (qualifier == null) {
+                qualifier = new ArrayList<EntryType.Feature.Qualifier>();
+            }
+            return this.qualifier;
+        }
 
-    protected String volume;
+        /**
+         * Gets the value of the name property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getName() {
+            return name;
+        }
 
-    protected String issue;
+        /**
+         * Sets the value of the name property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setName(String value) {
+            this.name = value;
+        }
 
-    protected String firstPage;
+        /**
+         * Gets the value of the location property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getLocation() {
+            return location;
+        }
 
-    protected String lastPage;
+        /**
+         * Sets the value of the location property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setLocation(String value) {
+            this.location = value;
+        }
 
-    protected String comment;
 
-    protected String referenceLocation;
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;sequence>
+         *         &lt;element name="lineage" minOccurs="0">
+         *           &lt;complexType>
+         *             &lt;complexContent>
+         *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *                 &lt;sequence>
+         *                   &lt;element name="taxon" maxOccurs="unbounded">
+         *                     &lt;complexType>
+         *                       &lt;complexContent>
+         *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *                           &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *                         &lt;/restriction>
+         *                       &lt;/complexContent>
+         *                     &lt;/complexType>
+         *                   &lt;/element>
+         *                 &lt;/sequence>
+         *               &lt;/restriction>
+         *             &lt;/complexContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *       &lt;/sequence>
+         *       &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="commonName" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="taxId" type="{http://www.w3.org/2001/XMLSchema}integer" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "lineage"
+        })
+        public static class FeatureTaxon {
+
+            protected EntryType.Feature.FeatureTaxon.Lineage lineage;
+            @XmlAttribute(name = "scientificName", required = true)
+            protected String scientificName;
+            @XmlAttribute(name = "commonName")
+            protected String commonName;
+            @XmlAttribute(name = "taxId")
+            protected BigInteger taxId;
+
+            /**
+             * Gets the value of the lineage property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link EntryType.Feature.FeatureTaxon.Lineage }
+             *     
+             */
+            public EntryType.Feature.FeatureTaxon.Lineage getLineage() {
+                return lineage;
+            }
+
+            /**
+             * Sets the value of the lineage property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link EntryType.Feature.FeatureTaxon.Lineage }
+             *     
+             */
+            public void setLineage(EntryType.Feature.FeatureTaxon.Lineage value) {
+                this.lineage = value;
+            }
+
+            /**
+             * Gets the value of the scientificName property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getScientificName() {
+                return scientificName;
+            }
+
+            /**
+             * Sets the value of the scientificName property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setScientificName(String value) {
+                this.scientificName = value;
+            }
+
+            /**
+             * Gets the value of the commonName property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getCommonName() {
+                return commonName;
+            }
+
+            /**
+             * Sets the value of the commonName property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setCommonName(String value) {
+                this.commonName = value;
+            }
+
+            /**
+             * Gets the value of the taxId property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link BigInteger }
+             *     
+             */
+            public BigInteger getTaxId() {
+                return taxId;
+            }
+
+            /**
+             * Sets the value of the taxId property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link BigInteger }
+             *     
+             */
+            public void setTaxId(BigInteger value) {
+                this.taxId = value;
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;complexContent>
+             *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+             *       &lt;sequence>
+             *         &lt;element name="taxon" maxOccurs="unbounded">
+             *           &lt;complexType>
+             *             &lt;complexContent>
+             *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+             *                 &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *               &lt;/restriction>
+             *             &lt;/complexContent>
+             *           &lt;/complexType>
+             *         &lt;/element>
+             *       &lt;/sequence>
+             *     &lt;/restriction>
+             *   &lt;/complexContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "taxon"
+            })
+            public static class Lineage {
+
+                @XmlElement(required = true)
+                protected List<EntryType.Feature.FeatureTaxon.Lineage.Taxon> taxon;
+
+                /**
+                 * Gets the value of the taxon property.
+                 * 
+                 * <p>
+                 * This accessor method returns a reference to the live list,
+                 * not a snapshot. Therefore any modification you make to the
+                 * returned list will be present inside the JAXB object.
+                 * This is why there is not a <CODE>set</CODE> method for the taxon property.
+                 * 
+                 * <p>
+                 * For example, to add a new item, do as follows:
+                 * <pre>
+                 *    getTaxon().add(newItem);
+                 * </pre>
+                 * 
+                 * 
+                 * <p>
+                 * Objects of the following type(s) are allowed in the list
+                 * {@link EntryType.Feature.FeatureTaxon.Lineage.Taxon }
+                 * 
+                 * 
+                 */
+                public List<EntryType.Feature.FeatureTaxon.Lineage.Taxon> getTaxon() {
+                    if (taxon == null) {
+                        taxon = new ArrayList<EntryType.Feature.FeatureTaxon.Lineage.Taxon>();
+                    }
+                    return this.taxon;
+                }
+
+
+                /**
+                 * <p>Java class for anonymous complex type.
+                 * 
+                 * <p>The following schema fragment specifies the expected content contained within this class.
+                 * 
+                 * <pre>
+                 * &lt;complexType>
+                 *   &lt;complexContent>
+                 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+                 *       &lt;attribute name="scientificName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+                 *     &lt;/restriction>
+                 *   &lt;/complexContent>
+                 * &lt;/complexType>
+                 * </pre>
+                 * 
+                 * 
+                 */
+                @XmlAccessorType(XmlAccessType.FIELD)
+                @XmlType(name = "")
+                public static class Taxon {
+
+                    @XmlAttribute(name = "scientificName", required = true)
+                    protected String scientificName;
+
+                    /**
+                     * Gets the value of the scientificName property.
+                     * 
+                     * @return
+                     *     possible object is
+                     *     {@link String }
+                     *     
+                     */
+                    public String getScientificName() {
+                        return scientificName;
+                    }
+
+                    /**
+                     * Sets the value of the scientificName property.
+                     * 
+                     * @param value
+                     *     allowed object is
+                     *     {@link String }
+                     *     
+                     */
+                    public void setScientificName(String value) {
+                        this.scientificName = value;
+                    }
+
+                }
+
+            }
 
-    protected List<XrefType> xref;
+        }
 
-    @XmlAttribute(name = "type", required = true)
-    protected String type;
 
-    @XmlAttribute(name = "number", required = true)
-    protected BigInteger number;
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;sequence>
+         *         &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+         *       &lt;/sequence>
+         *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "value"
+        })
+        public static class Qualifier {
+
+            protected String value;
+            @XmlAttribute(name = "name", required = true)
+            protected String name;
+
+            /**
+             * Gets the value of the value property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getValue() {
+                return value;
+            }
+
+            /**
+             * Sets the value of the value property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setValue(String value) {
+                this.value = value;
+            }
+
+            /**
+             * Gets the value of the name property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getName() {
+                return name;
+            }
+
+            /**
+             * Sets the value of the name property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setName(String value) {
+                this.name = value;
+            }
 
-    @XmlAttribute(name = "location")
-    protected String location;
+        }
 
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
     }
 
-    /**
-     * Sets the value of the title property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
 
     /**
-     * Gets the value of the author property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the author property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getAuthor().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="title" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="author" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="applicant" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="consortium" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="submissionDate" type="{http://www.w3.org/2001/XMLSchema}date" minOccurs="0"/>
+     *         &lt;element name="journal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="year" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="volume" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="issue" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="firstPage" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="lastPage" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="referenceLocation" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+     *         &lt;element name="xref" type="{}XrefType" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="type" use="required">
+     *         &lt;simpleType>
+     *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+     *             &lt;enumeration value="submission"/>
+     *             &lt;enumeration value="book"/>
+     *             &lt;enumeration value="article"/>
+     *             &lt;enumeration value="patent"/>
+     *             &lt;enumeration value="thesis"/>
+     *             &lt;enumeration value="unpublished"/>
+     *           &lt;/restriction>
+     *         &lt;/simpleType>
+     *       &lt;/attribute>
+     *       &lt;attribute name="number" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *       &lt;attribute name="location" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link String }
-     * 
-     * 
      */
-    public List<String> getAuthor()
-    {
-      if (author == null)
-      {
-        author = new ArrayList<String>();
-      }
-      return this.author;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "title",
+        "author",
+        "applicant",
+        "consortium",
+        "submissionDate",
+        "journal",
+        "year",
+        "volume",
+        "issue",
+        "firstPage",
+        "lastPage",
+        "comment",
+        "referenceLocation",
+        "xref"
+    })
+    public static class Reference {
+
+        protected String title;
+        protected List<String> author;
+        protected List<String> applicant;
+        protected String consortium;
+        @XmlSchemaType(name = "date")
+        protected XMLGregorianCalendar submissionDate;
+        protected String journal;
+        protected String year;
+        protected String volume;
+        protected String issue;
+        protected String firstPage;
+        protected String lastPage;
+        protected String comment;
+        protected String referenceLocation;
+        protected List<XrefType> xref;
+        @XmlAttribute(name = "type", required = true)
+        protected String type;
+        @XmlAttribute(name = "number", required = true)
+        protected BigInteger number;
+        @XmlAttribute(name = "location")
+        protected String location;
 
-    /**
-     * Gets the value of the applicant property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the applicant property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getApplicant().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link String }
-     * 
-     * 
-     */
-    public List<String> getApplicant()
-    {
-      if (applicant == null)
-      {
-        applicant = new ArrayList<String>();
-      }
-      return this.applicant;
-    }
+        /**
+         * Gets the value of the title property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getTitle() {
+            return title;
+        }
 
-    /**
-     * Gets the value of the consortium property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getConsortium()
-    {
-      return consortium;
-    }
+        /**
+         * Sets the value of the title property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setTitle(String value) {
+            this.title = value;
+        }
 
-    /**
-     * Sets the value of the consortium property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setConsortium(String value)
-    {
-      this.consortium = value;
-    }
+        /**
+         * Gets the value of the author property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the author property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getAuthor().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link String }
+         * 
+         * 
+         */
+        public List<String> getAuthor() {
+            if (author == null) {
+                author = new ArrayList<String>();
+            }
+            return this.author;
+        }
 
-    /**
-     * Gets the value of the submissionDate property.
-     * 
-     * @return possible object is {@link XMLGregorianCalendar }
-     * 
-     */
-    public XMLGregorianCalendar getSubmissionDate()
-    {
-      return submissionDate;
-    }
+        /**
+         * Gets the value of the applicant property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the applicant property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getApplicant().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link String }
+         * 
+         * 
+         */
+        public List<String> getApplicant() {
+            if (applicant == null) {
+                applicant = new ArrayList<String>();
+            }
+            return this.applicant;
+        }
 
-    /**
-     * Sets the value of the submissionDate property.
-     * 
-     * @param value
-     *          allowed object is {@link XMLGregorianCalendar }
-     * 
-     */
-    public void setSubmissionDate(XMLGregorianCalendar value)
-    {
-      this.submissionDate = value;
-    }
+        /**
+         * Gets the value of the consortium property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getConsortium() {
+            return consortium;
+        }
 
-    /**
-     * Gets the value of the journal property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getJournal()
-    {
-      return journal;
-    }
+        /**
+         * Sets the value of the consortium property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setConsortium(String value) {
+            this.consortium = value;
+        }
 
-    /**
-     * Sets the value of the journal property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setJournal(String value)
-    {
-      this.journal = value;
-    }
+        /**
+         * Gets the value of the submissionDate property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public XMLGregorianCalendar getSubmissionDate() {
+            return submissionDate;
+        }
 
-    /**
-     * Gets the value of the year property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getYear()
-    {
-      return year;
-    }
+        /**
+         * Sets the value of the submissionDate property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link XMLGregorianCalendar }
+         *     
+         */
+        public void setSubmissionDate(XMLGregorianCalendar value) {
+            this.submissionDate = value;
+        }
 
-    /**
-     * Sets the value of the year property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setYear(String value)
-    {
-      this.year = value;
-    }
+        /**
+         * Gets the value of the journal property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getJournal() {
+            return journal;
+        }
 
-    /**
-     * Gets the value of the volume property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getVolume()
-    {
-      return volume;
-    }
+        /**
+         * Sets the value of the journal property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setJournal(String value) {
+            this.journal = value;
+        }
 
-    /**
-     * Sets the value of the volume property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setVolume(String value)
-    {
-      this.volume = value;
-    }
+        /**
+         * Gets the value of the year property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getYear() {
+            return year;
+        }
 
-    /**
-     * Gets the value of the issue property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getIssue()
-    {
-      return issue;
-    }
+        /**
+         * Sets the value of the year property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setYear(String value) {
+            this.year = value;
+        }
 
-    /**
-     * Sets the value of the issue property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setIssue(String value)
-    {
-      this.issue = value;
-    }
+        /**
+         * Gets the value of the volume property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getVolume() {
+            return volume;
+        }
 
-    /**
-     * Gets the value of the firstPage property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFirstPage()
-    {
-      return firstPage;
-    }
+        /**
+         * Sets the value of the volume property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setVolume(String value) {
+            this.volume = value;
+        }
 
-    /**
-     * Sets the value of the firstPage property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setFirstPage(String value)
-    {
-      this.firstPage = value;
-    }
+        /**
+         * Gets the value of the issue property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getIssue() {
+            return issue;
+        }
 
-    /**
-     * Gets the value of the lastPage property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getLastPage()
-    {
-      return lastPage;
-    }
+        /**
+         * Sets the value of the issue property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setIssue(String value) {
+            this.issue = value;
+        }
 
-    /**
-     * Sets the value of the lastPage property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setLastPage(String value)
-    {
-      this.lastPage = value;
-    }
+        /**
+         * Gets the value of the firstPage property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFirstPage() {
+            return firstPage;
+        }
 
-    /**
-     * Gets the value of the comment property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getComment()
-    {
-      return comment;
-    }
+        /**
+         * Sets the value of the firstPage property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFirstPage(String value) {
+            this.firstPage = value;
+        }
 
-    /**
-     * Sets the value of the comment property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setComment(String value)
-    {
-      this.comment = value;
-    }
+        /**
+         * Gets the value of the lastPage property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getLastPage() {
+            return lastPage;
+        }
 
-    /**
-     * Gets the value of the referenceLocation property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getReferenceLocation()
-    {
-      return referenceLocation;
-    }
+        /**
+         * Sets the value of the lastPage property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setLastPage(String value) {
+            this.lastPage = value;
+        }
 
-    /**
-     * Sets the value of the referenceLocation property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setReferenceLocation(String value)
-    {
-      this.referenceLocation = value;
-    }
+        /**
+         * Gets the value of the comment property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getComment() {
+            return comment;
+        }
 
-    /**
-     * Gets the value of the xref property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the xref property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getXref().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link XrefType
-     * }
-     * 
-     * 
-     */
-    public List<XrefType> getXref()
-    {
-      if (xref == null)
-      {
-        xref = new ArrayList<XrefType>();
-      }
-      return this.xref;
-    }
+        /**
+         * Sets the value of the comment property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setComment(String value) {
+            this.comment = value;
+        }
 
-    /**
-     * Gets the value of the type property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getType()
-    {
-      return type;
-    }
+        /**
+         * Gets the value of the referenceLocation property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getReferenceLocation() {
+            return referenceLocation;
+        }
 
-    /**
-     * Sets the value of the type property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setType(String value)
-    {
-      this.type = value;
-    }
+        /**
+         * Sets the value of the referenceLocation property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setReferenceLocation(String value) {
+            this.referenceLocation = value;
+        }
 
-    /**
-     * Gets the value of the number property.
-     * 
-     * @return possible object is {@link BigInteger }
-     * 
-     */
-    public BigInteger getNumber()
-    {
-      return number;
-    }
+        /**
+         * Gets the value of the xref property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the xref property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getXref().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link XrefType }
+         * 
+         * 
+         */
+        public List<XrefType> getXref() {
+            if (xref == null) {
+                xref = new ArrayList<XrefType>();
+            }
+            return this.xref;
+        }
 
-    /**
-     * Sets the value of the number property.
-     * 
-     * @param value
-     *          allowed object is {@link BigInteger }
-     * 
-     */
-    public void setNumber(BigInteger value)
-    {
-      this.number = value;
-    }
+        /**
+         * Gets the value of the type property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getType() {
+            return type;
+        }
 
-    /**
-     * Gets the value of the location property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getLocation()
-    {
-      return location;
-    }
+        /**
+         * Sets the value of the type property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setType(String value) {
+            this.type = value;
+        }
 
-    /**
-     * Sets the value of the location property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setLocation(String value)
-    {
-      this.location = value;
-    }
+        /**
+         * Gets the value of the number property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link BigInteger }
+         *     
+         */
+        public BigInteger getNumber() {
+            return number;
+        }
+
+        /**
+         * Sets the value of the number property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BigInteger }
+         *     
+         */
+        public void setNumber(BigInteger value) {
+            this.number = value;
+        }
+
+        /**
+         * Gets the value of the location property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getLocation() {
+            return location;
+        }
+
+        /**
+         * Sets the value of the location property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setLocation(String value) {
+            this.location = value;
+        }
 
-  }
+    }
 
 }
index f622bd6..3e9d660 100644 (file)
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2018.09.14 at 02:46:00 PM BST 
+// Generated on: 2023.01.31 at 04:07:09 PM GMT 
 //
 
+
 package jalview.xml.binding.embl;
 
 import javax.xml.bind.annotation.XmlRegistry;
 
+
 /**
- * This object contains factory methods for each Java content interface and Java
- * element interface generated in the jalview.xml.binding.embl package.
- * <p>
- * An ObjectFactory allows you to programatically construct new instances of the
- * Java representation for XML content. The Java representation of XML content
- * can consist of schema derived interfaces and classes representing the binding
- * of schema type definitions, element declarations and model groups. Factory
- * methods for each of these are provided in this class.
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the jalview.xml.binding.embl package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
  * 
  */
 @XmlRegistry
-public class ObjectFactory
-{
-
-  /**
-   * Create a new ObjectFactory that can be used to create new instances of
-   * schema derived classes for package: jalview.xml.binding.embl
-   * 
-   */
-  public ObjectFactory()
-  {
-  }
-
-  /**
-   * Create an instance of {@link EntryType }
-   * 
-   */
-  public EntryType createEntryType()
-  {
-    return new EntryType();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Contig }
-   * 
-   */
-  public EntryType.Contig createEntryTypeContig()
-  {
-    return new EntryType.Contig();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Assembly }
-   * 
-   */
-  public EntryType.Assembly createEntryTypeAssembly()
-  {
-    return new EntryType.Assembly();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Feature }
-   * 
-   */
-  public EntryType.Feature createEntryTypeFeature()
-  {
-    return new EntryType.Feature();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Feature.FeatureTaxon }
-   * 
-   */
-  public EntryType.Feature.FeatureTaxon createEntryTypeFeatureFeatureTaxon()
-  {
-    return new EntryType.Feature.FeatureTaxon();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Feature.FeatureTaxon.Lineage }
-   * 
-   */
-  public EntryType.Feature.FeatureTaxon.Lineage createEntryTypeFeatureFeatureTaxonLineage()
-  {
-    return new EntryType.Feature.FeatureTaxon.Lineage();
-  }
-
-  /**
-   * Create an instance of {@link ROOT }
-   * 
-   */
-  public ROOT createROOT()
-  {
-    return new ROOT();
-  }
-
-  /**
-   * Create an instance of {@link EntrySetType }
-   * 
-   */
-  public EntrySetType createEntrySetType()
-  {
-    return new EntrySetType();
-  }
-
-  /**
-   * Create an instance of {@link XrefType }
-   * 
-   */
-  public XrefType createXrefType()
-  {
-    return new XrefType();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Reference }
-   * 
-   */
-  public EntryType.Reference createEntryTypeReference()
-  {
-    return new EntryType.Reference();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Contig.Range }
-   * 
-   */
-  public EntryType.Contig.Range createEntryTypeContigRange()
-  {
-    return new EntryType.Contig.Range();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Contig.Gap }
-   * 
-   */
-  public EntryType.Contig.Gap createEntryTypeContigGap()
-  {
-    return new EntryType.Contig.Gap();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Assembly.Range }
-   * 
-   */
-  public EntryType.Assembly.Range createEntryTypeAssemblyRange()
-  {
-    return new EntryType.Assembly.Range();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Feature.Qualifier }
-   * 
-   */
-  public EntryType.Feature.Qualifier createEntryTypeFeatureQualifier()
-  {
-    return new EntryType.Feature.Qualifier();
-  }
-
-  /**
-   * Create an instance of {@link EntryType.Feature.FeatureTaxon.Lineage.Taxon }
-   * 
-   */
-  public EntryType.Feature.FeatureTaxon.Lineage.Taxon createEntryTypeFeatureFeatureTaxonLineageTaxon()
-  {
-    return new EntryType.Feature.FeatureTaxon.Lineage.Taxon();
-  }
+public class ObjectFactory {
+
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: jalview.xml.binding.embl
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link EntryType }
+     * 
+     */
+    public EntryType createEntryType() {
+        return new EntryType();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Contig }
+     * 
+     */
+    public EntryType.Contig createEntryTypeContig() {
+        return new EntryType.Contig();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Assembly }
+     * 
+     */
+    public EntryType.Assembly createEntryTypeAssembly() {
+        return new EntryType.Assembly();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Feature }
+     * 
+     */
+    public EntryType.Feature createEntryTypeFeature() {
+        return new EntryType.Feature();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Feature.FeatureTaxon }
+     * 
+     */
+    public EntryType.Feature.FeatureTaxon createEntryTypeFeatureFeatureTaxon() {
+        return new EntryType.Feature.FeatureTaxon();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Feature.FeatureTaxon.Lineage }
+     * 
+     */
+    public EntryType.Feature.FeatureTaxon.Lineage createEntryTypeFeatureFeatureTaxonLineage() {
+        return new EntryType.Feature.FeatureTaxon.Lineage();
+    }
+
+    /**
+     * Create an instance of {@link ROOT }
+     * 
+     */
+    public ROOT createROOT() {
+        return new ROOT();
+    }
+
+    /**
+     * Create an instance of {@link EntrySetType }
+     * 
+     */
+    public EntrySetType createEntrySetType() {
+        return new EntrySetType();
+    }
+
+    /**
+     * Create an instance of {@link XrefType }
+     * 
+     */
+    public XrefType createXrefType() {
+        return new XrefType();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Reference }
+     * 
+     */
+    public EntryType.Reference createEntryTypeReference() {
+        return new EntryType.Reference();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Contig.Range }
+     * 
+     */
+    public EntryType.Contig.Range createEntryTypeContigRange() {
+        return new EntryType.Contig.Range();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Contig.Gap }
+     * 
+     */
+    public EntryType.Contig.Gap createEntryTypeContigGap() {
+        return new EntryType.Contig.Gap();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Assembly.Range }
+     * 
+     */
+    public EntryType.Assembly.Range createEntryTypeAssemblyRange() {
+        return new EntryType.Assembly.Range();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Feature.Qualifier }
+     * 
+     */
+    public EntryType.Feature.Qualifier createEntryTypeFeatureQualifier() {
+        return new EntryType.Feature.Qualifier();
+    }
+
+    /**
+     * Create an instance of {@link EntryType.Feature.FeatureTaxon.Lineage.Taxon }
+     * 
+     */
+    public EntryType.Feature.FeatureTaxon.Lineage.Taxon createEntryTypeFeatureFeatureTaxonLineageTaxon() {
+        return new EntryType.Feature.FeatureTaxon.Lineage.Taxon();
+    }
 
 }
index 6a09d79..6b8b2ea 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2018.09.14 at 02:46:00 PM BST 
+// Generated on: 2023.01.31 at 04:07:09 PM GMT 
 //
 
+
 package jalview.xml.binding.embl;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,13 +13,11 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType>
@@ -36,59 +35,62 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "", propOrder = { "entrySet", "entry" })
+@XmlType(name = "", propOrder = {
+    "entrySet",
+    "entry"
+})
 @XmlRootElement(name = "ROOT")
-public class ROOT
-{
-
-  protected EntrySetType entrySet;
+public class ROOT {
 
-  protected EntryType entry;
+    protected EntrySetType entrySet;
+    protected EntryType entry;
 
-  /**
-   * Gets the value of the entrySet property.
-   * 
-   * @return possible object is {@link EntrySetType }
-   * 
-   */
-  public EntrySetType getEntrySet()
-  {
-    return entrySet;
-  }
+    /**
+     * Gets the value of the entrySet property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EntrySetType }
+     *     
+     */
+    public EntrySetType getEntrySet() {
+        return entrySet;
+    }
 
-  /**
-   * Sets the value of the entrySet property.
-   * 
-   * @param value
-   *          allowed object is {@link EntrySetType }
-   * 
-   */
-  public void setEntrySet(EntrySetType value)
-  {
-    this.entrySet = value;
-  }
+    /**
+     * Sets the value of the entrySet property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EntrySetType }
+     *     
+     */
+    public void setEntrySet(EntrySetType value) {
+        this.entrySet = value;
+    }
 
-  /**
-   * Gets the value of the entry property.
-   * 
-   * @return possible object is {@link EntryType }
-   * 
-   */
-  public EntryType getEntry()
-  {
-    return entry;
-  }
+    /**
+     * Gets the value of the entry property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link EntryType }
+     *     
+     */
+    public EntryType getEntry() {
+        return entry;
+    }
 
-  /**
-   * Sets the value of the entry property.
-   * 
-   * @param value
-   *          allowed object is {@link EntryType }
-   * 
-   */
-  public void setEntry(EntryType value)
-  {
-    this.entry = value;
-  }
+    /**
+     * Sets the value of the entry property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link EntryType }
+     *     
+     */
+    public void setEntry(EntryType value) {
+        this.entry = value;
+    }
 
 }
index cdfd438..4aa7e5e 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2018.09.14 at 02:46:00 PM BST 
+// Generated on: 2023.01.31 at 04:07:09 PM GMT 
 //
 
+
 package jalview.xml.binding.embl;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,15 +13,13 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * Database cross-reference.
  * 
- * <p>
- * Java class for XrefType complex type.
+ * <p>Java class for XrefType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="XrefType">
@@ -38,85 +37,85 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "XrefType")
-public class XrefType
-{
-
-  @XmlAttribute(name = "db", required = true)
-  protected String db;
-
-  @XmlAttribute(name = "id", required = true)
-  protected String id;
+public class XrefType {
 
-  @XmlAttribute(name = "secondaryId")
-  protected String secondaryId;
+    @XmlAttribute(name = "db", required = true)
+    protected String db;
+    @XmlAttribute(name = "id", required = true)
+    protected String id;
+    @XmlAttribute(name = "secondaryId")
+    protected String secondaryId;
 
-  /**
-   * Gets the value of the db property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDb()
-  {
-    return db;
-  }
+    /**
+     * Gets the value of the db property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDb() {
+        return db;
+    }
 
-  /**
-   * Sets the value of the db property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDb(String value)
-  {
-    this.db = value;
-  }
+    /**
+     * Sets the value of the db property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDb(String value) {
+        this.db = value;
+    }
 
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
 
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
 
-  /**
-   * Gets the value of the secondaryId property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getSecondaryId()
-  {
-    return secondaryId;
-  }
+    /**
+     * Gets the value of the secondaryId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSecondaryId() {
+        return secondaryId;
+    }
 
-  /**
-   * Sets the value of the secondaryId property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setSecondaryId(String value)
-  {
-    this.secondaryId = value;
-  }
+    /**
+     * Sets the value of the secondaryId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSecondaryId(String value) {
+        this.secondaryId = value;
+    }
 
 }
index 9a2c488..bee5c06 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.math.BigInteger;
@@ -17,288 +18,309 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="alcodon" maxOccurs="unbounded"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="pos1" type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt;
- * &amp;lt;attribute name="pos2"
- * type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt; &amp;lt;attribute
- * name="pos3" type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="alcodMap" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}Mapping"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="dnasq" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="alcodon" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="pos1" type="{http://www.w3.org/2001/XMLSchema}integer" />
+ *                 &lt;attribute name="pos2" type="{http://www.w3.org/2001/XMLSchema}integer" />
+ *                 &lt;attribute name="pos3" type="{http://www.w3.org/2001/XMLSchema}integer" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="alcodMap" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element ref="{www.vamsas.ac.uk/jalview/version2}Mapping"/>
+ *                 &lt;/sequence>
+ *                 &lt;attribute name="dnasq" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "", propOrder = { "alcodon", "alcodMap" })
+@XmlType(name = "", propOrder = {
+    "alcodon",
+    "alcodMap"
+})
 @XmlRootElement(name = "AlcodonFrame")
-public class AlcodonFrame
-{
-
-  protected List<AlcodonFrame.Alcodon> alcodon;
-
-  protected List<AlcodonFrame.AlcodMap> alcodMap;
+public class AlcodonFrame {
 
-  /**
-   * Gets the value of the alcodon property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the alcodon property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getAlcodon().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link AlcodonFrame.Alcodon }
-   * 
-   * 
-   */
-  public List<AlcodonFrame.Alcodon> getAlcodon()
-  {
-    if (alcodon == null)
-    {
-      alcodon = new ArrayList<AlcodonFrame.Alcodon>();
-    }
-    return this.alcodon;
-  }
-
-  /**
-   * Gets the value of the alcodMap property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the alcodMap property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getAlcodMap().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link AlcodonFrame.AlcodMap }
-   * 
-   * 
-   */
-  public List<AlcodonFrame.AlcodMap> getAlcodMap()
-  {
-    if (alcodMap == null)
-    {
-      alcodMap = new ArrayList<AlcodonFrame.AlcodMap>();
-    }
-    return this.alcodMap;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element
-   * ref="{www.vamsas.ac.uk/jalview/version2}Mapping"/&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="dnasq" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "mapping" })
-  public static class AlcodMap
-  {
-
-    @XmlElement(name = "Mapping", required = true)
-    protected Mapping mapping;
-
-    @XmlAttribute(name = "dnasq", required = true)
-    protected String dnasq;
+    protected List<AlcodonFrame.Alcodon> alcodon;
+    protected List<AlcodonFrame.AlcodMap> alcodMap;
 
     /**
+     * Gets the value of the alcodon property.
      * 
-     * a Mapping entry and an associated protein sequence
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the alcodon property.
      * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAlcodon().add(newItem);
+     * </pre>
      * 
-     * @return possible object is {@link Mapping }
      * 
-     */
-    public Mapping getMapping()
-    {
-      return mapping;
-    }
-
-    /**
-     * Sets the value of the mapping property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AlcodonFrame.Alcodon }
      * 
-     * @param value
-     *          allowed object is {@link Mapping }
      * 
      */
-    public void setMapping(Mapping value)
-    {
-      this.mapping = value;
+    public List<AlcodonFrame.Alcodon> getAlcodon() {
+        if (alcodon == null) {
+            alcodon = new ArrayList<AlcodonFrame.Alcodon>();
+        }
+        return this.alcodon;
     }
 
     /**
-     * Gets the value of the dnasq property.
+     * Gets the value of the alcodMap property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the alcodMap property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAlcodMap().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AlcodonFrame.AlcodMap }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getDnasq()
-    {
-      return dnasq;
+    public List<AlcodonFrame.AlcodMap> getAlcodMap() {
+        if (alcodMap == null) {
+            alcodMap = new ArrayList<AlcodonFrame.AlcodMap>();
+        }
+        return this.alcodMap;
     }
 
+
     /**
-     * Sets the value of the dnasq property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}Mapping"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="dnasq" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setDnasq(String value)
-    {
-      this.dnasq = value;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "mapping"
+    })
+    public static class AlcodMap {
 
-  }
+        @XmlElement(name = "Mapping", required = true)
+        protected Mapping mapping;
+        @XmlAttribute(name = "dnasq", required = true)
+        protected String dnasq;
 
-  /**
-   * 
-   * specifies a series of aligned codons from an associated DNA sequence
-   * alignment that when translated correspond to columns of a peptide
-   * alignment. Element may have either all pos1,2,3 attributes specified, or
-   * none at all (indicating a gapped column with no translated peptide).
-   * 
-   * 
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="pos1" type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt;
-   * &amp;lt;attribute name="pos2"
-   * type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt;
-   * &amp;lt;attribute name="pos3"
-   * type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class Alcodon
-  {
+        /**
+         * 
+         *                                                                             a Mapping entry and an associated protein sequence
+         *                                                                     
+         * 
+         * @return
+         *     possible object is
+         *     {@link Mapping }
+         *     
+         */
+        public Mapping getMapping() {
+            return mapping;
+        }
 
-    @XmlAttribute(name = "pos1")
-    protected BigInteger pos1;
+        /**
+         * Sets the value of the mapping property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Mapping }
+         *     
+         */
+        public void setMapping(Mapping value) {
+            this.mapping = value;
+        }
 
-    @XmlAttribute(name = "pos2")
-    protected BigInteger pos2;
+        /**
+         * Gets the value of the dnasq property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getDnasq() {
+            return dnasq;
+        }
 
-    @XmlAttribute(name = "pos3")
-    protected BigInteger pos3;
+        /**
+         * Sets the value of the dnasq property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setDnasq(String value) {
+            this.dnasq = value;
+        }
 
-    /**
-     * Gets the value of the pos1 property.
-     * 
-     * @return possible object is {@link BigInteger }
-     * 
-     */
-    public BigInteger getPos1()
-    {
-      return pos1;
     }
 
-    /**
-     * Sets the value of the pos1 property.
-     * 
-     * @param value
-     *          allowed object is {@link BigInteger }
-     * 
-     */
-    public void setPos1(BigInteger value)
-    {
-      this.pos1 = value;
-    }
 
     /**
-     * Gets the value of the pos2 property.
      * 
-     * @return possible object is {@link BigInteger }
+     *                                                                 specifies a series of aligned codons from an associated DNA sequence alignment that when translated correspond to columns of a peptide alignment.
+     *                                                                 Element may have either all pos1,2,3 attributes specified, or none at all (indicating a gapped column with no translated peptide).
+     *                                                         
      * 
-     */
-    public BigInteger getPos2()
-    {
-      return pos2;
-    }
-
-    /**
-     * Sets the value of the pos2 property.
+     * <p>Java class for anonymous complex type.
      * 
-     * @param value
-     *          allowed object is {@link BigInteger }
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public void setPos2(BigInteger value)
-    {
-      this.pos2 = value;
-    }
-
-    /**
-     * Gets the value of the pos3 property.
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="pos1" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *       &lt;attribute name="pos2" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *       &lt;attribute name="pos3" type="{http://www.w3.org/2001/XMLSchema}integer" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @return possible object is {@link BigInteger }
      * 
      */
-    public BigInteger getPos3()
-    {
-      return pos3;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Alcodon {
 
-    /**
-     * Sets the value of the pos3 property.
-     * 
-     * @param value
-     *          allowed object is {@link BigInteger }
-     * 
-     */
-    public void setPos3(BigInteger value)
-    {
-      this.pos3 = value;
-    }
+        @XmlAttribute(name = "pos1")
+        protected BigInteger pos1;
+        @XmlAttribute(name = "pos2")
+        protected BigInteger pos2;
+        @XmlAttribute(name = "pos3")
+        protected BigInteger pos3;
+
+        /**
+         * Gets the value of the pos1 property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link BigInteger }
+         *     
+         */
+        public BigInteger getPos1() {
+            return pos1;
+        }
 
-  }
+        /**
+         * Sets the value of the pos1 property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BigInteger }
+         *     
+         */
+        public void setPos1(BigInteger value) {
+            this.pos1 = value;
+        }
+
+        /**
+         * Gets the value of the pos2 property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link BigInteger }
+         *     
+         */
+        public BigInteger getPos2() {
+            return pos2;
+        }
+
+        /**
+         * Sets the value of the pos2 property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BigInteger }
+         *     
+         */
+        public void setPos2(BigInteger value) {
+            this.pos2 = value;
+        }
+
+        /**
+         * Gets the value of the pos3 property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link BigInteger }
+         *     
+         */
+        public BigInteger getPos3() {
+            return pos3;
+        }
+
+        /**
+         * Sets the value of the pos3 property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link BigInteger }
+         *     
+         */
+        public void setPos3(BigInteger value) {
+            this.pos3 = value;
+        }
+
+    }
 
 }
index 8d66aa3..8c07465 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -16,846 +17,841 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}annotationElement"
- * maxOccurs="unbounded" minOccurs="0"/&amp;gt; &amp;lt;element name="label"
- * type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt; &amp;lt;element
- * name="description" type="{http://www.w3.org/2001/XMLSchema}string"
- * minOccurs="0"/&amp;gt; &amp;lt;element name="thresholdLine"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="label" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}float"
- * /&amp;gt; &amp;lt;attribute name="colour"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="property" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;attribute name="value"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="graph" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="graphType" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="sequenceRef"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="groupRef" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="graphColour"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="graphGroup" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="graphHeight"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="id" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="scoreOnly"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="score"
- * type="{http://www.w3.org/2001/XMLSchema}double" /&amp;gt; &amp;lt;attribute
- * name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="centreColLabels"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="scaleColLabels" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="showAllColLabels"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="autoCalculated" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * default="false" /&amp;gt; &amp;lt;attribute name="belowAlignment"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="calcId"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}annotationElement" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="label" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="thresholdLine" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="label" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                 &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="property" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="graph" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="graphType" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="sequenceRef" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="groupRef" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="graphColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="graphGroup" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="graphHeight" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="scoreOnly" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *       &lt;attribute name="score" type="{http://www.w3.org/2001/XMLSchema}double" />
+ *       &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="centreColLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="scaleColLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="showAllColLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="autoCalculated" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *       &lt;attribute name="belowAlignment" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *       &lt;attribute name="calcId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "",
-  propOrder =
-  { "annotationElement", "label", "description", "thresholdLine",
-      "property" })
+@XmlType(name = "", propOrder = {
+    "annotationElement",
+    "label",
+    "description",
+    "thresholdLine",
+    "property"
+})
 @XmlRootElement(name = "Annotation")
-public class Annotation
-{
+public class Annotation {
 
-  protected List<AnnotationElement> annotationElement;
+    protected List<AnnotationElement> annotationElement;
+    @XmlElement(required = true)
+    protected String label;
+    protected String description;
+    protected Annotation.ThresholdLine thresholdLine;
+    protected List<Annotation.Property> property;
+    @XmlAttribute(name = "graph", required = true)
+    protected boolean graph;
+    @XmlAttribute(name = "graphType")
+    protected Integer graphType;
+    @XmlAttribute(name = "sequenceRef")
+    protected String sequenceRef;
+    @XmlAttribute(name = "groupRef")
+    protected String groupRef;
+    @XmlAttribute(name = "graphColour")
+    protected Integer graphColour;
+    @XmlAttribute(name = "graphGroup")
+    protected Integer graphGroup;
+    @XmlAttribute(name = "graphHeight")
+    protected Integer graphHeight;
+    @XmlAttribute(name = "id")
+    protected String id;
+    @XmlAttribute(name = "scoreOnly")
+    protected Boolean scoreOnly;
+    @XmlAttribute(name = "score")
+    protected Double score;
+    @XmlAttribute(name = "visible")
+    protected Boolean visible;
+    @XmlAttribute(name = "centreColLabels")
+    protected Boolean centreColLabels;
+    @XmlAttribute(name = "scaleColLabels")
+    protected Boolean scaleColLabels;
+    @XmlAttribute(name = "showAllColLabels")
+    protected Boolean showAllColLabels;
+    @XmlAttribute(name = "autoCalculated")
+    protected Boolean autoCalculated;
+    @XmlAttribute(name = "belowAlignment")
+    protected Boolean belowAlignment;
+    @XmlAttribute(name = "calcId")
+    protected String calcId;
 
-  @XmlElement(required = true)
-  protected String label;
-
-  protected String description;
-
-  protected Annotation.ThresholdLine thresholdLine;
-
-  protected List<Annotation.Property> property;
-
-  @XmlAttribute(name = "graph", required = true)
-  protected boolean graph;
-
-  @XmlAttribute(name = "graphType")
-  protected Integer graphType;
-
-  @XmlAttribute(name = "sequenceRef")
-  protected String sequenceRef;
-
-  @XmlAttribute(name = "groupRef")
-  protected String groupRef;
-
-  @XmlAttribute(name = "graphColour")
-  protected Integer graphColour;
-
-  @XmlAttribute(name = "graphGroup")
-  protected Integer graphGroup;
-
-  @XmlAttribute(name = "graphHeight")
-  protected Integer graphHeight;
-
-  @XmlAttribute(name = "id")
-  protected String id;
-
-  @XmlAttribute(name = "scoreOnly")
-  protected Boolean scoreOnly;
-
-  @XmlAttribute(name = "score")
-  protected Double score;
-
-  @XmlAttribute(name = "visible")
-  protected Boolean visible;
-
-  @XmlAttribute(name = "centreColLabels")
-  protected Boolean centreColLabels;
-
-  @XmlAttribute(name = "scaleColLabels")
-  protected Boolean scaleColLabels;
-
-  @XmlAttribute(name = "showAllColLabels")
-  protected Boolean showAllColLabels;
-
-  @XmlAttribute(name = "autoCalculated")
-  protected Boolean autoCalculated;
-
-  @XmlAttribute(name = "belowAlignment")
-  protected Boolean belowAlignment;
-
-  @XmlAttribute(name = "calcId")
-  protected String calcId;
-
-  /**
-   * Gets the value of the annotationElement property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the annotationElement property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getAnnotationElement().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link AnnotationElement }
-   * 
-   * 
-   */
-  public List<AnnotationElement> getAnnotationElement()
-  {
-    if (annotationElement == null)
-    {
-      annotationElement = new ArrayList<AnnotationElement>();
-    }
-    return this.annotationElement;
-  }
-
-  /**
-   * Gets the value of the label property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getLabel()
-  {
-    return label;
-  }
-
-  /**
-   * Sets the value of the label property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setLabel(String value)
-  {
-    this.label = value;
-  }
-
-  /**
-   * Gets the value of the description property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDescription()
-  {
-    return description;
-  }
-
-  /**
-   * Sets the value of the description property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDescription(String value)
-  {
-    this.description = value;
-  }
-
-  /**
-   * Gets the value of the thresholdLine property.
-   * 
-   * @return possible object is {@link Annotation.ThresholdLine }
-   * 
-   */
-  public Annotation.ThresholdLine getThresholdLine()
-  {
-    return thresholdLine;
-  }
-
-  /**
-   * Sets the value of the thresholdLine property.
-   * 
-   * @param value
-   *          allowed object is {@link Annotation.ThresholdLine }
-   * 
-   */
-  public void setThresholdLine(Annotation.ThresholdLine value)
-  {
-    this.thresholdLine = value;
-  }
-
-  /**
-   * Gets the value of the property property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the property property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getProperty().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link Annotation.Property }
-   * 
-   * 
-   */
-  public List<Annotation.Property> getProperty()
-  {
-    if (property == null)
-    {
-      property = new ArrayList<Annotation.Property>();
-    }
-    return this.property;
-  }
-
-  /**
-   * Gets the value of the graph property.
-   * 
-   */
-  public boolean isGraph()
-  {
-    return graph;
-  }
-
-  /**
-   * Sets the value of the graph property.
-   * 
-   */
-  public void setGraph(boolean value)
-  {
-    this.graph = value;
-  }
-
-  /**
-   * Gets the value of the graphType property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getGraphType()
-  {
-    return graphType;
-  }
-
-  /**
-   * Sets the value of the graphType property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setGraphType(Integer value)
-  {
-    this.graphType = value;
-  }
-
-  /**
-   * Gets the value of the sequenceRef property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getSequenceRef()
-  {
-    return sequenceRef;
-  }
-
-  /**
-   * Sets the value of the sequenceRef property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setSequenceRef(String value)
-  {
-    this.sequenceRef = value;
-  }
-
-  /**
-   * Gets the value of the groupRef property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getGroupRef()
-  {
-    return groupRef;
-  }
-
-  /**
-   * Sets the value of the groupRef property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setGroupRef(String value)
-  {
-    this.groupRef = value;
-  }
-
-  /**
-   * Gets the value of the graphColour property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getGraphColour()
-  {
-    return graphColour;
-  }
-
-  /**
-   * Sets the value of the graphColour property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setGraphColour(Integer value)
-  {
-    this.graphColour = value;
-  }
-
-  /**
-   * Gets the value of the graphGroup property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getGraphGroup()
-  {
-    return graphGroup;
-  }
-
-  /**
-   * Sets the value of the graphGroup property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setGraphGroup(Integer value)
-  {
-    this.graphGroup = value;
-  }
-
-  /**
-   * Gets the value of the graphHeight property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getGraphHeight()
-  {
-    return graphHeight;
-  }
-
-  /**
-   * Sets the value of the graphHeight property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setGraphHeight(Integer value)
-  {
-    this.graphHeight = value;
-  }
-
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
-
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
-
-  /**
-   * Gets the value of the scoreOnly property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public boolean isScoreOnly()
-  {
-    if (scoreOnly == null)
-    {
-      return false;
-    }
-    else
-    {
-      return scoreOnly;
-    }
-  }
-
-  /**
-   * Sets the value of the scoreOnly property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setScoreOnly(Boolean value)
-  {
-    this.scoreOnly = value;
-  }
-
-  /**
-   * Gets the value of the score property.
-   * 
-   * @return possible object is {@link Double }
-   * 
-   */
-  public Double getScore()
-  {
-    return score;
-  }
-
-  /**
-   * Sets the value of the score property.
-   * 
-   * @param value
-   *          allowed object is {@link Double }
-   * 
-   */
-  public void setScore(Double value)
-  {
-    this.score = value;
-  }
-
-  /**
-   * Gets the value of the visible property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isVisible()
-  {
-    return visible;
-  }
-
-  /**
-   * Sets the value of the visible property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setVisible(Boolean value)
-  {
-    this.visible = value;
-  }
-
-  /**
-   * Gets the value of the centreColLabels property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isCentreColLabels()
-  {
-    return centreColLabels;
-  }
-
-  /**
-   * Sets the value of the centreColLabels property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setCentreColLabels(Boolean value)
-  {
-    this.centreColLabels = value;
-  }
-
-  /**
-   * Gets the value of the scaleColLabels property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isScaleColLabels()
-  {
-    return scaleColLabels;
-  }
-
-  /**
-   * Sets the value of the scaleColLabels property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setScaleColLabels(Boolean value)
-  {
-    this.scaleColLabels = value;
-  }
-
-  /**
-   * Gets the value of the showAllColLabels property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isShowAllColLabels()
-  {
-    return showAllColLabels;
-  }
-
-  /**
-   * Sets the value of the showAllColLabels property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setShowAllColLabels(Boolean value)
-  {
-    this.showAllColLabels = value;
-  }
-
-  /**
-   * Gets the value of the autoCalculated property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public boolean isAutoCalculated()
-  {
-    if (autoCalculated == null)
-    {
-      return false;
-    }
-    else
-    {
-      return autoCalculated;
-    }
-  }
-
-  /**
-   * Sets the value of the autoCalculated property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setAutoCalculated(Boolean value)
-  {
-    this.autoCalculated = value;
-  }
-
-  /**
-   * Gets the value of the belowAlignment property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public boolean isBelowAlignment()
-  {
-    if (belowAlignment == null)
-    {
-      return true;
-    }
-    else
-    {
-      return belowAlignment;
-    }
-  }
-
-  /**
-   * Sets the value of the belowAlignment property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setBelowAlignment(Boolean value)
-  {
-    this.belowAlignment = value;
-  }
-
-  /**
-   * Gets the value of the calcId property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getCalcId()
-  {
-    return calcId;
-  }
-
-  /**
-   * Sets the value of the calcId property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setCalcId(String value)
-  {
-    this.calcId = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="name" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="value"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class Property
-  {
-
-    @XmlAttribute(name = "name")
-    protected String name;
-
-    @XmlAttribute(name = "value")
-    protected String value;
-
-    /**
-     * Gets the value of the name property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getName()
-    {
-      return name;
-    }
-
-    /**
-     * Sets the value of the name property.
+    /**
+     * Gets the value of the annotationElement property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the annotationElement property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAnnotationElement().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AnnotationElement }
+     * 
+     * 
+     */
+    public List<AnnotationElement> getAnnotationElement() {
+        if (annotationElement == null) {
+            annotationElement = new ArrayList<AnnotationElement>();
+        }
+        return this.annotationElement;
+    }
+
+    /**
+     * Gets the value of the label property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLabel() {
+        return label;
+    }
+
+    /**
+     * Sets the value of the label property.
      * 
      * @param value
-     *          allowed object is {@link String }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLabel(String value) {
+        this.label = value;
+    }
+
+    /**
+     * Gets the value of the description property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public void setName(String value)
-    {
-      this.name = value;
+    public String getDescription() {
+        return description;
     }
 
     /**
-     * Gets the value of the value property.
+     * Sets the value of the description property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the thresholdLine property.
      * 
+     * @return
+     *     possible object is
+     *     {@link Annotation.ThresholdLine }
+     *     
      */
-    public String getValue()
-    {
-      return value;
+    public Annotation.ThresholdLine getThresholdLine() {
+        return thresholdLine;
     }
 
     /**
-     * Sets the value of the value property.
+     * Sets the value of the thresholdLine property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setValue(String value)
-    {
-      this.value = value;
-    }
-
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="label" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="value"
-   * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
-   * name="colour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class ThresholdLine
-  {
-
-    @XmlAttribute(name = "label")
-    protected String label;
+     *     allowed object is
+     *     {@link Annotation.ThresholdLine }
+     *     
+     */
+    public void setThresholdLine(Annotation.ThresholdLine value) {
+        this.thresholdLine = value;
+    }
 
-    @XmlAttribute(name = "value")
-    protected Float value;
+    /**
+     * Gets the value of the property property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the property property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getProperty().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Annotation.Property }
+     * 
+     * 
+     */
+    public List<Annotation.Property> getProperty() {
+        if (property == null) {
+            property = new ArrayList<Annotation.Property>();
+        }
+        return this.property;
+    }
 
-    @XmlAttribute(name = "colour")
-    protected Integer colour;
+    /**
+     * Gets the value of the graph property.
+     * 
+     */
+    public boolean isGraph() {
+        return graph;
+    }
 
     /**
-     * Gets the value of the label property.
+     * Sets the value of the graph property.
      * 
-     * @return possible object is {@link String }
+     */
+    public void setGraph(boolean value) {
+        this.graph = value;
+    }
+
+    /**
+     * Gets the value of the graphType property.
      * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
      */
-    public String getLabel()
-    {
-      return label;
+    public Integer getGraphType() {
+        return graphType;
     }
 
     /**
-     * Sets the value of the label property.
+     * Sets the value of the graphType property.
      * 
      * @param value
-     *          allowed object is {@link String }
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setGraphType(Integer value) {
+        this.graphType = value;
+    }
+
+    /**
+     * Gets the value of the sequenceRef property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSequenceRef() {
+        return sequenceRef;
+    }
+
+    /**
+     * Sets the value of the sequenceRef property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSequenceRef(String value) {
+        this.sequenceRef = value;
+    }
+
+    /**
+     * Gets the value of the groupRef property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getGroupRef() {
+        return groupRef;
+    }
+
+    /**
+     * Sets the value of the groupRef property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setLabel(String value)
-    {
-      this.label = value;
+    public void setGroupRef(String value) {
+        this.groupRef = value;
     }
 
     /**
-     * Gets the value of the value property.
+     * Gets the value of the graphColour property.
      * 
-     * @return possible object is {@link Float }
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getGraphColour() {
+        return graphColour;
+    }
+
+    /**
+     * Sets the value of the graphColour property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setGraphColour(Integer value) {
+        this.graphColour = value;
+    }
+
+    /**
+     * Gets the value of the graphGroup property.
      * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
      */
-    public Float getValue()
-    {
-      return value;
+    public Integer getGraphGroup() {
+        return graphGroup;
     }
 
     /**
-     * Sets the value of the value property.
+     * Sets the value of the graphGroup property.
      * 
      * @param value
-     *          allowed object is {@link Float }
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setGraphGroup(Integer value) {
+        this.graphGroup = value;
+    }
+
+    /**
+     * Gets the value of the graphHeight property.
      * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
      */
-    public void setValue(Float value)
-    {
-      this.value = value;
+    public Integer getGraphHeight() {
+        return graphHeight;
     }
 
     /**
-     * Gets the value of the colour property.
+     * Sets the value of the graphHeight property.
      * 
-     * @return possible object is {@link Integer }
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setGraphHeight(Integer value) {
+        this.graphHeight = value;
+    }
+
+    /**
+     * Gets the value of the id property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public Integer getColour()
-    {
-      return colour;
+    public String getId() {
+        return id;
     }
 
     /**
-     * Sets the value of the colour property.
+     * Sets the value of the id property.
      * 
      * @param value
-     *          allowed object is {@link Integer }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the scoreOnly property.
      * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
      */
-    public void setColour(Integer value)
-    {
-      this.colour = value;
+    public boolean isScoreOnly() {
+        if (scoreOnly == null) {
+            return false;
+        } else {
+            return scoreOnly;
+        }
     }
 
-  }
+    /**
+     * Sets the value of the scoreOnly property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setScoreOnly(Boolean value) {
+        this.scoreOnly = value;
+    }
+
+    /**
+     * Gets the value of the score property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Double }
+     *     
+     */
+    public Double getScore() {
+        return score;
+    }
+
+    /**
+     * Sets the value of the score property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Double }
+     *     
+     */
+    public void setScore(Double value) {
+        this.score = value;
+    }
+
+    /**
+     * Gets the value of the visible property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isVisible() {
+        return visible;
+    }
+
+    /**
+     * Sets the value of the visible property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setVisible(Boolean value) {
+        this.visible = value;
+    }
+
+    /**
+     * Gets the value of the centreColLabels property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isCentreColLabels() {
+        return centreColLabels;
+    }
+
+    /**
+     * Sets the value of the centreColLabels property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setCentreColLabels(Boolean value) {
+        this.centreColLabels = value;
+    }
+
+    /**
+     * Gets the value of the scaleColLabels property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isScaleColLabels() {
+        return scaleColLabels;
+    }
+
+    /**
+     * Sets the value of the scaleColLabels property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setScaleColLabels(Boolean value) {
+        this.scaleColLabels = value;
+    }
+
+    /**
+     * Gets the value of the showAllColLabels property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isShowAllColLabels() {
+        return showAllColLabels;
+    }
+
+    /**
+     * Sets the value of the showAllColLabels property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setShowAllColLabels(Boolean value) {
+        this.showAllColLabels = value;
+    }
+
+    /**
+     * Gets the value of the autoCalculated property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isAutoCalculated() {
+        if (autoCalculated == null) {
+            return false;
+        } else {
+            return autoCalculated;
+        }
+    }
+
+    /**
+     * Sets the value of the autoCalculated property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setAutoCalculated(Boolean value) {
+        this.autoCalculated = value;
+    }
+
+    /**
+     * Gets the value of the belowAlignment property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public boolean isBelowAlignment() {
+        if (belowAlignment == null) {
+            return true;
+        } else {
+            return belowAlignment;
+        }
+    }
+
+    /**
+     * Sets the value of the belowAlignment property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setBelowAlignment(Boolean value) {
+        this.belowAlignment = value;
+    }
+
+    /**
+     * Gets the value of the calcId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCalcId() {
+        return calcId;
+    }
+
+    /**
+     * Sets the value of the calcId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCalcId(String value) {
+        this.calcId = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Property {
+
+        @XmlAttribute(name = "name")
+        protected String name;
+        @XmlAttribute(name = "value")
+        protected String value;
+
+        /**
+         * Gets the value of the name property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * Sets the value of the name property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setName(String value) {
+            this.name = value;
+        }
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="label" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *       &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class ThresholdLine {
+
+        @XmlAttribute(name = "label")
+        protected String label;
+        @XmlAttribute(name = "value")
+        protected Float value;
+        @XmlAttribute(name = "colour")
+        protected Integer colour;
+
+        /**
+         * Gets the value of the label property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getLabel() {
+            return label;
+        }
+
+        /**
+         * Sets the value of the label property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setLabel(String value) {
+            this.label = value;
+        }
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setValue(Float value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the colour property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getColour() {
+            return colour;
+        }
+
+        /**
+         * Sets the value of the colour property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setColour(Integer value) {
+            this.colour = value;
+        }
+
+    }
 
 }
index e697228..522d9c6 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,243 +13,242 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for AnnotationColourScheme complex type.
+ * <p>Java class for AnnotationColourScheme complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="AnnotationColourScheme"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="aboveThreshold" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="annotation"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="minColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="maxColour"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="colourScheme" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="threshold"
- * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
- * name="perSequence" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="predefinedColours"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="AnnotationColourScheme">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;attribute name="aboveThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="annotation" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="minColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="maxColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="colourScheme" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *       &lt;attribute name="perSequence" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *       &lt;attribute name="predefinedColours" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "AnnotationColourScheme", namespace = "www.jalview.org")
-public class AnnotationColourScheme
-{
-
-  @XmlAttribute(name = "aboveThreshold")
-  protected Integer aboveThreshold;
-
-  @XmlAttribute(name = "annotation")
-  protected String annotation;
-
-  @XmlAttribute(name = "minColour")
-  protected Integer minColour;
-
-  @XmlAttribute(name = "maxColour")
-  protected Integer maxColour;
-
-  @XmlAttribute(name = "colourScheme")
-  protected String colourScheme;
-
-  @XmlAttribute(name = "threshold")
-  protected Float threshold;
-
-  @XmlAttribute(name = "perSequence")
-  protected Boolean perSequence;
-
-  @XmlAttribute(name = "predefinedColours")
-  protected Boolean predefinedColours;
-
-  /**
-   * Gets the value of the aboveThreshold property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getAboveThreshold()
-  {
-    return aboveThreshold;
-  }
-
-  /**
-   * Sets the value of the aboveThreshold property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setAboveThreshold(Integer value)
-  {
-    this.aboveThreshold = value;
-  }
-
-  /**
-   * Gets the value of the annotation property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getAnnotation()
-  {
-    return annotation;
-  }
-
-  /**
-   * Sets the value of the annotation property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setAnnotation(String value)
-  {
-    this.annotation = value;
-  }
-
-  /**
-   * Gets the value of the minColour property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getMinColour()
-  {
-    return minColour;
-  }
-
-  /**
-   * Sets the value of the minColour property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setMinColour(Integer value)
-  {
-    this.minColour = value;
-  }
-
-  /**
-   * Gets the value of the maxColour property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getMaxColour()
-  {
-    return maxColour;
-  }
-
-  /**
-   * Sets the value of the maxColour property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setMaxColour(Integer value)
-  {
-    this.maxColour = value;
-  }
-
-  /**
-   * Gets the value of the colourScheme property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getColourScheme()
-  {
-    return colourScheme;
-  }
-
-  /**
-   * Sets the value of the colourScheme property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setColourScheme(String value)
-  {
-    this.colourScheme = value;
-  }
-
-  /**
-   * Gets the value of the threshold property.
-   * 
-   * @return possible object is {@link Float }
-   * 
-   */
-  public Float getThreshold()
-  {
-    return threshold;
-  }
-
-  /**
-   * Sets the value of the threshold property.
-   * 
-   * @param value
-   *          allowed object is {@link Float }
-   * 
-   */
-  public void setThreshold(Float value)
-  {
-    this.threshold = value;
-  }
-
-  /**
-   * Gets the value of the perSequence property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isPerSequence()
-  {
-    return perSequence;
-  }
-
-  /**
-   * Sets the value of the perSequence property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setPerSequence(Boolean value)
-  {
-    this.perSequence = value;
-  }
-
-  /**
-   * Gets the value of the predefinedColours property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isPredefinedColours()
-  {
-    return predefinedColours;
-  }
-
-  /**
-   * Sets the value of the predefinedColours property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setPredefinedColours(Boolean value)
-  {
-    this.predefinedColours = value;
-  }
+public class AnnotationColourScheme {
+
+    @XmlAttribute(name = "aboveThreshold")
+    protected Integer aboveThreshold;
+    @XmlAttribute(name = "annotation")
+    protected String annotation;
+    @XmlAttribute(name = "minColour")
+    protected Integer minColour;
+    @XmlAttribute(name = "maxColour")
+    protected Integer maxColour;
+    @XmlAttribute(name = "colourScheme")
+    protected String colourScheme;
+    @XmlAttribute(name = "threshold")
+    protected Float threshold;
+    @XmlAttribute(name = "perSequence")
+    protected Boolean perSequence;
+    @XmlAttribute(name = "predefinedColours")
+    protected Boolean predefinedColours;
+
+    /**
+     * Gets the value of the aboveThreshold property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getAboveThreshold() {
+        return aboveThreshold;
+    }
+
+    /**
+     * Sets the value of the aboveThreshold property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setAboveThreshold(Integer value) {
+        this.aboveThreshold = value;
+    }
+
+    /**
+     * Gets the value of the annotation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getAnnotation() {
+        return annotation;
+    }
+
+    /**
+     * Sets the value of the annotation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setAnnotation(String value) {
+        this.annotation = value;
+    }
+
+    /**
+     * Gets the value of the minColour property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getMinColour() {
+        return minColour;
+    }
+
+    /**
+     * Sets the value of the minColour property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setMinColour(Integer value) {
+        this.minColour = value;
+    }
+
+    /**
+     * Gets the value of the maxColour property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getMaxColour() {
+        return maxColour;
+    }
+
+    /**
+     * Sets the value of the maxColour property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setMaxColour(Integer value) {
+        this.maxColour = value;
+    }
+
+    /**
+     * Gets the value of the colourScheme property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getColourScheme() {
+        return colourScheme;
+    }
+
+    /**
+     * Sets the value of the colourScheme property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setColourScheme(String value) {
+        this.colourScheme = value;
+    }
+
+    /**
+     * Gets the value of the threshold property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Float }
+     *     
+     */
+    public Float getThreshold() {
+        return threshold;
+    }
+
+    /**
+     * Sets the value of the threshold property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Float }
+     *     
+     */
+    public void setThreshold(Float value) {
+        this.threshold = value;
+    }
+
+    /**
+     * Gets the value of the perSequence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isPerSequence() {
+        return perSequence;
+    }
+
+    /**
+     * Sets the value of the perSequence property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setPerSequence(Boolean value) {
+        this.perSequence = value;
+    }
+
+    /**
+     * Gets the value of the predefinedColours property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isPredefinedColours() {
+        return predefinedColours;
+    }
+
+    /**
+     * Sets the value of the predefinedColours property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setPredefinedColours(Boolean value) {
+        this.predefinedColours = value;
+    }
 
 }
index ec1216b..99d82a7 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -13,186 +14,190 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="displayCharacter"
- * type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="description"
- * type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="secondaryStructure" minOccurs="0"&amp;gt;
- * &amp;lt;simpleType&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}string"&amp;gt; &amp;lt;length
- * value="1"/&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/simpleType&amp;gt;
- * &amp;lt;/element&amp;gt; &amp;lt;element name="value"
- * type="{http://www.w3.org/2001/XMLSchema}float" minOccurs="0"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="position" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="colour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="displayCharacter" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="secondaryStructure" minOccurs="0">
+ *           &lt;simpleType>
+ *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *               &lt;length value="1"/>
+ *             &lt;/restriction>
+ *           &lt;/simpleType>
+ *         &lt;/element>
+ *         &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}float" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="position" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "",
-  propOrder =
-  { "displayCharacter", "description", "secondaryStructure", "value" })
+@XmlType(name = "", propOrder = {
+    "displayCharacter",
+    "description",
+    "secondaryStructure",
+    "value"
+})
 @XmlRootElement(name = "annotationElement")
-public class AnnotationElement
-{
-
-  protected String displayCharacter;
-
-  protected String description;
-
-  protected String secondaryStructure;
-
-  protected Float value;
-
-  @XmlAttribute(name = "position", required = true)
-  protected int position;
-
-  @XmlAttribute(name = "colour")
-  protected Integer colour;
-
-  /**
-   * Gets the value of the displayCharacter property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDisplayCharacter()
-  {
-    return displayCharacter;
-  }
-
-  /**
-   * Sets the value of the displayCharacter property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDisplayCharacter(String value)
-  {
-    this.displayCharacter = value;
-  }
-
-  /**
-   * Gets the value of the description property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDescription()
-  {
-    return description;
-  }
-
-  /**
-   * Sets the value of the description property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDescription(String value)
-  {
-    this.description = value;
-  }
-
-  /**
-   * Gets the value of the secondaryStructure property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getSecondaryStructure()
-  {
-    return secondaryStructure;
-  }
-
-  /**
-   * Sets the value of the secondaryStructure property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setSecondaryStructure(String value)
-  {
-    this.secondaryStructure = value;
-  }
-
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link Float }
-   * 
-   */
-  public Float getValue()
-  {
-    return value;
-  }
-
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link Float }
-   * 
-   */
-  public void setValue(Float value)
-  {
-    this.value = value;
-  }
-
-  /**
-   * Gets the value of the position property.
-   * 
-   */
-  public int getPosition()
-  {
-    return position;
-  }
-
-  /**
-   * Sets the value of the position property.
-   * 
-   */
-  public void setPosition(int value)
-  {
-    this.position = value;
-  }
-
-  /**
-   * Gets the value of the colour property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getColour()
-  {
-    return colour;
-  }
-
-  /**
-   * Sets the value of the colour property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setColour(Integer value)
-  {
-    this.colour = value;
-  }
+public class AnnotationElement {
+
+    protected String displayCharacter;
+    protected String description;
+    protected String secondaryStructure;
+    protected Float value;
+    @XmlAttribute(name = "position", required = true)
+    protected int position;
+    @XmlAttribute(name = "colour")
+    protected Integer colour;
+
+    /**
+     * Gets the value of the displayCharacter property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDisplayCharacter() {
+        return displayCharacter;
+    }
+
+    /**
+     * Sets the value of the displayCharacter property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDisplayCharacter(String value) {
+        this.displayCharacter = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the secondaryStructure property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSecondaryStructure() {
+        return secondaryStructure;
+    }
+
+    /**
+     * Sets the value of the secondaryStructure property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSecondaryStructure(String value) {
+        this.secondaryStructure = value;
+    }
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Float }
+     *     
+     */
+    public Float getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Float }
+     *     
+     */
+    public void setValue(Float value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the position property.
+     * 
+     */
+    public int getPosition() {
+        return position;
+    }
+
+    /**
+     * Sets the value of the position property.
+     * 
+     */
+    public void setPosition(int value) {
+        this.position = value;
+    }
+
+    /**
+     * Gets the value of the colour property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getColour() {
+        return colour;
+    }
+
+    /**
+     * Sets the value of the colour property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setColour(Integer value) {
+        this.colour = value;
+    }
 
 }
index 7ce2892..77c6bb7 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,167 +16,171 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for DoubleMatrix complex type.
+ * <p>Java class for DoubleMatrix complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="DoubleMatrix"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="row"
- * type="{www.jalview.org}DoubleVector" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;element name="D"
- * type="{www.jalview.org}DoubleVector" minOccurs="0"/&amp;gt; &amp;lt;element
- * name="E" type="{www.jalview.org}DoubleVector" minOccurs="0"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="rows"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="columns" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="DoubleMatrix">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="row" type="{www.jalview.org}DoubleVector" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="D" type="{www.jalview.org}DoubleVector" minOccurs="0"/>
+ *         &lt;element name="E" type="{www.jalview.org}DoubleVector" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="rows" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="columns" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "DoubleMatrix",
-  namespace = "www.jalview.org",
-  propOrder =
-  { "row", "d", "e" })
-public class DoubleMatrix
-{
-
-  protected List<DoubleVector> row;
-
-  @XmlElement(name = "D")
-  protected DoubleVector d;
-
-  @XmlElement(name = "E")
-  protected DoubleVector e;
-
-  @XmlAttribute(name = "rows")
-  protected Integer rows;
-
-  @XmlAttribute(name = "columns")
-  protected Integer columns;
-
-  /**
-   * Gets the value of the row property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the row property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getRow().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link DoubleVector }
-   * 
-   * 
-   */
-  public List<DoubleVector> getRow()
-  {
-    if (row == null)
-    {
-      row = new ArrayList<DoubleVector>();
+@XmlType(name = "DoubleMatrix", namespace = "www.jalview.org", propOrder = {
+    "row",
+    "d",
+    "e"
+})
+public class DoubleMatrix {
+
+    protected List<DoubleVector> row;
+    @XmlElement(name = "D")
+    protected DoubleVector d;
+    @XmlElement(name = "E")
+    protected DoubleVector e;
+    @XmlAttribute(name = "rows")
+    protected Integer rows;
+    @XmlAttribute(name = "columns")
+    protected Integer columns;
+
+    /**
+     * Gets the value of the row property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the row property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getRow().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DoubleVector }
+     * 
+     * 
+     */
+    public List<DoubleVector> getRow() {
+        if (row == null) {
+            row = new ArrayList<DoubleVector>();
+        }
+        return this.row;
+    }
+
+    /**
+     * Gets the value of the d property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DoubleVector }
+     *     
+     */
+    public DoubleVector getD() {
+        return d;
+    }
+
+    /**
+     * Sets the value of the d property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DoubleVector }
+     *     
+     */
+    public void setD(DoubleVector value) {
+        this.d = value;
+    }
+
+    /**
+     * Gets the value of the e property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DoubleVector }
+     *     
+     */
+    public DoubleVector getE() {
+        return e;
+    }
+
+    /**
+     * Sets the value of the e property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DoubleVector }
+     *     
+     */
+    public void setE(DoubleVector value) {
+        this.e = value;
+    }
+
+    /**
+     * Gets the value of the rows property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getRows() {
+        return rows;
+    }
+
+    /**
+     * Sets the value of the rows property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setRows(Integer value) {
+        this.rows = value;
+    }
+
+    /**
+     * Gets the value of the columns property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getColumns() {
+        return columns;
+    }
+
+    /**
+     * Sets the value of the columns property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setColumns(Integer value) {
+        this.columns = value;
     }
-    return this.row;
-  }
-
-  /**
-   * Gets the value of the d property.
-   * 
-   * @return possible object is {@link DoubleVector }
-   * 
-   */
-  public DoubleVector getD()
-  {
-    return d;
-  }
-
-  /**
-   * Sets the value of the d property.
-   * 
-   * @param value
-   *          allowed object is {@link DoubleVector }
-   * 
-   */
-  public void setD(DoubleVector value)
-  {
-    this.d = value;
-  }
-
-  /**
-   * Gets the value of the e property.
-   * 
-   * @return possible object is {@link DoubleVector }
-   * 
-   */
-  public DoubleVector getE()
-  {
-    return e;
-  }
-
-  /**
-   * Sets the value of the e property.
-   * 
-   * @param value
-   *          allowed object is {@link DoubleVector }
-   * 
-   */
-  public void setE(DoubleVector value)
-  {
-    this.e = value;
-  }
-
-  /**
-   * Gets the value of the rows property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getRows()
-  {
-    return rows;
-  }
-
-  /**
-   * Sets the value of the rows property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setRows(Integer value)
-  {
-    this.rows = value;
-  }
-
-  /**
-   * Gets the value of the columns property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getColumns()
-  {
-    return columns;
-  }
-
-  /**
-   * Sets the value of the columns property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setColumns(Integer value)
-  {
-    this.columns = value;
-  }
 
 }
index 4995dd3..f1dad96 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -14,58 +15,62 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for DoubleVector complex type.
+ * <p>Java class for DoubleVector complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="DoubleVector"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="v"
- * type="{http://www.w3.org/2001/XMLSchema}double" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="DoubleVector">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="v" type="{http://www.w3.org/2001/XMLSchema}double" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "DoubleVector",
-  namespace = "www.jalview.org",
-  propOrder =
-  { "v" })
-public class DoubleVector
-{
+@XmlType(name = "DoubleVector", namespace = "www.jalview.org", propOrder = {
+    "v"
+})
+public class DoubleVector {
 
-  @XmlElement(type = Double.class)
-  protected List<Double> v;
+    @XmlElement(type = Double.class)
+    protected List<Double> v;
 
-  /**
-   * Gets the value of the v property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the v property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getV().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link Double }
-   * 
-   * 
-   */
-  public List<Double> getV()
-  {
-    if (v == null)
-    {
-      v = new ArrayList<Double>();
+    /**
+     * Gets the value of the v property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the v property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getV().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Double }
+     * 
+     * 
+     */
+    public List<Double> getV() {
+        if (v == null) {
+            v = new ArrayList<Double>();
+        }
+        return this.v;
     }
-    return this.v;
-  }
 
 }
index 4c496e5..dac24c4 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -14,350 +15,349 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for feature complex type.
+ * <p>Java class for feature complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="feature"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="otherData"
- * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="key" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;attribute name="key2"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="begin" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;attribute name="type" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="description" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="status"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="featureGroup" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="score" type="{http://www.w3.org/2001/XMLSchema}float"
- * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="feature">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="otherData" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="key" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="key2" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="begin" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *       &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="description" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="status" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="featureGroup" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="score" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "feature",
-  namespace = "www.jalview.org",
-  propOrder =
-  { "otherData" })
-public class Feature
-{
-
-  protected List<Feature.OtherData> otherData;
-
-  @XmlAttribute(name = "begin", required = true)
-  protected int begin;
-
-  @XmlAttribute(name = "end", required = true)
-  protected int end;
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
-
-  @XmlAttribute(name = "description")
-  protected String description;
-
-  @XmlAttribute(name = "status")
-  protected String status;
-
-  @XmlAttribute(name = "featureGroup")
-  protected String featureGroup;
-
-  @XmlAttribute(name = "score")
-  protected Float score;
-
-  /**
-   * Gets the value of the otherData property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the otherData property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getOtherData().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link Feature.OtherData }
-   * 
-   * 
-   */
-  public List<Feature.OtherData> getOtherData()
-  {
-    if (otherData == null)
-    {
-      otherData = new ArrayList<Feature.OtherData>();
+@XmlType(name = "feature", namespace = "www.jalview.org", propOrder = {
+    "otherData"
+})
+public class Feature {
+
+    protected List<Feature.OtherData> otherData;
+    @XmlAttribute(name = "begin", required = true)
+    protected int begin;
+    @XmlAttribute(name = "end", required = true)
+    protected int end;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "description")
+    protected String description;
+    @XmlAttribute(name = "status")
+    protected String status;
+    @XmlAttribute(name = "featureGroup")
+    protected String featureGroup;
+    @XmlAttribute(name = "score")
+    protected Float score;
+
+    /**
+     * Gets the value of the otherData property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the otherData property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOtherData().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Feature.OtherData }
+     * 
+     * 
+     */
+    public List<Feature.OtherData> getOtherData() {
+        if (otherData == null) {
+            otherData = new ArrayList<Feature.OtherData>();
+        }
+        return this.otherData;
     }
-    return this.otherData;
-  }
-
-  /**
-   * Gets the value of the begin property.
-   * 
-   */
-  public int getBegin()
-  {
-    return begin;
-  }
-
-  /**
-   * Sets the value of the begin property.
-   * 
-   */
-  public void setBegin(int value)
-  {
-    this.begin = value;
-  }
-
-  /**
-   * Gets the value of the end property.
-   * 
-   */
-  public int getEnd()
-  {
-    return end;
-  }
-
-  /**
-   * Sets the value of the end property.
-   * 
-   */
-  public void setEnd(int value)
-  {
-    this.end = value;
-  }
-
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
-
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
-
-  /**
-   * Gets the value of the description property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDescription()
-  {
-    return description;
-  }
-
-  /**
-   * Sets the value of the description property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDescription(String value)
-  {
-    this.description = value;
-  }
-
-  /**
-   * Gets the value of the status property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getStatus()
-  {
-    return status;
-  }
-
-  /**
-   * Sets the value of the status property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setStatus(String value)
-  {
-    this.status = value;
-  }
-
-  /**
-   * Gets the value of the featureGroup property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getFeatureGroup()
-  {
-    return featureGroup;
-  }
-
-  /**
-   * Sets the value of the featureGroup property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setFeatureGroup(String value)
-  {
-    this.featureGroup = value;
-  }
-
-  /**
-   * Gets the value of the score property.
-   * 
-   * @return possible object is {@link Float }
-   * 
-   */
-  public Float getScore()
-  {
-    return score;
-  }
-
-  /**
-   * Sets the value of the score property.
-   * 
-   * @param value
-   *          allowed object is {@link Float }
-   * 
-   */
-  public void setScore(Float value)
-  {
-    this.score = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="key" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;attribute name="key2"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class OtherData
-  {
-
-    @XmlAttribute(name = "key", required = true)
-    protected String key;
-
-    @XmlAttribute(name = "key2")
-    protected String key2;
-
-    @XmlAttribute(name = "value", required = true)
-    protected String value;
 
     /**
-     * Gets the value of the key property.
+     * Gets the value of the begin property.
      * 
-     * @return possible object is {@link String }
+     */
+    public int getBegin() {
+        return begin;
+    }
+
+    /**
+     * Sets the value of the begin property.
      * 
      */
-    public String getKey()
-    {
-      return key;
+    public void setBegin(int value) {
+        this.begin = value;
     }
 
     /**
-     * Sets the value of the key property.
+     * Gets the value of the end property.
      * 
-     * @param value
-     *          allowed object is {@link String }
+     */
+    public int getEnd() {
+        return end;
+    }
+
+    /**
+     * Sets the value of the end property.
+     * 
+     */
+    public void setEnd(int value) {
+        this.end = value;
+    }
+
+    /**
+     * Gets the value of the type property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public void setKey(String value)
-    {
-      this.key = value;
+    public String getType() {
+        return type;
     }
 
     /**
-     * Gets the value of the key2 property.
+     * Sets the value of the type property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the description property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getKey2()
-    {
-      return key2;
+    public String getDescription() {
+        return description;
     }
 
     /**
-     * Sets the value of the key2 property.
+     * Sets the value of the description property.
      * 
      * @param value
-     *          allowed object is {@link String }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the status property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public void setKey2(String value)
-    {
-      this.key2 = value;
+    public String getStatus() {
+        return status;
     }
 
     /**
-     * Gets the value of the value property.
+     * Sets the value of the status property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStatus(String value) {
+        this.status = value;
+    }
+
+    /**
+     * Gets the value of the featureGroup property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getValue()
-    {
-      return value;
+    public String getFeatureGroup() {
+        return featureGroup;
     }
 
     /**
-     * Sets the value of the value property.
+     * Sets the value of the featureGroup property.
      * 
      * @param value
-     *          allowed object is {@link String }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFeatureGroup(String value) {
+        this.featureGroup = value;
+    }
+
+    /**
+     * Gets the value of the score property.
      * 
+     * @return
+     *     possible object is
+     *     {@link Float }
+     *     
      */
-    public void setValue(String value)
-    {
-      this.value = value;
+    public Float getScore() {
+        return score;
     }
 
-  }
+    /**
+     * Sets the value of the score property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Float }
+     *     
+     */
+    public void setScore(Float value) {
+        this.score = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="key" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="key2" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class OtherData {
+
+        @XmlAttribute(name = "key", required = true)
+        protected String key;
+        @XmlAttribute(name = "key2")
+        protected String key2;
+        @XmlAttribute(name = "value", required = true)
+        protected String value;
+
+        /**
+         * Gets the value of the key property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getKey() {
+            return key;
+        }
+
+        /**
+         * Sets the value of the key property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setKey(String value) {
+            this.key = value;
+        }
+
+        /**
+         * Gets the value of the key2 property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getKey2() {
+            return key2;
+        }
+
+        /**
+         * Sets the value of the key2 property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setKey2(String value) {
+            this.key2 = value;
+        }
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
 
 }
index 7fd14fa..8a30d89 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,141 +16,145 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for FeatureMatcher complex type.
+ * <p>Java class for FeatureMatcher complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="FeatureMatcher"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="attributeName"
- * type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2"
- * minOccurs="0"/&amp;gt; &amp;lt;element name="condition"
- * type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt; &amp;lt;element
- * name="value" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="by"
- * type="{www.jalview.org/colours}FilterBy" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="FeatureMatcher">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
+ *         &lt;element name="condition" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="value" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="by" type="{www.jalview.org/colours}FilterBy" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "FeatureMatcher",
-  namespace = "www.jalview.org/colours",
-  propOrder =
-  { "attributeName", "condition", "value" })
-public class FeatureMatcher
-{
-
-  @XmlElement(namespace = "")
-  protected List<String> attributeName;
+@XmlType(name = "FeatureMatcher", namespace = "www.jalview.org/colours", propOrder = {
+    "attributeName",
+    "condition",
+    "value"
+})
+public class FeatureMatcher {
 
-  @XmlElement(namespace = "", required = true)
-  protected String condition;
+    @XmlElement(namespace = "")
+    protected List<String> attributeName;
+    @XmlElement(namespace = "", required = true)
+    protected String condition;
+    @XmlElement(namespace = "", required = true)
+    protected String value;
+    @XmlAttribute(name = "by")
+    protected FilterBy by;
 
-  @XmlElement(namespace = "", required = true)
-  protected String value;
-
-  @XmlAttribute(name = "by")
-  protected FilterBy by;
-
-  /**
-   * Gets the value of the attributeName property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the attributeName property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getAttributeName().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link String }
-   * 
-   * 
-   */
-  public List<String> getAttributeName()
-  {
-    if (attributeName == null)
-    {
-      attributeName = new ArrayList<String>();
+    /**
+     * Gets the value of the attributeName property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the attributeName property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAttributeName().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getAttributeName() {
+        if (attributeName == null) {
+            attributeName = new ArrayList<String>();
+        }
+        return this.attributeName;
     }
-    return this.attributeName;
-  }
 
-  /**
-   * Gets the value of the condition property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getCondition()
-  {
-    return condition;
-  }
+    /**
+     * Gets the value of the condition property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCondition() {
+        return condition;
+    }
 
-  /**
-   * Sets the value of the condition property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setCondition(String value)
-  {
-    this.condition = value;
-  }
+    /**
+     * Sets the value of the condition property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCondition(String value) {
+        this.condition = value;
+    }
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
 
-  /**
-   * Gets the value of the by property.
-   * 
-   * @return possible object is {@link FilterBy }
-   * 
-   */
-  public FilterBy getBy()
-  {
-    return by;
-  }
+    /**
+     * Gets the value of the by property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link FilterBy }
+     *     
+     */
+    public FilterBy getBy() {
+        return by;
+    }
 
-  /**
-   * Sets the value of the by property.
-   * 
-   * @param value
-   *          allowed object is {@link FilterBy }
-   * 
-   */
-  public void setBy(FilterBy value)
-  {
-    this.by = value;
-  }
+    /**
+     * Sets the value of the by property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link FilterBy }
+     *     
+     */
+    public void setBy(FilterBy value) {
+        this.by = value;
+    }
 
 }
index d2bdaaa..a902a83 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,167 +16,177 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * A feature match condition, which may be simple or compound
  * 
- * &lt;p&gt;Java class for FeatureMatcherSet complex type.
+ * <p>Java class for FeatureMatcherSet complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="FeatureMatcherSet"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;choice&amp;gt; &amp;lt;element name="matchCondition"
- * type="{www.jalview.org/colours}FeatureMatcher"/&amp;gt; &amp;lt;element
- * name="compoundMatcher"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="matcherSet"
- * type="{www.jalview.org/colours}FeatureMatcherSet" maxOccurs="2"
- * minOccurs="2"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="and"
- * use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;/choice&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="FeatureMatcherSet">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;choice>
+ *         &lt;element name="matchCondition" type="{www.jalview.org/colours}FeatureMatcher"/>
+ *         &lt;element name="compoundMatcher">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" maxOccurs="2" minOccurs="2"/>
+ *                 &lt;/sequence>
+ *                 &lt;attribute name="and" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/choice>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "FeatureMatcherSet",
-  namespace = "www.jalview.org/colours",
-  propOrder =
-  { "matchCondition", "compoundMatcher" })
-public class FeatureMatcherSet
-{
-
-  @XmlElement(namespace = "")
-  protected FeatureMatcher matchCondition;
-
-  @XmlElement(namespace = "")
-  protected FeatureMatcherSet.CompoundMatcher compoundMatcher;
-
-  /**
-   * Gets the value of the matchCondition property.
-   * 
-   * @return possible object is {@link FeatureMatcher }
-   * 
-   */
-  public FeatureMatcher getMatchCondition()
-  {
-    return matchCondition;
-  }
-
-  /**
-   * Sets the value of the matchCondition property.
-   * 
-   * @param value
-   *          allowed object is {@link FeatureMatcher }
-   * 
-   */
-  public void setMatchCondition(FeatureMatcher value)
-  {
-    this.matchCondition = value;
-  }
-
-  /**
-   * Gets the value of the compoundMatcher property.
-   * 
-   * @return possible object is {@link FeatureMatcherSet.CompoundMatcher }
-   * 
-   */
-  public FeatureMatcherSet.CompoundMatcher getCompoundMatcher()
-  {
-    return compoundMatcher;
-  }
-
-  /**
-   * Sets the value of the compoundMatcher property.
-   * 
-   * @param value
-   *          allowed object is {@link FeatureMatcherSet.CompoundMatcher }
-   * 
-   */
-  public void setCompoundMatcher(FeatureMatcherSet.CompoundMatcher value)
-  {
-    this.compoundMatcher = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="matcherSet"
-   * type="{www.jalview.org/colours}FeatureMatcherSet" maxOccurs="2"
-   * minOccurs="2"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;attribute
-   * name="and" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "matcherSet" })
-  public static class CompoundMatcher
-  {
-
-    @XmlElement(namespace = "", required = true)
-    protected List<FeatureMatcherSet> matcherSet;
-
-    @XmlAttribute(name = "and", required = true)
-    protected boolean and;
+@XmlType(name = "FeatureMatcherSet", namespace = "www.jalview.org/colours", propOrder = {
+    "matchCondition",
+    "compoundMatcher"
+})
+public class FeatureMatcherSet {
+
+    @XmlElement(namespace = "")
+    protected FeatureMatcher matchCondition;
+    @XmlElement(namespace = "")
+    protected FeatureMatcherSet.CompoundMatcher compoundMatcher;
 
     /**
-     * Gets the value of the matcherSet property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the matcherSet property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getMatcherSet().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link FeatureMatcherSet }
+     * Gets the value of the matchCondition property.
      * 
+     * @return
+     *     possible object is
+     *     {@link FeatureMatcher }
+     *     
+     */
+    public FeatureMatcher getMatchCondition() {
+        return matchCondition;
+    }
+
+    /**
+     * Sets the value of the matchCondition property.
      * 
+     * @param value
+     *     allowed object is
+     *     {@link FeatureMatcher }
+     *     
      */
-    public List<FeatureMatcherSet> getMatcherSet()
-    {
-      if (matcherSet == null)
-      {
-        matcherSet = new ArrayList<FeatureMatcherSet>();
-      }
-      return this.matcherSet;
+    public void setMatchCondition(FeatureMatcher value) {
+        this.matchCondition = value;
     }
 
     /**
-     * Gets the value of the and property.
+     * Gets the value of the compoundMatcher property.
      * 
+     * @return
+     *     possible object is
+     *     {@link FeatureMatcherSet.CompoundMatcher }
+     *     
      */
-    public boolean isAnd()
-    {
-      return and;
+    public FeatureMatcherSet.CompoundMatcher getCompoundMatcher() {
+        return compoundMatcher;
     }
 
     /**
-     * Sets the value of the and property.
+     * Sets the value of the compoundMatcher property.
      * 
+     * @param value
+     *     allowed object is
+     *     {@link FeatureMatcherSet.CompoundMatcher }
+     *     
      */
-    public void setAnd(boolean value)
-    {
-      this.and = value;
+    public void setCompoundMatcher(FeatureMatcherSet.CompoundMatcher value) {
+        this.compoundMatcher = value;
     }
 
-  }
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" maxOccurs="2" minOccurs="2"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="and" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "matcherSet"
+    })
+    public static class CompoundMatcher {
+
+        @XmlElement(namespace = "", required = true)
+        protected List<FeatureMatcherSet> matcherSet;
+        @XmlAttribute(name = "and", required = true)
+        protected boolean and;
+
+        /**
+         * Gets the value of the matcherSet property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the matcherSet property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getMatcherSet().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link FeatureMatcherSet }
+         * 
+         * 
+         */
+        public List<FeatureMatcherSet> getMatcherSet() {
+            if (matcherSet == null) {
+                matcherSet = new ArrayList<FeatureMatcherSet>();
+            }
+            return this.matcherSet;
+        }
+
+        /**
+         * Gets the value of the and property.
+         * 
+         */
+        public boolean isAnd() {
+            return and;
+        }
+
+        /**
+         * Sets the value of the and property.
+         * 
+         */
+        public void setAnd(boolean value) {
+            this.and = value;
+        }
+
+    }
 
 }
index 9614490..a95d432 100644 (file)
@@ -1,60 +1,61 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlEnum;
 import javax.xml.bind.annotation.XmlEnumValue;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for FilterBy.
+ * <p>Java class for FilterBy.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class. &lt;pre&gt; &amp;lt;simpleType
- * name="FilterBy"&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}string"&amp;gt; &amp;lt;enumeration
- * value="byLabel"/&amp;gt; &amp;lt;enumeration value="byScore"/&amp;gt;
- * &amp;lt;enumeration value="byAttribute"/&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/simpleType&amp;gt; &lt;/pre&gt;
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="FilterBy">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="byLabel"/>
+ *     &lt;enumeration value="byScore"/>
+ *     &lt;enumeration value="byAttribute"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
  * 
  */
 @XmlType(name = "FilterBy", namespace = "www.jalview.org/colours")
 @XmlEnum
-public enum FilterBy
-{
-
-  @XmlEnumValue("byLabel")
-  BY_LABEL("byLabel"), @XmlEnumValue("byScore")
-  BY_SCORE("byScore"), @XmlEnumValue("byAttribute")
-  BY_ATTRIBUTE("byAttribute");
-
-  private final String value;
-
-  FilterBy(String v)
-  {
-    value = v;
-  }
-
-  public String value()
-  {
-    return value;
-  }
-
-  public static FilterBy fromValue(String v)
-  {
-    for (FilterBy c : FilterBy.values())
-    {
-      if (c.value.equals(v))
-      {
-        return c;
-      }
+public enum FilterBy {
+
+    @XmlEnumValue("byLabel")
+    BY_LABEL("byLabel"),
+    @XmlEnumValue("byScore")
+    BY_SCORE("byScore"),
+    @XmlEnumValue("byAttribute")
+    BY_ATTRIBUTE("byAttribute");
+    private final String value;
+
+    FilterBy(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static FilterBy fromValue(String v) {
+        for (FilterBy c: FilterBy.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
     }
-    throw new IllegalArgumentException(v);
-  }
 
 }
index 9909b08..2de1eba 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -21,6393 +22,6677 @@ import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import javax.xml.datatype.XMLGregorianCalendar;
 
+
 /**
- * &lt;p&gt;Java class for JalviewModel complex type.
+ * <p>Java class for JalviewModel complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="JalviewModel"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="creationDate"
- * type="{http://www.w3.org/2001/XMLSchema}dateTime"/&amp;gt; &amp;lt;element
- * name="version" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
- * &amp;lt;element name="vamsasModel"
- * type="{www.vamsas.ac.uk/jalview/version2}VAMSAS"/&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="JSeq" maxOccurs="unbounded"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="features"
- * type="{www.jalview.org}feature" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="pdbids" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt; &amp;lt;extension
- * base="{www.jalview.org}pdbentry"&amp;gt; &amp;lt;sequence&amp;gt;
- * &amp;lt;element name="structureState" maxOccurs="unbounded"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;simpleContent&amp;gt; &amp;lt;extension
- * base="&amp;lt;http://www.w3.org/2001/XMLSchema&amp;gt;string"&amp;gt;
- * &amp;lt;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt;
- * &amp;lt;attribute name="visible"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="alignwithAlignPanel"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="colourwithAlignPanel"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="colourByJmol"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;/extension&amp;gt; &amp;lt;/simpleContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;/extension&amp;gt;
- * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
- * &amp;lt;/element&amp;gt; &amp;lt;element name="hiddenSequences"
- * type="{http://www.w3.org/2001/XMLSchema}int" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;element name="rnaViewer" maxOccurs="unbounded"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="secondaryStructure"
- * maxOccurs="unbounded"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="title" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="annotationId" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="viewerState"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attGroup
- * ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attribute name="title"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="dividerLocation"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="colour"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;attribute name="end" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;attribute name="hidden"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="viewreference" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="JGroup" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="seq"
- * type="{http://www.w3.org/2001/XMLSchema}string"
- * maxOccurs="unbounded"/&amp;gt; &amp;lt;element name="annotationColours"
- * type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="start"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="end" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;attribute name="colour"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="pidThreshold"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="outlineColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="displayBoxes"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="displayText" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="colourText"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="textCol2"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;attribute name="showUnconserved"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * default="true" /&amp;gt; &amp;lt;attribute name="showConsensusHistogram"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="showSequenceLogo"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="normaliseSequenceLogo"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="Viewport" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="AnnotationColours"
- * type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="hiddenColumns" maxOccurs="unbounded"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="start" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="calcIdParam" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt; &amp;lt;extension
- * base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet"&amp;gt;
- * &amp;lt;attribute name="calcId" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * default="false" /&amp;gt; &amp;lt;attribute name="autoUpdate" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;/extension&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attGroup
- * ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attribute
- * name="conservationSelected" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="pidSelected"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="bgColour" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="consThreshold"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="title"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="showFullId" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="rightAlignIds"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="showText" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="showColourText"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * default="false" /&amp;gt; &amp;lt;attribute name="showBoxes"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="wrapAlignment" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="renderGaps"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="showSequenceFeatures" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="showNPfeatureTooltip"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="showDbRefTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="followHighlight"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="followSelection"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="showAnnotation"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="centreColumnLabels" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * default="false" /&amp;gt; &amp;lt;attribute name="showGroupConservation"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="showGroupConsensus"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="showConsensusHistogram"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="showSequenceLogo"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="normaliseSequenceLogo"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="ignoreGapsinConsensus"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
- * &amp;lt;attribute name="startRes"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="startSeq" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="fontName"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="fontStyle"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="scaleProteinAsCdna" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * default="true" /&amp;gt; &amp;lt;attribute name="viewName"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="sequenceSetId" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;attribute name="gatheredViews"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="textCol2"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;attribute name="id"
- * type="{http://www.w3.org/2001/XMLSchema}ID" /&amp;gt; &amp;lt;attribute
- * name="complementId" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="showComplementFeatures"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;attribute name="showComplementFeaturesOnTop"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="UserColours" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="UserColourScheme"
- * type="{www.jalview.org/colours}JalviewUserColours"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="id"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="tree" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence minOccurs="0"&amp;gt; &amp;lt;element name="title"
- * type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt; &amp;lt;element
- * name="newick" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attGroup
- * ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attribute name="fontName"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="fontStyle"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
- * &amp;lt;attribute name="showBootstrap"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="showDistances" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="markUnlinked"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="fitToWindow" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="currentTree"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="id" type="{http://www.w3.org/2001/XMLSchema}ID" /&amp;gt;
- * &amp;lt;attribute name="linkToAllViews"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="PcaViewer" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="sequencePoint"
- * maxOccurs="unbounded"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
- * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;attribute name="sequenceRef"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="axis" maxOccurs="3" minOccurs="3"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
- * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
- * &amp;lt;/element&amp;gt; &amp;lt;element name="seqPointMin"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;attGroup ref="{www.jalview.org}position"/&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="seqPointMax"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
- * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
- * &amp;lt;/element&amp;gt; &amp;lt;element name="pcaData"
- * type="{www.jalview.org}PcaDataType"/&amp;gt; &amp;lt;/sequence&amp;gt;
- * &amp;lt;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attGroup
- * ref="{www.jalview.org}SimilarityParams"/&amp;gt; &amp;lt;attribute
- * name="title" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="scoreModelName"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="xDim" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="yDim" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;attribute name="zDim"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="bgColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="scaleFactor"
- * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
- * name="showLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;attribute name="linkToAllViews"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="FeatureSettings" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="setting" maxOccurs="unbounded"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="attributeName"
- * type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2"
- * minOccurs="0"/&amp;gt; &amp;lt;element name="matcherSet"
- * type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="type" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;attribute name="display" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt; &amp;lt;attribute
- * name="order" type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
- * &amp;lt;attribute name="mincolour"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="noValueColour" type="{www.jalview.org/colours}NoValueColour"
- * default="Min" /&amp;gt; &amp;lt;attribute name="threshold"
- * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
- * name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float"
- * /&amp;gt; &amp;lt;attribute name="min"
- * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
- * name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="autoScale"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="group" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;attribute name="name" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="display" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
- * &amp;lt;/element&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;/sequence&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="JalviewModel">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="creationDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
+ *         &lt;element name="version" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         &lt;element name="vamsasModel" type="{www.vamsas.ac.uk/jalview/version2}VAMSAS"/>
+ *         &lt;sequence>
+ *           &lt;element name="JSeq" maxOccurs="unbounded" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                   &lt;sequence>
+ *                     &lt;element name="features" type="{www.jalview.org}feature" maxOccurs="unbounded" minOccurs="0"/>
+ *                     &lt;element name="pdbids" maxOccurs="unbounded" minOccurs="0">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;extension base="{www.jalview.org}pdbentry">
+ *                             &lt;sequence>
+ *                               &lt;element name="structureState" maxOccurs="unbounded" minOccurs="0">
+ *                                 &lt;complexType>
+ *                                   &lt;simpleContent>
+ *                                     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ *                                       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+ *                                       &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                                       &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                       &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                                       &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                                       &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                                       &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                     &lt;/extension>
+ *                                   &lt;/simpleContent>
+ *                                 &lt;/complexType>
+ *                               &lt;/element>
+ *                             &lt;/sequence>
+ *                           &lt;/extension>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="hiddenSequences" type="{http://www.w3.org/2001/XMLSchema}int" maxOccurs="unbounded" minOccurs="0"/>
+ *                     &lt;element name="rnaViewer" maxOccurs="unbounded" minOccurs="0">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;sequence>
+ *                               &lt;element name="secondaryStructure" maxOccurs="unbounded">
+ *                                 &lt;complexType>
+ *                                   &lt;complexContent>
+ *                                     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                                       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                       &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                       &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                                       &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                                     &lt;/restriction>
+ *                                   &lt;/complexContent>
+ *                                 &lt;/complexType>
+ *                               &lt;/element>
+ *                             &lt;/sequence>
+ *                             &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+ *                             &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                             &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                             &lt;attribute name="dividerLocation" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                   &lt;/sequence>
+ *                   &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="hidden" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="viewreference" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                 &lt;/restriction>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="JGroup" maxOccurs="unbounded" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                   &lt;sequence>
+ *                     &lt;element name="seq" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+ *                     &lt;element name="annotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
+ *                   &lt;/sequence>
+ *                   &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="outlineColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="displayBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="displayText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="colourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                   &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                   &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;/restriction>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="Viewport" maxOccurs="unbounded" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                   &lt;sequence>
+ *                     &lt;element name="AnnotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
+ *                     &lt;element name="hiddenColumns" maxOccurs="unbounded" minOccurs="0">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="calcIdParam" maxOccurs="unbounded" minOccurs="0">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;extension base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet">
+ *                             &lt;attribute name="calcId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                             &lt;attribute name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                             &lt;attribute name="autoUpdate" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                           &lt;/extension>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="overview" minOccurs="0">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+ *                             &lt;attribute name="showHidden" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                             &lt;attribute name="residueColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="gapColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="hiddenColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                   &lt;/sequence>
+ *                   &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+ *                   &lt;attribute name="conservationSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="pidSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="bgColour" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="showFullId" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="rightAlignIds" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="showText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="showColourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="showBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="wrapAlignment" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="renderGaps" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="showSequenceFeatures" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="showNPfeatureTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="showDbRefTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="followHighlight" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                   &lt;attribute name="followSelection" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                   &lt;attribute name="showAnnotation" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="centreColumnLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="showGroupConservation" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="showGroupConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                   &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                   &lt;attribute name="startRes" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="startSeq" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="scaleProteinAsCdna" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ *                   &lt;attribute name="viewName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="sequenceSetId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="gatheredViews" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ *                   &lt;attribute name="complementId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="showComplementFeatures" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                   &lt;attribute name="showComplementFeaturesOnTop" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                 &lt;/restriction>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="UserColours" maxOccurs="unbounded" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                   &lt;sequence>
+ *                     &lt;element name="UserColourScheme" type="{www.jalview.org/colours}JalviewUserColours"/>
+ *                   &lt;/sequence>
+ *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;/restriction>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="tree" maxOccurs="unbounded" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                   &lt;sequence minOccurs="0">
+ *                     &lt;element name="title" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *                     &lt;element name="newick" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *                   &lt;/sequence>
+ *                   &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+ *                   &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                   &lt;attribute name="showBootstrap" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="showDistances" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="markUnlinked" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="fitToWindow" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="currentTree" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ *                   &lt;attribute name="linkToAllViews" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                 &lt;/restriction>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="PcaViewer" maxOccurs="unbounded" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                   &lt;sequence>
+ *                     &lt;element name="sequencePoint" maxOccurs="unbounded">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;attGroup ref="{www.jalview.org}position"/>
+ *                             &lt;attribute name="sequenceRef" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="axis" maxOccurs="3" minOccurs="3">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;attGroup ref="{www.jalview.org}position"/>
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="seqPointMin">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;attGroup ref="{www.jalview.org}position"/>
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="seqPointMax">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;attGroup ref="{www.jalview.org}position"/>
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="pcaData" type="{www.jalview.org}PcaDataType"/>
+ *                   &lt;/sequence>
+ *                   &lt;attGroup ref="{www.jalview.org}SimilarityParams"/>
+ *                   &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+ *                   &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="scoreModelName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                   &lt;attribute name="xDim" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="yDim" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="zDim" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="bgColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                   &lt;attribute name="scaleFactor" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                   &lt;attribute name="showLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                   &lt;attribute name="linkToAllViews" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                 &lt;/restriction>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *           &lt;element name="FeatureSettings" minOccurs="0">
+ *             &lt;complexType>
+ *               &lt;complexContent>
+ *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                   &lt;sequence>
+ *                     &lt;element name="setting" maxOccurs="unbounded" minOccurs="0">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;sequence>
+ *                               &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
+ *                               &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/>
+ *                             &lt;/sequence>
+ *                             &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                             &lt;attribute name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                             &lt;attribute name="order" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                             &lt;attribute name="mincolour" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
+ *                             &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                             &lt;attribute name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                             &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                             &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                             &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                             &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                     &lt;element name="group" maxOccurs="unbounded" minOccurs="0">
+ *                       &lt;complexType>
+ *                         &lt;complexContent>
+ *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                             &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                             &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                           &lt;/restriction>
+ *                         &lt;/complexContent>
+ *                       &lt;/complexType>
+ *                     &lt;/element>
+ *                   &lt;/sequence>
+ *                 &lt;/restriction>
+ *               &lt;/complexContent>
+ *             &lt;/complexType>
+ *           &lt;/element>
+ *         &lt;/sequence>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "JalviewModel",
-  namespace = "www.jalview.org",
-  propOrder =
-  { "creationDate", "version", "vamsasModel", "jSeq", "jGroup", "viewport",
-      "userColours", "tree", "pcaViewer", "featureSettings" })
-public class JalviewModel
-{
-
-  @XmlElement(required = true)
-  @XmlSchemaType(name = "dateTime")
-  protected XMLGregorianCalendar creationDate;
-
-  @XmlElement(required = true)
-  protected String version;
-
-  @XmlElement(required = true)
-  protected VAMSAS vamsasModel;
-
-  @XmlElement(name = "JSeq")
-  protected List<JalviewModel.JSeq> jSeq;
-
-  @XmlElement(name = "JGroup")
-  protected List<JalviewModel.JGroup> jGroup;
-
-  @XmlElement(name = "Viewport")
-  protected List<JalviewModel.Viewport> viewport;
-
-  @XmlElement(name = "UserColours")
-  protected List<JalviewModel.UserColours> userColours;
-
-  protected List<JalviewModel.Tree> tree;
-
-  @XmlElement(name = "PcaViewer")
-  protected List<JalviewModel.PcaViewer> pcaViewer;
-
-  @XmlElement(name = "FeatureSettings")
-  protected JalviewModel.FeatureSettings featureSettings;
-
-  /**
-   * Gets the value of the creationDate property.
-   * 
-   * @return possible object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public XMLGregorianCalendar getCreationDate()
-  {
-    return creationDate;
-  }
-
-  /**
-   * Sets the value of the creationDate property.
-   * 
-   * @param value
-   *          allowed object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public void setCreationDate(XMLGregorianCalendar value)
-  {
-    this.creationDate = value;
-  }
-
-  /**
-   * Gets the value of the version property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getVersion()
-  {
-    return version;
-  }
-
-  /**
-   * Sets the value of the version property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setVersion(String value)
-  {
-    this.version = value;
-  }
-
-  /**
-   * Gets the value of the vamsasModel property.
-   * 
-   * @return possible object is {@link VAMSAS }
-   * 
-   */
-  public VAMSAS getVamsasModel()
-  {
-    return vamsasModel;
-  }
-
-  /**
-   * Sets the value of the vamsasModel property.
-   * 
-   * @param value
-   *          allowed object is {@link VAMSAS }
-   * 
-   */
-  public void setVamsasModel(VAMSAS value)
-  {
-    this.vamsasModel = value;
-  }
-
-  /**
-   * Gets the value of the jSeq property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the jSeq property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getJSeq().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewModel.JSeq }
-   * 
-   * 
-   */
-  public List<JalviewModel.JSeq> getJSeq()
-  {
-    if (jSeq == null)
-    {
-      jSeq = new ArrayList<JalviewModel.JSeq>();
-    }
-    return this.jSeq;
-  }
-
-  /**
-   * Gets the value of the jGroup property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the jGroup property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getJGroup().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewModel.JGroup }
-   * 
-   * 
-   */
-  public List<JalviewModel.JGroup> getJGroup()
-  {
-    if (jGroup == null)
-    {
-      jGroup = new ArrayList<JalviewModel.JGroup>();
-    }
-    return this.jGroup;
-  }
-
-  /**
-   * Gets the value of the viewport property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the viewport property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getViewport().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewModel.Viewport }
-   * 
-   * 
-   */
-  public List<JalviewModel.Viewport> getViewport()
-  {
-    if (viewport == null)
-    {
-      viewport = new ArrayList<JalviewModel.Viewport>();
-    }
-    return this.viewport;
-  }
-
-  /**
-   * Gets the value of the userColours property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the userColours property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getUserColours().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewModel.UserColours }
-   * 
-   * 
-   */
-  public List<JalviewModel.UserColours> getUserColours()
-  {
-    if (userColours == null)
-    {
-      userColours = new ArrayList<JalviewModel.UserColours>();
-    }
-    return this.userColours;
-  }
-
-  /**
-   * Gets the value of the tree property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the tree property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getTree().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewModel.Tree }
-   * 
-   * 
-   */
-  public List<JalviewModel.Tree> getTree()
-  {
-    if (tree == null)
-    {
-      tree = new ArrayList<JalviewModel.Tree>();
-    }
-    return this.tree;
-  }
-
-  /**
-   * Gets the value of the pcaViewer property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the pcaViewer property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getPcaViewer().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewModel.PcaViewer }
-   * 
-   * 
-   */
-  public List<JalviewModel.PcaViewer> getPcaViewer()
-  {
-    if (pcaViewer == null)
-    {
-      pcaViewer = new ArrayList<JalviewModel.PcaViewer>();
-    }
-    return this.pcaViewer;
-  }
-
-  /**
-   * Gets the value of the featureSettings property.
-   * 
-   * @return possible object is {@link JalviewModel.FeatureSettings }
-   * 
-   */
-  public JalviewModel.FeatureSettings getFeatureSettings()
-  {
-    return featureSettings;
-  }
-
-  /**
-   * Sets the value of the featureSettings property.
-   * 
-   * @param value
-   *          allowed object is {@link JalviewModel.FeatureSettings }
-   * 
-   */
-  public void setFeatureSettings(JalviewModel.FeatureSettings value)
-  {
-    this.featureSettings = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="setting"
-   * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="attributeName"
-   * type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2"
-   * minOccurs="0"/&amp;gt; &amp;lt;element name="matcherSet"
-   * type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="type" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
-   * /&amp;gt; &amp;lt;attribute name="display" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="order"
-   * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
-   * name="mincolour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="noValueColour"
-   * type="{www.jalview.org/colours}NoValueColour" default="Min" /&amp;gt;
-   * &amp;lt;attribute name="threshold"
-   * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
-   * name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float"
-   * /&amp;gt; &amp;lt;attribute name="min"
-   * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
-   * name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * /&amp;gt; &amp;lt;attribute name="autoScale"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
-   * name="group" maxOccurs="unbounded" minOccurs="0"&amp;gt;
-   * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;attribute name="display" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;/restriction&amp;gt;
-   * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "setting", "group" })
-  public static class FeatureSettings
-  {
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModel.FeatureSettings.Setting> setting;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModel.FeatureSettings.Group> group;
-
-    /**
-     * Gets the value of the setting property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the setting property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getSetting().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.FeatureSettings.Setting }
-     * 
-     * 
-     */
-    public List<JalviewModel.FeatureSettings.Setting> getSetting()
-    {
-      if (setting == null)
-      {
-        setting = new ArrayList<JalviewModel.FeatureSettings.Setting>();
-      }
-      return this.setting;
-    }
-
-    /**
-     * Gets the value of the group property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the group property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getGroup().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.FeatureSettings.Group }
-     * 
-     * 
-     */
-    public List<JalviewModel.FeatureSettings.Group> getGroup()
-    {
-      if (group == null)
-      {
-        group = new ArrayList<JalviewModel.FeatureSettings.Group>();
-      }
-      return this.group;
-    }
-
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-     * &amp;lt;attribute name="name" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="display" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-     * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class Group
-    {
-
-      @XmlAttribute(name = "name", required = true)
-      protected String name;
-
-      @XmlAttribute(name = "display", required = true)
-      protected boolean display;
-
-      /**
-       * Gets the value of the name property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getName()
-      {
-        return name;
-      }
-
-      /**
-       * Sets the value of the name property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setName(String value)
-      {
-        this.name = value;
-      }
-
-      /**
-       * Gets the value of the display property.
-       * 
-       */
-      public boolean isDisplay()
-      {
-        return display;
-      }
-
-      /**
-       * Sets the value of the display property.
-       * 
-       */
-      public void setDisplay(boolean value)
-      {
-        this.display = value;
-      }
-
-    }
-
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-     * &amp;lt;sequence&amp;gt; &amp;lt;element name="attributeName"
-     * type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2"
-     * minOccurs="0"/&amp;gt; &amp;lt;element name="matcherSet"
-     * type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/&amp;gt;
-     * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="type" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="colour" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-     * name="display" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-     * &amp;lt;attribute name="order"
-     * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
-     * &amp;lt;attribute name="mincolour"
-     * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-     * name="noValueColour" type="{www.jalview.org/colours}NoValueColour"
-     * default="Min" /&amp;gt; &amp;lt;attribute name="threshold"
-     * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
-     * &amp;lt;attribute name="threshstate"
-     * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-     * name="max" type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
-     * &amp;lt;attribute name="min"
-     * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
-     * &amp;lt;attribute name="colourByLabel"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-     * &amp;lt;attribute name="autoScale"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-     * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "attributeName", "matcherSet" })
-    public static class Setting
-    {
-
-      @XmlElement(namespace = "www.jalview.org")
-      protected List<String> attributeName;
-
-      @XmlElement(namespace = "www.jalview.org")
-      protected FeatureMatcherSet matcherSet;
-
-      @XmlAttribute(name = "type", required = true)
-      protected String type;
-
-      @XmlAttribute(name = "colour", required = true)
-      protected int colour;
-
-      @XmlAttribute(name = "display", required = true)
-      protected boolean display;
-
-      @XmlAttribute(name = "order")
-      protected Float order;
-
-      @XmlAttribute(name = "mincolour")
-      protected Integer mincolour;
-
-      @XmlAttribute(name = "noValueColour")
-      protected NoValueColour noValueColour;
-
-      @XmlAttribute(name = "threshold")
-      protected Float threshold;
-
-      @XmlAttribute(name = "threshstate")
-      protected Integer threshstate;
-
-      @XmlAttribute(name = "max")
-      protected Float max;
-
-      @XmlAttribute(name = "min")
-      protected Float min;
-
-      @XmlAttribute(name = "colourByLabel")
-      protected Boolean colourByLabel;
-
-      @XmlAttribute(name = "autoScale")
-      protected Boolean autoScale;
-
-      /**
-       * Gets the value of the attributeName property.
-       * 
-       * &lt;p&gt; This accessor method returns a reference to the live list,
-       * not a snapshot. Therefore any modification you make to the returned
-       * list will be present inside the JAXB object. This is why there is not a
-       * &lt;CODE&gt;set&lt;/CODE&gt; method for the attributeName property.
-       * 
-       * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-       * getAttributeName().add(newItem); &lt;/pre&gt;
-       * 
-       * 
-       * &lt;p&gt; Objects of the following type(s) are allowed in the list
-       * {@link String }
-       * 
-       * 
-       */
-      public List<String> getAttributeName()
-      {
-        if (attributeName == null)
-        {
-          attributeName = new ArrayList<String>();
-        }
-        return this.attributeName;
-      }
-
-      /**
-       * Gets the value of the matcherSet property.
-       * 
-       * @return possible object is {@link FeatureMatcherSet }
-       * 
-       */
-      public FeatureMatcherSet getMatcherSet()
-      {
-        return matcherSet;
-      }
-
-      /**
-       * Sets the value of the matcherSet property.
-       * 
-       * @param value
-       *          allowed object is {@link FeatureMatcherSet }
-       * 
-       */
-      public void setMatcherSet(FeatureMatcherSet value)
-      {
-        this.matcherSet = value;
-      }
-
-      /**
-       * Gets the value of the type property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getType()
-      {
-        return type;
-      }
-
-      /**
-       * Sets the value of the type property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setType(String value)
-      {
-        this.type = value;
-      }
-
-      /**
-       * Gets the value of the colour property.
-       * 
-       */
-      public int getColour()
-      {
-        return colour;
-      }
-
-      /**
-       * Sets the value of the colour property.
-       * 
-       */
-      public void setColour(int value)
-      {
-        this.colour = value;
-      }
-
-      /**
-       * Gets the value of the display property.
-       * 
-       */
-      public boolean isDisplay()
-      {
-        return display;
-      }
-
-      /**
-       * Sets the value of the display property.
-       * 
-       */
-      public void setDisplay(boolean value)
-      {
-        this.display = value;
-      }
-
-      /**
-       * Gets the value of the order property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getOrder()
-      {
-        return order;
-      }
-
-      /**
-       * Sets the value of the order property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setOrder(Float value)
-      {
-        this.order = value;
-      }
-
-      /**
-       * Gets the value of the mincolour property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getMincolour()
-      {
-        return mincolour;
-      }
-
-      /**
-       * Sets the value of the mincolour property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setMincolour(Integer value)
-      {
-        this.mincolour = value;
-      }
-
-      /**
-       * Gets the value of the noValueColour property.
-       * 
-       * @return possible object is {@link NoValueColour }
-       * 
-       */
-      public NoValueColour getNoValueColour()
-      {
-        if (noValueColour == null)
-        {
-          return NoValueColour.MIN;
-        }
-        else
-        {
-          return noValueColour;
-        }
-      }
-
-      /**
-       * Sets the value of the noValueColour property.
-       * 
-       * @param value
-       *          allowed object is {@link NoValueColour }
-       * 
-       */
-      public void setNoValueColour(NoValueColour value)
-      {
-        this.noValueColour = value;
-      }
-
-      /**
-       * Gets the value of the threshold property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getThreshold()
-      {
-        return threshold;
-      }
-
-      /**
-       * Sets the value of the threshold property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setThreshold(Float value)
-      {
-        this.threshold = value;
-      }
-
-      /**
-       * Gets the value of the threshstate property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getThreshstate()
-      {
-        return threshstate;
-      }
-
-      /**
-       * Sets the value of the threshstate property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setThreshstate(Integer value)
-      {
-        this.threshstate = value;
-      }
-
-      /**
-       * Gets the value of the max property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getMax()
-      {
-        return max;
-      }
-
-      /**
-       * Sets the value of the max property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setMax(Float value)
-      {
-        this.max = value;
-      }
-
-      /**
-       * Gets the value of the min property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getMin()
-      {
-        return min;
-      }
-
-      /**
-       * Sets the value of the min property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setMin(Float value)
-      {
-        this.min = value;
-      }
-
-      /**
-       * Gets the value of the colourByLabel property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public Boolean isColourByLabel()
-      {
-        return colourByLabel;
-      }
-
-      /**
-       * Sets the value of the colourByLabel property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setColourByLabel(Boolean value)
-      {
-        this.colourByLabel = value;
-      }
-
-      /**
-       * Gets the value of the autoScale property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public Boolean isAutoScale()
-      {
-        return autoScale;
-      }
-
-      /**
-       * Sets the value of the autoScale property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setAutoScale(Boolean value)
-      {
-        this.autoScale = value;
-      }
-
-    }
-
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="seq"
-   * type="{http://www.w3.org/2001/XMLSchema}string"
-   * maxOccurs="unbounded"/&amp;gt; &amp;lt;element name="annotationColours"
-   * type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="start"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="end" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="name"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="colour" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="consThreshold"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="outlineColour"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="displayBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * /&amp;gt; &amp;lt;attribute name="displayText"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="colourText"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="textCol1"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="textColThreshold"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * /&amp;gt; &amp;lt;attribute name="ignoreGapsinConsensus"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-   * &amp;lt;attribute name="showConsensusHistogram"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-   * &amp;lt;attribute name="showSequenceLogo"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="normaliseSequenceLogo"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "seq", "annotationColours" })
-  public static class JGroup
-  {
-
-    @XmlElement(namespace = "www.jalview.org", required = true)
-    protected List<String> seq;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected AnnotationColourScheme annotationColours;
-
-    @XmlAttribute(name = "start")
-    protected Integer start;
-
-    @XmlAttribute(name = "end")
-    protected Integer end;
-
-    @XmlAttribute(name = "name")
-    protected String name;
-
-    @XmlAttribute(name = "colour")
-    protected String colour;
-
-    @XmlAttribute(name = "consThreshold")
-    protected Integer consThreshold;
-
-    @XmlAttribute(name = "pidThreshold")
-    protected Integer pidThreshold;
-
-    @XmlAttribute(name = "outlineColour")
-    protected Integer outlineColour;
-
-    @XmlAttribute(name = "displayBoxes")
-    protected Boolean displayBoxes;
-
-    @XmlAttribute(name = "displayText")
-    protected Boolean displayText;
-
-    @XmlAttribute(name = "colourText")
-    protected Boolean colourText;
-
-    @XmlAttribute(name = "textCol1")
-    protected Integer textCol1;
-
-    @XmlAttribute(name = "textCol2")
-    protected Integer textCol2;
-
-    @XmlAttribute(name = "textColThreshold")
-    protected Integer textColThreshold;
-
-    @XmlAttribute(name = "showUnconserved")
-    protected Boolean showUnconserved;
-
-    @XmlAttribute(name = "ignoreGapsinConsensus")
-    protected Boolean ignoreGapsinConsensus;
-
-    @XmlAttribute(name = "showConsensusHistogram")
-    protected Boolean showConsensusHistogram;
-
-    @XmlAttribute(name = "showSequenceLogo")
-    protected Boolean showSequenceLogo;
-
-    @XmlAttribute(name = "normaliseSequenceLogo")
-    protected Boolean normaliseSequenceLogo;
-
-    @XmlAttribute(name = "id")
-    protected String id;
-
-    /**
-     * Gets the value of the seq property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the seq property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getSeq().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link String }
-     * 
-     * 
-     */
-    public List<String> getSeq()
-    {
-      if (seq == null)
-      {
-        seq = new ArrayList<String>();
-      }
-      return this.seq;
-    }
-
-    /**
-     * Gets the value of the annotationColours property.
-     * 
-     * @return possible object is {@link AnnotationColourScheme }
-     * 
-     */
-    public AnnotationColourScheme getAnnotationColours()
-    {
-      return annotationColours;
-    }
-
-    /**
-     * Sets the value of the annotationColours property.
+@XmlType(name = "JalviewModel", namespace = "www.jalview.org", propOrder = {
+    "creationDate",
+    "version",
+    "vamsasModel",
+    "jSeq",
+    "jGroup",
+    "viewport",
+    "userColours",
+    "tree",
+    "pcaViewer",
+    "featureSettings"
+})
+public class JalviewModel {
+
+    @XmlElement(required = true)
+    @XmlSchemaType(name = "dateTime")
+    protected XMLGregorianCalendar creationDate;
+    @XmlElement(required = true)
+    protected String version;
+    @XmlElement(required = true)
+    protected VAMSAS vamsasModel;
+    @XmlElement(name = "JSeq")
+    protected List<JalviewModel.JSeq> jSeq;
+    @XmlElement(name = "JGroup")
+    protected List<JalviewModel.JGroup> jGroup;
+    @XmlElement(name = "Viewport")
+    protected List<JalviewModel.Viewport> viewport;
+    @XmlElement(name = "UserColours")
+    protected List<JalviewModel.UserColours> userColours;
+    protected List<JalviewModel.Tree> tree;
+    @XmlElement(name = "PcaViewer")
+    protected List<JalviewModel.PcaViewer> pcaViewer;
+    @XmlElement(name = "FeatureSettings")
+    protected JalviewModel.FeatureSettings featureSettings;
+
+    /**
+     * Gets the value of the creationDate property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getCreationDate() {
+        return creationDate;
+    }
+
+    /**
+     * Sets the value of the creationDate property.
      * 
      * @param value
-     *          allowed object is {@link AnnotationColourScheme }
-     * 
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
      */
-    public void setAnnotationColours(AnnotationColourScheme value)
-    {
-      this.annotationColours = value;
+    public void setCreationDate(XMLGregorianCalendar value) {
+        this.creationDate = value;
     }
 
     /**
-     * Gets the value of the start property.
-     * 
-     * @return possible object is {@link Integer }
+     * Gets the value of the version property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public Integer getStart()
-    {
-      return start;
+    public String getVersion() {
+        return version;
     }
 
     /**
-     * Sets the value of the start property.
+     * Sets the value of the version property.
      * 
      * @param value
-     *          allowed object is {@link Integer }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setStart(Integer value)
-    {
-      this.start = value;
+    public void setVersion(String value) {
+        this.version = value;
     }
 
     /**
-     * Gets the value of the end property.
-     * 
-     * @return possible object is {@link Integer }
+     * Gets the value of the vamsasModel property.
      * 
+     * @return
+     *     possible object is
+     *     {@link VAMSAS }
+     *     
      */
-    public Integer getEnd()
-    {
-      return end;
+    public VAMSAS getVamsasModel() {
+        return vamsasModel;
     }
 
     /**
-     * Sets the value of the end property.
+     * Sets the value of the vamsasModel property.
      * 
      * @param value
-     *          allowed object is {@link Integer }
-     * 
+     *     allowed object is
+     *     {@link VAMSAS }
+     *     
      */
-    public void setEnd(Integer value)
-    {
-      this.end = value;
+    public void setVamsasModel(VAMSAS value) {
+        this.vamsasModel = value;
     }
 
     /**
-     * Gets the value of the name property.
+     * Gets the value of the jSeq property.
      * 
-     * @return possible object is {@link String }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the jSeq property.
      * 
-     */
-    public String getName()
-    {
-      return name;
-    }
-
-    /**
-     * Sets the value of the name property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getJSeq().add(newItem);
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
-     */
-    public void setName(String value)
-    {
-      this.name = value;
-    }
-
-    /**
-     * Gets the value of the colour property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.JSeq }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getColour()
-    {
-      return colour;
+    public List<JalviewModel.JSeq> getJSeq() {
+        if (jSeq == null) {
+            jSeq = new ArrayList<JalviewModel.JSeq>();
+        }
+        return this.jSeq;
     }
 
     /**
-     * Sets the value of the colour property.
+     * Gets the value of the jGroup property.
      * 
-     * @param value
-     *          allowed object is {@link String }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the jGroup property.
      * 
-     */
-    public void setColour(String value)
-    {
-      this.colour = value;
-    }
-
-    /**
-     * Gets the value of the consThreshold property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getJGroup().add(newItem);
+     * </pre>
      * 
-     * @return possible object is {@link Integer }
      * 
-     */
-    public Integer getConsThreshold()
-    {
-      return consThreshold;
-    }
-
-    /**
-     * Sets the value of the consThreshold property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.JGroup }
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
      */
-    public void setConsThreshold(Integer value)
-    {
-      this.consThreshold = value;
+    public List<JalviewModel.JGroup> getJGroup() {
+        if (jGroup == null) {
+            jGroup = new ArrayList<JalviewModel.JGroup>();
+        }
+        return this.jGroup;
     }
 
     /**
-     * Gets the value of the pidThreshold property.
+     * Gets the value of the viewport property.
      * 
-     * @return possible object is {@link Integer }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the viewport property.
      * 
-     */
-    public Integer getPidThreshold()
-    {
-      return pidThreshold;
-    }
-
-    /**
-     * Sets the value of the pidThreshold property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getViewport().add(newItem);
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
-     */
-    public void setPidThreshold(Integer value)
-    {
-      this.pidThreshold = value;
-    }
-
-    /**
-     * Gets the value of the outlineColour property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.Viewport }
      * 
-     * @return possible object is {@link Integer }
      * 
      */
-    public Integer getOutlineColour()
-    {
-      return outlineColour;
+    public List<JalviewModel.Viewport> getViewport() {
+        if (viewport == null) {
+            viewport = new ArrayList<JalviewModel.Viewport>();
+        }
+        return this.viewport;
     }
 
     /**
-     * Sets the value of the outlineColour property.
+     * Gets the value of the userColours property.
      * 
-     * @param value
-     *          allowed object is {@link Integer }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the userColours property.
      * 
-     */
-    public void setOutlineColour(Integer value)
-    {
-      this.outlineColour = value;
-    }
-
-    /**
-     * Gets the value of the displayBoxes property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getUserColours().add(newItem);
+     * </pre>
      * 
-     * @return possible object is {@link Boolean }
      * 
-     */
-    public Boolean isDisplayBoxes()
-    {
-      return displayBoxes;
-    }
-
-    /**
-     * Sets the value of the displayBoxes property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.UserColours }
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
      * 
      */
-    public void setDisplayBoxes(Boolean value)
-    {
-      this.displayBoxes = value;
+    public List<JalviewModel.UserColours> getUserColours() {
+        if (userColours == null) {
+            userColours = new ArrayList<JalviewModel.UserColours>();
+        }
+        return this.userColours;
     }
 
     /**
-     * Gets the value of the displayText property.
+     * Gets the value of the tree property.
      * 
-     * @return possible object is {@link Boolean }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the tree property.
      * 
-     */
-    public Boolean isDisplayText()
-    {
-      return displayText;
-    }
-
-    /**
-     * Sets the value of the displayText property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getTree().add(newItem);
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
      * 
-     */
-    public void setDisplayText(Boolean value)
-    {
-      this.displayText = value;
-    }
-
-    /**
-     * Gets the value of the colourText property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.Tree }
      * 
-     * @return possible object is {@link Boolean }
      * 
      */
-    public Boolean isColourText()
-    {
-      return colourText;
+    public List<JalviewModel.Tree> getTree() {
+        if (tree == null) {
+            tree = new ArrayList<JalviewModel.Tree>();
+        }
+        return this.tree;
     }
 
     /**
-     * Sets the value of the colourText property.
+     * Gets the value of the pcaViewer property.
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the pcaViewer property.
      * 
-     */
-    public void setColourText(Boolean value)
-    {
-      this.colourText = value;
-    }
-
-    /**
-     * Gets the value of the textCol1 property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getPcaViewer().add(newItem);
+     * </pre>
      * 
-     * @return possible object is {@link Integer }
      * 
-     */
-    public Integer getTextCol1()
-    {
-      return textCol1;
-    }
-
-    /**
-     * Sets the value of the textCol1 property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.PcaViewer }
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
      */
-    public void setTextCol1(Integer value)
-    {
-      this.textCol1 = value;
+    public List<JalviewModel.PcaViewer> getPcaViewer() {
+        if (pcaViewer == null) {
+            pcaViewer = new ArrayList<JalviewModel.PcaViewer>();
+        }
+        return this.pcaViewer;
     }
 
     /**
-     * Gets the value of the textCol2 property.
-     * 
-     * @return possible object is {@link Integer }
+     * Gets the value of the featureSettings property.
      * 
+     * @return
+     *     possible object is
+     *     {@link JalviewModel.FeatureSettings }
+     *     
      */
-    public Integer getTextCol2()
-    {
-      return textCol2;
+    public JalviewModel.FeatureSettings getFeatureSettings() {
+        return featureSettings;
     }
 
     /**
-     * Sets the value of the textCol2 property.
+     * Sets the value of the featureSettings property.
      * 
      * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol2(Integer value)
-    {
-      this.textCol2 = value;
-    }
-
-    /**
-     * Gets the value of the textColThreshold property.
+     *     allowed object is
+     *     {@link JalviewModel.FeatureSettings }
+     *     
+     */
+    public void setFeatureSettings(JalviewModel.FeatureSettings value) {
+        this.featureSettings = value;
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="setting" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;sequence>
+     *                   &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
+     *                   &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/>
+     *                 &lt;/sequence>
+     *                 &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                 &lt;attribute name="order" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *                 &lt;attribute name="mincolour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
+     *                 &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *                 &lt;attribute name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *                 &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *                 &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                 &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="group" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @return possible object is {@link Integer }
      * 
      */
-    public Integer getTextColThreshold()
-    {
-      return textColThreshold;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "setting",
+        "group"
+    })
+    public static class FeatureSettings {
 
-    /**
-     * Sets the value of the textColThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextColThreshold(Integer value)
-    {
-      this.textColThreshold = value;
-    }
+        @XmlElement(namespace = "www.jalview.org")
+        protected List<JalviewModel.FeatureSettings.Setting> setting;
+        @XmlElement(namespace = "www.jalview.org")
+        protected List<JalviewModel.FeatureSettings.Group> group;
 
-    /**
-     * Gets the value of the showUnconserved property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowUnconserved()
-    {
-      return showUnconserved;
-    }
+        /**
+         * Gets the value of the setting property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the setting property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getSetting().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.FeatureSettings.Setting }
+         * 
+         * 
+         */
+        public List<JalviewModel.FeatureSettings.Setting> getSetting() {
+            if (setting == null) {
+                setting = new ArrayList<JalviewModel.FeatureSettings.Setting>();
+            }
+            return this.setting;
+        }
 
-    /**
-     * Sets the value of the showUnconserved property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowUnconserved(Boolean value)
-    {
-      this.showUnconserved = value;
-    }
+        /**
+         * Gets the value of the group property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the group property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getGroup().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.FeatureSettings.Group }
+         * 
+         * 
+         */
+        public List<JalviewModel.FeatureSettings.Group> getGroup() {
+            if (group == null) {
+                group = new ArrayList<JalviewModel.FeatureSettings.Group>();
+            }
+            return this.group;
+        }
 
-    /**
-     * Gets the value of the ignoreGapsinConsensus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isIgnoreGapsinConsensus()
-    {
-      if (ignoreGapsinConsensus == null)
-      {
-        return true;
-      }
-      else
-      {
-        return ignoreGapsinConsensus;
-      }
-    }
 
-    /**
-     * Sets the value of the ignoreGapsinConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIgnoreGapsinConsensus(Boolean value)
-    {
-      this.ignoreGapsinConsensus = value;
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class Group {
+
+            @XmlAttribute(name = "name", required = true)
+            protected String name;
+            @XmlAttribute(name = "display", required = true)
+            protected boolean display;
+
+            /**
+             * Gets the value of the name property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getName() {
+                return name;
+            }
+
+            /**
+             * Sets the value of the name property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setName(String value) {
+                this.name = value;
+            }
+
+            /**
+             * Gets the value of the display property.
+             * 
+             */
+            public boolean isDisplay() {
+                return display;
+            }
+
+            /**
+             * Sets the value of the display property.
+             * 
+             */
+            public void setDisplay(boolean value) {
+                this.display = value;
+            }
 
-    /**
-     * Gets the value of the showConsensusHistogram property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowConsensusHistogram()
-    {
-      if (showConsensusHistogram == null)
-      {
-        return true;
-      }
-      else
-      {
-        return showConsensusHistogram;
-      }
-    }
+        }
 
-    /**
-     * Sets the value of the showConsensusHistogram property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowConsensusHistogram(Boolean value)
-    {
-      this.showConsensusHistogram = value;
-    }
 
-    /**
-     * Gets the value of the showSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowSequenceLogo()
-    {
-      if (showSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showSequenceLogo;
-      }
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;sequence>
+         *         &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
+         *         &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/>
+         *       &lt;/sequence>
+         *       &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *       &lt;attribute name="order" type="{http://www.w3.org/2001/XMLSchema}float" />
+         *       &lt;attribute name="mincolour" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
+         *       &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+         *       &lt;attribute name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
+         *       &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
+         *       &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *       &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "attributeName",
+            "matcherSet"
+        })
+        public static class Setting {
+
+            @XmlElement(namespace = "www.jalview.org")
+            protected List<String> attributeName;
+            @XmlElement(namespace = "www.jalview.org")
+            protected FeatureMatcherSet matcherSet;
+            @XmlAttribute(name = "type", required = true)
+            protected String type;
+            @XmlAttribute(name = "colour", required = true)
+            protected int colour;
+            @XmlAttribute(name = "display", required = true)
+            protected boolean display;
+            @XmlAttribute(name = "order")
+            protected Float order;
+            @XmlAttribute(name = "mincolour")
+            protected Integer mincolour;
+            @XmlAttribute(name = "noValueColour")
+            protected NoValueColour noValueColour;
+            @XmlAttribute(name = "threshold")
+            protected Float threshold;
+            @XmlAttribute(name = "threshstate")
+            protected Integer threshstate;
+            @XmlAttribute(name = "max")
+            protected Float max;
+            @XmlAttribute(name = "min")
+            protected Float min;
+            @XmlAttribute(name = "colourByLabel")
+            protected Boolean colourByLabel;
+            @XmlAttribute(name = "autoScale")
+            protected Boolean autoScale;
+
+            /**
+             * Gets the value of the attributeName property.
+             * 
+             * <p>
+             * This accessor method returns a reference to the live list,
+             * not a snapshot. Therefore any modification you make to the
+             * returned list will be present inside the JAXB object.
+             * This is why there is not a <CODE>set</CODE> method for the attributeName property.
+             * 
+             * <p>
+             * For example, to add a new item, do as follows:
+             * <pre>
+             *    getAttributeName().add(newItem);
+             * </pre>
+             * 
+             * 
+             * <p>
+             * Objects of the following type(s) are allowed in the list
+             * {@link String }
+             * 
+             * 
+             */
+            public List<String> getAttributeName() {
+                if (attributeName == null) {
+                    attributeName = new ArrayList<String>();
+                }
+                return this.attributeName;
+            }
+
+            /**
+             * Gets the value of the matcherSet property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link FeatureMatcherSet }
+             *     
+             */
+            public FeatureMatcherSet getMatcherSet() {
+                return matcherSet;
+            }
+
+            /**
+             * Sets the value of the matcherSet property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link FeatureMatcherSet }
+             *     
+             */
+            public void setMatcherSet(FeatureMatcherSet value) {
+                this.matcherSet = value;
+            }
+
+            /**
+             * Gets the value of the type property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getType() {
+                return type;
+            }
+
+            /**
+             * Sets the value of the type property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setType(String value) {
+                this.type = value;
+            }
+
+            /**
+             * Gets the value of the colour property.
+             * 
+             */
+            public int getColour() {
+                return colour;
+            }
+
+            /**
+             * Sets the value of the colour property.
+             * 
+             */
+            public void setColour(int value) {
+                this.colour = value;
+            }
+
+            /**
+             * Gets the value of the display property.
+             * 
+             */
+            public boolean isDisplay() {
+                return display;
+            }
+
+            /**
+             * Sets the value of the display property.
+             * 
+             */
+            public void setDisplay(boolean value) {
+                this.display = value;
+            }
+
+            /**
+             * Gets the value of the order property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getOrder() {
+                return order;
+            }
+
+            /**
+             * Sets the value of the order property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setOrder(Float value) {
+                this.order = value;
+            }
+
+            /**
+             * Gets the value of the mincolour property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getMincolour() {
+                return mincolour;
+            }
+
+            /**
+             * Sets the value of the mincolour property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setMincolour(Integer value) {
+                this.mincolour = value;
+            }
+
+            /**
+             * Gets the value of the noValueColour property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link NoValueColour }
+             *     
+             */
+            public NoValueColour getNoValueColour() {
+                if (noValueColour == null) {
+                    return NoValueColour.MIN;
+                } else {
+                    return noValueColour;
+                }
+            }
+
+            /**
+             * Sets the value of the noValueColour property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link NoValueColour }
+             *     
+             */
+            public void setNoValueColour(NoValueColour value) {
+                this.noValueColour = value;
+            }
+
+            /**
+             * Gets the value of the threshold property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getThreshold() {
+                return threshold;
+            }
+
+            /**
+             * Sets the value of the threshold property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setThreshold(Float value) {
+                this.threshold = value;
+            }
+
+            /**
+             * Gets the value of the threshstate property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getThreshstate() {
+                return threshstate;
+            }
+
+            /**
+             * Sets the value of the threshstate property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setThreshstate(Integer value) {
+                this.threshstate = value;
+            }
+
+            /**
+             * Gets the value of the max property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getMax() {
+                return max;
+            }
+
+            /**
+             * Sets the value of the max property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setMax(Float value) {
+                this.max = value;
+            }
+
+            /**
+             * Gets the value of the min property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getMin() {
+                return min;
+            }
+
+            /**
+             * Sets the value of the min property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setMin(Float value) {
+                this.min = value;
+            }
+
+            /**
+             * Gets the value of the colourByLabel property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Boolean }
+             *     
+             */
+            public Boolean isColourByLabel() {
+                return colourByLabel;
+            }
+
+            /**
+             * Sets the value of the colourByLabel property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Boolean }
+             *     
+             */
+            public void setColourByLabel(Boolean value) {
+                this.colourByLabel = value;
+            }
+
+            /**
+             * Gets the value of the autoScale property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Boolean }
+             *     
+             */
+            public Boolean isAutoScale() {
+                return autoScale;
+            }
+
+            /**
+             * Sets the value of the autoScale property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Boolean }
+             *     
+             */
+            public void setAutoScale(Boolean value) {
+                this.autoScale = value;
+            }
 
-    /**
-     * Sets the value of the showSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceLogo(Boolean value)
-    {
-      this.showSequenceLogo = value;
-    }
+        }
 
-    /**
-     * Gets the value of the normaliseSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isNormaliseSequenceLogo()
-    {
-      if (normaliseSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return normaliseSequenceLogo;
-      }
     }
 
-    /**
-     * Sets the value of the normaliseSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setNormaliseSequenceLogo(Boolean value)
-    {
-      this.normaliseSequenceLogo = value;
-    }
 
     /**
-     * Gets the value of the id property.
+     * <p>Java class for anonymous complex type.
      * 
-     * @return possible object is {@link String }
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="seq" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+     *         &lt;element name="annotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="outlineColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="displayBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="displayText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="colourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *       &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *       &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "seq",
+        "annotationColours"
+    })
+    public static class JGroup {
+
+        @XmlElement(namespace = "www.jalview.org", required = true)
+        protected List<String> seq;
+        @XmlElement(namespace = "www.jalview.org")
+        protected AnnotationColourScheme annotationColours;
+        @XmlAttribute(name = "start")
+        protected Integer start;
+        @XmlAttribute(name = "end")
+        protected Integer end;
+        @XmlAttribute(name = "name")
+        protected String name;
+        @XmlAttribute(name = "colour")
+        protected String colour;
+        @XmlAttribute(name = "consThreshold")
+        protected Integer consThreshold;
+        @XmlAttribute(name = "pidThreshold")
+        protected Integer pidThreshold;
+        @XmlAttribute(name = "outlineColour")
+        protected Integer outlineColour;
+        @XmlAttribute(name = "displayBoxes")
+        protected Boolean displayBoxes;
+        @XmlAttribute(name = "displayText")
+        protected Boolean displayText;
+        @XmlAttribute(name = "colourText")
+        protected Boolean colourText;
+        @XmlAttribute(name = "textCol1")
+        protected Integer textCol1;
+        @XmlAttribute(name = "textCol2")
+        protected Integer textCol2;
+        @XmlAttribute(name = "textColThreshold")
+        protected Integer textColThreshold;
+        @XmlAttribute(name = "showUnconserved")
+        protected Boolean showUnconserved;
+        @XmlAttribute(name = "ignoreGapsinConsensus")
+        protected Boolean ignoreGapsinConsensus;
+        @XmlAttribute(name = "showConsensusHistogram")
+        protected Boolean showConsensusHistogram;
+        @XmlAttribute(name = "showSequenceLogo")
+        protected Boolean showSequenceLogo;
+        @XmlAttribute(name = "normaliseSequenceLogo")
+        protected Boolean normaliseSequenceLogo;
+        @XmlAttribute(name = "id")
+        protected String id;
 
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="features"
-   * type="{www.jalview.org}feature" maxOccurs="unbounded"
-   * minOccurs="0"/&amp;gt; &amp;lt;element name="pdbids" maxOccurs="unbounded"
-   * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;complexContent&amp;gt; &amp;lt;extension
-   * base="{www.jalview.org}pdbentry"&amp;gt; &amp;lt;sequence&amp;gt;
-   * &amp;lt;element name="structureState" maxOccurs="unbounded"
-   * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;simpleContent&amp;gt; &amp;lt;extension
-   * base="&amp;lt;http://www.w3.org/2001/XMLSchema&amp;gt;string"&amp;gt;
-   * &amp;lt;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt;
-   * &amp;lt;attribute name="visible"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="viewId"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * default="true" /&amp;gt; &amp;lt;attribute name="colourwithAlignPanel"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="colourByJmol"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-   * &amp;lt;attribute name="type"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/extension&amp;gt; &amp;lt;/simpleContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;/extension&amp;gt;
-   * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
-   * &amp;lt;/element&amp;gt; &amp;lt;element name="hiddenSequences"
-   * type="{http://www.w3.org/2001/XMLSchema}int" maxOccurs="unbounded"
-   * minOccurs="0"/&amp;gt; &amp;lt;element name="rnaViewer"
-   * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="secondaryStructure"
-   * maxOccurs="unbounded"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="title" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="annotationId" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="viewerState"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attGroup
-   * ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attribute name="title"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="dividerLocation"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="colour"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
-   * /&amp;gt; &amp;lt;attribute name="end" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;attribute name="hidden"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="viewreference"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "features", "pdbids", "hiddenSequences", "rnaViewer" })
-  public static class JSeq
-  {
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<Feature> features;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModel.JSeq.Pdbids> pdbids;
-
-    @XmlElement(namespace = "www.jalview.org", type = Integer.class)
-    protected List<Integer> hiddenSequences;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModel.JSeq.RnaViewer> rnaViewer;
-
-    @XmlAttribute(name = "colour")
-    protected Integer colour;
-
-    @XmlAttribute(name = "start", required = true)
-    protected int start;
-
-    @XmlAttribute(name = "end", required = true)
-    protected int end;
-
-    @XmlAttribute(name = "id", required = true)
-    protected String id;
-
-    @XmlAttribute(name = "hidden")
-    protected Boolean hidden;
-
-    @XmlAttribute(name = "viewreference")
-    protected Boolean viewreference;
-
-    /**
-     * Gets the value of the features property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the features property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getFeatures().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link Feature }
-     * 
-     * 
-     */
-    public List<Feature> getFeatures()
-    {
-      if (features == null)
-      {
-        features = new ArrayList<Feature>();
-      }
-      return this.features;
-    }
-
-    /**
-     * Gets the value of the pdbids property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the pdbids property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getPdbids().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.JSeq.Pdbids }
-     * 
-     * 
-     */
-    public List<JalviewModel.JSeq.Pdbids> getPdbids()
-    {
-      if (pdbids == null)
-      {
-        pdbids = new ArrayList<JalviewModel.JSeq.Pdbids>();
-      }
-      return this.pdbids;
-    }
-
-    /**
-     * Gets the value of the hiddenSequences property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the hiddenSequences property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getHiddenSequences().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link Integer }
-     * 
-     * 
-     */
-    public List<Integer> getHiddenSequences()
-    {
-      if (hiddenSequences == null)
-      {
-        hiddenSequences = new ArrayList<Integer>();
-      }
-      return this.hiddenSequences;
-    }
-
-    /**
-     * Gets the value of the rnaViewer property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the rnaViewer property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getRnaViewer().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.JSeq.RnaViewer }
-     * 
-     * 
-     */
-    public List<JalviewModel.JSeq.RnaViewer> getRnaViewer()
-    {
-      if (rnaViewer == null)
-      {
-        rnaViewer = new ArrayList<JalviewModel.JSeq.RnaViewer>();
-      }
-      return this.rnaViewer;
-    }
-
-    /**
-     * Gets the value of the colour property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getColour()
-    {
-      return colour;
-    }
-
-    /**
-     * Sets the value of the colour property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setColour(Integer value)
-    {
-      this.colour = value;
-    }
-
-    /**
-     * Gets the value of the start property.
-     * 
-     */
-    public int getStart()
-    {
-      return start;
-    }
-
-    /**
-     * Sets the value of the start property.
-     * 
-     */
-    public void setStart(int value)
-    {
-      this.start = value;
-    }
-
-    /**
-     * Gets the value of the end property.
-     * 
-     */
-    public int getEnd()
-    {
-      return end;
-    }
-
-    /**
-     * Sets the value of the end property.
-     * 
-     */
-    public void setEnd(int value)
-    {
-      this.end = value;
-    }
-
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
-
-    /**
-     * Gets the value of the hidden property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isHidden()
-    {
-      return hidden;
-    }
-
-    /**
-     * Sets the value of the hidden property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setHidden(Boolean value)
-    {
-      this.hidden = value;
-    }
-
-    /**
-     * Gets the value of the viewreference property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isViewreference()
-    {
-      return viewreference;
-    }
-
-    /**
-     * Sets the value of the viewreference property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setViewreference(Boolean value)
-    {
-      this.viewreference = value;
-    }
-
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;extension base="{www.jalview.org}pdbentry"&amp;gt;
-     * &amp;lt;sequence&amp;gt; &amp;lt;element name="structureState"
-     * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
-     * &amp;lt;simpleContent&amp;gt; &amp;lt;extension
-     * base="&amp;lt;http://www.w3.org/2001/XMLSchema&amp;gt;string"&amp;gt;
-     * &amp;lt;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt;
-     * &amp;lt;attribute name="visible"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-     * &amp;lt;attribute name="viewId"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="alignwithAlignPanel"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-     * &amp;lt;attribute name="colourwithAlignPanel"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false"
-     * /&amp;gt; &amp;lt;attribute name="colourByJmol"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-     * &amp;lt;attribute name="type"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;/extension&amp;gt; &amp;lt;/simpleContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
-     * &amp;lt;/sequence&amp;gt; &amp;lt;/extension&amp;gt;
-     * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "structureState" })
-    public static class Pdbids extends Pdbentry
-    {
-
-      @XmlElement(namespace = "www.jalview.org")
-      protected List<JalviewModel.JSeq.Pdbids.StructureState> structureState;
-
-      /**
-       * Gets the value of the structureState property.
-       * 
-       * &lt;p&gt; This accessor method returns a reference to the live list,
-       * not a snapshot. Therefore any modification you make to the returned
-       * list will be present inside the JAXB object. This is why there is not a
-       * &lt;CODE&gt;set&lt;/CODE&gt; method for the structureState property.
-       * 
-       * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-       * getStructureState().add(newItem); &lt;/pre&gt;
-       * 
-       * 
-       * &lt;p&gt; Objects of the following type(s) are allowed in the list
-       * {@link JalviewModel.JSeq.Pdbids.StructureState }
-       * 
-       * 
-       */
-      public List<JalviewModel.JSeq.Pdbids.StructureState> getStructureState()
-      {
-        if (structureState == null)
-        {
-          structureState = new ArrayList<JalviewModel.JSeq.Pdbids.StructureState>();
-        }
-        return this.structureState;
-      }
-
-      /**
-       * &lt;p&gt;Java class for anonymous complex type.
-       * 
-       * &lt;p&gt;The following schema fragment specifies the expected content
-       * contained within this class.
-       * 
-       * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;simpleContent&amp;gt;
-       * &amp;lt;extension
-       * base="&amp;lt;http://www.w3.org/2001/XMLSchema&amp;gt;string"&amp;gt;
-       * &amp;lt;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt;
-       * &amp;lt;attribute name="visible"
-       * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-       * &amp;lt;attribute name="viewId"
-       * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-       * &amp;lt;attribute name="alignwithAlignPanel"
-       * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true"
-       * /&amp;gt; &amp;lt;attribute name="colourwithAlignPanel"
-       * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false"
-       * /&amp;gt; &amp;lt;attribute name="colourByJmol"
-       * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true"
-       * /&amp;gt; &amp;lt;attribute name="type"
-       * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-       * &amp;lt;/extension&amp;gt; &amp;lt;/simpleContent&amp;gt;
-       * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-       * 
-       * 
-       */
-      @XmlAccessorType(XmlAccessType.FIELD)
-      @XmlType(name = "", propOrder = { "value" })
-      public static class StructureState
-      {
-
-        @XmlValue
-        protected String value;
-
-        @XmlAttribute(name = "visible")
-        protected Boolean visible;
-
-        @XmlAttribute(name = "viewId")
-        protected String viewId;
-
-        @XmlAttribute(name = "alignwithAlignPanel")
-        protected Boolean alignwithAlignPanel;
-
-        @XmlAttribute(name = "colourwithAlignPanel")
-        protected Boolean colourwithAlignPanel;
-
-        @XmlAttribute(name = "colourByJmol")
-        protected Boolean colourByJmol;
-
-        @XmlAttribute(name = "type")
-        protected String type;
-
-        @XmlAttribute(name = "width")
-        protected Integer width;
-
-        @XmlAttribute(name = "height")
-        protected Integer height;
-
-        @XmlAttribute(name = "xpos")
-        protected Integer xpos;
-
-        @XmlAttribute(name = "ypos")
-        protected Integer ypos;
+        /**
+         * Gets the value of the seq property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the seq property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getSeq().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link String }
+         * 
+         * 
+         */
+        public List<String> getSeq() {
+            if (seq == null) {
+                seq = new ArrayList<String>();
+            }
+            return this.seq;
+        }
 
         /**
-         * Gets the value of the value property.
-         * 
-         * @return possible object is {@link String }
+         * Gets the value of the annotationColours property.
          * 
+         * @return
+         *     possible object is
+         *     {@link AnnotationColourScheme }
+         *     
          */
-        public String getValue()
-        {
-          return value;
+        public AnnotationColourScheme getAnnotationColours() {
+            return annotationColours;
         }
 
         /**
-         * Sets the value of the value property.
+         * Sets the value of the annotationColours property.
          * 
          * @param value
-         *          allowed object is {@link String }
-         * 
+         *     allowed object is
+         *     {@link AnnotationColourScheme }
+         *     
          */
-        public void setValue(String value)
-        {
-          this.value = value;
+        public void setAnnotationColours(AnnotationColourScheme value) {
+            this.annotationColours = value;
         }
 
         /**
-         * Gets the value of the visible property.
-         * 
-         * @return possible object is {@link Boolean }
+         * Gets the value of the start property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public Boolean isVisible()
-        {
-          return visible;
+        public Integer getStart() {
+            return start;
         }
 
         /**
-         * Sets the value of the visible property.
+         * Sets the value of the start property.
          * 
          * @param value
-         *          allowed object is {@link Boolean }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setVisible(Boolean value)
-        {
-          this.visible = value;
+        public void setStart(Integer value) {
+            this.start = value;
         }
 
         /**
-         * Gets the value of the viewId property.
-         * 
-         * @return possible object is {@link String }
+         * Gets the value of the end property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public String getViewId()
-        {
-          return viewId;
+        public Integer getEnd() {
+            return end;
         }
 
         /**
-         * Sets the value of the viewId property.
+         * Sets the value of the end property.
          * 
          * @param value
-         *          allowed object is {@link String }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setViewId(String value)
-        {
-          this.viewId = value;
+        public void setEnd(Integer value) {
+            this.end = value;
         }
 
         /**
-         * Gets the value of the alignwithAlignPanel property.
-         * 
-         * @return possible object is {@link Boolean }
+         * Gets the value of the name property.
          * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
          */
-        public boolean isAlignwithAlignPanel()
-        {
-          if (alignwithAlignPanel == null)
-          {
-            return true;
-          }
-          else
-          {
-            return alignwithAlignPanel;
-          }
+        public String getName() {
+            return name;
         }
 
         /**
-         * Sets the value of the alignwithAlignPanel property.
+         * Sets the value of the name property.
          * 
          * @param value
-         *          allowed object is {@link Boolean }
-         * 
+         *     allowed object is
+         *     {@link String }
+         *     
          */
-        public void setAlignwithAlignPanel(Boolean value)
-        {
-          this.alignwithAlignPanel = value;
+        public void setName(String value) {
+            this.name = value;
         }
 
         /**
-         * Gets the value of the colourwithAlignPanel property.
-         * 
-         * @return possible object is {@link Boolean }
+         * Gets the value of the colour property.
          * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
          */
-        public boolean isColourwithAlignPanel()
-        {
-          if (colourwithAlignPanel == null)
-          {
-            return false;
-          }
-          else
-          {
-            return colourwithAlignPanel;
-          }
+        public String getColour() {
+            return colour;
         }
 
         /**
-         * Sets the value of the colourwithAlignPanel property.
+         * Sets the value of the colour property.
          * 
          * @param value
-         *          allowed object is {@link Boolean }
-         * 
+         *     allowed object is
+         *     {@link String }
+         *     
          */
-        public void setColourwithAlignPanel(Boolean value)
-        {
-          this.colourwithAlignPanel = value;
+        public void setColour(String value) {
+            this.colour = value;
         }
 
         /**
-         * Gets the value of the colourByJmol property.
-         * 
-         * @return possible object is {@link Boolean }
+         * Gets the value of the consThreshold property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public boolean isColourByJmol()
-        {
-          if (colourByJmol == null)
-          {
-            return true;
-          }
-          else
-          {
-            return colourByJmol;
-          }
+        public Integer getConsThreshold() {
+            return consThreshold;
         }
 
         /**
-         * Sets the value of the colourByJmol property.
+         * Sets the value of the consThreshold property.
          * 
          * @param value
-         *          allowed object is {@link Boolean }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setColourByJmol(Boolean value)
-        {
-          this.colourByJmol = value;
+        public void setConsThreshold(Integer value) {
+            this.consThreshold = value;
         }
 
         /**
-         * Gets the value of the type property.
-         * 
-         * @return possible object is {@link String }
+         * Gets the value of the pidThreshold property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public String getType()
-        {
-          return type;
+        public Integer getPidThreshold() {
+            return pidThreshold;
         }
 
         /**
-         * Sets the value of the type property.
+         * Sets the value of the pidThreshold property.
          * 
          * @param value
-         *          allowed object is {@link String }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setType(String value)
-        {
-          this.type = value;
+        public void setPidThreshold(Integer value) {
+            this.pidThreshold = value;
         }
 
         /**
-         * Gets the value of the width property.
-         * 
-         * @return possible object is {@link Integer }
+         * Gets the value of the outlineColour property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public Integer getWidth()
-        {
-          return width;
+        public Integer getOutlineColour() {
+            return outlineColour;
         }
 
         /**
-         * Sets the value of the width property.
+         * Sets the value of the outlineColour property.
          * 
          * @param value
-         *          allowed object is {@link Integer }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setWidth(Integer value)
-        {
-          this.width = value;
+        public void setOutlineColour(Integer value) {
+            this.outlineColour = value;
         }
 
         /**
-         * Gets the value of the height property.
-         * 
-         * @return possible object is {@link Integer }
+         * Gets the value of the displayBoxes property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public Integer getHeight()
-        {
-          return height;
+        public Boolean isDisplayBoxes() {
+            return displayBoxes;
         }
 
         /**
-         * Sets the value of the height property.
+         * Sets the value of the displayBoxes property.
          * 
          * @param value
-         *          allowed object is {@link Integer }
-         * 
+         *     allowed object is
+         *     {@link Boolean }
+         *     
          */
-        public void setHeight(Integer value)
-        {
-          this.height = value;
+        public void setDisplayBoxes(Boolean value) {
+            this.displayBoxes = value;
         }
 
         /**
-         * Gets the value of the xpos property.
-         * 
-         * @return possible object is {@link Integer }
+         * Gets the value of the displayText property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public Integer getXpos()
-        {
-          return xpos;
+        public Boolean isDisplayText() {
+            return displayText;
         }
 
         /**
-         * Sets the value of the xpos property.
+         * Sets the value of the displayText property.
          * 
          * @param value
-         *          allowed object is {@link Integer }
-         * 
+         *     allowed object is
+         *     {@link Boolean }
+         *     
          */
-        public void setXpos(Integer value)
-        {
-          this.xpos = value;
+        public void setDisplayText(Boolean value) {
+            this.displayText = value;
         }
 
         /**
-         * Gets the value of the ypos property.
-         * 
-         * @return possible object is {@link Integer }
+         * Gets the value of the colourText property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public Integer getYpos()
-        {
-          return ypos;
+        public Boolean isColourText() {
+            return colourText;
         }
 
         /**
-         * Sets the value of the ypos property.
+         * Sets the value of the colourText property.
          * 
          * @param value
-         *          allowed object is {@link Integer }
-         * 
+         *     allowed object is
+         *     {@link Boolean }
+         *     
          */
-        public void setYpos(Integer value)
-        {
-          this.ypos = value;
+        public void setColourText(Boolean value) {
+            this.colourText = value;
         }
 
-      }
-
-    }
-
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-     * &amp;lt;sequence&amp;gt; &amp;lt;element name="secondaryStructure"
-     * maxOccurs="unbounded"&amp;gt; &amp;lt;complexType&amp;gt;
-     * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-     * &amp;lt;attribute name="title"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="annotationId" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="gapped"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-     * &amp;lt;attribute name="viewerState"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
-     * &amp;lt;/sequence&amp;gt; &amp;lt;attGroup
-     * ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attribute
-     * name="title" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="viewId"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="dividerLocation"
-     * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-     * name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-     * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "secondaryStructure" })
-    public static class RnaViewer
-    {
-
-      @XmlElement(namespace = "www.jalview.org", required = true)
-      protected List<JalviewModel.JSeq.RnaViewer.SecondaryStructure> secondaryStructure;
-
-      @XmlAttribute(name = "title")
-      protected String title;
-
-      @XmlAttribute(name = "viewId")
-      protected String viewId;
-
-      @XmlAttribute(name = "dividerLocation")
-      protected Integer dividerLocation;
-
-      @XmlAttribute(name = "selectedRna")
-      protected Integer selectedRna;
-
-      @XmlAttribute(name = "width")
-      protected Integer width;
-
-      @XmlAttribute(name = "height")
-      protected Integer height;
-
-      @XmlAttribute(name = "xpos")
-      protected Integer xpos;
-
-      @XmlAttribute(name = "ypos")
-      protected Integer ypos;
-
-      /**
-       * Gets the value of the secondaryStructure property.
-       * 
-       * &lt;p&gt; This accessor method returns a reference to the live list,
-       * not a snapshot. Therefore any modification you make to the returned
-       * list will be present inside the JAXB object. This is why there is not a
-       * &lt;CODE&gt;set&lt;/CODE&gt; method for the secondaryStructure
-       * property.
-       * 
-       * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-       * getSecondaryStructure().add(newItem); &lt;/pre&gt;
-       * 
-       * 
-       * &lt;p&gt; Objects of the following type(s) are allowed in the list
-       * {@link JalviewModel.JSeq.RnaViewer.SecondaryStructure }
-       * 
-       * 
-       */
-      public List<JalviewModel.JSeq.RnaViewer.SecondaryStructure> getSecondaryStructure()
-      {
-        if (secondaryStructure == null)
-        {
-          secondaryStructure = new ArrayList<JalviewModel.JSeq.RnaViewer.SecondaryStructure>();
-        }
-        return this.secondaryStructure;
-      }
-
-      /**
-       * Gets the value of the title property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getTitle()
-      {
-        return title;
-      }
-
-      /**
-       * Sets the value of the title property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setTitle(String value)
-      {
-        this.title = value;
-      }
-
-      /**
-       * Gets the value of the viewId property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getViewId()
-      {
-        return viewId;
-      }
-
-      /**
-       * Sets the value of the viewId property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setViewId(String value)
-      {
-        this.viewId = value;
-      }
-
-      /**
-       * Gets the value of the dividerLocation property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getDividerLocation()
-      {
-        return dividerLocation;
-      }
-
-      /**
-       * Sets the value of the dividerLocation property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setDividerLocation(Integer value)
-      {
-        this.dividerLocation = value;
-      }
-
-      /**
-       * Gets the value of the selectedRna property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getSelectedRna()
-      {
-        return selectedRna;
-      }
-
-      /**
-       * Sets the value of the selectedRna property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setSelectedRna(Integer value)
-      {
-        this.selectedRna = value;
-      }
-
-      /**
-       * Gets the value of the width property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getWidth()
-      {
-        return width;
-      }
-
-      /**
-       * Sets the value of the width property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setWidth(Integer value)
-      {
-        this.width = value;
-      }
-
-      /**
-       * Gets the value of the height property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getHeight()
-      {
-        return height;
-      }
-
-      /**
-       * Sets the value of the height property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setHeight(Integer value)
-      {
-        this.height = value;
-      }
-
-      /**
-       * Gets the value of the xpos property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getXpos()
-      {
-        return xpos;
-      }
-
-      /**
-       * Sets the value of the xpos property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setXpos(Integer value)
-      {
-        this.xpos = value;
-      }
-
-      /**
-       * Gets the value of the ypos property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getYpos()
-      {
-        return ypos;
-      }
-
-      /**
-       * Sets the value of the ypos property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setYpos(Integer value)
-      {
-        this.ypos = value;
-      }
-
-      /**
-       * &lt;p&gt;Java class for anonymous complex type.
-       * 
-       * &lt;p&gt;The following schema fragment specifies the expected content
-       * contained within this class.
-       * 
-       * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-       * &amp;lt;restriction
-       * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-       * &amp;lt;attribute name="title"
-       * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-       * &amp;lt;attribute name="annotationId" use="required"
-       * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-       * &amp;lt;attribute name="gapped"
-       * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-       * &amp;lt;attribute name="viewerState"
-       * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-       * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-       * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-       * 
-       * 
-       */
-      @XmlAccessorType(XmlAccessType.FIELD)
-      @XmlType(name = "")
-      public static class SecondaryStructure
-      {
-
-        @XmlAttribute(name = "title")
-        protected String title;
-
-        @XmlAttribute(name = "annotationId", required = true)
-        protected String annotationId;
-
-        @XmlAttribute(name = "gapped")
-        protected Boolean gapped;
-
-        @XmlAttribute(name = "viewerState")
-        protected String viewerState;
+        /**
+         * Gets the value of the textCol1 property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getTextCol1() {
+            return textCol1;
+        }
 
         /**
-         * Gets the value of the title property.
+         * Sets the value of the textCol1 property.
          * 
-         * @return possible object is {@link String }
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setTextCol1(Integer value) {
+            this.textCol1 = value;
+        }
+
+        /**
+         * Gets the value of the textCol2 property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public String getTitle()
-        {
-          return title;
+        public Integer getTextCol2() {
+            return textCol2;
         }
 
         /**
-         * Sets the value of the title property.
+         * Sets the value of the textCol2 property.
          * 
          * @param value
-         *          allowed object is {@link String }
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setTextCol2(Integer value) {
+            this.textCol2 = value;
+        }
+
+        /**
+         * Gets the value of the textColThreshold property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public void setTitle(String value)
-        {
-          this.title = value;
+        public Integer getTextColThreshold() {
+            return textColThreshold;
         }
 
         /**
-         * Gets the value of the annotationId property.
+         * Sets the value of the textColThreshold property.
          * 
-         * @return possible object is {@link String }
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setTextColThreshold(Integer value) {
+            this.textColThreshold = value;
+        }
+
+        /**
+         * Gets the value of the showUnconserved property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public String getAnnotationId()
-        {
-          return annotationId;
+        public Boolean isShowUnconserved() {
+            return showUnconserved;
         }
 
         /**
-         * Sets the value of the annotationId property.
+         * Sets the value of the showUnconserved property.
          * 
          * @param value
-         *          allowed object is {@link String }
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowUnconserved(Boolean value) {
+            this.showUnconserved = value;
+        }
+
+        /**
+         * Gets the value of the ignoreGapsinConsensus property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public void setAnnotationId(String value)
-        {
-          this.annotationId = value;
+        public boolean isIgnoreGapsinConsensus() {
+            if (ignoreGapsinConsensus == null) {
+                return true;
+            } else {
+                return ignoreGapsinConsensus;
+            }
         }
 
         /**
-         * Gets the value of the gapped property.
+         * Sets the value of the ignoreGapsinConsensus property.
          * 
-         * @return possible object is {@link Boolean }
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setIgnoreGapsinConsensus(Boolean value) {
+            this.ignoreGapsinConsensus = value;
+        }
+
+        /**
+         * Gets the value of the showConsensusHistogram property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public Boolean isGapped()
-        {
-          return gapped;
+        public boolean isShowConsensusHistogram() {
+            if (showConsensusHistogram == null) {
+                return true;
+            } else {
+                return showConsensusHistogram;
+            }
         }
 
         /**
-         * Sets the value of the gapped property.
+         * Sets the value of the showConsensusHistogram property.
          * 
          * @param value
-         *          allowed object is {@link Boolean }
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowConsensusHistogram(Boolean value) {
+            this.showConsensusHistogram = value;
+        }
+
+        /**
+         * Gets the value of the showSequenceLogo property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public void setGapped(Boolean value)
-        {
-          this.gapped = value;
+        public boolean isShowSequenceLogo() {
+            if (showSequenceLogo == null) {
+                return false;
+            } else {
+                return showSequenceLogo;
+            }
         }
 
         /**
-         * Gets the value of the viewerState property.
+         * Sets the value of the showSequenceLogo property.
          * 
-         * @return possible object is {@link String }
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowSequenceLogo(Boolean value) {
+            this.showSequenceLogo = value;
+        }
+
+        /**
+         * Gets the value of the normaliseSequenceLogo property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public String getViewerState()
-        {
-          return viewerState;
+        public boolean isNormaliseSequenceLogo() {
+            if (normaliseSequenceLogo == null) {
+                return false;
+            } else {
+                return normaliseSequenceLogo;
+            }
         }
 
         /**
-         * Sets the value of the viewerState property.
+         * Sets the value of the normaliseSequenceLogo property.
          * 
          * @param value
-         *          allowed object is {@link String }
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setNormaliseSequenceLogo(Boolean value) {
+            this.normaliseSequenceLogo = value;
+        }
+
+        /**
+         * Gets the value of the id property.
          * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
          */
-        public void setViewerState(String value)
-        {
-          this.viewerState = value;
+        public String getId() {
+            return id;
         }
 
-      }
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setId(String value) {
+            this.id = value;
+        }
 
     }
 
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="sequencePoint"
-   * maxOccurs="unbounded"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-   * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;attribute
-   * name="sequenceRef" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
-   * name="axis" maxOccurs="3" minOccurs="3"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-   * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
-   * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
-   * &amp;lt;/element&amp;gt; &amp;lt;element name="seqPointMin"&amp;gt;
-   * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-   * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
-   * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
-   * &amp;lt;/element&amp;gt; &amp;lt;element name="seqPointMax"&amp;gt;
-   * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-   * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
-   * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt;
-   * &amp;lt;/element&amp;gt; &amp;lt;element name="pcaData"
-   * type="{www.jalview.org}PcaDataType"/&amp;gt; &amp;lt;/sequence&amp;gt;
-   * &amp;lt;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt;
-   * &amp;lt;attGroup ref="{www.jalview.org}SimilarityParams"/&amp;gt;
-   * &amp;lt;attribute name="title"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="scoreModelName" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;attribute name="xDim"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="yDim" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="zDim" type="{http://www.w3.org/2001/XMLSchema}int"
-   * /&amp;gt; &amp;lt;attribute name="bgColour"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="scaleFactor" type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
-   * &amp;lt;attribute name="showLabels"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="linkToAllViews"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "sequencePoint", "axis", "seqPointMin", "seqPointMax", "pcaData" })
-  public static class PcaViewer
-  {
-
-    @XmlElement(namespace = "www.jalview.org", required = true)
-    protected List<JalviewModel.PcaViewer.SequencePoint> sequencePoint;
-
-    @XmlElement(namespace = "www.jalview.org", required = true)
-    protected List<JalviewModel.PcaViewer.Axis> axis;
-
-    @XmlElement(namespace = "www.jalview.org", required = true)
-    protected JalviewModel.PcaViewer.SeqPointMin seqPointMin;
-
-    @XmlElement(namespace = "www.jalview.org", required = true)
-    protected JalviewModel.PcaViewer.SeqPointMax seqPointMax;
-
-    @XmlElement(namespace = "www.jalview.org", required = true)
-    protected PcaDataType pcaData;
-
-    @XmlAttribute(name = "title")
-    protected String title;
-
-    @XmlAttribute(name = "scoreModelName")
-    protected String scoreModelName;
-
-    @XmlAttribute(name = "xDim")
-    protected Integer xDim;
-
-    @XmlAttribute(name = "yDim")
-    protected Integer yDim;
-
-    @XmlAttribute(name = "zDim")
-    protected Integer zDim;
-
-    @XmlAttribute(name = "bgColour")
-    protected Integer bgColour;
-
-    @XmlAttribute(name = "scaleFactor")
-    protected Float scaleFactor;
-
-    @XmlAttribute(name = "showLabels")
-    protected Boolean showLabels;
-
-    @XmlAttribute(name = "linkToAllViews")
-    protected Boolean linkToAllViews;
-
-    @XmlAttribute(name = "width")
-    protected Integer width;
-
-    @XmlAttribute(name = "height")
-    protected Integer height;
-
-    @XmlAttribute(name = "xpos")
-    protected Integer xpos;
-
-    @XmlAttribute(name = "ypos")
-    protected Integer ypos;
-
-    @XmlAttribute(name = "includeGaps")
-    protected Boolean includeGaps;
-
-    @XmlAttribute(name = "matchGaps")
-    protected Boolean matchGaps;
-
-    @XmlAttribute(name = "includeGappedColumns")
-    protected Boolean includeGappedColumns;
-
-    @XmlAttribute(name = "denominateByShortestLength")
-    protected Boolean denominateByShortestLength;
 
     /**
-     * Gets the value of the sequencePoint property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the sequencePoint property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getSequencePoint().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.PcaViewer.SequencePoint }
-     * 
-     * 
-     */
-    public List<JalviewModel.PcaViewer.SequencePoint> getSequencePoint()
-    {
-      if (sequencePoint == null)
-      {
-        sequencePoint = new ArrayList<JalviewModel.PcaViewer.SequencePoint>();
-      }
-      return this.sequencePoint;
-    }
-
-    /**
-     * Gets the value of the axis property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the axis property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getAxis().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.PcaViewer.Axis }
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="features" type="{www.jalview.org}feature" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="pdbids" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;extension base="{www.jalview.org}pdbentry">
+     *                 &lt;sequence>
+     *                   &lt;element name="structureState" maxOccurs="unbounded" minOccurs="0">
+     *                     &lt;complexType>
+     *                       &lt;simpleContent>
+     *                         &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *                           &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+     *                           &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                           &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                           &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *                           &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *                           &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *                           &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                         &lt;/extension>
+     *                       &lt;/simpleContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                 &lt;/sequence>
+     *               &lt;/extension>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="hiddenSequences" type="{http://www.w3.org/2001/XMLSchema}int" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="rnaViewer" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;sequence>
+     *                   &lt;element name="secondaryStructure" maxOccurs="unbounded">
+     *                     &lt;complexType>
+     *                       &lt;complexContent>
+     *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                           &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                           &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                           &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                           &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                         &lt;/restriction>
+     *                       &lt;/complexContent>
+     *                     &lt;/complexType>
+     *                   &lt;/element>
+     *                 &lt;/sequence>
+     *                 &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+     *                 &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="dividerLocation" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *       &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="hidden" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="viewreference" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
      * 
      */
-    public List<JalviewModel.PcaViewer.Axis> getAxis()
-    {
-      if (axis == null)
-      {
-        axis = new ArrayList<JalviewModel.PcaViewer.Axis>();
-      }
-      return this.axis;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "features",
+        "pdbids",
+        "hiddenSequences",
+        "rnaViewer"
+    })
+    public static class JSeq {
+
+        @XmlElement(namespace = "www.jalview.org")
+        protected List<Feature> features;
+        @XmlElement(namespace = "www.jalview.org")
+        protected List<JalviewModel.JSeq.Pdbids> pdbids;
+        @XmlElement(namespace = "www.jalview.org", type = Integer.class)
+        protected List<Integer> hiddenSequences;
+        @XmlElement(namespace = "www.jalview.org")
+        protected List<JalviewModel.JSeq.RnaViewer> rnaViewer;
+        @XmlAttribute(name = "colour")
+        protected Integer colour;
+        @XmlAttribute(name = "start", required = true)
+        protected int start;
+        @XmlAttribute(name = "end", required = true)
+        protected int end;
+        @XmlAttribute(name = "id", required = true)
+        protected String id;
+        @XmlAttribute(name = "hidden")
+        protected Boolean hidden;
+        @XmlAttribute(name = "viewreference")
+        protected Boolean viewreference;
 
-    /**
-     * Gets the value of the seqPointMin property.
-     * 
-     * @return possible object is {@link JalviewModel.PcaViewer.SeqPointMin }
-     * 
-     */
-    public JalviewModel.PcaViewer.SeqPointMin getSeqPointMin()
-    {
-      return seqPointMin;
-    }
+        /**
+         * Gets the value of the features property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the features property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getFeatures().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Feature }
+         * 
+         * 
+         */
+        public List<Feature> getFeatures() {
+            if (features == null) {
+                features = new ArrayList<Feature>();
+            }
+            return this.features;
+        }
 
-    /**
-     * Sets the value of the seqPointMin property.
-     * 
-     * @param value
-     *          allowed object is {@link JalviewModel.PcaViewer.SeqPointMin }
-     * 
-     */
-    public void setSeqPointMin(JalviewModel.PcaViewer.SeqPointMin value)
-    {
-      this.seqPointMin = value;
-    }
+        /**
+         * Gets the value of the pdbids property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the pdbids property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getPdbids().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.JSeq.Pdbids }
+         * 
+         * 
+         */
+        public List<JalviewModel.JSeq.Pdbids> getPdbids() {
+            if (pdbids == null) {
+                pdbids = new ArrayList<JalviewModel.JSeq.Pdbids>();
+            }
+            return this.pdbids;
+        }
 
-    /**
-     * Gets the value of the seqPointMax property.
-     * 
-     * @return possible object is {@link JalviewModel.PcaViewer.SeqPointMax }
-     * 
-     */
-    public JalviewModel.PcaViewer.SeqPointMax getSeqPointMax()
-    {
-      return seqPointMax;
-    }
+        /**
+         * Gets the value of the hiddenSequences property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the hiddenSequences property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getHiddenSequences().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Integer }
+         * 
+         * 
+         */
+        public List<Integer> getHiddenSequences() {
+            if (hiddenSequences == null) {
+                hiddenSequences = new ArrayList<Integer>();
+            }
+            return this.hiddenSequences;
+        }
 
-    /**
-     * Sets the value of the seqPointMax property.
-     * 
-     * @param value
-     *          allowed object is {@link JalviewModel.PcaViewer.SeqPointMax }
-     * 
-     */
-    public void setSeqPointMax(JalviewModel.PcaViewer.SeqPointMax value)
-    {
-      this.seqPointMax = value;
-    }
+        /**
+         * Gets the value of the rnaViewer property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the rnaViewer property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getRnaViewer().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.JSeq.RnaViewer }
+         * 
+         * 
+         */
+        public List<JalviewModel.JSeq.RnaViewer> getRnaViewer() {
+            if (rnaViewer == null) {
+                rnaViewer = new ArrayList<JalviewModel.JSeq.RnaViewer>();
+            }
+            return this.rnaViewer;
+        }
 
-    /**
-     * Gets the value of the pcaData property.
-     * 
-     * @return possible object is {@link PcaDataType }
-     * 
-     */
-    public PcaDataType getPcaData()
-    {
-      return pcaData;
-    }
+        /**
+         * Gets the value of the colour property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getColour() {
+            return colour;
+        }
 
-    /**
-     * Sets the value of the pcaData property.
-     * 
-     * @param value
-     *          allowed object is {@link PcaDataType }
-     * 
-     */
-    public void setPcaData(PcaDataType value)
-    {
-      this.pcaData = value;
-    }
+        /**
+         * Sets the value of the colour property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setColour(Integer value) {
+            this.colour = value;
+        }
 
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
-    }
+        /**
+         * Gets the value of the start property.
+         * 
+         */
+        public int getStart() {
+            return start;
+        }
 
-    /**
-     * Sets the value of the title property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
+        /**
+         * Sets the value of the start property.
+         * 
+         */
+        public void setStart(int value) {
+            this.start = value;
+        }
 
-    /**
-     * Gets the value of the scoreModelName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getScoreModelName()
-    {
-      return scoreModelName;
-    }
+        /**
+         * Gets the value of the end property.
+         * 
+         */
+        public int getEnd() {
+            return end;
+        }
 
-    /**
-     * Sets the value of the scoreModelName property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setScoreModelName(String value)
-    {
-      this.scoreModelName = value;
-    }
+        /**
+         * Sets the value of the end property.
+         * 
+         */
+        public void setEnd(int value) {
+            this.end = value;
+        }
 
-    /**
-     * Gets the value of the xDim property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getXDim()
-    {
-      return xDim;
-    }
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
 
-    /**
-     * Sets the value of the xDim property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setXDim(Integer value)
-    {
-      this.xDim = value;
-    }
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setId(String value) {
+            this.id = value;
+        }
 
-    /**
-     * Gets the value of the yDim property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getYDim()
-    {
-      return yDim;
-    }
+        /**
+         * Gets the value of the hidden property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isHidden() {
+            return hidden;
+        }
 
-    /**
-     * Sets the value of the yDim property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setYDim(Integer value)
-    {
-      this.yDim = value;
-    }
+        /**
+         * Sets the value of the hidden property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setHidden(Boolean value) {
+            this.hidden = value;
+        }
 
-    /**
-     * Gets the value of the zDim property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getZDim()
-    {
-      return zDim;
-    }
+        /**
+         * Gets the value of the viewreference property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isViewreference() {
+            return viewreference;
+        }
 
-    /**
-     * Sets the value of the zDim property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setZDim(Integer value)
-    {
-      this.zDim = value;
-    }
+        /**
+         * Sets the value of the viewreference property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setViewreference(Boolean value) {
+            this.viewreference = value;
+        }
 
-    /**
-     * Gets the value of the bgColour property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getBgColour()
-    {
-      return bgColour;
-    }
 
-    /**
-     * Sets the value of the bgColour property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setBgColour(Integer value)
-    {
-      this.bgColour = value;
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;extension base="{www.jalview.org}pdbentry">
+         *       &lt;sequence>
+         *         &lt;element name="structureState" maxOccurs="unbounded" minOccurs="0">
+         *           &lt;complexType>
+         *             &lt;simpleContent>
+         *               &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+         *                 &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+         *                 &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *                 &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *                 &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+         *                 &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+         *                 &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+         *                 &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *               &lt;/extension>
+         *             &lt;/simpleContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *       &lt;/sequence>
+         *     &lt;/extension>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "structureState"
+        })
+        public static class Pdbids
+            extends Pdbentry
+        {
 
-    /**
-     * Gets the value of the scaleFactor property.
-     * 
-     * @return possible object is {@link Float }
-     * 
-     */
-    public Float getScaleFactor()
-    {
-      return scaleFactor;
-    }
+            @XmlElement(namespace = "www.jalview.org")
+            protected List<JalviewModel.JSeq.Pdbids.StructureState> structureState;
+
+            /**
+             * Gets the value of the structureState property.
+             * 
+             * <p>
+             * This accessor method returns a reference to the live list,
+             * not a snapshot. Therefore any modification you make to the
+             * returned list will be present inside the JAXB object.
+             * This is why there is not a <CODE>set</CODE> method for the structureState property.
+             * 
+             * <p>
+             * For example, to add a new item, do as follows:
+             * <pre>
+             *    getStructureState().add(newItem);
+             * </pre>
+             * 
+             * 
+             * <p>
+             * Objects of the following type(s) are allowed in the list
+             * {@link JalviewModel.JSeq.Pdbids.StructureState }
+             * 
+             * 
+             */
+            public List<JalviewModel.JSeq.Pdbids.StructureState> getStructureState() {
+                if (structureState == null) {
+                    structureState = new ArrayList<JalviewModel.JSeq.Pdbids.StructureState>();
+                }
+                return this.structureState;
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;simpleContent>
+             *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+             *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+             *       &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+             *       &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *       &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+             *       &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+             *       &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+             *       &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *     &lt;/extension>
+             *   &lt;/simpleContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "", propOrder = {
+                "value"
+            })
+            public static class StructureState {
+
+                @XmlValue
+                protected String value;
+                @XmlAttribute(name = "visible")
+                protected Boolean visible;
+                @XmlAttribute(name = "viewId")
+                protected String viewId;
+                @XmlAttribute(name = "alignwithAlignPanel")
+                protected Boolean alignwithAlignPanel;
+                @XmlAttribute(name = "colourwithAlignPanel")
+                protected Boolean colourwithAlignPanel;
+                @XmlAttribute(name = "colourByJmol")
+                protected Boolean colourByJmol;
+                @XmlAttribute(name = "type")
+                protected String type;
+                @XmlAttribute(name = "width")
+                protected Integer width;
+                @XmlAttribute(name = "height")
+                protected Integer height;
+                @XmlAttribute(name = "xpos")
+                protected Integer xpos;
+                @XmlAttribute(name = "ypos")
+                protected Integer ypos;
+
+                /**
+                 * Gets the value of the value property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getValue() {
+                    return value;
+                }
+
+                /**
+                 * Sets the value of the value property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setValue(String value) {
+                    this.value = value;
+                }
+
+                /**
+                 * Gets the value of the visible property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public Boolean isVisible() {
+                    return visible;
+                }
+
+                /**
+                 * Sets the value of the visible property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public void setVisible(Boolean value) {
+                    this.visible = value;
+                }
+
+                /**
+                 * Gets the value of the viewId property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getViewId() {
+                    return viewId;
+                }
+
+                /**
+                 * Sets the value of the viewId property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setViewId(String value) {
+                    this.viewId = value;
+                }
+
+                /**
+                 * Gets the value of the alignwithAlignPanel property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public boolean isAlignwithAlignPanel() {
+                    if (alignwithAlignPanel == null) {
+                        return true;
+                    } else {
+                        return alignwithAlignPanel;
+                    }
+                }
+
+                /**
+                 * Sets the value of the alignwithAlignPanel property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public void setAlignwithAlignPanel(Boolean value) {
+                    this.alignwithAlignPanel = value;
+                }
+
+                /**
+                 * Gets the value of the colourwithAlignPanel property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public boolean isColourwithAlignPanel() {
+                    if (colourwithAlignPanel == null) {
+                        return false;
+                    } else {
+                        return colourwithAlignPanel;
+                    }
+                }
+
+                /**
+                 * Sets the value of the colourwithAlignPanel property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public void setColourwithAlignPanel(Boolean value) {
+                    this.colourwithAlignPanel = value;
+                }
+
+                /**
+                 * Gets the value of the colourByJmol property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public boolean isColourByJmol() {
+                    if (colourByJmol == null) {
+                        return true;
+                    } else {
+                        return colourByJmol;
+                    }
+                }
+
+                /**
+                 * Sets the value of the colourByJmol property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public void setColourByJmol(Boolean value) {
+                    this.colourByJmol = value;
+                }
+
+                /**
+                 * Gets the value of the type property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getType() {
+                    return type;
+                }
+
+                /**
+                 * Sets the value of the type property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setType(String value) {
+                    this.type = value;
+                }
+
+                /**
+                 * Gets the value of the width property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public Integer getWidth() {
+                    return width;
+                }
+
+                /**
+                 * Sets the value of the width property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public void setWidth(Integer value) {
+                    this.width = value;
+                }
+
+                /**
+                 * Gets the value of the height property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public Integer getHeight() {
+                    return height;
+                }
+
+                /**
+                 * Sets the value of the height property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public void setHeight(Integer value) {
+                    this.height = value;
+                }
+
+                /**
+                 * Gets the value of the xpos property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public Integer getXpos() {
+                    return xpos;
+                }
+
+                /**
+                 * Sets the value of the xpos property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public void setXpos(Integer value) {
+                    this.xpos = value;
+                }
+
+                /**
+                 * Gets the value of the ypos property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public Integer getYpos() {
+                    return ypos;
+                }
+
+                /**
+                 * Sets the value of the ypos property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Integer }
+                 *     
+                 */
+                public void setYpos(Integer value) {
+                    this.ypos = value;
+                }
+
+            }
 
-    /**
-     * Sets the value of the scaleFactor property.
-     * 
-     * @param value
-     *          allowed object is {@link Float }
-     * 
-     */
-    public void setScaleFactor(Float value)
-    {
-      this.scaleFactor = value;
-    }
+        }
 
-    /**
-     * Gets the value of the showLabels property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowLabels()
-    {
-      return showLabels;
-    }
 
-    /**
-     * Sets the value of the showLabels property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowLabels(Boolean value)
-    {
-      this.showLabels = value;
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;sequence>
+         *         &lt;element name="secondaryStructure" maxOccurs="unbounded">
+         *           &lt;complexType>
+         *             &lt;complexContent>
+         *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *                 &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *                 &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *                 &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *                 &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *               &lt;/restriction>
+         *             &lt;/complexContent>
+         *           &lt;/complexType>
+         *         &lt;/element>
+         *       &lt;/sequence>
+         *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+         *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="dividerLocation" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "", propOrder = {
+            "secondaryStructure"
+        })
+        public static class RnaViewer {
+
+            @XmlElement(namespace = "www.jalview.org", required = true)
+            protected List<JalviewModel.JSeq.RnaViewer.SecondaryStructure> secondaryStructure;
+            @XmlAttribute(name = "title")
+            protected String title;
+            @XmlAttribute(name = "viewId")
+            protected String viewId;
+            @XmlAttribute(name = "dividerLocation")
+            protected Integer dividerLocation;
+            @XmlAttribute(name = "selectedRna")
+            protected Integer selectedRna;
+            @XmlAttribute(name = "width")
+            protected Integer width;
+            @XmlAttribute(name = "height")
+            protected Integer height;
+            @XmlAttribute(name = "xpos")
+            protected Integer xpos;
+            @XmlAttribute(name = "ypos")
+            protected Integer ypos;
+
+            /**
+             * Gets the value of the secondaryStructure property.
+             * 
+             * <p>
+             * This accessor method returns a reference to the live list,
+             * not a snapshot. Therefore any modification you make to the
+             * returned list will be present inside the JAXB object.
+             * This is why there is not a <CODE>set</CODE> method for the secondaryStructure property.
+             * 
+             * <p>
+             * For example, to add a new item, do as follows:
+             * <pre>
+             *    getSecondaryStructure().add(newItem);
+             * </pre>
+             * 
+             * 
+             * <p>
+             * Objects of the following type(s) are allowed in the list
+             * {@link JalviewModel.JSeq.RnaViewer.SecondaryStructure }
+             * 
+             * 
+             */
+            public List<JalviewModel.JSeq.RnaViewer.SecondaryStructure> getSecondaryStructure() {
+                if (secondaryStructure == null) {
+                    secondaryStructure = new ArrayList<JalviewModel.JSeq.RnaViewer.SecondaryStructure>();
+                }
+                return this.secondaryStructure;
+            }
+
+            /**
+             * Gets the value of the title property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getTitle() {
+                return title;
+            }
+
+            /**
+             * Sets the value of the title property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setTitle(String value) {
+                this.title = value;
+            }
+
+            /**
+             * Gets the value of the viewId property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getViewId() {
+                return viewId;
+            }
+
+            /**
+             * Sets the value of the viewId property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setViewId(String value) {
+                this.viewId = value;
+            }
+
+            /**
+             * Gets the value of the dividerLocation property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getDividerLocation() {
+                return dividerLocation;
+            }
+
+            /**
+             * Sets the value of the dividerLocation property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setDividerLocation(Integer value) {
+                this.dividerLocation = value;
+            }
+
+            /**
+             * Gets the value of the selectedRna property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getSelectedRna() {
+                return selectedRna;
+            }
+
+            /**
+             * Sets the value of the selectedRna property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setSelectedRna(Integer value) {
+                this.selectedRna = value;
+            }
+
+            /**
+             * Gets the value of the width property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getWidth() {
+                return width;
+            }
+
+            /**
+             * Sets the value of the width property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setWidth(Integer value) {
+                this.width = value;
+            }
+
+            /**
+             * Gets the value of the height property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getHeight() {
+                return height;
+            }
+
+            /**
+             * Sets the value of the height property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setHeight(Integer value) {
+                this.height = value;
+            }
+
+            /**
+             * Gets the value of the xpos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getXpos() {
+                return xpos;
+            }
+
+            /**
+             * Sets the value of the xpos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setXpos(Integer value) {
+                this.xpos = value;
+            }
+
+            /**
+             * Gets the value of the ypos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getYpos() {
+                return ypos;
+            }
+
+            /**
+             * Sets the value of the ypos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setYpos(Integer value) {
+                this.ypos = value;
+            }
+
+
+            /**
+             * <p>Java class for anonymous complex type.
+             * 
+             * <p>The following schema fragment specifies the expected content contained within this class.
+             * 
+             * <pre>
+             * &lt;complexType>
+             *   &lt;complexContent>
+             *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+             *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *       &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *       &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+             *       &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
+             *     &lt;/restriction>
+             *   &lt;/complexContent>
+             * &lt;/complexType>
+             * </pre>
+             * 
+             * 
+             */
+            @XmlAccessorType(XmlAccessType.FIELD)
+            @XmlType(name = "")
+            public static class SecondaryStructure {
+
+                @XmlAttribute(name = "title")
+                protected String title;
+                @XmlAttribute(name = "annotationId", required = true)
+                protected String annotationId;
+                @XmlAttribute(name = "gapped")
+                protected Boolean gapped;
+                @XmlAttribute(name = "viewerState")
+                protected String viewerState;
+
+                /**
+                 * Gets the value of the title property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getTitle() {
+                    return title;
+                }
+
+                /**
+                 * Sets the value of the title property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setTitle(String value) {
+                    this.title = value;
+                }
+
+                /**
+                 * Gets the value of the annotationId property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getAnnotationId() {
+                    return annotationId;
+                }
+
+                /**
+                 * Sets the value of the annotationId property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setAnnotationId(String value) {
+                    this.annotationId = value;
+                }
+
+                /**
+                 * Gets the value of the gapped property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public Boolean isGapped() {
+                    return gapped;
+                }
+
+                /**
+                 * Sets the value of the gapped property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link Boolean }
+                 *     
+                 */
+                public void setGapped(Boolean value) {
+                    this.gapped = value;
+                }
+
+                /**
+                 * Gets the value of the viewerState property.
+                 * 
+                 * @return
+                 *     possible object is
+                 *     {@link String }
+                 *     
+                 */
+                public String getViewerState() {
+                    return viewerState;
+                }
+
+                /**
+                 * Sets the value of the viewerState property.
+                 * 
+                 * @param value
+                 *     allowed object is
+                 *     {@link String }
+                 *     
+                 */
+                public void setViewerState(String value) {
+                    this.viewerState = value;
+                }
+
+            }
 
-    /**
-     * Gets the value of the linkToAllViews property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isLinkToAllViews()
-    {
-      return linkToAllViews;
-    }
+        }
 
-    /**
-     * Sets the value of the linkToAllViews property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setLinkToAllViews(Boolean value)
-    {
-      this.linkToAllViews = value;
     }
 
-    /**
-     * Gets the value of the width property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getWidth()
-    {
-      return width;
-    }
 
     /**
-     * Sets the value of the width property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="sequencePoint" maxOccurs="unbounded">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attGroup ref="{www.jalview.org}position"/>
+     *                 &lt;attribute name="sequenceRef" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="axis" maxOccurs="3" minOccurs="3">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attGroup ref="{www.jalview.org}position"/>
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="seqPointMin">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attGroup ref="{www.jalview.org}position"/>
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="seqPointMax">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attGroup ref="{www.jalview.org}position"/>
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="pcaData" type="{www.jalview.org}PcaDataType"/>
+     *       &lt;/sequence>
+     *       &lt;attGroup ref="{www.jalview.org}SimilarityParams"/>
+     *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+     *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="scoreModelName" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="xDim" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="yDim" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="zDim" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="bgColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="scaleFactor" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *       &lt;attribute name="showLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="linkToAllViews" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
      */
-    public void setWidth(Integer value)
-    {
-      this.width = value;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "sequencePoint",
+        "axis",
+        "seqPointMin",
+        "seqPointMax",
+        "pcaData"
+    })
+    public static class PcaViewer {
+
+        @XmlElement(namespace = "www.jalview.org", required = true)
+        protected List<JalviewModel.PcaViewer.SequencePoint> sequencePoint;
+        @XmlElement(namespace = "www.jalview.org", required = true)
+        protected List<JalviewModel.PcaViewer.Axis> axis;
+        @XmlElement(namespace = "www.jalview.org", required = true)
+        protected JalviewModel.PcaViewer.SeqPointMin seqPointMin;
+        @XmlElement(namespace = "www.jalview.org", required = true)
+        protected JalviewModel.PcaViewer.SeqPointMax seqPointMax;
+        @XmlElement(namespace = "www.jalview.org", required = true)
+        protected PcaDataType pcaData;
+        @XmlAttribute(name = "title")
+        protected String title;
+        @XmlAttribute(name = "scoreModelName")
+        protected String scoreModelName;
+        @XmlAttribute(name = "xDim")
+        protected Integer xDim;
+        @XmlAttribute(name = "yDim")
+        protected Integer yDim;
+        @XmlAttribute(name = "zDim")
+        protected Integer zDim;
+        @XmlAttribute(name = "bgColour")
+        protected Integer bgColour;
+        @XmlAttribute(name = "scaleFactor")
+        protected Float scaleFactor;
+        @XmlAttribute(name = "showLabels")
+        protected Boolean showLabels;
+        @XmlAttribute(name = "linkToAllViews")
+        protected Boolean linkToAllViews;
+        @XmlAttribute(name = "includeGaps")
+        protected Boolean includeGaps;
+        @XmlAttribute(name = "matchGaps")
+        protected Boolean matchGaps;
+        @XmlAttribute(name = "includeGappedColumns")
+        protected Boolean includeGappedColumns;
+        @XmlAttribute(name = "denominateByShortestLength")
+        protected Boolean denominateByShortestLength;
+        @XmlAttribute(name = "width")
+        protected Integer width;
+        @XmlAttribute(name = "height")
+        protected Integer height;
+        @XmlAttribute(name = "xpos")
+        protected Integer xpos;
+        @XmlAttribute(name = "ypos")
+        protected Integer ypos;
 
-    /**
-     * Gets the value of the height property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getHeight()
-    {
-      return height;
-    }
+        /**
+         * Gets the value of the sequencePoint property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the sequencePoint property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getSequencePoint().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.PcaViewer.SequencePoint }
+         * 
+         * 
+         */
+        public List<JalviewModel.PcaViewer.SequencePoint> getSequencePoint() {
+            if (sequencePoint == null) {
+                sequencePoint = new ArrayList<JalviewModel.PcaViewer.SequencePoint>();
+            }
+            return this.sequencePoint;
+        }
 
-    /**
-     * Sets the value of the height property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setHeight(Integer value)
-    {
-      this.height = value;
-    }
+        /**
+         * Gets the value of the axis property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the axis property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getAxis().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.PcaViewer.Axis }
+         * 
+         * 
+         */
+        public List<JalviewModel.PcaViewer.Axis> getAxis() {
+            if (axis == null) {
+                axis = new ArrayList<JalviewModel.PcaViewer.Axis>();
+            }
+            return this.axis;
+        }
 
-    /**
-     * Gets the value of the xpos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getXpos()
-    {
-      return xpos;
-    }
+        /**
+         * Gets the value of the seqPointMin property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link JalviewModel.PcaViewer.SeqPointMin }
+         *     
+         */
+        public JalviewModel.PcaViewer.SeqPointMin getSeqPointMin() {
+            return seqPointMin;
+        }
 
-    /**
-     * Sets the value of the xpos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setXpos(Integer value)
-    {
-      this.xpos = value;
-    }
+        /**
+         * Sets the value of the seqPointMin property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link JalviewModel.PcaViewer.SeqPointMin }
+         *     
+         */
+        public void setSeqPointMin(JalviewModel.PcaViewer.SeqPointMin value) {
+            this.seqPointMin = value;
+        }
 
-    /**
-     * Gets the value of the ypos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getYpos()
-    {
-      return ypos;
-    }
+        /**
+         * Gets the value of the seqPointMax property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link JalviewModel.PcaViewer.SeqPointMax }
+         *     
+         */
+        public JalviewModel.PcaViewer.SeqPointMax getSeqPointMax() {
+            return seqPointMax;
+        }
 
-    /**
-     * Sets the value of the ypos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setYpos(Integer value)
-    {
-      this.ypos = value;
-    }
+        /**
+         * Sets the value of the seqPointMax property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link JalviewModel.PcaViewer.SeqPointMax }
+         *     
+         */
+        public void setSeqPointMax(JalviewModel.PcaViewer.SeqPointMax value) {
+            this.seqPointMax = value;
+        }
 
-    /**
-     * Gets the value of the includeGaps property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isIncludeGaps()
-    {
-      return includeGaps;
-    }
+        /**
+         * Gets the value of the pcaData property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link PcaDataType }
+         *     
+         */
+        public PcaDataType getPcaData() {
+            return pcaData;
+        }
 
-    /**
-     * Sets the value of the includeGaps property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIncludeGaps(Boolean value)
-    {
-      this.includeGaps = value;
-    }
+        /**
+         * Sets the value of the pcaData property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link PcaDataType }
+         *     
+         */
+        public void setPcaData(PcaDataType value) {
+            this.pcaData = value;
+        }
 
-    /**
-     * Gets the value of the matchGaps property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isMatchGaps()
-    {
-      return matchGaps;
-    }
+        /**
+         * Gets the value of the title property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getTitle() {
+            return title;
+        }
 
-    /**
-     * Sets the value of the matchGaps property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setMatchGaps(Boolean value)
-    {
-      this.matchGaps = value;
-    }
+        /**
+         * Sets the value of the title property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setTitle(String value) {
+            this.title = value;
+        }
 
-    /**
-     * Gets the value of the includeGappedColumns property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isIncludeGappedColumns()
-    {
-      return includeGappedColumns;
-    }
+        /**
+         * Gets the value of the scoreModelName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getScoreModelName() {
+            return scoreModelName;
+        }
 
-    /**
-     * Sets the value of the includeGappedColumns property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIncludeGappedColumns(Boolean value)
-    {
-      this.includeGappedColumns = value;
-    }
+        /**
+         * Sets the value of the scoreModelName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setScoreModelName(String value) {
+            this.scoreModelName = value;
+        }
 
-    /**
-     * Gets the value of the denominateByShortestLength property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isDenominateByShortestLength()
-    {
-      return denominateByShortestLength;
-    }
+        /**
+         * Gets the value of the xDim property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getXDim() {
+            return xDim;
+        }
 
-    /**
-     * Sets the value of the denominateByShortestLength property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setDenominateByShortestLength(Boolean value)
-    {
-      this.denominateByShortestLength = value;
-    }
+        /**
+         * Sets the value of the xDim property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setXDim(Integer value) {
+            this.xDim = value;
+        }
 
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-     * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
-     * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class Axis
-    {
-
-      @XmlAttribute(name = "xPos")
-      protected Float xPos;
-
-      @XmlAttribute(name = "yPos")
-      protected Float yPos;
-
-      @XmlAttribute(name = "zPos")
-      protected Float zPos;
-
-      /**
-       * Gets the value of the xPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getXPos()
-      {
-        return xPos;
-      }
-
-      /**
-       * Sets the value of the xPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setXPos(Float value)
-      {
-        this.xPos = value;
-      }
-
-      /**
-       * Gets the value of the yPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getYPos()
-      {
-        return yPos;
-      }
-
-      /**
-       * Sets the value of the yPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setYPos(Float value)
-      {
-        this.yPos = value;
-      }
-
-      /**
-       * Gets the value of the zPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getZPos()
-      {
-        return zPos;
-      }
-
-      /**
-       * Sets the value of the zPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setZPos(Float value)
-      {
-        this.zPos = value;
-      }
+        /**
+         * Gets the value of the yDim property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getYDim() {
+            return yDim;
+        }
 
-    }
+        /**
+         * Sets the value of the yDim property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setYDim(Integer value) {
+            this.yDim = value;
+        }
 
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-     * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
-     * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class SeqPointMax
-    {
-
-      @XmlAttribute(name = "xPos")
-      protected Float xPos;
-
-      @XmlAttribute(name = "yPos")
-      protected Float yPos;
-
-      @XmlAttribute(name = "zPos")
-      protected Float zPos;
-
-      /**
-       * Gets the value of the xPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getXPos()
-      {
-        return xPos;
-      }
-
-      /**
-       * Sets the value of the xPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setXPos(Float value)
-      {
-        this.xPos = value;
-      }
-
-      /**
-       * Gets the value of the yPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getYPos()
-      {
-        return yPos;
-      }
-
-      /**
-       * Sets the value of the yPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setYPos(Float value)
-      {
-        this.yPos = value;
-      }
-
-      /**
-       * Gets the value of the zPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getZPos()
-      {
-        return zPos;
-      }
-
-      /**
-       * Sets the value of the zPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setZPos(Float value)
-      {
-        this.zPos = value;
-      }
+        /**
+         * Gets the value of the zDim property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getZDim() {
+            return zDim;
+        }
 
-    }
+        /**
+         * Sets the value of the zDim property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setZDim(Integer value) {
+            this.zDim = value;
+        }
 
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-     * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;/restriction&amp;gt;
-     * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class SeqPointMin
-    {
-
-      @XmlAttribute(name = "xPos")
-      protected Float xPos;
-
-      @XmlAttribute(name = "yPos")
-      protected Float yPos;
-
-      @XmlAttribute(name = "zPos")
-      protected Float zPos;
-
-      /**
-       * Gets the value of the xPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getXPos()
-      {
-        return xPos;
-      }
-
-      /**
-       * Sets the value of the xPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setXPos(Float value)
-      {
-        this.xPos = value;
-      }
-
-      /**
-       * Gets the value of the yPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getYPos()
-      {
-        return yPos;
-      }
-
-      /**
-       * Sets the value of the yPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setYPos(Float value)
-      {
-        this.yPos = value;
-      }
-
-      /**
-       * Gets the value of the zPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getZPos()
-      {
-        return zPos;
-      }
-
-      /**
-       * Sets the value of the zPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setZPos(Float value)
-      {
-        this.zPos = value;
-      }
+        /**
+         * Gets the value of the bgColour property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getBgColour() {
+            return bgColour;
+        }
 
-    }
+        /**
+         * Sets the value of the bgColour property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setBgColour(Integer value) {
+            this.bgColour = value;
+        }
 
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attGroup
-     * ref="{www.jalview.org}position"/&amp;gt; &amp;lt;attribute
-     * name="sequenceRef" type="{http://www.w3.org/2001/XMLSchema}string"
-     * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class SequencePoint
-    {
-
-      @XmlAttribute(name = "sequenceRef")
-      protected String sequenceRef;
-
-      @XmlAttribute(name = "xPos")
-      protected Float xPos;
-
-      @XmlAttribute(name = "yPos")
-      protected Float yPos;
-
-      @XmlAttribute(name = "zPos")
-      protected Float zPos;
-
-      /**
-       * Gets the value of the sequenceRef property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getSequenceRef()
-      {
-        return sequenceRef;
-      }
-
-      /**
-       * Sets the value of the sequenceRef property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setSequenceRef(String value)
-      {
-        this.sequenceRef = value;
-      }
-
-      /**
-       * Gets the value of the xPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getXPos()
-      {
-        return xPos;
-      }
-
-      /**
-       * Sets the value of the xPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setXPos(Float value)
-      {
-        this.xPos = value;
-      }
-
-      /**
-       * Gets the value of the yPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getYPos()
-      {
-        return yPos;
-      }
-
-      /**
-       * Sets the value of the yPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setYPos(Float value)
-      {
-        this.yPos = value;
-      }
-
-      /**
-       * Gets the value of the zPos property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getZPos()
-      {
-        return zPos;
-      }
-
-      /**
-       * Sets the value of the zPos property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setZPos(Float value)
-      {
-        this.zPos = value;
-      }
+        /**
+         * Gets the value of the scaleFactor property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getScaleFactor() {
+            return scaleFactor;
+        }
 
-    }
+        /**
+         * Sets the value of the scaleFactor property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setScaleFactor(Float value) {
+            this.scaleFactor = value;
+        }
 
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;sequence
-   * minOccurs="0"&amp;gt; &amp;lt;element name="title"
-   * type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt; &amp;lt;element
-   * name="newick" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attGroup
-   * ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attribute
-   * name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="fontSize"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="threshold"
-   * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
-   * name="showBootstrap" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * /&amp;gt; &amp;lt;attribute name="showDistances"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="markUnlinked"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="fitToWindow"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="currentTree"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID"
-   * /&amp;gt; &amp;lt;attribute name="linkToAllViews"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "title", "newick" })
-  public static class Tree
-  {
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected String title;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected String newick;
-
-    @XmlAttribute(name = "fontName")
-    protected String fontName;
-
-    @XmlAttribute(name = "fontSize")
-    protected Integer fontSize;
-
-    @XmlAttribute(name = "fontStyle")
-    protected Integer fontStyle;
-
-    @XmlAttribute(name = "threshold")
-    protected Float threshold;
-
-    @XmlAttribute(name = "showBootstrap")
-    protected Boolean showBootstrap;
-
-    @XmlAttribute(name = "showDistances")
-    protected Boolean showDistances;
-
-    @XmlAttribute(name = "markUnlinked")
-    protected Boolean markUnlinked;
-
-    @XmlAttribute(name = "fitToWindow")
-    protected Boolean fitToWindow;
-
-    @XmlAttribute(name = "currentTree")
-    protected Boolean currentTree;
-
-    @XmlAttribute(name = "id")
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlID
-    @XmlSchemaType(name = "ID")
-    protected String id;
-
-    @XmlAttribute(name = "linkToAllViews")
-    protected Boolean linkToAllViews;
-
-    @XmlAttribute(name = "width")
-    protected Integer width;
-
-    @XmlAttribute(name = "height")
-    protected Integer height;
-
-    @XmlAttribute(name = "xpos")
-    protected Integer xpos;
-
-    @XmlAttribute(name = "ypos")
-    protected Integer ypos;
+        /**
+         * Gets the value of the showLabels property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowLabels() {
+            return showLabels;
+        }
 
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
-    }
+        /**
+         * Sets the value of the showLabels property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowLabels(Boolean value) {
+            this.showLabels = value;
+        }
 
-    /**
-     * Sets the value of the title property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
+        /**
+         * Gets the value of the linkToAllViews property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isLinkToAllViews() {
+            return linkToAllViews;
+        }
 
-    /**
-     * Gets the value of the newick property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getNewick()
-    {
-      return newick;
-    }
+        /**
+         * Sets the value of the linkToAllViews property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setLinkToAllViews(Boolean value) {
+            this.linkToAllViews = value;
+        }
 
-    /**
-     * Sets the value of the newick property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setNewick(String value)
-    {
-      this.newick = value;
-    }
+        /**
+         * Gets the value of the includeGaps property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isIncludeGaps() {
+            return includeGaps;
+        }
 
-    /**
-     * Gets the value of the fontName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFontName()
-    {
-      return fontName;
-    }
+        /**
+         * Sets the value of the includeGaps property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setIncludeGaps(Boolean value) {
+            this.includeGaps = value;
+        }
 
-    /**
-     * Sets the value of the fontName property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setFontName(String value)
-    {
-      this.fontName = value;
-    }
+        /**
+         * Gets the value of the matchGaps property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isMatchGaps() {
+            return matchGaps;
+        }
 
-    /**
-     * Gets the value of the fontSize property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontSize()
-    {
-      return fontSize;
-    }
+        /**
+         * Sets the value of the matchGaps property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setMatchGaps(Boolean value) {
+            this.matchGaps = value;
+        }
 
-    /**
-     * Sets the value of the fontSize property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontSize(Integer value)
-    {
-      this.fontSize = value;
-    }
+        /**
+         * Gets the value of the includeGappedColumns property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isIncludeGappedColumns() {
+            return includeGappedColumns;
+        }
 
-    /**
-     * Gets the value of the fontStyle property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontStyle()
-    {
-      return fontStyle;
-    }
+        /**
+         * Sets the value of the includeGappedColumns property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setIncludeGappedColumns(Boolean value) {
+            this.includeGappedColumns = value;
+        }
 
-    /**
-     * Sets the value of the fontStyle property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontStyle(Integer value)
-    {
-      this.fontStyle = value;
-    }
+        /**
+         * Gets the value of the denominateByShortestLength property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isDenominateByShortestLength() {
+            return denominateByShortestLength;
+        }
 
-    /**
-     * Gets the value of the threshold property.
-     * 
-     * @return possible object is {@link Float }
-     * 
-     */
-    public Float getThreshold()
-    {
-      return threshold;
-    }
+        /**
+         * Sets the value of the denominateByShortestLength property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setDenominateByShortestLength(Boolean value) {
+            this.denominateByShortestLength = value;
+        }
 
-    /**
-     * Sets the value of the threshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Float }
-     * 
-     */
-    public void setThreshold(Float value)
-    {
-      this.threshold = value;
-    }
+        /**
+         * Gets the value of the width property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getWidth() {
+            return width;
+        }
 
-    /**
-     * Gets the value of the showBootstrap property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowBootstrap()
-    {
-      return showBootstrap;
-    }
+        /**
+         * Sets the value of the width property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setWidth(Integer value) {
+            this.width = value;
+        }
 
-    /**
-     * Sets the value of the showBootstrap property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowBootstrap(Boolean value)
-    {
-      this.showBootstrap = value;
-    }
+        /**
+         * Gets the value of the height property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getHeight() {
+            return height;
+        }
 
-    /**
-     * Gets the value of the showDistances property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowDistances()
-    {
-      return showDistances;
-    }
+        /**
+         * Sets the value of the height property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setHeight(Integer value) {
+            this.height = value;
+        }
 
-    /**
-     * Sets the value of the showDistances property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowDistances(Boolean value)
-    {
-      this.showDistances = value;
-    }
+        /**
+         * Gets the value of the xpos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getXpos() {
+            return xpos;
+        }
 
-    /**
-     * Gets the value of the markUnlinked property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isMarkUnlinked()
-    {
-      return markUnlinked;
-    }
+        /**
+         * Sets the value of the xpos property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setXpos(Integer value) {
+            this.xpos = value;
+        }
 
-    /**
-     * Sets the value of the markUnlinked property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setMarkUnlinked(Boolean value)
-    {
-      this.markUnlinked = value;
-    }
+        /**
+         * Gets the value of the ypos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getYpos() {
+            return ypos;
+        }
 
-    /**
-     * Gets the value of the fitToWindow property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isFitToWindow()
-    {
-      return fitToWindow;
-    }
+        /**
+         * Sets the value of the ypos property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setYpos(Integer value) {
+            this.ypos = value;
+        }
 
-    /**
-     * Sets the value of the fitToWindow property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFitToWindow(Boolean value)
-    {
-      this.fitToWindow = value;
-    }
 
-    /**
-     * Gets the value of the currentTree property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isCurrentTree()
-    {
-      return currentTree;
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attGroup ref="{www.jalview.org}position"/>
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class Axis {
+
+            @XmlAttribute(name = "xPos")
+            protected Float xPos;
+            @XmlAttribute(name = "yPos")
+            protected Float yPos;
+            @XmlAttribute(name = "zPos")
+            protected Float zPos;
+
+            /**
+             * Gets the value of the xPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getXPos() {
+                return xPos;
+            }
+
+            /**
+             * Sets the value of the xPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setXPos(Float value) {
+                this.xPos = value;
+            }
+
+            /**
+             * Gets the value of the yPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getYPos() {
+                return yPos;
+            }
+
+            /**
+             * Sets the value of the yPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setYPos(Float value) {
+                this.yPos = value;
+            }
+
+            /**
+             * Gets the value of the zPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getZPos() {
+                return zPos;
+            }
+
+            /**
+             * Sets the value of the zPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setZPos(Float value) {
+                this.zPos = value;
+            }
 
-    /**
-     * Sets the value of the currentTree property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setCurrentTree(Boolean value)
-    {
-      this.currentTree = value;
-    }
+        }
 
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
 
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attGroup ref="{www.jalview.org}position"/>
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class SeqPointMax {
+
+            @XmlAttribute(name = "xPos")
+            protected Float xPos;
+            @XmlAttribute(name = "yPos")
+            protected Float yPos;
+            @XmlAttribute(name = "zPos")
+            protected Float zPos;
+
+            /**
+             * Gets the value of the xPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getXPos() {
+                return xPos;
+            }
+
+            /**
+             * Sets the value of the xPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setXPos(Float value) {
+                this.xPos = value;
+            }
+
+            /**
+             * Gets the value of the yPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getYPos() {
+                return yPos;
+            }
+
+            /**
+             * Sets the value of the yPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setYPos(Float value) {
+                this.yPos = value;
+            }
+
+            /**
+             * Gets the value of the zPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getZPos() {
+                return zPos;
+            }
+
+            /**
+             * Sets the value of the zPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setZPos(Float value) {
+                this.zPos = value;
+            }
 
-    /**
-     * Gets the value of the linkToAllViews property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isLinkToAllViews()
-    {
-      if (linkToAllViews == null)
-      {
-        return false;
-      }
-      else
-      {
-        return linkToAllViews;
-      }
-    }
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attGroup ref="{www.jalview.org}position"/>
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class SeqPointMin {
+
+            @XmlAttribute(name = "xPos")
+            protected Float xPos;
+            @XmlAttribute(name = "yPos")
+            protected Float yPos;
+            @XmlAttribute(name = "zPos")
+            protected Float zPos;
+
+            /**
+             * Gets the value of the xPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getXPos() {
+                return xPos;
+            }
+
+            /**
+             * Sets the value of the xPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setXPos(Float value) {
+                this.xPos = value;
+            }
+
+            /**
+             * Gets the value of the yPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getYPos() {
+                return yPos;
+            }
+
+            /**
+             * Sets the value of the yPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setYPos(Float value) {
+                this.yPos = value;
+            }
+
+            /**
+             * Gets the value of the zPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getZPos() {
+                return zPos;
+            }
+
+            /**
+             * Sets the value of the zPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setZPos(Float value) {
+                this.zPos = value;
+            }
+
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attGroup ref="{www.jalview.org}position"/>
+         *       &lt;attribute name="sequenceRef" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class SequencePoint {
+
+            @XmlAttribute(name = "sequenceRef")
+            protected String sequenceRef;
+            @XmlAttribute(name = "xPos")
+            protected Float xPos;
+            @XmlAttribute(name = "yPos")
+            protected Float yPos;
+            @XmlAttribute(name = "zPos")
+            protected Float zPos;
+
+            /**
+             * Gets the value of the sequenceRef property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getSequenceRef() {
+                return sequenceRef;
+            }
+
+            /**
+             * Sets the value of the sequenceRef property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setSequenceRef(String value) {
+                this.sequenceRef = value;
+            }
+
+            /**
+             * Gets the value of the xPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getXPos() {
+                return xPos;
+            }
+
+            /**
+             * Sets the value of the xPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setXPos(Float value) {
+                this.xPos = value;
+            }
+
+            /**
+             * Gets the value of the yPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getYPos() {
+                return yPos;
+            }
+
+            /**
+             * Sets the value of the yPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setYPos(Float value) {
+                this.yPos = value;
+            }
+
+            /**
+             * Gets the value of the zPos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Float }
+             *     
+             */
+            public Float getZPos() {
+                return zPos;
+            }
+
+            /**
+             * Sets the value of the zPos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Float }
+             *     
+             */
+            public void setZPos(Float value) {
+                this.zPos = value;
+            }
+
+        }
 
-    /**
-     * Sets the value of the linkToAllViews property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setLinkToAllViews(Boolean value)
-    {
-      this.linkToAllViews = value;
     }
 
+
     /**
-     * Gets the value of the width property.
+     * <p>Java class for anonymous complex type.
      * 
-     * @return possible object is {@link Integer }
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public Integer getWidth()
-    {
-      return width;
-    }
-
-    /**
-     * Sets the value of the width property.
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence minOccurs="0">
+     *         &lt;element name="title" type="{http://www.w3.org/2001/XMLSchema}string"/>
+     *         &lt;element name="newick" type="{http://www.w3.org/2001/XMLSchema}string"/>
+     *       &lt;/sequence>
+     *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+     *       &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *       &lt;attribute name="showBootstrap" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="showDistances" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="markUnlinked" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="fitToWindow" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="currentTree" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+     *       &lt;attribute name="linkToAllViews" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
      */
-    public void setWidth(Integer value)
-    {
-      this.width = value;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "title",
+        "newick"
+    })
+    public static class Tree {
 
-    /**
-     * Gets the value of the height property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getHeight()
-    {
-      return height;
-    }
+        @XmlElement(namespace = "www.jalview.org")
+        protected String title;
+        @XmlElement(namespace = "www.jalview.org")
+        protected String newick;
+        @XmlAttribute(name = "fontName")
+        protected String fontName;
+        @XmlAttribute(name = "fontSize")
+        protected Integer fontSize;
+        @XmlAttribute(name = "fontStyle")
+        protected Integer fontStyle;
+        @XmlAttribute(name = "threshold")
+        protected Float threshold;
+        @XmlAttribute(name = "showBootstrap")
+        protected Boolean showBootstrap;
+        @XmlAttribute(name = "showDistances")
+        protected Boolean showDistances;
+        @XmlAttribute(name = "markUnlinked")
+        protected Boolean markUnlinked;
+        @XmlAttribute(name = "fitToWindow")
+        protected Boolean fitToWindow;
+        @XmlAttribute(name = "currentTree")
+        protected Boolean currentTree;
+        @XmlAttribute(name = "id")
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        @XmlID
+        @XmlSchemaType(name = "ID")
+        protected String id;
+        @XmlAttribute(name = "linkToAllViews")
+        protected Boolean linkToAllViews;
+        @XmlAttribute(name = "width")
+        protected Integer width;
+        @XmlAttribute(name = "height")
+        protected Integer height;
+        @XmlAttribute(name = "xpos")
+        protected Integer xpos;
+        @XmlAttribute(name = "ypos")
+        protected Integer ypos;
 
-    /**
-     * Sets the value of the height property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setHeight(Integer value)
-    {
-      this.height = value;
-    }
+        /**
+         * Gets the value of the title property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getTitle() {
+            return title;
+        }
 
-    /**
-     * Gets the value of the xpos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getXpos()
-    {
-      return xpos;
-    }
+        /**
+         * Sets the value of the title property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setTitle(String value) {
+            this.title = value;
+        }
 
-    /**
-     * Sets the value of the xpos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setXpos(Integer value)
-    {
-      this.xpos = value;
-    }
+        /**
+         * Gets the value of the newick property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getNewick() {
+            return newick;
+        }
 
-    /**
-     * Gets the value of the ypos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getYpos()
-    {
-      return ypos;
-    }
+        /**
+         * Sets the value of the newick property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setNewick(String value) {
+            this.newick = value;
+        }
 
-    /**
-     * Sets the value of the ypos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setYpos(Integer value)
-    {
-      this.ypos = value;
-    }
+        /**
+         * Gets the value of the fontName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFontName() {
+            return fontName;
+        }
 
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="UserColourScheme"
-   * type="{www.jalview.org/colours}JalviewUserColours"/&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="id"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "userColourScheme" })
-  public static class UserColours
-  {
-
-    @XmlElement(
-      name = "UserColourScheme",
-      namespace = "www.jalview.org",
-      required = true)
-    protected JalviewUserColours userColourScheme;
-
-    @XmlAttribute(name = "id")
-    protected String id;
+        /**
+         * Sets the value of the fontName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFontName(String value) {
+            this.fontName = value;
+        }
 
-    /**
-     * Gets the value of the userColourScheme property.
-     * 
-     * @return possible object is {@link JalviewUserColours }
-     * 
-     */
-    public JalviewUserColours getUserColourScheme()
-    {
-      return userColourScheme;
-    }
+        /**
+         * Gets the value of the fontSize property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontSize() {
+            return fontSize;
+        }
 
-    /**
-     * Sets the value of the userColourScheme property.
-     * 
-     * @param value
-     *          allowed object is {@link JalviewUserColours }
-     * 
-     */
-    public void setUserColourScheme(JalviewUserColours value)
-    {
-      this.userColourScheme = value;
-    }
+        /**
+         * Sets the value of the fontSize property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setFontSize(Integer value) {
+            this.fontSize = value;
+        }
 
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
+        /**
+         * Gets the value of the fontStyle property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontStyle() {
+            return fontStyle;
+        }
 
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
+        /**
+         * Sets the value of the fontStyle property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setFontStyle(Integer value) {
+            this.fontStyle = value;
+        }
 
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="AnnotationColours"
-   * type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/&amp;gt;
-   * &amp;lt;element name="hiddenColumns" maxOccurs="unbounded"
-   * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
-   * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="start" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int"
-   * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
-   * name="calcIdParam" maxOccurs="unbounded" minOccurs="0"&amp;gt;
-   * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;extension
-   * base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet"&amp;gt;
-   * &amp;lt;attribute name="calcId" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * default="false" /&amp;gt; &amp;lt;attribute name="autoUpdate"
-   * use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;/extension&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attGroup
-   * ref="{www.jalview.org}swingwindow"/&amp;gt; &amp;lt;attribute
-   * name="conservationSelected"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="pidSelected"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="bgColour"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="pidThreshold"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="title" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="showFullId"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="rightAlignIds"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="showText"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="showColourText"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="showUnconserved"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="showBoxes"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="wrapAlignment"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="renderGaps"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="showSequenceFeatures"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="showNPfeatureTooltip"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="showDbRefTooltip"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="followHighlight"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-   * &amp;lt;attribute name="followSelection"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-   * &amp;lt;attribute name="showAnnotation"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="centreColumnLabels"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="showGroupConservation"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="showGroupConsensus"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="showConsensusHistogram"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-   * &amp;lt;attribute name="showSequenceLogo"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="normaliseSequenceLogo"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="ignoreGapsinConsensus"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" /&amp;gt;
-   * &amp;lt;attribute name="startRes"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="startSeq" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="fontName"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="fontStyle"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="scaleProteinAsCdna" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * default="true" /&amp;gt; &amp;lt;attribute name="viewName"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="sequenceSetId" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;attribute name="gatheredViews"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;attribute name="textCol1"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;attribute name="textColThreshold"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-   * name="id" type="{http://www.w3.org/2001/XMLSchema}ID" /&amp;gt;
-   * &amp;lt;attribute name="complementId"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="showComplementFeatures"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;attribute name="showComplementFeaturesOnTop"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "annotationColours", "hiddenColumns", "calcIdParam" })
-  public static class Viewport
-  {
-
-    @XmlElement(name = "AnnotationColours", namespace = "www.jalview.org")
-    protected AnnotationColourScheme annotationColours;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModel.Viewport.HiddenColumns> hiddenColumns;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModel.Viewport.CalcIdParam> calcIdParam;
-
-    @XmlAttribute(name = "conservationSelected")
-    protected Boolean conservationSelected;
-
-    @XmlAttribute(name = "pidSelected")
-    protected Boolean pidSelected;
-
-    @XmlAttribute(name = "bgColour")
-    protected String bgColour;
-
-    @XmlAttribute(name = "consThreshold")
-    protected Integer consThreshold;
-
-    @XmlAttribute(name = "pidThreshold")
-    protected Integer pidThreshold;
-
-    @XmlAttribute(name = "title")
-    protected String title;
-
-    @XmlAttribute(name = "showFullId")
-    protected Boolean showFullId;
-
-    @XmlAttribute(name = "rightAlignIds")
-    protected Boolean rightAlignIds;
-
-    @XmlAttribute(name = "showText")
-    protected Boolean showText;
-
-    @XmlAttribute(name = "showColourText")
-    protected Boolean showColourText;
-
-    @XmlAttribute(name = "showUnconserved")
-    protected Boolean showUnconserved;
-
-    @XmlAttribute(name = "showBoxes")
-    protected Boolean showBoxes;
-
-    @XmlAttribute(name = "wrapAlignment")
-    protected Boolean wrapAlignment;
-
-    @XmlAttribute(name = "renderGaps")
-    protected Boolean renderGaps;
+        /**
+         * Gets the value of the threshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getThreshold() {
+            return threshold;
+        }
 
-    @XmlAttribute(name = "showSequenceFeatures")
-    protected Boolean showSequenceFeatures;
+        /**
+         * Sets the value of the threshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setThreshold(Float value) {
+            this.threshold = value;
+        }
 
-    @XmlAttribute(name = "showNPfeatureTooltip")
-    protected Boolean showNPfeatureTooltip;
+        /**
+         * Gets the value of the showBootstrap property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowBootstrap() {
+            return showBootstrap;
+        }
 
-    @XmlAttribute(name = "showDbRefTooltip")
-    protected Boolean showDbRefTooltip;
+        /**
+         * Sets the value of the showBootstrap property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowBootstrap(Boolean value) {
+            this.showBootstrap = value;
+        }
 
-    @XmlAttribute(name = "followHighlight")
-    protected Boolean followHighlight;
+        /**
+         * Gets the value of the showDistances property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowDistances() {
+            return showDistances;
+        }
 
-    @XmlAttribute(name = "followSelection")
-    protected Boolean followSelection;
+        /**
+         * Sets the value of the showDistances property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowDistances(Boolean value) {
+            this.showDistances = value;
+        }
 
-    @XmlAttribute(name = "showAnnotation")
-    protected Boolean showAnnotation;
+        /**
+         * Gets the value of the markUnlinked property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isMarkUnlinked() {
+            return markUnlinked;
+        }
 
-    @XmlAttribute(name = "centreColumnLabels")
-    protected Boolean centreColumnLabels;
+        /**
+         * Sets the value of the markUnlinked property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setMarkUnlinked(Boolean value) {
+            this.markUnlinked = value;
+        }
 
-    @XmlAttribute(name = "showGroupConservation")
-    protected Boolean showGroupConservation;
+        /**
+         * Gets the value of the fitToWindow property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isFitToWindow() {
+            return fitToWindow;
+        }
 
-    @XmlAttribute(name = "showGroupConsensus")
-    protected Boolean showGroupConsensus;
+        /**
+         * Sets the value of the fitToWindow property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setFitToWindow(Boolean value) {
+            this.fitToWindow = value;
+        }
 
-    @XmlAttribute(name = "showConsensusHistogram")
-    protected Boolean showConsensusHistogram;
+        /**
+         * Gets the value of the currentTree property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isCurrentTree() {
+            return currentTree;
+        }
 
-    @XmlAttribute(name = "showSequenceLogo")
-    protected Boolean showSequenceLogo;
+        /**
+         * Sets the value of the currentTree property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setCurrentTree(Boolean value) {
+            this.currentTree = value;
+        }
 
-    @XmlAttribute(name = "normaliseSequenceLogo")
-    protected Boolean normaliseSequenceLogo;
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
 
-    @XmlAttribute(name = "ignoreGapsinConsensus")
-    protected Boolean ignoreGapsinConsensus;
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setId(String value) {
+            this.id = value;
+        }
 
-    @XmlAttribute(name = "startRes")
-    protected Integer startRes;
+        /**
+         * Gets the value of the linkToAllViews property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isLinkToAllViews() {
+            if (linkToAllViews == null) {
+                return false;
+            } else {
+                return linkToAllViews;
+            }
+        }
 
-    @XmlAttribute(name = "startSeq")
-    protected Integer startSeq;
+        /**
+         * Sets the value of the linkToAllViews property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setLinkToAllViews(Boolean value) {
+            this.linkToAllViews = value;
+        }
 
-    @XmlAttribute(name = "fontName")
-    protected String fontName;
+        /**
+         * Gets the value of the width property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getWidth() {
+            return width;
+        }
 
-    @XmlAttribute(name = "fontSize")
-    protected Integer fontSize;
+        /**
+         * Sets the value of the width property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setWidth(Integer value) {
+            this.width = value;
+        }
 
-    @XmlAttribute(name = "fontStyle")
-    protected Integer fontStyle;
+        /**
+         * Gets the value of the height property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getHeight() {
+            return height;
+        }
 
-    @XmlAttribute(name = "scaleProteinAsCdna")
-    protected Boolean scaleProteinAsCdna;
+        /**
+         * Sets the value of the height property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setHeight(Integer value) {
+            this.height = value;
+        }
 
-    @XmlAttribute(name = "viewName")
-    protected String viewName;
+        /**
+         * Gets the value of the xpos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getXpos() {
+            return xpos;
+        }
 
-    @XmlAttribute(name = "sequenceSetId")
-    protected String sequenceSetId;
+        /**
+         * Sets the value of the xpos property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setXpos(Integer value) {
+            this.xpos = value;
+        }
 
-    @XmlAttribute(name = "gatheredViews")
-    protected Boolean gatheredViews;
+        /**
+         * Gets the value of the ypos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getYpos() {
+            return ypos;
+        }
 
-    @XmlAttribute(name = "textCol1")
-    protected Integer textCol1;
+        /**
+         * Sets the value of the ypos property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setYpos(Integer value) {
+            this.ypos = value;
+        }
 
-    @XmlAttribute(name = "textCol2")
-    protected Integer textCol2;
+    }
 
-    @XmlAttribute(name = "textColThreshold")
-    protected Integer textColThreshold;
 
-    @XmlAttribute(name = "id")
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlID
-    @XmlSchemaType(name = "ID")
-    protected String id;
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="UserColourScheme" type="{www.jalview.org/colours}JalviewUserColours"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "userColourScheme"
+    })
+    public static class UserColours {
 
-    @XmlAttribute(name = "complementId")
-    protected String complementId;
+        @XmlElement(name = "UserColourScheme", namespace = "www.jalview.org", required = true)
+        protected JalviewUserColours userColourScheme;
+        @XmlAttribute(name = "id")
+        protected String id;
 
-    @XmlAttribute(name = "showComplementFeatures")
-    protected Boolean showComplementFeatures;
+        /**
+         * Gets the value of the userColourScheme property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link JalviewUserColours }
+         *     
+         */
+        public JalviewUserColours getUserColourScheme() {
+            return userColourScheme;
+        }
 
-    @XmlAttribute(name = "showComplementFeaturesOnTop")
-    protected Boolean showComplementFeaturesOnTop;
+        /**
+         * Sets the value of the userColourScheme property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link JalviewUserColours }
+         *     
+         */
+        public void setUserColourScheme(JalviewUserColours value) {
+            this.userColourScheme = value;
+        }
 
-    @XmlAttribute(name = "width")
-    protected Integer width;
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
 
-    @XmlAttribute(name = "height")
-    protected Integer height;
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setId(String value) {
+            this.id = value;
+        }
 
-    @XmlAttribute(name = "xpos")
-    protected Integer xpos;
+    }
 
-    @XmlAttribute(name = "ypos")
-    protected Integer ypos;
 
     /**
-     * Gets the value of the annotationColours property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="AnnotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
+     *         &lt;element name="hiddenColumns" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="calcIdParam" maxOccurs="unbounded" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;extension base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet">
+     *                 &lt;attribute name="calcId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *                 &lt;attribute name="autoUpdate" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *               &lt;/extension>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *         &lt;element name="overview" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+     *                 &lt;attribute name="showHidden" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *                 &lt;attribute name="residueColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="gapColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="hiddenColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *                 &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+     *       &lt;attribute name="conservationSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="pidSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="bgColour" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="showFullId" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="rightAlignIds" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="showText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="showColourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="showBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="wrapAlignment" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="renderGaps" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="showSequenceFeatures" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="showNPfeatureTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="showDbRefTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="followHighlight" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *       &lt;attribute name="followSelection" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *       &lt;attribute name="showAnnotation" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="centreColumnLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="showGroupConservation" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="showGroupConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *       &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *       &lt;attribute name="startRes" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="startSeq" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="scaleProteinAsCdna" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+     *       &lt;attribute name="viewName" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="sequenceSetId" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="gatheredViews" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+     *       &lt;attribute name="complementId" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="showComplementFeatures" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="showComplementFeaturesOnTop" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @return possible object is {@link AnnotationColourScheme }
      * 
      */
-    public AnnotationColourScheme getAnnotationColours()
-    {
-      return annotationColours;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "annotationColours",
+        "hiddenColumns",
+        "calcIdParam",
+        "overview"
+    })
+    public static class Viewport {
+
+        @XmlElement(name = "AnnotationColours", namespace = "www.jalview.org")
+        protected AnnotationColourScheme annotationColours;
+        @XmlElement(namespace = "www.jalview.org")
+        protected List<JalviewModel.Viewport.HiddenColumns> hiddenColumns;
+        @XmlElement(namespace = "www.jalview.org")
+        protected List<JalviewModel.Viewport.CalcIdParam> calcIdParam;
+        @XmlElement(namespace = "www.jalview.org")
+        protected JalviewModel.Viewport.Overview overview;
+        @XmlAttribute(name = "conservationSelected")
+        protected Boolean conservationSelected;
+        @XmlAttribute(name = "pidSelected")
+        protected Boolean pidSelected;
+        @XmlAttribute(name = "bgColour")
+        protected String bgColour;
+        @XmlAttribute(name = "consThreshold")
+        protected Integer consThreshold;
+        @XmlAttribute(name = "pidThreshold")
+        protected Integer pidThreshold;
+        @XmlAttribute(name = "title")
+        protected String title;
+        @XmlAttribute(name = "showFullId")
+        protected Boolean showFullId;
+        @XmlAttribute(name = "rightAlignIds")
+        protected Boolean rightAlignIds;
+        @XmlAttribute(name = "showText")
+        protected Boolean showText;
+        @XmlAttribute(name = "showColourText")
+        protected Boolean showColourText;
+        @XmlAttribute(name = "showUnconserved")
+        protected Boolean showUnconserved;
+        @XmlAttribute(name = "showBoxes")
+        protected Boolean showBoxes;
+        @XmlAttribute(name = "wrapAlignment")
+        protected Boolean wrapAlignment;
+        @XmlAttribute(name = "renderGaps")
+        protected Boolean renderGaps;
+        @XmlAttribute(name = "showSequenceFeatures")
+        protected Boolean showSequenceFeatures;
+        @XmlAttribute(name = "showNPfeatureTooltip")
+        protected Boolean showNPfeatureTooltip;
+        @XmlAttribute(name = "showDbRefTooltip")
+        protected Boolean showDbRefTooltip;
+        @XmlAttribute(name = "followHighlight")
+        protected Boolean followHighlight;
+        @XmlAttribute(name = "followSelection")
+        protected Boolean followSelection;
+        @XmlAttribute(name = "showAnnotation")
+        protected Boolean showAnnotation;
+        @XmlAttribute(name = "centreColumnLabels")
+        protected Boolean centreColumnLabels;
+        @XmlAttribute(name = "showGroupConservation")
+        protected Boolean showGroupConservation;
+        @XmlAttribute(name = "showGroupConsensus")
+        protected Boolean showGroupConsensus;
+        @XmlAttribute(name = "showConsensusHistogram")
+        protected Boolean showConsensusHistogram;
+        @XmlAttribute(name = "showSequenceLogo")
+        protected Boolean showSequenceLogo;
+        @XmlAttribute(name = "normaliseSequenceLogo")
+        protected Boolean normaliseSequenceLogo;
+        @XmlAttribute(name = "ignoreGapsinConsensus")
+        protected Boolean ignoreGapsinConsensus;
+        @XmlAttribute(name = "startRes")
+        protected Integer startRes;
+        @XmlAttribute(name = "startSeq")
+        protected Integer startSeq;
+        @XmlAttribute(name = "fontName")
+        protected String fontName;
+        @XmlAttribute(name = "fontSize")
+        protected Integer fontSize;
+        @XmlAttribute(name = "fontStyle")
+        protected Integer fontStyle;
+        @XmlAttribute(name = "scaleProteinAsCdna")
+        protected Boolean scaleProteinAsCdna;
+        @XmlAttribute(name = "viewName")
+        protected String viewName;
+        @XmlAttribute(name = "sequenceSetId")
+        protected String sequenceSetId;
+        @XmlAttribute(name = "gatheredViews")
+        protected Boolean gatheredViews;
+        @XmlAttribute(name = "textCol1")
+        protected Integer textCol1;
+        @XmlAttribute(name = "textCol2")
+        protected Integer textCol2;
+        @XmlAttribute(name = "textColThreshold")
+        protected Integer textColThreshold;
+        @XmlAttribute(name = "id")
+        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+        @XmlID
+        @XmlSchemaType(name = "ID")
+        protected String id;
+        @XmlAttribute(name = "complementId")
+        protected String complementId;
+        @XmlAttribute(name = "showComplementFeatures")
+        protected Boolean showComplementFeatures;
+        @XmlAttribute(name = "showComplementFeaturesOnTop")
+        protected Boolean showComplementFeaturesOnTop;
+        @XmlAttribute(name = "width")
+        protected Integer width;
+        @XmlAttribute(name = "height")
+        protected Integer height;
+        @XmlAttribute(name = "xpos")
+        protected Integer xpos;
+        @XmlAttribute(name = "ypos")
+        protected Integer ypos;
 
-    /**
-     * Sets the value of the annotationColours property.
-     * 
-     * @param value
-     *          allowed object is {@link AnnotationColourScheme }
-     * 
-     */
-    public void setAnnotationColours(AnnotationColourScheme value)
-    {
-      this.annotationColours = value;
-    }
+        /**
+         * Gets the value of the annotationColours property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link AnnotationColourScheme }
+         *     
+         */
+        public AnnotationColourScheme getAnnotationColours() {
+            return annotationColours;
+        }
 
-    /**
-     * Gets the value of the hiddenColumns property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the hiddenColumns property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getHiddenColumns().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.Viewport.HiddenColumns }
-     * 
-     * 
-     */
-    public List<JalviewModel.Viewport.HiddenColumns> getHiddenColumns()
-    {
-      if (hiddenColumns == null)
-      {
-        hiddenColumns = new ArrayList<JalviewModel.Viewport.HiddenColumns>();
-      }
-      return this.hiddenColumns;
-    }
+        /**
+         * Sets the value of the annotationColours property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link AnnotationColourScheme }
+         *     
+         */
+        public void setAnnotationColours(AnnotationColourScheme value) {
+            this.annotationColours = value;
+        }
 
-    /**
-     * Gets the value of the calcIdParam property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the calcIdParam property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getCalcIdParam().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.Viewport.CalcIdParam }
-     * 
-     * 
-     */
-    public List<JalviewModel.Viewport.CalcIdParam> getCalcIdParam()
-    {
-      if (calcIdParam == null)
-      {
-        calcIdParam = new ArrayList<JalviewModel.Viewport.CalcIdParam>();
-      }
-      return this.calcIdParam;
-    }
+        /**
+         * Gets the value of the hiddenColumns property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the hiddenColumns property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getHiddenColumns().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.Viewport.HiddenColumns }
+         * 
+         * 
+         */
+        public List<JalviewModel.Viewport.HiddenColumns> getHiddenColumns() {
+            if (hiddenColumns == null) {
+                hiddenColumns = new ArrayList<JalviewModel.Viewport.HiddenColumns>();
+            }
+            return this.hiddenColumns;
+        }
 
-    /**
-     * Gets the value of the conservationSelected property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isConservationSelected()
-    {
-      return conservationSelected;
-    }
+        /**
+         * Gets the value of the calcIdParam property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the calcIdParam property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getCalcIdParam().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link JalviewModel.Viewport.CalcIdParam }
+         * 
+         * 
+         */
+        public List<JalviewModel.Viewport.CalcIdParam> getCalcIdParam() {
+            if (calcIdParam == null) {
+                calcIdParam = new ArrayList<JalviewModel.Viewport.CalcIdParam>();
+            }
+            return this.calcIdParam;
+        }
 
-    /**
-     * Sets the value of the conservationSelected property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setConservationSelected(Boolean value)
-    {
-      this.conservationSelected = value;
-    }
+        /**
+         * Gets the value of the overview property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link JalviewModel.Viewport.Overview }
+         *     
+         */
+        public JalviewModel.Viewport.Overview getOverview() {
+            return overview;
+        }
 
-    /**
-     * Gets the value of the pidSelected property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isPidSelected()
-    {
-      return pidSelected;
-    }
+        /**
+         * Sets the value of the overview property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link JalviewModel.Viewport.Overview }
+         *     
+         */
+        public void setOverview(JalviewModel.Viewport.Overview value) {
+            this.overview = value;
+        }
 
-    /**
-     * Sets the value of the pidSelected property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setPidSelected(Boolean value)
-    {
-      this.pidSelected = value;
-    }
+        /**
+         * Gets the value of the conservationSelected property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isConservationSelected() {
+            return conservationSelected;
+        }
 
-    /**
-     * Gets the value of the bgColour property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getBgColour()
-    {
-      return bgColour;
-    }
+        /**
+         * Sets the value of the conservationSelected property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setConservationSelected(Boolean value) {
+            this.conservationSelected = value;
+        }
 
-    /**
-     * Sets the value of the bgColour property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setBgColour(String value)
-    {
-      this.bgColour = value;
-    }
+        /**
+         * Gets the value of the pidSelected property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isPidSelected() {
+            return pidSelected;
+        }
 
-    /**
-     * Gets the value of the consThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getConsThreshold()
-    {
-      return consThreshold;
-    }
+        /**
+         * Sets the value of the pidSelected property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setPidSelected(Boolean value) {
+            this.pidSelected = value;
+        }
 
-    /**
-     * Sets the value of the consThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setConsThreshold(Integer value)
-    {
-      this.consThreshold = value;
-    }
+        /**
+         * Gets the value of the bgColour property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getBgColour() {
+            return bgColour;
+        }
 
-    /**
-     * Gets the value of the pidThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getPidThreshold()
-    {
-      return pidThreshold;
-    }
+        /**
+         * Sets the value of the bgColour property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setBgColour(String value) {
+            this.bgColour = value;
+        }
 
-    /**
-     * Sets the value of the pidThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setPidThreshold(Integer value)
-    {
-      this.pidThreshold = value;
-    }
+        /**
+         * Gets the value of the consThreshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getConsThreshold() {
+            return consThreshold;
+        }
 
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
-    }
+        /**
+         * Sets the value of the consThreshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setConsThreshold(Integer value) {
+            this.consThreshold = value;
+        }
 
-    /**
-     * Sets the value of the title property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
+        /**
+         * Gets the value of the pidThreshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getPidThreshold() {
+            return pidThreshold;
+        }
 
-    /**
-     * Gets the value of the showFullId property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowFullId()
-    {
-      return showFullId;
-    }
+        /**
+         * Sets the value of the pidThreshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setPidThreshold(Integer value) {
+            this.pidThreshold = value;
+        }
 
-    /**
-     * Sets the value of the showFullId property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowFullId(Boolean value)
-    {
-      this.showFullId = value;
-    }
+        /**
+         * Gets the value of the title property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getTitle() {
+            return title;
+        }
 
-    /**
-     * Gets the value of the rightAlignIds property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isRightAlignIds()
-    {
-      return rightAlignIds;
-    }
+        /**
+         * Sets the value of the title property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setTitle(String value) {
+            this.title = value;
+        }
 
-    /**
-     * Sets the value of the rightAlignIds property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setRightAlignIds(Boolean value)
-    {
-      this.rightAlignIds = value;
-    }
+        /**
+         * Gets the value of the showFullId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowFullId() {
+            return showFullId;
+        }
 
-    /**
-     * Gets the value of the showText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowText()
-    {
-      return showText;
-    }
+        /**
+         * Sets the value of the showFullId property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowFullId(Boolean value) {
+            this.showFullId = value;
+        }
 
-    /**
-     * Sets the value of the showText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowText(Boolean value)
-    {
-      this.showText = value;
-    }
+        /**
+         * Gets the value of the rightAlignIds property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isRightAlignIds() {
+            return rightAlignIds;
+        }
 
-    /**
-     * Gets the value of the showColourText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowColourText()
-    {
-      return showColourText;
-    }
+        /**
+         * Sets the value of the rightAlignIds property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setRightAlignIds(Boolean value) {
+            this.rightAlignIds = value;
+        }
 
-    /**
-     * Sets the value of the showColourText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowColourText(Boolean value)
-    {
-      this.showColourText = value;
-    }
+        /**
+         * Gets the value of the showText property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowText() {
+            return showText;
+        }
+
+        /**
+         * Sets the value of the showText property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowText(Boolean value) {
+            this.showText = value;
+        }
+
+        /**
+         * Gets the value of the showColourText property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowColourText() {
+            return showColourText;
+        }
+
+        /**
+         * Sets the value of the showColourText property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowColourText(Boolean value) {
+            this.showColourText = value;
+        }
+
+        /**
+         * Gets the value of the showUnconserved property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowUnconserved() {
+            if (showUnconserved == null) {
+                return false;
+            } else {
+                return showUnconserved;
+            }
+        }
+
+        /**
+         * Sets the value of the showUnconserved property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowUnconserved(Boolean value) {
+            this.showUnconserved = value;
+        }
+
+        /**
+         * Gets the value of the showBoxes property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowBoxes() {
+            return showBoxes;
+        }
+
+        /**
+         * Sets the value of the showBoxes property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowBoxes(Boolean value) {
+            this.showBoxes = value;
+        }
+
+        /**
+         * Gets the value of the wrapAlignment property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isWrapAlignment() {
+            return wrapAlignment;
+        }
 
-    /**
-     * Gets the value of the showUnconserved property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowUnconserved()
-    {
-      if (showUnconserved == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showUnconserved;
-      }
-    }
+        /**
+         * Sets the value of the wrapAlignment property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setWrapAlignment(Boolean value) {
+            this.wrapAlignment = value;
+        }
 
-    /**
-     * Sets the value of the showUnconserved property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowUnconserved(Boolean value)
-    {
-      this.showUnconserved = value;
-    }
+        /**
+         * Gets the value of the renderGaps property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isRenderGaps() {
+            return renderGaps;
+        }
 
-    /**
-     * Gets the value of the showBoxes property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowBoxes()
-    {
-      return showBoxes;
-    }
+        /**
+         * Sets the value of the renderGaps property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setRenderGaps(Boolean value) {
+            this.renderGaps = value;
+        }
 
-    /**
-     * Sets the value of the showBoxes property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowBoxes(Boolean value)
-    {
-      this.showBoxes = value;
-    }
+        /**
+         * Gets the value of the showSequenceFeatures property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowSequenceFeatures() {
+            return showSequenceFeatures;
+        }
 
-    /**
-     * Gets the value of the wrapAlignment property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isWrapAlignment()
-    {
-      return wrapAlignment;
-    }
+        /**
+         * Sets the value of the showSequenceFeatures property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowSequenceFeatures(Boolean value) {
+            this.showSequenceFeatures = value;
+        }
 
-    /**
-     * Sets the value of the wrapAlignment property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setWrapAlignment(Boolean value)
-    {
-      this.wrapAlignment = value;
-    }
+        /**
+         * Gets the value of the showNPfeatureTooltip property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowNPfeatureTooltip() {
+            return showNPfeatureTooltip;
+        }
 
-    /**
-     * Gets the value of the renderGaps property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isRenderGaps()
-    {
-      return renderGaps;
-    }
+        /**
+         * Sets the value of the showNPfeatureTooltip property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowNPfeatureTooltip(Boolean value) {
+            this.showNPfeatureTooltip = value;
+        }
 
-    /**
-     * Sets the value of the renderGaps property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setRenderGaps(Boolean value)
-    {
-      this.renderGaps = value;
-    }
+        /**
+         * Gets the value of the showDbRefTooltip property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowDbRefTooltip() {
+            return showDbRefTooltip;
+        }
 
-    /**
-     * Gets the value of the showSequenceFeatures property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowSequenceFeatures()
-    {
-      return showSequenceFeatures;
-    }
+        /**
+         * Sets the value of the showDbRefTooltip property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowDbRefTooltip(Boolean value) {
+            this.showDbRefTooltip = value;
+        }
 
-    /**
-     * Sets the value of the showSequenceFeatures property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceFeatures(Boolean value)
-    {
-      this.showSequenceFeatures = value;
-    }
+        /**
+         * Gets the value of the followHighlight property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isFollowHighlight() {
+            if (followHighlight == null) {
+                return true;
+            } else {
+                return followHighlight;
+            }
+        }
 
-    /**
-     * Gets the value of the showNPfeatureTooltip property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowNPfeatureTooltip()
-    {
-      return showNPfeatureTooltip;
-    }
+        /**
+         * Sets the value of the followHighlight property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setFollowHighlight(Boolean value) {
+            this.followHighlight = value;
+        }
 
-    /**
-     * Sets the value of the showNPfeatureTooltip property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowNPfeatureTooltip(Boolean value)
-    {
-      this.showNPfeatureTooltip = value;
-    }
+        /**
+         * Gets the value of the followSelection property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isFollowSelection() {
+            if (followSelection == null) {
+                return true;
+            } else {
+                return followSelection;
+            }
+        }
 
-    /**
-     * Gets the value of the showDbRefTooltip property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowDbRefTooltip()
-    {
-      return showDbRefTooltip;
-    }
+        /**
+         * Sets the value of the followSelection property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setFollowSelection(Boolean value) {
+            this.followSelection = value;
+        }
 
-    /**
-     * Sets the value of the showDbRefTooltip property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowDbRefTooltip(Boolean value)
-    {
-      this.showDbRefTooltip = value;
-    }
+        /**
+         * Gets the value of the showAnnotation property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowAnnotation() {
+            return showAnnotation;
+        }
 
-    /**
-     * Gets the value of the followHighlight property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isFollowHighlight()
-    {
-      if (followHighlight == null)
-      {
-        return true;
-      }
-      else
-      {
-        return followHighlight;
-      }
-    }
+        /**
+         * Sets the value of the showAnnotation property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowAnnotation(Boolean value) {
+            this.showAnnotation = value;
+        }
 
-    /**
-     * Sets the value of the followHighlight property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFollowHighlight(Boolean value)
-    {
-      this.followHighlight = value;
-    }
+        /**
+         * Gets the value of the centreColumnLabels property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isCentreColumnLabels() {
+            if (centreColumnLabels == null) {
+                return false;
+            } else {
+                return centreColumnLabels;
+            }
+        }
 
-    /**
-     * Gets the value of the followSelection property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isFollowSelection()
-    {
-      if (followSelection == null)
-      {
-        return true;
-      }
-      else
-      {
-        return followSelection;
-      }
-    }
+        /**
+         * Sets the value of the centreColumnLabels property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setCentreColumnLabels(Boolean value) {
+            this.centreColumnLabels = value;
+        }
 
-    /**
-     * Sets the value of the followSelection property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFollowSelection(Boolean value)
-    {
-      this.followSelection = value;
-    }
+        /**
+         * Gets the value of the showGroupConservation property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowGroupConservation() {
+            if (showGroupConservation == null) {
+                return false;
+            } else {
+                return showGroupConservation;
+            }
+        }
 
-    /**
-     * Gets the value of the showAnnotation property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowAnnotation()
-    {
-      return showAnnotation;
-    }
+        /**
+         * Sets the value of the showGroupConservation property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowGroupConservation(Boolean value) {
+            this.showGroupConservation = value;
+        }
 
-    /**
-     * Sets the value of the showAnnotation property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowAnnotation(Boolean value)
-    {
-      this.showAnnotation = value;
-    }
+        /**
+         * Gets the value of the showGroupConsensus property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowGroupConsensus() {
+            if (showGroupConsensus == null) {
+                return false;
+            } else {
+                return showGroupConsensus;
+            }
+        }
 
-    /**
-     * Gets the value of the centreColumnLabels property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isCentreColumnLabels()
-    {
-      if (centreColumnLabels == null)
-      {
-        return false;
-      }
-      else
-      {
-        return centreColumnLabels;
-      }
-    }
+        /**
+         * Sets the value of the showGroupConsensus property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowGroupConsensus(Boolean value) {
+            this.showGroupConsensus = value;
+        }
 
-    /**
-     * Sets the value of the centreColumnLabels property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setCentreColumnLabels(Boolean value)
-    {
-      this.centreColumnLabels = value;
-    }
+        /**
+         * Gets the value of the showConsensusHistogram property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowConsensusHistogram() {
+            if (showConsensusHistogram == null) {
+                return true;
+            } else {
+                return showConsensusHistogram;
+            }
+        }
 
-    /**
-     * Gets the value of the showGroupConservation property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowGroupConservation()
-    {
-      if (showGroupConservation == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showGroupConservation;
-      }
-    }
+        /**
+         * Sets the value of the showConsensusHistogram property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowConsensusHistogram(Boolean value) {
+            this.showConsensusHistogram = value;
+        }
 
-    /**
-     * Sets the value of the showGroupConservation property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowGroupConservation(Boolean value)
-    {
-      this.showGroupConservation = value;
-    }
+        /**
+         * Gets the value of the showSequenceLogo property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowSequenceLogo() {
+            if (showSequenceLogo == null) {
+                return false;
+            } else {
+                return showSequenceLogo;
+            }
+        }
 
-    /**
-     * Gets the value of the showGroupConsensus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowGroupConsensus()
-    {
-      if (showGroupConsensus == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showGroupConsensus;
-      }
-    }
+        /**
+         * Sets the value of the showSequenceLogo property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowSequenceLogo(Boolean value) {
+            this.showSequenceLogo = value;
+        }
+
+        /**
+         * Gets the value of the normaliseSequenceLogo property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isNormaliseSequenceLogo() {
+            if (normaliseSequenceLogo == null) {
+                return false;
+            } else {
+                return normaliseSequenceLogo;
+            }
+        }
 
-    /**
-     * Sets the value of the showGroupConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowGroupConsensus(Boolean value)
-    {
-      this.showGroupConsensus = value;
-    }
+        /**
+         * Sets the value of the normaliseSequenceLogo property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setNormaliseSequenceLogo(Boolean value) {
+            this.normaliseSequenceLogo = value;
+        }
 
-    /**
-     * Gets the value of the showConsensusHistogram property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowConsensusHistogram()
-    {
-      if (showConsensusHistogram == null)
-      {
-        return true;
-      }
-      else
-      {
-        return showConsensusHistogram;
-      }
-    }
+        /**
+         * Gets the value of the ignoreGapsinConsensus property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isIgnoreGapsinConsensus() {
+            if (ignoreGapsinConsensus == null) {
+                return true;
+            } else {
+                return ignoreGapsinConsensus;
+            }
+        }
 
-    /**
-     * Sets the value of the showConsensusHistogram property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowConsensusHistogram(Boolean value)
-    {
-      this.showConsensusHistogram = value;
-    }
+        /**
+         * Sets the value of the ignoreGapsinConsensus property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setIgnoreGapsinConsensus(Boolean value) {
+            this.ignoreGapsinConsensus = value;
+        }
 
-    /**
-     * Gets the value of the showSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowSequenceLogo()
-    {
-      if (showSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showSequenceLogo;
-      }
-    }
+        /**
+         * Gets the value of the startRes property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getStartRes() {
+            return startRes;
+        }
 
-    /**
-     * Sets the value of the showSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceLogo(Boolean value)
-    {
-      this.showSequenceLogo = value;
-    }
+        /**
+         * Sets the value of the startRes property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setStartRes(Integer value) {
+            this.startRes = value;
+        }
 
-    /**
-     * Gets the value of the normaliseSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isNormaliseSequenceLogo()
-    {
-      if (normaliseSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return normaliseSequenceLogo;
-      }
-    }
+        /**
+         * Gets the value of the startSeq property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getStartSeq() {
+            return startSeq;
+        }
 
-    /**
-     * Sets the value of the normaliseSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setNormaliseSequenceLogo(Boolean value)
-    {
-      this.normaliseSequenceLogo = value;
-    }
+        /**
+         * Sets the value of the startSeq property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setStartSeq(Integer value) {
+            this.startSeq = value;
+        }
 
-    /**
-     * Gets the value of the ignoreGapsinConsensus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isIgnoreGapsinConsensus()
-    {
-      if (ignoreGapsinConsensus == null)
-      {
-        return true;
-      }
-      else
-      {
-        return ignoreGapsinConsensus;
-      }
-    }
+        /**
+         * Gets the value of the fontName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFontName() {
+            return fontName;
+        }
 
-    /**
-     * Sets the value of the ignoreGapsinConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIgnoreGapsinConsensus(Boolean value)
-    {
-      this.ignoreGapsinConsensus = value;
-    }
+        /**
+         * Sets the value of the fontName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFontName(String value) {
+            this.fontName = value;
+        }
 
-    /**
-     * Gets the value of the startRes property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getStartRes()
-    {
-      return startRes;
-    }
+        /**
+         * Gets the value of the fontSize property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontSize() {
+            return fontSize;
+        }
 
-    /**
-     * Sets the value of the startRes property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setStartRes(Integer value)
-    {
-      this.startRes = value;
-    }
+        /**
+         * Sets the value of the fontSize property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setFontSize(Integer value) {
+            this.fontSize = value;
+        }
 
-    /**
-     * Gets the value of the startSeq property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getStartSeq()
-    {
-      return startSeq;
-    }
+        /**
+         * Gets the value of the fontStyle property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontStyle() {
+            return fontStyle;
+        }
 
-    /**
-     * Sets the value of the startSeq property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setStartSeq(Integer value)
-    {
-      this.startSeq = value;
-    }
+        /**
+         * Sets the value of the fontStyle property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setFontStyle(Integer value) {
+            this.fontStyle = value;
+        }
 
-    /**
-     * Gets the value of the fontName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFontName()
-    {
-      return fontName;
-    }
+        /**
+         * Gets the value of the scaleProteinAsCdna property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isScaleProteinAsCdna() {
+            if (scaleProteinAsCdna == null) {
+                return true;
+            } else {
+                return scaleProteinAsCdna;
+            }
+        }
 
-    /**
-     * Sets the value of the fontName property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setFontName(String value)
-    {
-      this.fontName = value;
-    }
+        /**
+         * Sets the value of the scaleProteinAsCdna property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setScaleProteinAsCdna(Boolean value) {
+            this.scaleProteinAsCdna = value;
+        }
 
-    /**
-     * Gets the value of the fontSize property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontSize()
-    {
-      return fontSize;
-    }
+        /**
+         * Gets the value of the viewName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getViewName() {
+            return viewName;
+        }
 
-    /**
-     * Sets the value of the fontSize property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontSize(Integer value)
-    {
-      this.fontSize = value;
-    }
+        /**
+         * Sets the value of the viewName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setViewName(String value) {
+            this.viewName = value;
+        }
 
-    /**
-     * Gets the value of the fontStyle property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontStyle()
-    {
-      return fontStyle;
-    }
+        /**
+         * Gets the value of the sequenceSetId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getSequenceSetId() {
+            return sequenceSetId;
+        }
 
-    /**
-     * Sets the value of the fontStyle property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontStyle(Integer value)
-    {
-      this.fontStyle = value;
-    }
+        /**
+         * Sets the value of the sequenceSetId property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setSequenceSetId(String value) {
+            this.sequenceSetId = value;
+        }
 
-    /**
-     * Gets the value of the scaleProteinAsCdna property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isScaleProteinAsCdna()
-    {
-      if (scaleProteinAsCdna == null)
-      {
-        return true;
-      }
-      else
-      {
-        return scaleProteinAsCdna;
-      }
-    }
+        /**
+         * Gets the value of the gatheredViews property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isGatheredViews() {
+            return gatheredViews;
+        }
 
-    /**
-     * Sets the value of the scaleProteinAsCdna property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setScaleProteinAsCdna(Boolean value)
-    {
-      this.scaleProteinAsCdna = value;
-    }
+        /**
+         * Sets the value of the gatheredViews property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setGatheredViews(Boolean value) {
+            this.gatheredViews = value;
+        }
 
-    /**
-     * Gets the value of the viewName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getViewName()
-    {
-      return viewName;
-    }
+        /**
+         * Gets the value of the textCol1 property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getTextCol1() {
+            return textCol1;
+        }
 
-    /**
-     * Sets the value of the viewName property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setViewName(String value)
-    {
-      this.viewName = value;
-    }
+        /**
+         * Sets the value of the textCol1 property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setTextCol1(Integer value) {
+            this.textCol1 = value;
+        }
 
-    /**
-     * Gets the value of the sequenceSetId property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getSequenceSetId()
-    {
-      return sequenceSetId;
-    }
+        /**
+         * Gets the value of the textCol2 property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getTextCol2() {
+            return textCol2;
+        }
 
-    /**
-     * Sets the value of the sequenceSetId property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setSequenceSetId(String value)
-    {
-      this.sequenceSetId = value;
-    }
+        /**
+         * Sets the value of the textCol2 property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setTextCol2(Integer value) {
+            this.textCol2 = value;
+        }
 
-    /**
-     * Gets the value of the gatheredViews property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isGatheredViews()
-    {
-      return gatheredViews;
-    }
+        /**
+         * Gets the value of the textColThreshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getTextColThreshold() {
+            return textColThreshold;
+        }
 
-    /**
-     * Sets the value of the gatheredViews property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setGatheredViews(Boolean value)
-    {
-      this.gatheredViews = value;
-    }
+        /**
+         * Sets the value of the textColThreshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setTextColThreshold(Integer value) {
+            this.textColThreshold = value;
+        }
 
-    /**
-     * Gets the value of the textCol1 property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextCol1()
-    {
-      return textCol1;
-    }
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
 
-    /**
-     * Sets the value of the textCol1 property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol1(Integer value)
-    {
-      this.textCol1 = value;
-    }
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setId(String value) {
+            this.id = value;
+        }
 
-    /**
-     * Gets the value of the textCol2 property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextCol2()
-    {
-      return textCol2;
-    }
+        /**
+         * Gets the value of the complementId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getComplementId() {
+            return complementId;
+        }
 
-    /**
-     * Sets the value of the textCol2 property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol2(Integer value)
-    {
-      this.textCol2 = value;
-    }
+        /**
+         * Sets the value of the complementId property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setComplementId(String value) {
+            this.complementId = value;
+        }
 
-    /**
-     * Gets the value of the textColThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextColThreshold()
-    {
-      return textColThreshold;
-    }
+        /**
+         * Gets the value of the showComplementFeatures property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowComplementFeatures() {
+            if (showComplementFeatures == null) {
+                return false;
+            } else {
+                return showComplementFeatures;
+            }
+        }
 
-    /**
-     * Sets the value of the textColThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextColThreshold(Integer value)
-    {
-      this.textColThreshold = value;
-    }
+        /**
+         * Sets the value of the showComplementFeatures property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowComplementFeatures(Boolean value) {
+            this.showComplementFeatures = value;
+        }
 
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
+        /**
+         * Gets the value of the showComplementFeaturesOnTop property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowComplementFeaturesOnTop() {
+            if (showComplementFeaturesOnTop == null) {
+                return false;
+            } else {
+                return showComplementFeaturesOnTop;
+            }
+        }
 
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
+        /**
+         * Sets the value of the showComplementFeaturesOnTop property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowComplementFeaturesOnTop(Boolean value) {
+            this.showComplementFeaturesOnTop = value;
+        }
 
-    /**
-     * Gets the value of the complementId property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getComplementId()
-    {
-      return complementId;
-    }
+        /**
+         * Gets the value of the width property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getWidth() {
+            return width;
+        }
 
-    /**
-     * Sets the value of the complementId property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setComplementId(String value)
-    {
-      this.complementId = value;
-    }
+        /**
+         * Sets the value of the width property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setWidth(Integer value) {
+            this.width = value;
+        }
 
-    /**
-     * Gets the value of the showComplementFeatures property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowComplementFeatures()
-    {
-      if (showComplementFeatures == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showComplementFeatures;
-      }
-    }
+        /**
+         * Gets the value of the height property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getHeight() {
+            return height;
+        }
 
-    /**
-     * Sets the value of the showComplementFeatures property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowComplementFeatures(Boolean value)
-    {
-      this.showComplementFeatures = value;
-    }
+        /**
+         * Sets the value of the height property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setHeight(Integer value) {
+            this.height = value;
+        }
 
-    /**
-     * Gets the value of the showComplementFeaturesOnTop property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowComplementFeaturesOnTop()
-    {
-      if (showComplementFeaturesOnTop == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showComplementFeaturesOnTop;
-      }
-    }
+        /**
+         * Gets the value of the xpos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getXpos() {
+            return xpos;
+        }
 
-    /**
-     * Sets the value of the showComplementFeaturesOnTop property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowComplementFeaturesOnTop(Boolean value)
-    {
-      this.showComplementFeaturesOnTop = value;
-    }
+        /**
+         * Sets the value of the xpos property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setXpos(Integer value) {
+            this.xpos = value;
+        }
 
-    /**
-     * Gets the value of the width property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getWidth()
-    {
-      return width;
-    }
+        /**
+         * Gets the value of the ypos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getYpos() {
+            return ypos;
+        }
 
-    /**
-     * Sets the value of the width property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setWidth(Integer value)
-    {
-      this.width = value;
-    }
+        /**
+         * Sets the value of the ypos property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setYpos(Integer value) {
+            this.ypos = value;
+        }
 
-    /**
-     * Gets the value of the height property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getHeight()
-    {
-      return height;
-    }
 
-    /**
-     * Sets the value of the height property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setHeight(Integer value)
-    {
-      this.height = value;
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;extension base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet">
+         *       &lt;attribute name="calcId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+         *       &lt;attribute name="autoUpdate" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *     &lt;/extension>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class CalcIdParam
+            extends WebServiceParameterSet
+        {
 
-    /**
-     * Gets the value of the xpos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getXpos()
-    {
-      return xpos;
-    }
+            @XmlAttribute(name = "calcId", required = true)
+            protected String calcId;
+            @XmlAttribute(name = "needsUpdate")
+            protected Boolean needsUpdate;
+            @XmlAttribute(name = "autoUpdate", required = true)
+            protected boolean autoUpdate;
+
+            /**
+             * Gets the value of the calcId property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getCalcId() {
+                return calcId;
+            }
+
+            /**
+             * Sets the value of the calcId property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setCalcId(String value) {
+                this.calcId = value;
+            }
+
+            /**
+             * Gets the value of the needsUpdate property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Boolean }
+             *     
+             */
+            public boolean isNeedsUpdate() {
+                if (needsUpdate == null) {
+                    return false;
+                } else {
+                    return needsUpdate;
+                }
+            }
+
+            /**
+             * Sets the value of the needsUpdate property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Boolean }
+             *     
+             */
+            public void setNeedsUpdate(Boolean value) {
+                this.needsUpdate = value;
+            }
+
+            /**
+             * Gets the value of the autoUpdate property.
+             * 
+             */
+            public boolean isAutoUpdate() {
+                return autoUpdate;
+            }
+
+            /**
+             * Sets the value of the autoUpdate property.
+             * 
+             */
+            public void setAutoUpdate(boolean value) {
+                this.autoUpdate = value;
+            }
 
-    /**
-     * Sets the value of the xpos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setXpos(Integer value)
-    {
-      this.xpos = value;
-    }
+        }
 
-    /**
-     * Gets the value of the ypos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getYpos()
-    {
-      return ypos;
-    }
 
-    /**
-     * Sets the value of the ypos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setYpos(Integer value)
-    {
-      this.ypos = value;
-    }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class HiddenColumns {
+
+            @XmlAttribute(name = "start")
+            protected Integer start;
+            @XmlAttribute(name = "end")
+            protected Integer end;
+
+            /**
+             * Gets the value of the start property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getStart() {
+                return start;
+            }
+
+            /**
+             * Sets the value of the start property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setStart(Integer value) {
+                this.start = value;
+            }
+
+            /**
+             * Gets the value of the end property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getEnd() {
+                return end;
+            }
+
+            /**
+             * Sets the value of the end property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setEnd(Integer value) {
+                this.end = value;
+            }
 
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;extension
-     * base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet"&amp;gt;
-     * &amp;lt;attribute name="calcId" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-     * &amp;lt;attribute name="needsUpdate"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false"
-     * /&amp;gt; &amp;lt;attribute name="autoUpdate" use="required"
-     * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-     * &amp;lt;/extension&amp;gt; &amp;lt;/complexContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class CalcIdParam extends WebServiceParameterSet
-    {
-
-      @XmlAttribute(name = "calcId", required = true)
-      protected String calcId;
-
-      @XmlAttribute(name = "needsUpdate")
-      protected Boolean needsUpdate;
-
-      @XmlAttribute(name = "autoUpdate", required = true)
-      protected boolean autoUpdate;
-
-      /**
-       * Gets the value of the calcId property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getCalcId()
-      {
-        return calcId;
-      }
-
-      /**
-       * Sets the value of the calcId property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setCalcId(String value)
-      {
-        this.calcId = value;
-      }
-
-      /**
-       * Gets the value of the needsUpdate property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public boolean isNeedsUpdate()
-      {
-        if (needsUpdate == null)
-        {
-          return false;
         }
-        else
-        {
-          return needsUpdate;
-        }
-      }
-
-      /**
-       * Sets the value of the needsUpdate property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setNeedsUpdate(Boolean value)
-      {
-        this.needsUpdate = value;
-      }
-
-      /**
-       * Gets the value of the autoUpdate property.
-       * 
-       */
-      public boolean isAutoUpdate()
-      {
-        return autoUpdate;
-      }
-
-      /**
-       * Sets the value of the autoUpdate property.
-       * 
-       */
-      public void setAutoUpdate(boolean value)
-      {
-        this.autoUpdate = value;
-      }
 
-    }
 
-    /**
-     * &lt;p&gt;Java class for anonymous complex type.
-     * 
-     * &lt;p&gt;The following schema fragment specifies the expected content
-     * contained within this class.
-     * 
-     * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-     * &amp;lt;restriction
-     * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-     * &amp;lt;attribute name="start"
-     * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
-     * name="end" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-     * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-     * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class HiddenColumns
-    {
-
-      @XmlAttribute(name = "start")
-      protected Integer start;
-
-      @XmlAttribute(name = "end")
-      protected Integer end;
-
-      /**
-       * Gets the value of the start property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getStart()
-      {
-        return start;
-      }
-
-      /**
-       * Sets the value of the start property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setStart(Integer value)
-      {
-        this.start = value;
-      }
-
-      /**
-       * Gets the value of the end property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getEnd()
-      {
-        return end;
-      }
-
-      /**
-       * Sets the value of the end property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setEnd(Integer value)
-      {
-        this.end = value;
-      }
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
+         *       &lt;attribute name="showHidden" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+         *       &lt;attribute name="residueColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="gapColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="hiddenColour" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class Overview {
+
+            @XmlAttribute(name = "showHidden")
+            protected Boolean showHidden;
+            @XmlAttribute(name = "residueColour")
+            protected Integer residueColour;
+            @XmlAttribute(name = "gapColour")
+            protected Integer gapColour;
+            @XmlAttribute(name = "hiddenColour")
+            protected Integer hiddenColour;
+            @XmlAttribute(name = "title")
+            protected String title;
+            @XmlAttribute(name = "width")
+            protected Integer width;
+            @XmlAttribute(name = "height")
+            protected Integer height;
+            @XmlAttribute(name = "xpos")
+            protected Integer xpos;
+            @XmlAttribute(name = "ypos")
+            protected Integer ypos;
+
+            /**
+             * Gets the value of the showHidden property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Boolean }
+             *     
+             */
+            public Boolean isShowHidden() {
+                return showHidden;
+            }
+
+            /**
+             * Sets the value of the showHidden property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Boolean }
+             *     
+             */
+            public void setShowHidden(Boolean value) {
+                this.showHidden = value;
+            }
+
+            /**
+             * Gets the value of the residueColour property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getResidueColour() {
+                return residueColour;
+            }
+
+            /**
+             * Sets the value of the residueColour property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setResidueColour(Integer value) {
+                this.residueColour = value;
+            }
+
+            /**
+             * Gets the value of the gapColour property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getGapColour() {
+                return gapColour;
+            }
+
+            /**
+             * Sets the value of the gapColour property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setGapColour(Integer value) {
+                this.gapColour = value;
+            }
+
+            /**
+             * Gets the value of the hiddenColour property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getHiddenColour() {
+                return hiddenColour;
+            }
+
+            /**
+             * Sets the value of the hiddenColour property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setHiddenColour(Integer value) {
+                this.hiddenColour = value;
+            }
+
+            /**
+             * Gets the value of the title property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getTitle() {
+                return title;
+            }
+
+            /**
+             * Sets the value of the title property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setTitle(String value) {
+                this.title = value;
+            }
+
+            /**
+             * Gets the value of the width property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getWidth() {
+                return width;
+            }
+
+            /**
+             * Sets the value of the width property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setWidth(Integer value) {
+                this.width = value;
+            }
+
+            /**
+             * Gets the value of the height property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getHeight() {
+                return height;
+            }
+
+            /**
+             * Sets the value of the height property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setHeight(Integer value) {
+                this.height = value;
+            }
+
+            /**
+             * Gets the value of the xpos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getXpos() {
+                return xpos;
+            }
+
+            /**
+             * Sets the value of the xpos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setXpos(Integer value) {
+                this.xpos = value;
+            }
+
+            /**
+             * Gets the value of the ypos property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getYpos() {
+                return ypos;
+            }
+
+            /**
+             * Sets the value of the ypos property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setYpos(Integer value) {
+                this.ypos = value;
+            }
 
-    }
+        }
 
-  }
+    }
 
 }
diff --git a/src/jalview/xml/binding/jalview/JalviewModelType.java b/src/jalview/xml/binding/jalview/JalviewModelType.java
deleted file mode 100644 (file)
index 0541d7a..0000000
+++ /dev/null
@@ -1,5233 +0,0 @@
-//
-// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
-// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
-// Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2018.09.18 at 01:33:02 PM BST 
-//
-
-package jalview.xml.binding.jalview;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlID;
-import javax.xml.bind.annotation.XmlSchemaType;
-import javax.xml.bind.annotation.XmlType;
-import javax.xml.bind.annotation.XmlValue;
-import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import javax.xml.datatype.XMLGregorianCalendar;
-
-/**
- * <p>
- * Java class for JalviewModelType complex type.
- * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
- * 
- * <pre>
- * &lt;complexType name="JalviewModelType">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="creationDate" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
- *         &lt;element name="version" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *         &lt;element name="vamsasModel" type="{www.vamsas.ac.uk/jalview/version2}VAMSAS"/>
- *         &lt;sequence>
- *           &lt;element name="JSeq" maxOccurs="unbounded" minOccurs="0">
- *             &lt;complexType>
- *               &lt;complexContent>
- *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                   &lt;sequence>
- *                     &lt;element name="features" type="{www.jalview.org}feature" maxOccurs="unbounded" minOccurs="0"/>
- *                     &lt;element name="pdbids" maxOccurs="unbounded" minOccurs="0">
- *                       &lt;complexType>
- *                         &lt;complexContent>
- *                           &lt;extension base="{www.jalview.org}pdbentry">
- *                             &lt;sequence>
- *                               &lt;element name="structureState" maxOccurs="unbounded" minOccurs="0">
- *                                 &lt;complexType>
- *                                   &lt;simpleContent>
- *                                     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
- *                                       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
- *                                       &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                                       &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                                       &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                                       &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                                       &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                                       &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                                     &lt;/extension>
- *                                   &lt;/simpleContent>
- *                                 &lt;/complexType>
- *                               &lt;/element>
- *                             &lt;/sequence>
- *                           &lt;/extension>
- *                         &lt;/complexContent>
- *                       &lt;/complexType>
- *                     &lt;/element>
- *                     &lt;element name="hiddenSequences" type="{http://www.w3.org/2001/XMLSchema}int" maxOccurs="unbounded" minOccurs="0"/>
- *                     &lt;element name="rnaViewer" maxOccurs="unbounded" minOccurs="0">
- *                       &lt;complexType>
- *                         &lt;complexContent>
- *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                             &lt;sequence>
- *                               &lt;element name="secondaryStructure" maxOccurs="unbounded">
- *                                 &lt;complexType>
- *                                   &lt;complexContent>
- *                                     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                                       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                                       &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                                       &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                                       &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                                     &lt;/restriction>
- *                                   &lt;/complexContent>
- *                                 &lt;/complexType>
- *                               &lt;/element>
- *                             &lt;/sequence>
- *                             &lt;attGroup ref="{www.jalview.org}swingwindow"/>
- *                             &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                             &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                             &lt;attribute name="dividerLocation" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                             &lt;attribute name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                           &lt;/restriction>
- *                         &lt;/complexContent>
- *                       &lt;/complexType>
- *                     &lt;/element>
- *                   &lt;/sequence>
- *                   &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="hidden" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="viewreference" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                 &lt;/restriction>
- *               &lt;/complexContent>
- *             &lt;/complexType>
- *           &lt;/element>
- *           &lt;element name="JGroup" maxOccurs="unbounded" minOccurs="0">
- *             &lt;complexType>
- *               &lt;complexContent>
- *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                   &lt;sequence>
- *                     &lt;element name="seq" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
- *                     &lt;element name="annotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
- *                   &lt;/sequence>
- *                   &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="outlineColour" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="displayBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="displayText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="colourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                   &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                   &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                 &lt;/restriction>
- *               &lt;/complexContent>
- *             &lt;/complexType>
- *           &lt;/element>
- *           &lt;element name="Viewport" maxOccurs="unbounded" minOccurs="0">
- *             &lt;complexType>
- *               &lt;complexContent>
- *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                   &lt;sequence>
- *                     &lt;element name="AnnotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
- *                     &lt;element name="hiddenColumns" maxOccurs="unbounded" minOccurs="0">
- *                       &lt;complexType>
- *                         &lt;complexContent>
- *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                             &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                             &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                           &lt;/restriction>
- *                         &lt;/complexContent>
- *                       &lt;/complexType>
- *                     &lt;/element>
- *                     &lt;element name="calcIdParam" maxOccurs="unbounded" minOccurs="0">
- *                       &lt;complexType>
- *                         &lt;complexContent>
- *                           &lt;extension base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet">
- *                             &lt;attribute name="calcId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                             &lt;attribute name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                             &lt;attribute name="autoUpdate" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                           &lt;/extension>
- *                         &lt;/complexContent>
- *                       &lt;/complexType>
- *                     &lt;/element>
- *                   &lt;/sequence>
- *                   &lt;attGroup ref="{www.jalview.org}swingwindow"/>
- *                   &lt;attribute name="conservationSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="pidSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="bgColour" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="showFullId" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="rightAlignIds" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="showText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="showColourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="showBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="wrapAlignment" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="renderGaps" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="showSequenceFeatures" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="showNPfeatureTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="showDbRefTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="followHighlight" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                   &lt;attribute name="followSelection" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                   &lt;attribute name="showAnnotation" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="centreColumnLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="showGroupConservation" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="showGroupConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                   &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                   &lt;attribute name="startRes" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="startSeq" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="scaleProteinAsCdna" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
- *                   &lt;attribute name="viewName" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="sequenceSetId" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="gatheredViews" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *                   &lt;attribute name="complementId" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                 &lt;/restriction>
- *               &lt;/complexContent>
- *             &lt;/complexType>
- *           &lt;/element>
- *           &lt;element name="UserColours" maxOccurs="unbounded" minOccurs="0">
- *             &lt;complexType>
- *               &lt;complexContent>
- *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                   &lt;sequence>
- *                     &lt;element name="UserColourScheme" type="{www.jalview.org/colours}JalviewUserColours"/>
- *                   &lt;/sequence>
- *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                 &lt;/restriction>
- *               &lt;/complexContent>
- *             &lt;/complexType>
- *           &lt;/element>
- *           &lt;element name="tree" maxOccurs="unbounded" minOccurs="0">
- *             &lt;complexType>
- *               &lt;complexContent>
- *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                   &lt;sequence minOccurs="0">
- *                     &lt;element name="title" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *                     &lt;element name="newick" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *                   &lt;/sequence>
- *                   &lt;attGroup ref="{www.jalview.org}swingwindow"/>
- *                   &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
- *                   &lt;attribute name="showBootstrap" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="showDistances" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="markUnlinked" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="fitToWindow" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="currentTree" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                   &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *                 &lt;/restriction>
- *               &lt;/complexContent>
- *             &lt;/complexType>
- *           &lt;/element>
- *           &lt;element name="FeatureSettings" minOccurs="0">
- *             &lt;complexType>
- *               &lt;complexContent>
- *                 &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                   &lt;sequence>
- *                     &lt;element name="setting" maxOccurs="unbounded" minOccurs="0">
- *                       &lt;complexType>
- *                         &lt;complexContent>
- *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                             &lt;sequence>
- *                               &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
- *                               &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/>
- *                             &lt;/sequence>
- *                             &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                             &lt;attribute name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                             &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                             &lt;attribute name="order" type="{http://www.w3.org/2001/XMLSchema}float" />
- *                             &lt;attribute name="mincolour" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                             &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
- *                             &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
- *                             &lt;attribute name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                             &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
- *                             &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
- *                             &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                             &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                           &lt;/restriction>
- *                         &lt;/complexContent>
- *                       &lt;/complexType>
- *                     &lt;/element>
- *                     &lt;element name="group" maxOccurs="unbounded" minOccurs="0">
- *                       &lt;complexType>
- *                         &lt;complexContent>
- *                           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *                             &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                             &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
- *                           &lt;/restriction>
- *                         &lt;/complexContent>
- *                       &lt;/complexType>
- *                     &lt;/element>
- *                   &lt;/sequence>
- *                 &lt;/restriction>
- *               &lt;/complexContent>
- *             &lt;/complexType>
- *           &lt;/element>
- *         &lt;/sequence>
- *       &lt;/sequence>
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
- * </pre>
- * 
- * 
- */
-@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "JalviewModelType",
-  namespace = "www.jalview.org",
-  propOrder =
-  { "creationDate", "version", "vamsasModel", "jSeq", "jGroup", "viewport",
-      "userColours", "tree", "featureSettings" })
-public class JalviewModelType
-{
-
-  @XmlElement(required = true)
-  @XmlSchemaType(name = "dateTime")
-  protected XMLGregorianCalendar creationDate;
-
-  @XmlElement(required = true)
-  protected String version;
-
-  @XmlElement(required = true)
-  protected VAMSAS vamsasModel;
-
-  @XmlElement(name = "JSeq")
-  protected List<JalviewModelType.JSeq> jSeq;
-
-  @XmlElement(name = "JGroup")
-  protected List<JalviewModelType.JGroup> jGroup;
-
-  @XmlElement(name = "Viewport")
-  protected List<JalviewModelType.Viewport> viewport;
-
-  @XmlElement(name = "UserColours")
-  protected List<JalviewModelType.UserColours> userColours;
-
-  protected List<JalviewModelType.Tree> tree;
-
-  @XmlElement(name = "FeatureSettings")
-  protected JalviewModelType.FeatureSettings featureSettings;
-
-  /**
-   * Gets the value of the creationDate property.
-   * 
-   * @return possible object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public XMLGregorianCalendar getCreationDate()
-  {
-    return creationDate;
-  }
-
-  /**
-   * Sets the value of the creationDate property.
-   * 
-   * @param value
-   *          allowed object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public void setCreationDate(XMLGregorianCalendar value)
-  {
-    this.creationDate = value;
-  }
-
-  /**
-   * Gets the value of the version property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getVersion()
-  {
-    return version;
-  }
-
-  /**
-   * Sets the value of the version property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setVersion(String value)
-  {
-    this.version = value;
-  }
-
-  /**
-   * Gets the value of the vamsasModel property.
-   * 
-   * @return possible object is {@link VAMSAS }
-   * 
-   */
-  public VAMSAS getVamsasModel()
-  {
-    return vamsasModel;
-  }
-
-  /**
-   * Sets the value of the vamsasModel property.
-   * 
-   * @param value
-   *          allowed object is {@link VAMSAS }
-   * 
-   */
-  public void setVamsasModel(VAMSAS value)
-  {
-    this.vamsasModel = value;
-  }
-
-  /**
-   * Gets the value of the jSeq property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the jSeq property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getJSeq().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link JalviewModelType.JSeq }
-   * 
-   * 
-   */
-  public List<JalviewModelType.JSeq> getJSeq()
-  {
-    if (jSeq == null)
-    {
-      jSeq = new ArrayList<JalviewModelType.JSeq>();
-    }
-    return this.jSeq;
-  }
-
-  /**
-   * Gets the value of the jGroup property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the jGroup property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getJGroup().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link JalviewModelType.JGroup }
-   * 
-   * 
-   */
-  public List<JalviewModelType.JGroup> getJGroup()
-  {
-    if (jGroup == null)
-    {
-      jGroup = new ArrayList<JalviewModelType.JGroup>();
-    }
-    return this.jGroup;
-  }
-
-  /**
-   * Gets the value of the viewport property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the viewport property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getViewport().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link JalviewModelType.Viewport }
-   * 
-   * 
-   */
-  public List<JalviewModelType.Viewport> getViewport()
-  {
-    if (viewport == null)
-    {
-      viewport = new ArrayList<JalviewModelType.Viewport>();
-    }
-    return this.viewport;
-  }
-
-  /**
-   * Gets the value of the userColours property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the userColours property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getUserColours().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link JalviewModelType.UserColours }
-   * 
-   * 
-   */
-  public List<JalviewModelType.UserColours> getUserColours()
-  {
-    if (userColours == null)
-    {
-      userColours = new ArrayList<JalviewModelType.UserColours>();
-    }
-    return this.userColours;
-  }
-
-  /**
-   * Gets the value of the tree property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the tree property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getTree().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link JalviewModelType.Tree }
-   * 
-   * 
-   */
-  public List<JalviewModelType.Tree> getTree()
-  {
-    if (tree == null)
-    {
-      tree = new ArrayList<JalviewModelType.Tree>();
-    }
-    return this.tree;
-  }
-
-  /**
-   * Gets the value of the featureSettings property.
-   * 
-   * @return possible object is {@link JalviewModelType.FeatureSettings }
-   * 
-   */
-  public JalviewModelType.FeatureSettings getFeatureSettings()
-  {
-    return featureSettings;
-  }
-
-  /**
-   * Sets the value of the featureSettings property.
-   * 
-   * @param value
-   *          allowed object is {@link JalviewModelType.FeatureSettings }
-   * 
-   */
-  public void setFeatureSettings(JalviewModelType.FeatureSettings value)
-  {
-    this.featureSettings = value;
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="setting" maxOccurs="unbounded" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;sequence>
-   *                   &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
-   *                   &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/>
-   *                 &lt;/sequence>
-   *                 &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *                 &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *                 &lt;attribute name="order" type="{http://www.w3.org/2001/XMLSchema}float" />
-   *                 &lt;attribute name="mincolour" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *                 &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
-   *                 &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
-   *                 &lt;attribute name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *                 &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
-   *                 &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
-   *                 &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *                 &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *         &lt;element name="group" maxOccurs="unbounded" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "setting", "group" })
-  public static class FeatureSettings
-  {
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModelType.FeatureSettings.Setting> setting;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModelType.FeatureSettings.Group> group;
-
-    /**
-     * Gets the value of the setting property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the setting property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getSetting().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link JalviewModelType.FeatureSettings.Setting }
-     * 
-     * 
-     */
-    public List<JalviewModelType.FeatureSettings.Setting> getSetting()
-    {
-      if (setting == null)
-      {
-        setting = new ArrayList<JalviewModelType.FeatureSettings.Setting>();
-      }
-      return this.setting;
-    }
-
-    /**
-     * Gets the value of the group property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the group property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getGroup().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link JalviewModelType.FeatureSettings.Group }
-     * 
-     * 
-     */
-    public List<JalviewModelType.FeatureSettings.Group> getGroup()
-    {
-      if (group == null)
-      {
-        group = new ArrayList<JalviewModelType.FeatureSettings.Group>();
-      }
-      return this.group;
-    }
-
-    /**
-     * <p>
-     * Java class for anonymous complex type.
-     * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
-     * 
-     * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
-     * </pre>
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class Group
-    {
-
-      @XmlAttribute(name = "name", required = true)
-      protected String name;
-
-      @XmlAttribute(name = "display", required = true)
-      protected boolean display;
-
-      /**
-       * Gets the value of the name property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getName()
-      {
-        return name;
-      }
-
-      /**
-       * Sets the value of the name property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setName(String value)
-      {
-        this.name = value;
-      }
-
-      /**
-       * Gets the value of the display property.
-       * 
-       */
-      public boolean isDisplay()
-      {
-        return display;
-      }
-
-      /**
-       * Sets the value of the display property.
-       * 
-       */
-      public void setDisplay(boolean value)
-      {
-        this.display = value;
-      }
-
-    }
-
-    /**
-     * <p>
-     * Java class for anonymous complex type.
-     * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
-     * 
-     * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;sequence>
-     *         &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
-     *         &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet" minOccurs="0"/>
-     *       &lt;/sequence>
-     *       &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="colour" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *       &lt;attribute name="display" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-     *       &lt;attribute name="order" type="{http://www.w3.org/2001/XMLSchema}float" />
-     *       &lt;attribute name="mincolour" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *       &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
-     *       &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
-     *       &lt;attribute name="threshstate" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *       &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
-     *       &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
-     *       &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-     *       &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
-     * </pre>
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "attributeName", "matcherSet" })
-    public static class Setting
-    {
-
-      @XmlElement(namespace = "www.jalview.org")
-      protected List<String> attributeName;
-
-      @XmlElement(namespace = "www.jalview.org")
-      protected FeatureMatcherSet matcherSet;
-
-      @XmlAttribute(name = "type", required = true)
-      protected String type;
-
-      @XmlAttribute(name = "colour", required = true)
-      protected int colour;
-
-      @XmlAttribute(name = "display", required = true)
-      protected boolean display;
-
-      @XmlAttribute(name = "order")
-      protected Float order;
-
-      @XmlAttribute(name = "mincolour")
-      protected Integer mincolour;
-
-      @XmlAttribute(name = "noValueColour")
-      protected NoValueColour noValueColour;
-
-      @XmlAttribute(name = "threshold")
-      protected Float threshold;
-
-      @XmlAttribute(name = "threshstate")
-      protected Integer threshstate;
-
-      @XmlAttribute(name = "max")
-      protected Float max;
-
-      @XmlAttribute(name = "min")
-      protected Float min;
-
-      @XmlAttribute(name = "colourByLabel")
-      protected Boolean colourByLabel;
-
-      @XmlAttribute(name = "autoScale")
-      protected Boolean autoScale;
-
-      /**
-       * Gets the value of the attributeName property.
-       * 
-       * <p>
-       * This accessor method returns a reference to the live list, not a
-       * snapshot. Therefore any modification you make to the returned list will
-       * be present inside the JAXB object. This is why there is not a
-       * <CODE>set</CODE> method for the attributeName property.
-       * 
-       * <p>
-       * For example, to add a new item, do as follows:
-       * 
-       * <pre>
-       * getAttributeName().add(newItem);
-       * </pre>
-       * 
-       * 
-       * <p>
-       * Objects of the following type(s) are allowed in the list {@link String
-       * }
-       * 
-       * 
-       */
-      public List<String> getAttributeName()
-      {
-        if (attributeName == null)
-        {
-          attributeName = new ArrayList<String>();
-        }
-        return this.attributeName;
-      }
-
-      /**
-       * Gets the value of the matcherSet property.
-       * 
-       * @return possible object is {@link FeatureMatcherSet }
-       * 
-       */
-      public FeatureMatcherSet getMatcherSet()
-      {
-        return matcherSet;
-      }
-
-      /**
-       * Sets the value of the matcherSet property.
-       * 
-       * @param value
-       *          allowed object is {@link FeatureMatcherSet }
-       * 
-       */
-      public void setMatcherSet(FeatureMatcherSet value)
-      {
-        this.matcherSet = value;
-      }
-
-      /**
-       * Gets the value of the type property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getType()
-      {
-        return type;
-      }
-
-      /**
-       * Sets the value of the type property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setType(String value)
-      {
-        this.type = value;
-      }
-
-      /**
-       * Gets the value of the colour property.
-       * 
-       */
-      public int getColour()
-      {
-        return colour;
-      }
-
-      /**
-       * Sets the value of the colour property.
-       * 
-       */
-      public void setColour(int value)
-      {
-        this.colour = value;
-      }
-
-      /**
-       * Gets the value of the display property.
-       * 
-       */
-      public boolean isDisplay()
-      {
-        return display;
-      }
-
-      /**
-       * Sets the value of the display property.
-       * 
-       */
-      public void setDisplay(boolean value)
-      {
-        this.display = value;
-      }
-
-      /**
-       * Gets the value of the order property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getOrder()
-      {
-        return order;
-      }
-
-      /**
-       * Sets the value of the order property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setOrder(Float value)
-      {
-        this.order = value;
-      }
-
-      /**
-       * Gets the value of the mincolour property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getMincolour()
-      {
-        return mincolour;
-      }
-
-      /**
-       * Sets the value of the mincolour property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setMincolour(Integer value)
-      {
-        this.mincolour = value;
-      }
-
-      /**
-       * Gets the value of the noValueColour property.
-       * 
-       * @return possible object is {@link NoValueColour }
-       * 
-       */
-      public NoValueColour getNoValueColour()
-      {
-        if (noValueColour == null)
-        {
-          return NoValueColour.MIN;
-        }
-        else
-        {
-          return noValueColour;
-        }
-      }
-
-      /**
-       * Sets the value of the noValueColour property.
-       * 
-       * @param value
-       *          allowed object is {@link NoValueColour }
-       * 
-       */
-      public void setNoValueColour(NoValueColour value)
-      {
-        this.noValueColour = value;
-      }
-
-      /**
-       * Gets the value of the threshold property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getThreshold()
-      {
-        return threshold;
-      }
-
-      /**
-       * Sets the value of the threshold property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setThreshold(Float value)
-      {
-        this.threshold = value;
-      }
-
-      /**
-       * Gets the value of the threshstate property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getThreshstate()
-      {
-        return threshstate;
-      }
-
-      /**
-       * Sets the value of the threshstate property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setThreshstate(Integer value)
-      {
-        this.threshstate = value;
-      }
-
-      /**
-       * Gets the value of the max property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getMax()
-      {
-        return max;
-      }
-
-      /**
-       * Sets the value of the max property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setMax(Float value)
-      {
-        this.max = value;
-      }
-
-      /**
-       * Gets the value of the min property.
-       * 
-       * @return possible object is {@link Float }
-       * 
-       */
-      public Float getMin()
-      {
-        return min;
-      }
-
-      /**
-       * Sets the value of the min property.
-       * 
-       * @param value
-       *          allowed object is {@link Float }
-       * 
-       */
-      public void setMin(Float value)
-      {
-        this.min = value;
-      }
-
-      /**
-       * Gets the value of the colourByLabel property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public Boolean isColourByLabel()
-      {
-        return colourByLabel;
-      }
-
-      /**
-       * Sets the value of the colourByLabel property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setColourByLabel(Boolean value)
-      {
-        this.colourByLabel = value;
-      }
-
-      /**
-       * Gets the value of the autoScale property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public Boolean isAutoScale()
-      {
-        return autoScale;
-      }
-
-      /**
-       * Sets the value of the autoScale property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setAutoScale(Boolean value)
-      {
-        this.autoScale = value;
-      }
-
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="seq" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
-   *         &lt;element name="annotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
-   *       &lt;/sequence>
-   *       &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="outlineColour" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="displayBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="displayText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="colourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *       &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *       &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "seq", "annotationColours" })
-  public static class JGroup
-  {
-
-    @XmlElement(namespace = "www.jalview.org", required = true)
-    protected List<String> seq;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected AnnotationColourScheme annotationColours;
-
-    @XmlAttribute(name = "start")
-    protected Integer start;
-
-    @XmlAttribute(name = "end")
-    protected Integer end;
-
-    @XmlAttribute(name = "name")
-    protected String name;
-
-    @XmlAttribute(name = "colour")
-    protected String colour;
-
-    @XmlAttribute(name = "consThreshold")
-    protected Integer consThreshold;
-
-    @XmlAttribute(name = "pidThreshold")
-    protected Integer pidThreshold;
-
-    @XmlAttribute(name = "outlineColour")
-    protected Integer outlineColour;
-
-    @XmlAttribute(name = "displayBoxes")
-    protected Boolean displayBoxes;
-
-    @XmlAttribute(name = "displayText")
-    protected Boolean displayText;
-
-    @XmlAttribute(name = "colourText")
-    protected Boolean colourText;
-
-    @XmlAttribute(name = "textCol1")
-    protected Integer textCol1;
-
-    @XmlAttribute(name = "textCol2")
-    protected Integer textCol2;
-
-    @XmlAttribute(name = "textColThreshold")
-    protected Integer textColThreshold;
-
-    @XmlAttribute(name = "showUnconserved")
-    protected Boolean showUnconserved;
-
-    @XmlAttribute(name = "ignoreGapsinConsensus")
-    protected Boolean ignoreGapsinConsensus;
-
-    @XmlAttribute(name = "showConsensusHistogram")
-    protected Boolean showConsensusHistogram;
-
-    @XmlAttribute(name = "showSequenceLogo")
-    protected Boolean showSequenceLogo;
-
-    @XmlAttribute(name = "normaliseSequenceLogo")
-    protected Boolean normaliseSequenceLogo;
-
-    @XmlAttribute(name = "id")
-    protected String id;
-
-    /**
-     * Gets the value of the seq property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the seq property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getSeq().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link String }
-     * 
-     * 
-     */
-    public List<String> getSeq()
-    {
-      if (seq == null)
-      {
-        seq = new ArrayList<String>();
-      }
-      return this.seq;
-    }
-
-    /**
-     * Gets the value of the annotationColours property.
-     * 
-     * @return possible object is {@link AnnotationColourScheme }
-     * 
-     */
-    public AnnotationColourScheme getAnnotationColours()
-    {
-      return annotationColours;
-    }
-
-    /**
-     * Sets the value of the annotationColours property.
-     * 
-     * @param value
-     *          allowed object is {@link AnnotationColourScheme }
-     * 
-     */
-    public void setAnnotationColours(AnnotationColourScheme value)
-    {
-      this.annotationColours = value;
-    }
-
-    /**
-     * Gets the value of the start property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getStart()
-    {
-      return start;
-    }
-
-    /**
-     * Sets the value of the start property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setStart(Integer value)
-    {
-      this.start = value;
-    }
-
-    /**
-     * Gets the value of the end property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getEnd()
-    {
-      return end;
-    }
-
-    /**
-     * Sets the value of the end property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setEnd(Integer value)
-    {
-      this.end = value;
-    }
-
-    /**
-     * Gets the value of the name property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getName()
-    {
-      return name;
-    }
-
-    /**
-     * Sets the value of the name property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setName(String value)
-    {
-      this.name = value;
-    }
-
-    /**
-     * Gets the value of the colour property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getColour()
-    {
-      return colour;
-    }
-
-    /**
-     * Sets the value of the colour property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setColour(String value)
-    {
-      this.colour = value;
-    }
-
-    /**
-     * Gets the value of the consThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getConsThreshold()
-    {
-      return consThreshold;
-    }
-
-    /**
-     * Sets the value of the consThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setConsThreshold(Integer value)
-    {
-      this.consThreshold = value;
-    }
-
-    /**
-     * Gets the value of the pidThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getPidThreshold()
-    {
-      return pidThreshold;
-    }
-
-    /**
-     * Sets the value of the pidThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setPidThreshold(Integer value)
-    {
-      this.pidThreshold = value;
-    }
-
-    /**
-     * Gets the value of the outlineColour property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getOutlineColour()
-    {
-      return outlineColour;
-    }
-
-    /**
-     * Sets the value of the outlineColour property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setOutlineColour(Integer value)
-    {
-      this.outlineColour = value;
-    }
-
-    /**
-     * Gets the value of the displayBoxes property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isDisplayBoxes()
-    {
-      return displayBoxes;
-    }
-
-    /**
-     * Sets the value of the displayBoxes property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setDisplayBoxes(Boolean value)
-    {
-      this.displayBoxes = value;
-    }
-
-    /**
-     * Gets the value of the displayText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isDisplayText()
-    {
-      return displayText;
-    }
-
-    /**
-     * Sets the value of the displayText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setDisplayText(Boolean value)
-    {
-      this.displayText = value;
-    }
-
-    /**
-     * Gets the value of the colourText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isColourText()
-    {
-      return colourText;
-    }
-
-    /**
-     * Sets the value of the colourText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setColourText(Boolean value)
-    {
-      this.colourText = value;
-    }
-
-    /**
-     * Gets the value of the textCol1 property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextCol1()
-    {
-      return textCol1;
-    }
-
-    /**
-     * Sets the value of the textCol1 property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol1(Integer value)
-    {
-      this.textCol1 = value;
-    }
-
-    /**
-     * Gets the value of the textCol2 property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextCol2()
-    {
-      return textCol2;
-    }
-
-    /**
-     * Sets the value of the textCol2 property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol2(Integer value)
-    {
-      this.textCol2 = value;
-    }
-
-    /**
-     * Gets the value of the textColThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextColThreshold()
-    {
-      return textColThreshold;
-    }
-
-    /**
-     * Sets the value of the textColThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextColThreshold(Integer value)
-    {
-      this.textColThreshold = value;
-    }
-
-    /**
-     * Gets the value of the showUnconserved property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowUnconserved()
-    {
-      return showUnconserved;
-    }
-
-    /**
-     * Sets the value of the showUnconserved property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowUnconserved(Boolean value)
-    {
-      this.showUnconserved = value;
-    }
-
-    /**
-     * Gets the value of the ignoreGapsinConsensus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isIgnoreGapsinConsensus()
-    {
-      if (ignoreGapsinConsensus == null)
-      {
-        return true;
-      }
-      else
-      {
-        return ignoreGapsinConsensus;
-      }
-    }
-
-    /**
-     * Sets the value of the ignoreGapsinConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIgnoreGapsinConsensus(Boolean value)
-    {
-      this.ignoreGapsinConsensus = value;
-    }
-
-    /**
-     * Gets the value of the showConsensusHistogram property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowConsensusHistogram()
-    {
-      if (showConsensusHistogram == null)
-      {
-        return true;
-      }
-      else
-      {
-        return showConsensusHistogram;
-      }
-    }
-
-    /**
-     * Sets the value of the showConsensusHistogram property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowConsensusHistogram(Boolean value)
-    {
-      this.showConsensusHistogram = value;
-    }
-
-    /**
-     * Gets the value of the showSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowSequenceLogo()
-    {
-      if (showSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showSequenceLogo;
-      }
-    }
-
-    /**
-     * Sets the value of the showSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceLogo(Boolean value)
-    {
-      this.showSequenceLogo = value;
-    }
-
-    /**
-     * Gets the value of the normaliseSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isNormaliseSequenceLogo()
-    {
-      if (normaliseSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return normaliseSequenceLogo;
-      }
-    }
-
-    /**
-     * Sets the value of the normaliseSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setNormaliseSequenceLogo(Boolean value)
-    {
-      this.normaliseSequenceLogo = value;
-    }
-
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="features" type="{www.jalview.org}feature" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="pdbids" maxOccurs="unbounded" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;extension base="{www.jalview.org}pdbentry">
-   *                 &lt;sequence>
-   *                   &lt;element name="structureState" maxOccurs="unbounded" minOccurs="0">
-   *                     &lt;complexType>
-   *                       &lt;simpleContent>
-   *                         &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-   *                           &lt;attGroup ref="{www.jalview.org}swingwindow"/>
-   *                           &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *                           &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                           &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *                           &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *                           &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *                           &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                         &lt;/extension>
-   *                       &lt;/simpleContent>
-   *                     &lt;/complexType>
-   *                   &lt;/element>
-   *                 &lt;/sequence>
-   *               &lt;/extension>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *         &lt;element name="hiddenSequences" type="{http://www.w3.org/2001/XMLSchema}int" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="rnaViewer" maxOccurs="unbounded" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;sequence>
-   *                   &lt;element name="secondaryStructure" maxOccurs="unbounded">
-   *                     &lt;complexType>
-   *                       &lt;complexContent>
-   *                         &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                           &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                           &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                           &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *                           &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                         &lt;/restriction>
-   *                       &lt;/complexContent>
-   *                     &lt;/complexType>
-   *                   &lt;/element>
-   *                 &lt;/sequence>
-   *                 &lt;attGroup ref="{www.jalview.org}swingwindow"/>
-   *                 &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="dividerLocation" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *                 &lt;attribute name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *       &lt;/sequence>
-   *       &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="hidden" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="viewreference" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "features", "pdbids", "hiddenSequences", "rnaViewer" })
-  public static class JSeq
-  {
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<Feature> features;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModelType.JSeq.Pdbids> pdbids;
-
-    @XmlElement(namespace = "www.jalview.org", type = Integer.class)
-    protected List<Integer> hiddenSequences;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModelType.JSeq.RnaViewer> rnaViewer;
-
-    @XmlAttribute(name = "colour")
-    protected Integer colour;
-
-    @XmlAttribute(name = "start", required = true)
-    protected int start;
-
-    @XmlAttribute(name = "end", required = true)
-    protected int end;
-
-    @XmlAttribute(name = "id", required = true)
-    protected String id;
-
-    @XmlAttribute(name = "hidden")
-    protected Boolean hidden;
-
-    @XmlAttribute(name = "viewreference")
-    protected Boolean viewreference;
-
-    /**
-     * Gets the value of the features property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the features property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getFeatures().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link Feature }
-     * 
-     * 
-     */
-    public List<Feature> getFeatures()
-    {
-      if (features == null)
-      {
-        features = new ArrayList<Feature>();
-      }
-      return this.features;
-    }
-
-    /**
-     * Gets the value of the pdbids property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the pdbids property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getPdbids().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link JalviewModelType.JSeq.Pdbids }
-     * 
-     * 
-     */
-    public List<JalviewModelType.JSeq.Pdbids> getPdbids()
-    {
-      if (pdbids == null)
-      {
-        pdbids = new ArrayList<JalviewModelType.JSeq.Pdbids>();
-      }
-      return this.pdbids;
-    }
-
-    /**
-     * Gets the value of the hiddenSequences property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the hiddenSequences property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getHiddenSequences().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link Integer }
-     * 
-     * 
-     */
-    public List<Integer> getHiddenSequences()
-    {
-      if (hiddenSequences == null)
-      {
-        hiddenSequences = new ArrayList<Integer>();
-      }
-      return this.hiddenSequences;
-    }
-
-    /**
-     * Gets the value of the rnaViewer property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the rnaViewer property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getRnaViewer().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link JalviewModelType.JSeq.RnaViewer }
-     * 
-     * 
-     */
-    public List<JalviewModelType.JSeq.RnaViewer> getRnaViewer()
-    {
-      if (rnaViewer == null)
-      {
-        rnaViewer = new ArrayList<JalviewModelType.JSeq.RnaViewer>();
-      }
-      return this.rnaViewer;
-    }
-
-    /**
-     * Gets the value of the colour property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getColour()
-    {
-      return colour;
-    }
-
-    /**
-     * Sets the value of the colour property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setColour(Integer value)
-    {
-      this.colour = value;
-    }
-
-    /**
-     * Gets the value of the start property.
-     * 
-     */
-    public int getStart()
-    {
-      return start;
-    }
-
-    /**
-     * Sets the value of the start property.
-     * 
-     */
-    public void setStart(int value)
-    {
-      this.start = value;
-    }
-
-    /**
-     * Gets the value of the end property.
-     * 
-     */
-    public int getEnd()
-    {
-      return end;
-    }
-
-    /**
-     * Sets the value of the end property.
-     * 
-     */
-    public void setEnd(int value)
-    {
-      this.end = value;
-    }
-
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
-
-    /**
-     * Gets the value of the hidden property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isHidden()
-    {
-      return hidden;
-    }
-
-    /**
-     * Sets the value of the hidden property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setHidden(Boolean value)
-    {
-      this.hidden = value;
-    }
-
-    /**
-     * Gets the value of the viewreference property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isViewreference()
-    {
-      return viewreference;
-    }
-
-    /**
-     * Sets the value of the viewreference property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setViewreference(Boolean value)
-    {
-      this.viewreference = value;
-    }
-
-    /**
-     * <p>
-     * Java class for anonymous complex type.
-     * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
-     * 
-     * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;extension base="{www.jalview.org}pdbentry">
-     *       &lt;sequence>
-     *         &lt;element name="structureState" maxOccurs="unbounded" minOccurs="0">
-     *           &lt;complexType>
-     *             &lt;simpleContent>
-     *               &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-     *                 &lt;attGroup ref="{www.jalview.org}swingwindow"/>
-     *                 &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-     *                 &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *                 &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-     *                 &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-     *                 &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-     *                 &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *               &lt;/extension>
-     *             &lt;/simpleContent>
-     *           &lt;/complexType>
-     *         &lt;/element>
-     *       &lt;/sequence>
-     *     &lt;/extension>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
-     * </pre>
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "structureState" })
-    public static class Pdbids extends Pdbentry
-    {
-
-      @XmlElement(namespace = "www.jalview.org")
-      protected List<JalviewModelType.JSeq.Pdbids.StructureState> structureState;
-
-      /**
-       * Gets the value of the structureState property.
-       * 
-       * <p>
-       * This accessor method returns a reference to the live list, not a
-       * snapshot. Therefore any modification you make to the returned list will
-       * be present inside the JAXB object. This is why there is not a
-       * <CODE>set</CODE> method for the structureState property.
-       * 
-       * <p>
-       * For example, to add a new item, do as follows:
-       * 
-       * <pre>
-       * getStructureState().add(newItem);
-       * </pre>
-       * 
-       * 
-       * <p>
-       * Objects of the following type(s) are allowed in the list
-       * {@link JalviewModelType.JSeq.Pdbids.StructureState }
-       * 
-       * 
-       */
-      public List<JalviewModelType.JSeq.Pdbids.StructureState> getStructureState()
-      {
-        if (structureState == null)
-        {
-          structureState = new ArrayList<JalviewModelType.JSeq.Pdbids.StructureState>();
-        }
-        return this.structureState;
-      }
-
-      /**
-       * <p>
-       * Java class for anonymous complex type.
-       * 
-       * <p>
-       * The following schema fragment specifies the expected content contained
-       * within this class.
-       * 
-       * <pre>
-       * &lt;complexType>
-       *   &lt;simpleContent>
-       *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-       *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
-       *       &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-       *       &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
-       *       &lt;attribute name="alignwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-       *       &lt;attribute name="colourwithAlignPanel" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-       *       &lt;attribute name="colourByJmol" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-       *       &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
-       *     &lt;/extension>
-       *   &lt;/simpleContent>
-       * &lt;/complexType>
-       * </pre>
-       * 
-       * 
-       */
-      @XmlAccessorType(XmlAccessType.FIELD)
-      @XmlType(name = "", propOrder = { "value" })
-      public static class StructureState
-      {
-
-        @XmlValue
-        protected String value;
-
-        @XmlAttribute(name = "visible")
-        protected Boolean visible;
-
-        @XmlAttribute(name = "viewId")
-        protected String viewId;
-
-        @XmlAttribute(name = "alignwithAlignPanel")
-        protected Boolean alignwithAlignPanel;
-
-        @XmlAttribute(name = "colourwithAlignPanel")
-        protected Boolean colourwithAlignPanel;
-
-        @XmlAttribute(name = "colourByJmol")
-        protected Boolean colourByJmol;
-
-        @XmlAttribute(name = "type")
-        protected String type;
-
-        @XmlAttribute(name = "width")
-        protected Integer width;
-
-        @XmlAttribute(name = "height")
-        protected Integer height;
-
-        @XmlAttribute(name = "xpos")
-        protected Integer xpos;
-
-        @XmlAttribute(name = "ypos")
-        protected Integer ypos;
-
-        /**
-         * Gets the value of the value property.
-         * 
-         * @return possible object is {@link String }
-         * 
-         */
-        public String getValue()
-        {
-          return value;
-        }
-
-        /**
-         * Sets the value of the value property.
-         * 
-         * @param value
-         *          allowed object is {@link String }
-         * 
-         */
-        public void setValue(String value)
-        {
-          this.value = value;
-        }
-
-        /**
-         * Gets the value of the visible property.
-         * 
-         * @return possible object is {@link Boolean }
-         * 
-         */
-        public Boolean isVisible()
-        {
-          return visible;
-        }
-
-        /**
-         * Sets the value of the visible property.
-         * 
-         * @param value
-         *          allowed object is {@link Boolean }
-         * 
-         */
-        public void setVisible(Boolean value)
-        {
-          this.visible = value;
-        }
-
-        /**
-         * Gets the value of the viewId property.
-         * 
-         * @return possible object is {@link String }
-         * 
-         */
-        public String getViewId()
-        {
-          return viewId;
-        }
-
-        /**
-         * Sets the value of the viewId property.
-         * 
-         * @param value
-         *          allowed object is {@link String }
-         * 
-         */
-        public void setViewId(String value)
-        {
-          this.viewId = value;
-        }
-
-        /**
-         * Gets the value of the alignwithAlignPanel property.
-         * 
-         * @return possible object is {@link Boolean }
-         * 
-         */
-        public boolean isAlignwithAlignPanel()
-        {
-          if (alignwithAlignPanel == null)
-          {
-            return true;
-          }
-          else
-          {
-            return alignwithAlignPanel;
-          }
-        }
-
-        /**
-         * Sets the value of the alignwithAlignPanel property.
-         * 
-         * @param value
-         *          allowed object is {@link Boolean }
-         * 
-         */
-        public void setAlignwithAlignPanel(Boolean value)
-        {
-          this.alignwithAlignPanel = value;
-        }
-
-        /**
-         * Gets the value of the colourwithAlignPanel property.
-         * 
-         * @return possible object is {@link Boolean }
-         * 
-         */
-        public boolean isColourwithAlignPanel()
-        {
-          if (colourwithAlignPanel == null)
-          {
-            return false;
-          }
-          else
-          {
-            return colourwithAlignPanel;
-          }
-        }
-
-        /**
-         * Sets the value of the colourwithAlignPanel property.
-         * 
-         * @param value
-         *          allowed object is {@link Boolean }
-         * 
-         */
-        public void setColourwithAlignPanel(Boolean value)
-        {
-          this.colourwithAlignPanel = value;
-        }
-
-        /**
-         * Gets the value of the colourByJmol property.
-         * 
-         * @return possible object is {@link Boolean }
-         * 
-         */
-        public boolean isColourByJmol()
-        {
-          if (colourByJmol == null)
-          {
-            return true;
-          }
-          else
-          {
-            return colourByJmol;
-          }
-        }
-
-        /**
-         * Sets the value of the colourByJmol property.
-         * 
-         * @param value
-         *          allowed object is {@link Boolean }
-         * 
-         */
-        public void setColourByJmol(Boolean value)
-        {
-          this.colourByJmol = value;
-        }
-
-        /**
-         * Gets the value of the type property.
-         * 
-         * @return possible object is {@link String }
-         * 
-         */
-        public String getType()
-        {
-          return type;
-        }
-
-        /**
-         * Sets the value of the type property.
-         * 
-         * @param value
-         *          allowed object is {@link String }
-         * 
-         */
-        public void setType(String value)
-        {
-          this.type = value;
-        }
-
-        /**
-         * Gets the value of the width property.
-         * 
-         * @return possible object is {@link Integer }
-         * 
-         */
-        public Integer getWidth()
-        {
-          return width;
-        }
-
-        /**
-         * Sets the value of the width property.
-         * 
-         * @param value
-         *          allowed object is {@link Integer }
-         * 
-         */
-        public void setWidth(Integer value)
-        {
-          this.width = value;
-        }
-
-        /**
-         * Gets the value of the height property.
-         * 
-         * @return possible object is {@link Integer }
-         * 
-         */
-        public Integer getHeight()
-        {
-          return height;
-        }
-
-        /**
-         * Sets the value of the height property.
-         * 
-         * @param value
-         *          allowed object is {@link Integer }
-         * 
-         */
-        public void setHeight(Integer value)
-        {
-          this.height = value;
-        }
-
-        /**
-         * Gets the value of the xpos property.
-         * 
-         * @return possible object is {@link Integer }
-         * 
-         */
-        public Integer getXpos()
-        {
-          return xpos;
-        }
-
-        /**
-         * Sets the value of the xpos property.
-         * 
-         * @param value
-         *          allowed object is {@link Integer }
-         * 
-         */
-        public void setXpos(Integer value)
-        {
-          this.xpos = value;
-        }
-
-        /**
-         * Gets the value of the ypos property.
-         * 
-         * @return possible object is {@link Integer }
-         * 
-         */
-        public Integer getYpos()
-        {
-          return ypos;
-        }
-
-        /**
-         * Sets the value of the ypos property.
-         * 
-         * @param value
-         *          allowed object is {@link Integer }
-         * 
-         */
-        public void setYpos(Integer value)
-        {
-          this.ypos = value;
-        }
-
-      }
-
-    }
-
-    /**
-     * <p>
-     * Java class for anonymous complex type.
-     * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
-     * 
-     * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;sequence>
-     *         &lt;element name="secondaryStructure" maxOccurs="unbounded">
-     *           &lt;complexType>
-     *             &lt;complexContent>
-     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *                 &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *                 &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *                 &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-     *                 &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *               &lt;/restriction>
-     *             &lt;/complexContent>
-     *           &lt;/complexType>
-     *         &lt;/element>
-     *       &lt;/sequence>
-     *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
-     *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="viewId" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="dividerLocation" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *       &lt;attribute name="selectedRna" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
-     * </pre>
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "", propOrder = { "secondaryStructure" })
-    public static class RnaViewer
-    {
-
-      @XmlElement(namespace = "www.jalview.org", required = true)
-      protected List<JalviewModelType.JSeq.RnaViewer.SecondaryStructure> secondaryStructure;
-
-      @XmlAttribute(name = "title")
-      protected String title;
-
-      @XmlAttribute(name = "viewId")
-      protected String viewId;
-
-      @XmlAttribute(name = "dividerLocation")
-      protected Integer dividerLocation;
-
-      @XmlAttribute(name = "selectedRna")
-      protected Integer selectedRna;
-
-      @XmlAttribute(name = "width")
-      protected Integer width;
-
-      @XmlAttribute(name = "height")
-      protected Integer height;
-
-      @XmlAttribute(name = "xpos")
-      protected Integer xpos;
-
-      @XmlAttribute(name = "ypos")
-      protected Integer ypos;
-
-      /**
-       * Gets the value of the secondaryStructure property.
-       * 
-       * <p>
-       * This accessor method returns a reference to the live list, not a
-       * snapshot. Therefore any modification you make to the returned list will
-       * be present inside the JAXB object. This is why there is not a
-       * <CODE>set</CODE> method for the secondaryStructure property.
-       * 
-       * <p>
-       * For example, to add a new item, do as follows:
-       * 
-       * <pre>
-       * getSecondaryStructure().add(newItem);
-       * </pre>
-       * 
-       * 
-       * <p>
-       * Objects of the following type(s) are allowed in the list
-       * {@link JalviewModelType.JSeq.RnaViewer.SecondaryStructure }
-       * 
-       * 
-       */
-      public List<JalviewModelType.JSeq.RnaViewer.SecondaryStructure> getSecondaryStructure()
-      {
-        if (secondaryStructure == null)
-        {
-          secondaryStructure = new ArrayList<JalviewModelType.JSeq.RnaViewer.SecondaryStructure>();
-        }
-        return this.secondaryStructure;
-      }
-
-      /**
-       * Gets the value of the title property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getTitle()
-      {
-        return title;
-      }
-
-      /**
-       * Sets the value of the title property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setTitle(String value)
-      {
-        this.title = value;
-      }
-
-      /**
-       * Gets the value of the viewId property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getViewId()
-      {
-        return viewId;
-      }
-
-      /**
-       * Sets the value of the viewId property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setViewId(String value)
-      {
-        this.viewId = value;
-      }
-
-      /**
-       * Gets the value of the dividerLocation property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getDividerLocation()
-      {
-        return dividerLocation;
-      }
-
-      /**
-       * Sets the value of the dividerLocation property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setDividerLocation(Integer value)
-      {
-        this.dividerLocation = value;
-      }
-
-      /**
-       * Gets the value of the selectedRna property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getSelectedRna()
-      {
-        return selectedRna;
-      }
-
-      /**
-       * Sets the value of the selectedRna property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setSelectedRna(Integer value)
-      {
-        this.selectedRna = value;
-      }
-
-      /**
-       * Gets the value of the width property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getWidth()
-      {
-        return width;
-      }
-
-      /**
-       * Sets the value of the width property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setWidth(Integer value)
-      {
-        this.width = value;
-      }
-
-      /**
-       * Gets the value of the height property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getHeight()
-      {
-        return height;
-      }
-
-      /**
-       * Sets the value of the height property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setHeight(Integer value)
-      {
-        this.height = value;
-      }
-
-      /**
-       * Gets the value of the xpos property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getXpos()
-      {
-        return xpos;
-      }
-
-      /**
-       * Sets the value of the xpos property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setXpos(Integer value)
-      {
-        this.xpos = value;
-      }
-
-      /**
-       * Gets the value of the ypos property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getYpos()
-      {
-        return ypos;
-      }
-
-      /**
-       * Sets the value of the ypos property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setYpos(Integer value)
-      {
-        this.ypos = value;
-      }
-
-      /**
-       * <p>
-       * Java class for anonymous complex type.
-       * 
-       * <p>
-       * The following schema fragment specifies the expected content contained
-       * within this class.
-       * 
-       * <pre>
-       * &lt;complexType>
-       *   &lt;complexContent>
-       *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-       *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
-       *       &lt;attribute name="annotationId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-       *       &lt;attribute name="gapped" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-       *       &lt;attribute name="viewerState" type="{http://www.w3.org/2001/XMLSchema}string" />
-       *     &lt;/restriction>
-       *   &lt;/complexContent>
-       * &lt;/complexType>
-       * </pre>
-       * 
-       * 
-       */
-      @XmlAccessorType(XmlAccessType.FIELD)
-      @XmlType(name = "")
-      public static class SecondaryStructure
-      {
-
-        @XmlAttribute(name = "title")
-        protected String title;
-
-        @XmlAttribute(name = "annotationId", required = true)
-        protected String annotationId;
-
-        @XmlAttribute(name = "gapped")
-        protected Boolean gapped;
-
-        @XmlAttribute(name = "viewerState")
-        protected String viewerState;
-
-        /**
-         * Gets the value of the title property.
-         * 
-         * @return possible object is {@link String }
-         * 
-         */
-        public String getTitle()
-        {
-          return title;
-        }
-
-        /**
-         * Sets the value of the title property.
-         * 
-         * @param value
-         *          allowed object is {@link String }
-         * 
-         */
-        public void setTitle(String value)
-        {
-          this.title = value;
-        }
-
-        /**
-         * Gets the value of the annotationId property.
-         * 
-         * @return possible object is {@link String }
-         * 
-         */
-        public String getAnnotationId()
-        {
-          return annotationId;
-        }
-
-        /**
-         * Sets the value of the annotationId property.
-         * 
-         * @param value
-         *          allowed object is {@link String }
-         * 
-         */
-        public void setAnnotationId(String value)
-        {
-          this.annotationId = value;
-        }
-
-        /**
-         * Gets the value of the gapped property.
-         * 
-         * @return possible object is {@link Boolean }
-         * 
-         */
-        public Boolean isGapped()
-        {
-          return gapped;
-        }
-
-        /**
-         * Sets the value of the gapped property.
-         * 
-         * @param value
-         *          allowed object is {@link Boolean }
-         * 
-         */
-        public void setGapped(Boolean value)
-        {
-          this.gapped = value;
-        }
-
-        /**
-         * Gets the value of the viewerState property.
-         * 
-         * @return possible object is {@link String }
-         * 
-         */
-        public String getViewerState()
-        {
-          return viewerState;
-        }
-
-        /**
-         * Sets the value of the viewerState property.
-         * 
-         * @param value
-         *          allowed object is {@link String }
-         * 
-         */
-        public void setViewerState(String value)
-        {
-          this.viewerState = value;
-        }
-
-      }
-
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence minOccurs="0">
-   *         &lt;element name="title" type="{http://www.w3.org/2001/XMLSchema}string"/>
-   *         &lt;element name="newick" type="{http://www.w3.org/2001/XMLSchema}string"/>
-   *       &lt;/sequence>
-   *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
-   *       &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
-   *       &lt;attribute name="showBootstrap" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="showDistances" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="markUnlinked" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="fitToWindow" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="currentTree" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "title", "newick" })
-  public static class Tree
-  {
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected String title;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected String newick;
-
-    @XmlAttribute(name = "fontName")
-    protected String fontName;
-
-    @XmlAttribute(name = "fontSize")
-    protected Integer fontSize;
-
-    @XmlAttribute(name = "fontStyle")
-    protected Integer fontStyle;
-
-    @XmlAttribute(name = "threshold")
-    protected Float threshold;
-
-    @XmlAttribute(name = "showBootstrap")
-    protected Boolean showBootstrap;
-
-    @XmlAttribute(name = "showDistances")
-    protected Boolean showDistances;
-
-    @XmlAttribute(name = "markUnlinked")
-    protected Boolean markUnlinked;
-
-    @XmlAttribute(name = "fitToWindow")
-    protected Boolean fitToWindow;
-
-    @XmlAttribute(name = "currentTree")
-    protected Boolean currentTree;
-
-    @XmlAttribute(name = "id")
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlID
-    @XmlSchemaType(name = "ID")
-    protected String id;
-
-    @XmlAttribute(name = "width")
-    protected Integer width;
-
-    @XmlAttribute(name = "height")
-    protected Integer height;
-
-    @XmlAttribute(name = "xpos")
-    protected Integer xpos;
-
-    @XmlAttribute(name = "ypos")
-    protected Integer ypos;
-
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
-    }
-
-    /**
-     * Sets the value of the title property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
-
-    /**
-     * Gets the value of the newick property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getNewick()
-    {
-      return newick;
-    }
-
-    /**
-     * Sets the value of the newick property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setNewick(String value)
-    {
-      this.newick = value;
-    }
-
-    /**
-     * Gets the value of the fontName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFontName()
-    {
-      return fontName;
-    }
-
-    /**
-     * Sets the value of the fontName property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setFontName(String value)
-    {
-      this.fontName = value;
-    }
-
-    /**
-     * Gets the value of the fontSize property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontSize()
-    {
-      return fontSize;
-    }
-
-    /**
-     * Sets the value of the fontSize property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontSize(Integer value)
-    {
-      this.fontSize = value;
-    }
-
-    /**
-     * Gets the value of the fontStyle property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontStyle()
-    {
-      return fontStyle;
-    }
-
-    /**
-     * Sets the value of the fontStyle property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontStyle(Integer value)
-    {
-      this.fontStyle = value;
-    }
-
-    /**
-     * Gets the value of the threshold property.
-     * 
-     * @return possible object is {@link Float }
-     * 
-     */
-    public Float getThreshold()
-    {
-      return threshold;
-    }
-
-    /**
-     * Sets the value of the threshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Float }
-     * 
-     */
-    public void setThreshold(Float value)
-    {
-      this.threshold = value;
-    }
-
-    /**
-     * Gets the value of the showBootstrap property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowBootstrap()
-    {
-      return showBootstrap;
-    }
-
-    /**
-     * Sets the value of the showBootstrap property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowBootstrap(Boolean value)
-    {
-      this.showBootstrap = value;
-    }
-
-    /**
-     * Gets the value of the showDistances property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowDistances()
-    {
-      return showDistances;
-    }
-
-    /**
-     * Sets the value of the showDistances property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowDistances(Boolean value)
-    {
-      this.showDistances = value;
-    }
-
-    /**
-     * Gets the value of the markUnlinked property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isMarkUnlinked()
-    {
-      return markUnlinked;
-    }
-
-    /**
-     * Sets the value of the markUnlinked property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setMarkUnlinked(Boolean value)
-    {
-      this.markUnlinked = value;
-    }
-
-    /**
-     * Gets the value of the fitToWindow property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isFitToWindow()
-    {
-      return fitToWindow;
-    }
-
-    /**
-     * Sets the value of the fitToWindow property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFitToWindow(Boolean value)
-    {
-      this.fitToWindow = value;
-    }
-
-    /**
-     * Gets the value of the currentTree property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isCurrentTree()
-    {
-      return currentTree;
-    }
-
-    /**
-     * Sets the value of the currentTree property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setCurrentTree(Boolean value)
-    {
-      this.currentTree = value;
-    }
-
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
-
-    /**
-     * Gets the value of the width property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getWidth()
-    {
-      return width;
-    }
-
-    /**
-     * Sets the value of the width property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setWidth(Integer value)
-    {
-      this.width = value;
-    }
-
-    /**
-     * Gets the value of the height property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getHeight()
-    {
-      return height;
-    }
-
-    /**
-     * Sets the value of the height property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setHeight(Integer value)
-    {
-      this.height = value;
-    }
-
-    /**
-     * Gets the value of the xpos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getXpos()
-    {
-      return xpos;
-    }
-
-    /**
-     * Sets the value of the xpos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setXpos(Integer value)
-    {
-      this.xpos = value;
-    }
-
-    /**
-     * Gets the value of the ypos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getYpos()
-    {
-      return ypos;
-    }
-
-    /**
-     * Sets the value of the ypos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setYpos(Integer value)
-    {
-      this.ypos = value;
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="UserColourScheme" type="{www.jalview.org/colours}JalviewUserColours"/>
-   *       &lt;/sequence>
-   *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "userColourScheme" })
-  public static class UserColours
-  {
-
-    @XmlElement(
-      name = "UserColourScheme",
-      namespace = "www.jalview.org",
-      required = true)
-    protected JalviewUserColours userColourScheme;
-
-    @XmlAttribute(name = "id")
-    protected String id;
-
-    /**
-     * Gets the value of the userColourScheme property.
-     * 
-     * @return possible object is {@link JalviewUserColours }
-     * 
-     */
-    public JalviewUserColours getUserColourScheme()
-    {
-      return userColourScheme;
-    }
-
-    /**
-     * Sets the value of the userColourScheme property.
-     * 
-     * @param value
-     *          allowed object is {@link JalviewUserColours }
-     * 
-     */
-    public void setUserColourScheme(JalviewUserColours value)
-    {
-      this.userColourScheme = value;
-    }
-
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="AnnotationColours" type="{www.jalview.org}AnnotationColourScheme" minOccurs="0"/>
-   *         &lt;element name="hiddenColumns" maxOccurs="unbounded" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *                 &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *         &lt;element name="calcIdParam" maxOccurs="unbounded" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;extension base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet">
-   *                 &lt;attribute name="calcId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *                 &lt;attribute name="autoUpdate" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *               &lt;/extension>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *       &lt;/sequence>
-   *       &lt;attGroup ref="{www.jalview.org}swingwindow"/>
-   *       &lt;attribute name="conservationSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="pidSelected" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="bgColour" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="consThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="pidThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="title" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="showFullId" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="rightAlignIds" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="showText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="showColourText" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="showUnconserved" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="showBoxes" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="wrapAlignment" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="renderGaps" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="showSequenceFeatures" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="showNPfeatureTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="showDbRefTooltip" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="followHighlight" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *       &lt;attribute name="followSelection" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *       &lt;attribute name="showAnnotation" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="centreColumnLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="showGroupConservation" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="showGroupConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="showConsensusHistogram" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *       &lt;attribute name="showSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="normaliseSequenceLogo" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="ignoreGapsinConsensus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *       &lt;attribute name="startRes" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="startSeq" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="fontName" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="fontSize" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="fontStyle" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="scaleProteinAsCdna" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
-   *       &lt;attribute name="viewName" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="sequenceSetId" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &lt;attribute name="gatheredViews" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-   *       &lt;attribute name="textCol1" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="textCol2" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="textColThreshold" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}ID" />
-   *       &lt;attribute name="complementId" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "annotationColours", "hiddenColumns", "calcIdParam" })
-  public static class Viewport
-  {
-
-    @XmlElement(name = "AnnotationColours", namespace = "www.jalview.org")
-    protected AnnotationColourScheme annotationColours;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModelType.Viewport.HiddenColumns> hiddenColumns;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModelType.Viewport.CalcIdParam> calcIdParam;
-
-    @XmlAttribute(name = "conservationSelected")
-    protected Boolean conservationSelected;
-
-    @XmlAttribute(name = "pidSelected")
-    protected Boolean pidSelected;
-
-    @XmlAttribute(name = "bgColour")
-    protected String bgColour;
-
-    @XmlAttribute(name = "consThreshold")
-    protected Integer consThreshold;
-
-    @XmlAttribute(name = "pidThreshold")
-    protected Integer pidThreshold;
-
-    @XmlAttribute(name = "title")
-    protected String title;
-
-    @XmlAttribute(name = "showFullId")
-    protected Boolean showFullId;
-
-    @XmlAttribute(name = "rightAlignIds")
-    protected Boolean rightAlignIds;
-
-    @XmlAttribute(name = "showText")
-    protected Boolean showText;
-
-    @XmlAttribute(name = "showColourText")
-    protected Boolean showColourText;
-
-    @XmlAttribute(name = "showUnconserved")
-    protected Boolean showUnconserved;
-
-    @XmlAttribute(name = "showBoxes")
-    protected Boolean showBoxes;
-
-    @XmlAttribute(name = "wrapAlignment")
-    protected Boolean wrapAlignment;
-
-    @XmlAttribute(name = "renderGaps")
-    protected Boolean renderGaps;
-
-    @XmlAttribute(name = "showSequenceFeatures")
-    protected Boolean showSequenceFeatures;
-
-    @XmlAttribute(name = "showNPfeatureTooltip")
-    protected Boolean showNPfeatureTooltip;
-
-    @XmlAttribute(name = "showDbRefTooltip")
-    protected Boolean showDbRefTooltip;
-
-    @XmlAttribute(name = "followHighlight")
-    protected Boolean followHighlight;
-
-    @XmlAttribute(name = "followSelection")
-    protected Boolean followSelection;
-
-    @XmlAttribute(name = "showAnnotation")
-    protected Boolean showAnnotation;
-
-    @XmlAttribute(name = "centreColumnLabels")
-    protected Boolean centreColumnLabels;
-
-    @XmlAttribute(name = "showGroupConservation")
-    protected Boolean showGroupConservation;
-
-    @XmlAttribute(name = "showGroupConsensus")
-    protected Boolean showGroupConsensus;
-
-    @XmlAttribute(name = "showConsensusHistogram")
-    protected Boolean showConsensusHistogram;
-
-    @XmlAttribute(name = "showSequenceLogo")
-    protected Boolean showSequenceLogo;
-
-    @XmlAttribute(name = "normaliseSequenceLogo")
-    protected Boolean normaliseSequenceLogo;
-
-    @XmlAttribute(name = "ignoreGapsinConsensus")
-    protected Boolean ignoreGapsinConsensus;
-
-    @XmlAttribute(name = "startRes")
-    protected Integer startRes;
-
-    @XmlAttribute(name = "startSeq")
-    protected Integer startSeq;
-
-    @XmlAttribute(name = "fontName")
-    protected String fontName;
-
-    @XmlAttribute(name = "fontSize")
-    protected Integer fontSize;
-
-    @XmlAttribute(name = "fontStyle")
-    protected Integer fontStyle;
-
-    @XmlAttribute(name = "scaleProteinAsCdna")
-    protected Boolean scaleProteinAsCdna;
-
-    @XmlAttribute(name = "viewName")
-    protected String viewName;
-
-    @XmlAttribute(name = "sequenceSetId")
-    protected String sequenceSetId;
-
-    @XmlAttribute(name = "gatheredViews")
-    protected Boolean gatheredViews;
-
-    @XmlAttribute(name = "textCol1")
-    protected Integer textCol1;
-
-    @XmlAttribute(name = "textCol2")
-    protected Integer textCol2;
-
-    @XmlAttribute(name = "textColThreshold")
-    protected Integer textColThreshold;
-
-    @XmlAttribute(name = "id")
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlID
-    @XmlSchemaType(name = "ID")
-    protected String id;
-
-    @XmlAttribute(name = "complementId")
-    protected String complementId;
-
-    @XmlAttribute(name = "width")
-    protected Integer width;
-
-    @XmlAttribute(name = "height")
-    protected Integer height;
-
-    @XmlAttribute(name = "xpos")
-    protected Integer xpos;
-
-    @XmlAttribute(name = "ypos")
-    protected Integer ypos;
-
-    /**
-     * Gets the value of the annotationColours property.
-     * 
-     * @return possible object is {@link AnnotationColourScheme }
-     * 
-     */
-    public AnnotationColourScheme getAnnotationColours()
-    {
-      return annotationColours;
-    }
-
-    /**
-     * Sets the value of the annotationColours property.
-     * 
-     * @param value
-     *          allowed object is {@link AnnotationColourScheme }
-     * 
-     */
-    public void setAnnotationColours(AnnotationColourScheme value)
-    {
-      this.annotationColours = value;
-    }
-
-    /**
-     * Gets the value of the hiddenColumns property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the hiddenColumns property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getHiddenColumns().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link JalviewModelType.Viewport.HiddenColumns }
-     * 
-     * 
-     */
-    public List<JalviewModelType.Viewport.HiddenColumns> getHiddenColumns()
-    {
-      if (hiddenColumns == null)
-      {
-        hiddenColumns = new ArrayList<JalviewModelType.Viewport.HiddenColumns>();
-      }
-      return this.hiddenColumns;
-    }
-
-    /**
-     * Gets the value of the calcIdParam property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the calcIdParam property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getCalcIdParam().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link JalviewModelType.Viewport.CalcIdParam }
-     * 
-     * 
-     */
-    public List<JalviewModelType.Viewport.CalcIdParam> getCalcIdParam()
-    {
-      if (calcIdParam == null)
-      {
-        calcIdParam = new ArrayList<JalviewModelType.Viewport.CalcIdParam>();
-      }
-      return this.calcIdParam;
-    }
-
-    /**
-     * Gets the value of the conservationSelected property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isConservationSelected()
-    {
-      return conservationSelected;
-    }
-
-    /**
-     * Sets the value of the conservationSelected property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setConservationSelected(Boolean value)
-    {
-      this.conservationSelected = value;
-    }
-
-    /**
-     * Gets the value of the pidSelected property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isPidSelected()
-    {
-      return pidSelected;
-    }
-
-    /**
-     * Sets the value of the pidSelected property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setPidSelected(Boolean value)
-    {
-      this.pidSelected = value;
-    }
-
-    /**
-     * Gets the value of the bgColour property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getBgColour()
-    {
-      return bgColour;
-    }
-
-    /**
-     * Sets the value of the bgColour property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setBgColour(String value)
-    {
-      this.bgColour = value;
-    }
-
-    /**
-     * Gets the value of the consThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getConsThreshold()
-    {
-      return consThreshold;
-    }
-
-    /**
-     * Sets the value of the consThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setConsThreshold(Integer value)
-    {
-      this.consThreshold = value;
-    }
-
-    /**
-     * Gets the value of the pidThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getPidThreshold()
-    {
-      return pidThreshold;
-    }
-
-    /**
-     * Sets the value of the pidThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setPidThreshold(Integer value)
-    {
-      this.pidThreshold = value;
-    }
-
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
-    }
-
-    /**
-     * Sets the value of the title property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
-
-    /**
-     * Gets the value of the showFullId property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowFullId()
-    {
-      return showFullId;
-    }
-
-    /**
-     * Sets the value of the showFullId property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowFullId(Boolean value)
-    {
-      this.showFullId = value;
-    }
-
-    /**
-     * Gets the value of the rightAlignIds property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isRightAlignIds()
-    {
-      return rightAlignIds;
-    }
-
-    /**
-     * Sets the value of the rightAlignIds property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setRightAlignIds(Boolean value)
-    {
-      this.rightAlignIds = value;
-    }
-
-    /**
-     * Gets the value of the showText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowText()
-    {
-      return showText;
-    }
-
-    /**
-     * Sets the value of the showText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowText(Boolean value)
-    {
-      this.showText = value;
-    }
-
-    /**
-     * Gets the value of the showColourText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowColourText()
-    {
-      return showColourText;
-    }
-
-    /**
-     * Sets the value of the showColourText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowColourText(Boolean value)
-    {
-      this.showColourText = value;
-    }
-
-    /**
-     * Gets the value of the showUnconserved property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowUnconserved()
-    {
-      if (showUnconserved == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showUnconserved;
-      }
-    }
-
-    /**
-     * Sets the value of the showUnconserved property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowUnconserved(Boolean value)
-    {
-      this.showUnconserved = value;
-    }
-
-    /**
-     * Gets the value of the showBoxes property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowBoxes()
-    {
-      return showBoxes;
-    }
-
-    /**
-     * Sets the value of the showBoxes property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowBoxes(Boolean value)
-    {
-      this.showBoxes = value;
-    }
-
-    /**
-     * Gets the value of the wrapAlignment property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isWrapAlignment()
-    {
-      return wrapAlignment;
-    }
-
-    /**
-     * Sets the value of the wrapAlignment property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setWrapAlignment(Boolean value)
-    {
-      this.wrapAlignment = value;
-    }
-
-    /**
-     * Gets the value of the renderGaps property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isRenderGaps()
-    {
-      return renderGaps;
-    }
-
-    /**
-     * Sets the value of the renderGaps property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setRenderGaps(Boolean value)
-    {
-      this.renderGaps = value;
-    }
-
-    /**
-     * Gets the value of the showSequenceFeatures property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowSequenceFeatures()
-    {
-      return showSequenceFeatures;
-    }
-
-    /**
-     * Sets the value of the showSequenceFeatures property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceFeatures(Boolean value)
-    {
-      this.showSequenceFeatures = value;
-    }
-
-    /**
-     * Gets the value of the showNPfeatureTooltip property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowNPfeatureTooltip()
-    {
-      return showNPfeatureTooltip;
-    }
-
-    /**
-     * Sets the value of the showNPfeatureTooltip property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowNPfeatureTooltip(Boolean value)
-    {
-      this.showNPfeatureTooltip = value;
-    }
-
-    /**
-     * Gets the value of the showDbRefTooltip property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowDbRefTooltip()
-    {
-      return showDbRefTooltip;
-    }
-
-    /**
-     * Sets the value of the showDbRefTooltip property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowDbRefTooltip(Boolean value)
-    {
-      this.showDbRefTooltip = value;
-    }
-
-    /**
-     * Gets the value of the followHighlight property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isFollowHighlight()
-    {
-      if (followHighlight == null)
-      {
-        return true;
-      }
-      else
-      {
-        return followHighlight;
-      }
-    }
-
-    /**
-     * Sets the value of the followHighlight property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFollowHighlight(Boolean value)
-    {
-      this.followHighlight = value;
-    }
-
-    /**
-     * Gets the value of the followSelection property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isFollowSelection()
-    {
-      if (followSelection == null)
-      {
-        return true;
-      }
-      else
-      {
-        return followSelection;
-      }
-    }
-
-    /**
-     * Sets the value of the followSelection property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFollowSelection(Boolean value)
-    {
-      this.followSelection = value;
-    }
-
-    /**
-     * Gets the value of the showAnnotation property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowAnnotation()
-    {
-      return showAnnotation;
-    }
-
-    /**
-     * Sets the value of the showAnnotation property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowAnnotation(Boolean value)
-    {
-      this.showAnnotation = value;
-    }
-
-    /**
-     * Gets the value of the centreColumnLabels property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isCentreColumnLabels()
-    {
-      if (centreColumnLabels == null)
-      {
-        return false;
-      }
-      else
-      {
-        return centreColumnLabels;
-      }
-    }
-
-    /**
-     * Sets the value of the centreColumnLabels property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setCentreColumnLabels(Boolean value)
-    {
-      this.centreColumnLabels = value;
-    }
-
-    /**
-     * Gets the value of the showGroupConservation property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowGroupConservation()
-    {
-      if (showGroupConservation == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showGroupConservation;
-      }
-    }
-
-    /**
-     * Sets the value of the showGroupConservation property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowGroupConservation(Boolean value)
-    {
-      this.showGroupConservation = value;
-    }
-
-    /**
-     * Gets the value of the showGroupConsensus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowGroupConsensus()
-    {
-      if (showGroupConsensus == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showGroupConsensus;
-      }
-    }
-
-    /**
-     * Sets the value of the showGroupConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowGroupConsensus(Boolean value)
-    {
-      this.showGroupConsensus = value;
-    }
-
-    /**
-     * Gets the value of the showConsensusHistogram property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowConsensusHistogram()
-    {
-      if (showConsensusHistogram == null)
-      {
-        return true;
-      }
-      else
-      {
-        return showConsensusHistogram;
-      }
-    }
-
-    /**
-     * Sets the value of the showConsensusHistogram property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowConsensusHistogram(Boolean value)
-    {
-      this.showConsensusHistogram = value;
-    }
-
-    /**
-     * Gets the value of the showSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowSequenceLogo()
-    {
-      if (showSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showSequenceLogo;
-      }
-    }
-
-    /**
-     * Sets the value of the showSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceLogo(Boolean value)
-    {
-      this.showSequenceLogo = value;
-    }
-
-    /**
-     * Gets the value of the normaliseSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isNormaliseSequenceLogo()
-    {
-      if (normaliseSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return normaliseSequenceLogo;
-      }
-    }
-
-    /**
-     * Sets the value of the normaliseSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setNormaliseSequenceLogo(Boolean value)
-    {
-      this.normaliseSequenceLogo = value;
-    }
-
-    /**
-     * Gets the value of the ignoreGapsinConsensus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isIgnoreGapsinConsensus()
-    {
-      if (ignoreGapsinConsensus == null)
-      {
-        return true;
-      }
-      else
-      {
-        return ignoreGapsinConsensus;
-      }
-    }
-
-    /**
-     * Sets the value of the ignoreGapsinConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIgnoreGapsinConsensus(Boolean value)
-    {
-      this.ignoreGapsinConsensus = value;
-    }
-
-    /**
-     * Gets the value of the startRes property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getStartRes()
-    {
-      return startRes;
-    }
-
-    /**
-     * Sets the value of the startRes property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setStartRes(Integer value)
-    {
-      this.startRes = value;
-    }
-
-    /**
-     * Gets the value of the startSeq property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getStartSeq()
-    {
-      return startSeq;
-    }
-
-    /**
-     * Sets the value of the startSeq property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setStartSeq(Integer value)
-    {
-      this.startSeq = value;
-    }
-
-    /**
-     * Gets the value of the fontName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFontName()
-    {
-      return fontName;
-    }
-
-    /**
-     * Sets the value of the fontName property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setFontName(String value)
-    {
-      this.fontName = value;
-    }
-
-    /**
-     * Gets the value of the fontSize property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontSize()
-    {
-      return fontSize;
-    }
-
-    /**
-     * Sets the value of the fontSize property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontSize(Integer value)
-    {
-      this.fontSize = value;
-    }
-
-    /**
-     * Gets the value of the fontStyle property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontStyle()
-    {
-      return fontStyle;
-    }
-
-    /**
-     * Sets the value of the fontStyle property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontStyle(Integer value)
-    {
-      this.fontStyle = value;
-    }
-
-    /**
-     * Gets the value of the scaleProteinAsCdna property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isScaleProteinAsCdna()
-    {
-      if (scaleProteinAsCdna == null)
-      {
-        return true;
-      }
-      else
-      {
-        return scaleProteinAsCdna;
-      }
-    }
-
-    /**
-     * Sets the value of the scaleProteinAsCdna property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setScaleProteinAsCdna(Boolean value)
-    {
-      this.scaleProteinAsCdna = value;
-    }
-
-    /**
-     * Gets the value of the viewName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getViewName()
-    {
-      return viewName;
-    }
-
-    /**
-     * Sets the value of the viewName property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setViewName(String value)
-    {
-      this.viewName = value;
-    }
-
-    /**
-     * Gets the value of the sequenceSetId property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getSequenceSetId()
-    {
-      return sequenceSetId;
-    }
-
-    /**
-     * Sets the value of the sequenceSetId property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setSequenceSetId(String value)
-    {
-      this.sequenceSetId = value;
-    }
-
-    /**
-     * Gets the value of the gatheredViews property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isGatheredViews()
-    {
-      return gatheredViews;
-    }
-
-    /**
-     * Sets the value of the gatheredViews property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setGatheredViews(Boolean value)
-    {
-      this.gatheredViews = value;
-    }
-
-    /**
-     * Gets the value of the textCol1 property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextCol1()
-    {
-      return textCol1;
-    }
-
-    /**
-     * Sets the value of the textCol1 property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol1(Integer value)
-    {
-      this.textCol1 = value;
-    }
-
-    /**
-     * Gets the value of the textCol2 property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextCol2()
-    {
-      return textCol2;
-    }
-
-    /**
-     * Sets the value of the textCol2 property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol2(Integer value)
-    {
-      this.textCol2 = value;
-    }
-
-    /**
-     * Gets the value of the textColThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextColThreshold()
-    {
-      return textColThreshold;
-    }
-
-    /**
-     * Sets the value of the textColThreshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextColThreshold(Integer value)
-    {
-      this.textColThreshold = value;
-    }
-
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
-
-    /**
-     * Gets the value of the complementId property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getComplementId()
-    {
-      return complementId;
-    }
-
-    /**
-     * Sets the value of the complementId property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setComplementId(String value)
-    {
-      this.complementId = value;
-    }
-
-    /**
-     * Gets the value of the width property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getWidth()
-    {
-      return width;
-    }
-
-    /**
-     * Sets the value of the width property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setWidth(Integer value)
-    {
-      this.width = value;
-    }
-
-    /**
-     * Gets the value of the height property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getHeight()
-    {
-      return height;
-    }
-
-    /**
-     * Sets the value of the height property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setHeight(Integer value)
-    {
-      this.height = value;
-    }
-
-    /**
-     * Gets the value of the xpos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getXpos()
-    {
-      return xpos;
-    }
-
-    /**
-     * Sets the value of the xpos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setXpos(Integer value)
-    {
-      this.xpos = value;
-    }
-
-    /**
-     * Gets the value of the ypos property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getYpos()
-    {
-      return ypos;
-    }
-
-    /**
-     * Sets the value of the ypos property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setYpos(Integer value)
-    {
-      this.ypos = value;
-    }
-
-    /**
-     * <p>
-     * Java class for anonymous complex type.
-     * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
-     * 
-     * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;extension base="{www.jalview.org/xml/wsparamset}WebServiceParameterSet">
-     *       &lt;attribute name="calcId" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="needsUpdate" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-     *       &lt;attribute name="autoUpdate" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
-     *     &lt;/extension>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
-     * </pre>
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class CalcIdParam extends WebServiceParameterSet
-    {
-
-      @XmlAttribute(name = "calcId", required = true)
-      protected String calcId;
-
-      @XmlAttribute(name = "needsUpdate")
-      protected Boolean needsUpdate;
-
-      @XmlAttribute(name = "autoUpdate", required = true)
-      protected boolean autoUpdate;
-
-      /**
-       * Gets the value of the calcId property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getCalcId()
-      {
-        return calcId;
-      }
-
-      /**
-       * Sets the value of the calcId property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setCalcId(String value)
-      {
-        this.calcId = value;
-      }
-
-      /**
-       * Gets the value of the needsUpdate property.
-       * 
-       * @return possible object is {@link Boolean }
-       * 
-       */
-      public boolean isNeedsUpdate()
-      {
-        if (needsUpdate == null)
-        {
-          return false;
-        }
-        else
-        {
-          return needsUpdate;
-        }
-      }
-
-      /**
-       * Sets the value of the needsUpdate property.
-       * 
-       * @param value
-       *          allowed object is {@link Boolean }
-       * 
-       */
-      public void setNeedsUpdate(Boolean value)
-      {
-        this.needsUpdate = value;
-      }
-
-      /**
-       * Gets the value of the autoUpdate property.
-       * 
-       */
-      public boolean isAutoUpdate()
-      {
-        return autoUpdate;
-      }
-
-      /**
-       * Sets the value of the autoUpdate property.
-       * 
-       */
-      public void setAutoUpdate(boolean value)
-      {
-        this.autoUpdate = value;
-      }
-
-    }
-
-    /**
-     * <p>
-     * Java class for anonymous complex type.
-     * 
-     * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
-     * 
-     * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;attribute name="start" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *       &lt;attribute name="end" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
-     * </pre>
-     * 
-     * 
-     */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class HiddenColumns
-    {
-
-      @XmlAttribute(name = "start")
-      protected Integer start;
-
-      @XmlAttribute(name = "end")
-      protected Integer end;
-
-      /**
-       * Gets the value of the start property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getStart()
-      {
-        return start;
-      }
-
-      /**
-       * Sets the value of the start property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setStart(Integer value)
-      {
-        this.start = value;
-      }
-
-      /**
-       * Gets the value of the end property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getEnd()
-      {
-        return end;
-      }
-
-      /**
-       * Sets the value of the end property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setEnd(Integer value)
-      {
-        this.end = value;
-      }
-
-    }
-
-  }
-
-}
index be68266..21abacb 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,585 +16,597 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for JalviewUserColours complex type.
+ * <p>Java class for JalviewUserColours complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="JalviewUserColours"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="Version"
- * type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="colour" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="attributeName"
- * type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2"
- * minOccurs="0"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;attribute
- * name="Name" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="RGB" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="minRGB" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="noValueColour"
- * type="{www.jalview.org/colours}NoValueColour" default="Min" /&amp;gt;
- * &amp;lt;attribute name="threshType"
- * type="{www.jalview.org/colours}ThresholdType" /&amp;gt; &amp;lt;attribute
- * name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
- * &amp;lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float"
- * /&amp;gt; &amp;lt;attribute name="min"
- * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
- * name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean"
- * /&amp;gt; &amp;lt;attribute name="autoScale"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="filter" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="matcherSet"
- * type="{www.jalview.org/colours}FeatureMatcherSet"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="featureType" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="schemeName"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="JalviewUserColours">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="Version" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="colour" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
+ *                 &lt;/sequence>
+ *                 &lt;attribute name="Name" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="RGB" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="minRGB" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
+ *                 &lt;attribute name="threshType" type="{www.jalview.org/colours}ThresholdType" />
+ *                 &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                 &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                 &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
+ *                 &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *                 &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="filter" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet"/>
+ *                 &lt;/sequence>
+ *                 &lt;attribute name="featureType" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="schemeName" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "JalviewUserColours",
-  namespace = "www.jalview.org/colours",
-  propOrder =
-  { "version", "colour", "filter" })
-public class JalviewUserColours
-{
-
-  @XmlElement(name = "Version", namespace = "")
-  protected String version;
-
-  @XmlElement(namespace = "")
-  protected List<JalviewUserColours.Colour> colour;
-
-  @XmlElement(namespace = "")
-  protected List<JalviewUserColours.Filter> filter;
-
-  @XmlAttribute(name = "schemeName")
-  protected String schemeName;
-
-  /**
-   * Gets the value of the version property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getVersion()
-  {
-    return version;
-  }
-
-  /**
-   * Sets the value of the version property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setVersion(String value)
-  {
-    this.version = value;
-  }
-
-  /**
-   * Gets the value of the colour property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the colour property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getColour().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewUserColours.Colour }
-   * 
-   * 
-   */
-  public List<JalviewUserColours.Colour> getColour()
-  {
-    if (colour == null)
-    {
-      colour = new ArrayList<JalviewUserColours.Colour>();
-    }
-    return this.colour;
-  }
-
-  /**
-   * Gets the value of the filter property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the filter property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getFilter().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link JalviewUserColours.Filter }
-   * 
-   * 
-   */
-  public List<JalviewUserColours.Filter> getFilter()
-  {
-    if (filter == null)
-    {
-      filter = new ArrayList<JalviewUserColours.Filter>();
-    }
-    return this.filter;
-  }
-
-  /**
-   * Gets the value of the schemeName property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getSchemeName()
-  {
-    return schemeName;
-  }
-
-  /**
-   * Sets the value of the schemeName property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setSchemeName(String value)
-  {
-    this.schemeName = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="attributeName"
-   * type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2"
-   * minOccurs="0"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;attribute
-   * name="Name" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="RGB" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="minRGB" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="noValueColour"
-   * type="{www.jalview.org/colours}NoValueColour" default="Min" /&amp;gt;
-   * &amp;lt;attribute name="threshType"
-   * type="{www.jalview.org/colours}ThresholdType" /&amp;gt; &amp;lt;attribute
-   * name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt;
-   * &amp;lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float"
-   * /&amp;gt; &amp;lt;attribute name="min"
-   * type="{http://www.w3.org/2001/XMLSchema}float" /&amp;gt; &amp;lt;attribute
-   * name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * /&amp;gt; &amp;lt;attribute name="autoScale"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "attributeName" })
-  public static class Colour
-  {
-
+@XmlType(name = "JalviewUserColours", namespace = "www.jalview.org/colours", propOrder = {
+    "version",
+    "colour",
+    "filter"
+})
+public class JalviewUserColours {
+
+    @XmlElement(name = "Version", namespace = "")
+    protected String version;
     @XmlElement(namespace = "")
-    protected List<String> attributeName;
-
-    @XmlAttribute(name = "Name")
-    protected String name;
-
-    @XmlAttribute(name = "RGB", required = true)
-    protected String rgb;
-
-    @XmlAttribute(name = "minRGB")
-    protected String minRGB;
-
-    @XmlAttribute(name = "noValueColour")
-    protected NoValueColour noValueColour;
-
-    @XmlAttribute(name = "threshType")
-    protected ThresholdType threshType;
-
-    @XmlAttribute(name = "threshold")
-    protected Float threshold;
-
-    @XmlAttribute(name = "max")
-    protected Float max;
-
-    @XmlAttribute(name = "min")
-    protected Float min;
-
-    @XmlAttribute(name = "colourByLabel")
-    protected Boolean colourByLabel;
-
-    @XmlAttribute(name = "autoScale")
-    protected Boolean autoScale;
-
-    /**
-     * Gets the value of the attributeName property.
-     * 
-     * &lt;p&gt; This accessor method returns a reference to the live list, not
-     * a snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * &lt;CODE&gt;set&lt;/CODE&gt; method for the attributeName property.
-     * 
-     * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-     * getAttributeName().add(newItem); &lt;/pre&gt;
-     * 
-     * 
-     * &lt;p&gt; Objects of the following type(s) are allowed in the list
-     * {@link String }
-     * 
-     * 
-     */
-    public List<String> getAttributeName()
-    {
-      if (attributeName == null)
-      {
-        attributeName = new ArrayList<String>();
-      }
-      return this.attributeName;
-    }
-
-    /**
-     * Gets the value of the name property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getName()
-    {
-      return name;
-    }
-
-    /**
-     * Sets the value of the name property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setName(String value)
-    {
-      this.name = value;
-    }
-
-    /**
-     * Gets the value of the rgb property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getRGB()
-    {
-      return rgb;
-    }
-
-    /**
-     * Sets the value of the rgb property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setRGB(String value)
-    {
-      this.rgb = value;
-    }
-
-    /**
-     * Gets the value of the minRGB property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getMinRGB()
-    {
-      return minRGB;
-    }
-
-    /**
-     * Sets the value of the minRGB property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setMinRGB(String value)
-    {
-      this.minRGB = value;
-    }
+    protected List<JalviewUserColours.Colour> colour;
+    @XmlElement(namespace = "")
+    protected List<JalviewUserColours.Filter> filter;
+    @XmlAttribute(name = "schemeName")
+    protected String schemeName;
 
     /**
-     * Gets the value of the noValueColour property.
-     * 
-     * @return possible object is {@link NoValueColour }
+     * Gets the value of the version property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public NoValueColour getNoValueColour()
-    {
-      if (noValueColour == null)
-      {
-        return NoValueColour.MIN;
-      }
-      else
-      {
-        return noValueColour;
-      }
+    public String getVersion() {
+        return version;
     }
 
     /**
-     * Sets the value of the noValueColour property.
+     * Sets the value of the version property.
      * 
      * @param value
-     *          allowed object is {@link NoValueColour }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setNoValueColour(NoValueColour value)
-    {
-      this.noValueColour = value;
+    public void setVersion(String value) {
+        this.version = value;
     }
 
     /**
-     * Gets the value of the threshType property.
+     * Gets the value of the colour property.
      * 
-     * @return possible object is {@link ThresholdType }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the colour property.
      * 
-     */
-    public ThresholdType getThreshType()
-    {
-      return threshType;
-    }
-
-    /**
-     * Sets the value of the threshType property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getColour().add(newItem);
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link ThresholdType }
      * 
-     */
-    public void setThreshType(ThresholdType value)
-    {
-      this.threshType = value;
-    }
-
-    /**
-     * Gets the value of the threshold property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewUserColours.Colour }
      * 
-     * @return possible object is {@link Float }
      * 
      */
-    public Float getThreshold()
-    {
-      return threshold;
+    public List<JalviewUserColours.Colour> getColour() {
+        if (colour == null) {
+            colour = new ArrayList<JalviewUserColours.Colour>();
+        }
+        return this.colour;
     }
 
     /**
-     * Sets the value of the threshold property.
+     * Gets the value of the filter property.
      * 
-     * @param value
-     *          allowed object is {@link Float }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the filter property.
      * 
-     */
-    public void setThreshold(Float value)
-    {
-      this.threshold = value;
-    }
-
-    /**
-     * Gets the value of the max property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getFilter().add(newItem);
+     * </pre>
      * 
-     * @return possible object is {@link Float }
      * 
-     */
-    public Float getMax()
-    {
-      return max;
-    }
-
-    /**
-     * Sets the value of the max property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewUserColours.Filter }
      * 
-     * @param value
-     *          allowed object is {@link Float }
      * 
      */
-    public void setMax(Float value)
-    {
-      this.max = value;
+    public List<JalviewUserColours.Filter> getFilter() {
+        if (filter == null) {
+            filter = new ArrayList<JalviewUserColours.Filter>();
+        }
+        return this.filter;
     }
 
     /**
-     * Gets the value of the min property.
-     * 
-     * @return possible object is {@link Float }
+     * Gets the value of the schemeName property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public Float getMin()
-    {
-      return min;
+    public String getSchemeName() {
+        return schemeName;
     }
 
     /**
-     * Sets the value of the min property.
+     * Sets the value of the schemeName property.
      * 
      * @param value
-     *          allowed object is {@link Float }
-     * 
-     */
-    public void setMin(Float value)
-    {
-      this.min = value;
-    }
-
-    /**
-     * Gets the value of the colourByLabel property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public Boolean isColourByLabel()
-    {
-      return colourByLabel;
+    public void setSchemeName(String value) {
+        this.schemeName = value;
     }
 
-    /**
-     * Sets the value of the colourByLabel property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setColourByLabel(Boolean value)
-    {
-      this.colourByLabel = value;
-    }
 
     /**
-     * Gets the value of the autoScale property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="attributeName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="2" minOccurs="0"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="Name" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="RGB" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="minRGB" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="noValueColour" type="{www.jalview.org/colours}NoValueColour" default="Min" />
+     *       &lt;attribute name="threshType" type="{www.jalview.org/colours}ThresholdType" />
+     *       &lt;attribute name="threshold" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *       &lt;attribute name="max" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *       &lt;attribute name="min" type="{http://www.w3.org/2001/XMLSchema}float" />
+     *       &lt;attribute name="colourByLabel" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *       &lt;attribute name="autoScale" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @return possible object is {@link Boolean }
      * 
      */
-    public Boolean isAutoScale()
-    {
-      return autoScale;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "attributeName"
+    })
+    public static class Colour {
+
+        @XmlElement(namespace = "")
+        protected List<String> attributeName;
+        @XmlAttribute(name = "Name")
+        protected String name;
+        @XmlAttribute(name = "RGB", required = true)
+        protected String rgb;
+        @XmlAttribute(name = "minRGB")
+        protected String minRGB;
+        @XmlAttribute(name = "noValueColour")
+        protected NoValueColour noValueColour;
+        @XmlAttribute(name = "threshType")
+        protected ThresholdType threshType;
+        @XmlAttribute(name = "threshold")
+        protected Float threshold;
+        @XmlAttribute(name = "max")
+        protected Float max;
+        @XmlAttribute(name = "min")
+        protected Float min;
+        @XmlAttribute(name = "colourByLabel")
+        protected Boolean colourByLabel;
+        @XmlAttribute(name = "autoScale")
+        protected Boolean autoScale;
+
+        /**
+         * Gets the value of the attributeName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the attributeName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getAttributeName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link String }
+         * 
+         * 
+         */
+        public List<String> getAttributeName() {
+            if (attributeName == null) {
+                attributeName = new ArrayList<String>();
+            }
+            return this.attributeName;
+        }
+
+        /**
+         * Gets the value of the name property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * Sets the value of the name property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setName(String value) {
+            this.name = value;
+        }
+
+        /**
+         * Gets the value of the rgb property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getRGB() {
+            return rgb;
+        }
+
+        /**
+         * Sets the value of the rgb property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setRGB(String value) {
+            this.rgb = value;
+        }
+
+        /**
+         * Gets the value of the minRGB property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getMinRGB() {
+            return minRGB;
+        }
+
+        /**
+         * Sets the value of the minRGB property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setMinRGB(String value) {
+            this.minRGB = value;
+        }
+
+        /**
+         * Gets the value of the noValueColour property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link NoValueColour }
+         *     
+         */
+        public NoValueColour getNoValueColour() {
+            if (noValueColour == null) {
+                return NoValueColour.MIN;
+            } else {
+                return noValueColour;
+            }
+        }
+
+        /**
+         * Sets the value of the noValueColour property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link NoValueColour }
+         *     
+         */
+        public void setNoValueColour(NoValueColour value) {
+            this.noValueColour = value;
+        }
+
+        /**
+         * Gets the value of the threshType property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link ThresholdType }
+         *     
+         */
+        public ThresholdType getThreshType() {
+            return threshType;
+        }
+
+        /**
+         * Sets the value of the threshType property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link ThresholdType }
+         *     
+         */
+        public void setThreshType(ThresholdType value) {
+            this.threshType = value;
+        }
+
+        /**
+         * Gets the value of the threshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getThreshold() {
+            return threshold;
+        }
+
+        /**
+         * Sets the value of the threshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setThreshold(Float value) {
+            this.threshold = value;
+        }
+
+        /**
+         * Gets the value of the max property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getMax() {
+            return max;
+        }
+
+        /**
+         * Sets the value of the max property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setMax(Float value) {
+            this.max = value;
+        }
+
+        /**
+         * Gets the value of the min property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getMin() {
+            return min;
+        }
+
+        /**
+         * Sets the value of the min property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setMin(Float value) {
+            this.min = value;
+        }
+
+        /**
+         * Gets the value of the colourByLabel property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isColourByLabel() {
+            return colourByLabel;
+        }
+
+        /**
+         * Sets the value of the colourByLabel property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setColourByLabel(Boolean value) {
+            this.colourByLabel = value;
+        }
+
+        /**
+         * Gets the value of the autoScale property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isAutoScale() {
+            return autoScale;
+        }
+
+        /**
+         * Sets the value of the autoScale property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setAutoScale(Boolean value) {
+            this.autoScale = value;
+        }
 
-    /**
-     * Sets the value of the autoScale property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setAutoScale(Boolean value)
-    {
-      this.autoScale = value;
     }
 
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element name="matcherSet"
-   * type="{www.jalview.org/colours}FeatureMatcherSet"/&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="featureType"
-   * use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "matcherSet" })
-  public static class Filter
-  {
-
-    @XmlElement(namespace = "", required = true)
-    protected FeatureMatcherSet matcherSet;
-
-    @XmlAttribute(name = "featureType", required = true)
-    protected String featureType;
 
     /**
-     * Gets the value of the matcherSet property.
+     * <p>Java class for anonymous complex type.
      * 
-     * @return possible object is {@link FeatureMatcherSet }
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public FeatureMatcherSet getMatcherSet()
-    {
-      return matcherSet;
-    }
-
-    /**
-     * Sets the value of the matcherSet property.
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="matcherSet" type="{www.jalview.org/colours}FeatureMatcherSet"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="featureType" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link FeatureMatcherSet }
      * 
      */
-    public void setMatcherSet(FeatureMatcherSet value)
-    {
-      this.matcherSet = value;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "matcherSet"
+    })
+    public static class Filter {
+
+        @XmlElement(namespace = "", required = true)
+        protected FeatureMatcherSet matcherSet;
+        @XmlAttribute(name = "featureType", required = true)
+        protected String featureType;
+
+        /**
+         * Gets the value of the matcherSet property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link FeatureMatcherSet }
+         *     
+         */
+        public FeatureMatcherSet getMatcherSet() {
+            return matcherSet;
+        }
+
+        /**
+         * Sets the value of the matcherSet property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link FeatureMatcherSet }
+         *     
+         */
+        public void setMatcherSet(FeatureMatcherSet value) {
+            this.matcherSet = value;
+        }
+
+        /**
+         * Gets the value of the featureType property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFeatureType() {
+            return featureType;
+        }
+
+        /**
+         * Sets the value of the featureType property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFeatureType(String value) {
+            this.featureType = value;
+        }
 
-    /**
-     * Gets the value of the featureType property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFeatureType()
-    {
-      return featureType;
     }
 
-    /**
-     * Sets the value of the featureType property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setFeatureType(String value)
-    {
-      this.featureType = value;
-    }
-
-  }
-
 }
index edc69b4..99c5b4b 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.math.BigInteger;
@@ -17,291 +18,298 @@ import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * 
- * This effectively represents a java.util.MapList object
+ *                             This effectively represents a java.util.MapList object
+ *                     
  * 
+ * <p>Java class for mapListType complex type.
  * 
- * &lt;p&gt;Java class for mapListType complex type.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
- * 
- * &lt;pre&gt; &amp;lt;complexType name="mapListType"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="mapListFrom"
- * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;attribute name="end" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * name="mapListTo" maxOccurs="unbounded" minOccurs="0"&amp;gt;
- * &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;attribute name="start" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt; &amp;lt;attribute
- * name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
- * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="mapFromUnit" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}positiveInteger" /&amp;gt;
- * &amp;lt;attribute name="mapToUnit" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}positiveInteger" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="mapListType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="mapListFrom" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                 &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element name="mapListTo" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *                 &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="mapFromUnit" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ *       &lt;attribute name="mapToUnit" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "mapListType", propOrder = { "mapListFrom", "mapListTo" })
-@XmlSeeAlso({ Mapping.class })
-public class MapListType
-{
-
-  protected List<MapListType.MapListFrom> mapListFrom;
-
-  protected List<MapListType.MapListTo> mapListTo;
-
-  @XmlAttribute(name = "mapFromUnit", required = true)
-  @XmlSchemaType(name = "positiveInteger")
-  protected BigInteger mapFromUnit;
-
-  @XmlAttribute(name = "mapToUnit", required = true)
-  @XmlSchemaType(name = "positiveInteger")
-  protected BigInteger mapToUnit;
-
-  /**
-   * Gets the value of the mapListFrom property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the mapListFrom property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getMapListFrom().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link MapListType.MapListFrom }
-   * 
-   * 
-   */
-  public List<MapListType.MapListFrom> getMapListFrom()
-  {
-    if (mapListFrom == null)
-    {
-      mapListFrom = new ArrayList<MapListType.MapListFrom>();
-    }
-    return this.mapListFrom;
-  }
-
-  /**
-   * Gets the value of the mapListTo property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the mapListTo property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getMapListTo().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link MapListType.MapListTo }
-   * 
-   * 
-   */
-  public List<MapListType.MapListTo> getMapListTo()
-  {
-    if (mapListTo == null)
-    {
-      mapListTo = new ArrayList<MapListType.MapListTo>();
-    }
-    return this.mapListTo;
-  }
-
-  /**
-   * Gets the value of the mapFromUnit property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getMapFromUnit()
-  {
-    return mapFromUnit;
-  }
-
-  /**
-   * Sets the value of the mapFromUnit property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setMapFromUnit(BigInteger value)
-  {
-    this.mapFromUnit = value;
-  }
+@XmlType(name = "mapListType", propOrder = {
+    "mapListFrom",
+    "mapListTo"
+})
+@XmlSeeAlso({
+    Mapping.class
+})
+public class MapListType {
 
-  /**
-   * Gets the value of the mapToUnit property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getMapToUnit()
-  {
-    return mapToUnit;
-  }
-
-  /**
-   * Sets the value of the mapToUnit property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setMapToUnit(BigInteger value)
-  {
-    this.mapToUnit = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
-   * /&amp;gt; &amp;lt;attribute name="end" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class MapListFrom
-  {
-
-    @XmlAttribute(name = "start", required = true)
-    protected int start;
-
-    @XmlAttribute(name = "end", required = true)
-    protected int end;
+    protected List<MapListType.MapListFrom> mapListFrom;
+    protected List<MapListType.MapListTo> mapListTo;
+    @XmlAttribute(name = "mapFromUnit", required = true)
+    @XmlSchemaType(name = "positiveInteger")
+    protected BigInteger mapFromUnit;
+    @XmlAttribute(name = "mapToUnit", required = true)
+    @XmlSchemaType(name = "positiveInteger")
+    protected BigInteger mapToUnit;
 
     /**
-     * Gets the value of the start property.
+     * Gets the value of the mapListFrom property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the mapListFrom property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMapListFrom().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MapListType.MapListFrom }
+     * 
      * 
      */
-    public int getStart()
-    {
-      return start;
+    public List<MapListType.MapListFrom> getMapListFrom() {
+        if (mapListFrom == null) {
+            mapListFrom = new ArrayList<MapListType.MapListFrom>();
+        }
+        return this.mapListFrom;
     }
 
     /**
-     * Sets the value of the start property.
+     * Gets the value of the mapListTo property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the mapListTo property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getMapListTo().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link MapListType.MapListTo }
+     * 
      * 
      */
-    public void setStart(int value)
-    {
-      this.start = value;
+    public List<MapListType.MapListTo> getMapListTo() {
+        if (mapListTo == null) {
+            mapListTo = new ArrayList<MapListType.MapListTo>();
+        }
+        return this.mapListTo;
     }
 
     /**
-     * Gets the value of the end property.
+     * Gets the value of the mapFromUnit property.
      * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
      */
-    public int getEnd()
-    {
-      return end;
+    public BigInteger getMapFromUnit() {
+        return mapFromUnit;
     }
 
     /**
-     * Sets the value of the end property.
+     * Sets the value of the mapFromUnit property.
      * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
      */
-    public void setEnd(int value)
-    {
-      this.end = value;
+    public void setMapFromUnit(BigInteger value) {
+        this.mapFromUnit = value;
     }
 
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int"
-   * /&amp;gt; &amp;lt;attribute name="end" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class MapListTo
-  {
-
-    @XmlAttribute(name = "start", required = true)
-    protected int start;
-
-    @XmlAttribute(name = "end", required = true)
-    protected int end;
-
     /**
-     * Gets the value of the start property.
+     * Gets the value of the mapToUnit property.
      * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
      */
-    public int getStart()
-    {
-      return start;
+    public BigInteger getMapToUnit() {
+        return mapToUnit;
     }
 
     /**
-     * Sets the value of the start property.
+     * Sets the value of the mapToUnit property.
      * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
      */
-    public void setStart(int value)
-    {
-      this.start = value;
+    public void setMapToUnit(BigInteger value) {
+        this.mapToUnit = value;
     }
 
+
     /**
-     * Gets the value of the end property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
      * 
      */
-    public int getEnd()
-    {
-      return end;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class MapListFrom {
+
+        @XmlAttribute(name = "start", required = true)
+        protected int start;
+        @XmlAttribute(name = "end", required = true)
+        protected int end;
+
+        /**
+         * Gets the value of the start property.
+         * 
+         */
+        public int getStart() {
+            return start;
+        }
+
+        /**
+         * Sets the value of the start property.
+         * 
+         */
+        public void setStart(int value) {
+            this.start = value;
+        }
+
+        /**
+         * Gets the value of the end property.
+         * 
+         */
+        public int getEnd() {
+            return end;
+        }
+
+        /**
+         * Sets the value of the end property.
+         * 
+         */
+        public void setEnd(int value) {
+            this.end = value;
+        }
+
     }
 
+
     /**
-     * Sets the value of the end property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="start" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *       &lt;attribute name="end" use="required" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
      * 
      */
-    public void setEnd(int value)
-    {
-      this.end = value;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class MapListTo {
 
-  }
+        @XmlAttribute(name = "start", required = true)
+        protected int start;
+        @XmlAttribute(name = "end", required = true)
+        protected int end;
+
+        /**
+         * Gets the value of the start property.
+         * 
+         */
+        public int getStart() {
+            return start;
+        }
+
+        /**
+         * Sets the value of the start property.
+         * 
+         */
+        public void setStart(int value) {
+            this.start = value;
+        }
+
+        /**
+         * Gets the value of the end property.
+         * 
+         */
+        public int getEnd() {
+            return end;
+        }
+
+        /**
+         * Sets the value of the end property.
+         * 
+         */
+        public void setEnd(int value) {
+            this.end = value;
+        }
+
+    }
 
 }
index d79bdee..e898ca2 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -14,115 +15,127 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * 
- * Represent the jalview.datamodel.Mapping object - it also provides a way of
- * storing sequences that are mapped 'to' without adding them to the sequence
- * set (which will mean they are then added to the alignment too).
- * 
+ *                                     Represent the jalview.datamodel.Mapping object - it also provides
+ *                                     a way of storing sequences that are mapped 'to' without adding them
+ *                                     to the sequence set (which will mean they are then added to the alignment too).
+ *                             
  * 
- * &lt;p&gt;Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;extension
- * base="{www.vamsas.ac.uk/jalview/version2}mapListType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;choice minOccurs="0"&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}Sequence"/&amp;gt; &amp;lt;element
- * name="dseqFor"&amp;gt; &amp;lt;simpleType&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}string"&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/simpleType&amp;gt;
- * &amp;lt;/element&amp;gt; &amp;lt;/choice&amp;gt; &amp;lt;/sequence&amp;gt;
- * &amp;lt;attribute name="mappingType"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/extension&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;extension base="{www.vamsas.ac.uk/jalview/version2}mapListType">
+ *       &lt;sequence>
+ *         &lt;choice minOccurs="0">
+ *           &lt;element ref="{www.vamsas.ac.uk/jalview/version2}Sequence"/>
+ *           &lt;element name="dseqFor">
+ *             &lt;simpleType>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *               &lt;/restriction>
+ *             &lt;/simpleType>
+ *           &lt;/element>
+ *         &lt;/choice>
+ *       &lt;/sequence>
+ *       &lt;attribute name="mappingType" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "", propOrder = { "sequence", "dseqFor" })
+@XmlType(name = "", propOrder = {
+    "sequence",
+    "dseqFor"
+})
 @XmlRootElement(name = "Mapping")
-public class Mapping extends MapListType
+public class Mapping
+    extends MapListType
 {
 
-  @XmlElement(name = "Sequence")
-  protected Sequence sequence;
-
-  protected String dseqFor;
-
-  @XmlAttribute(name = "mappingType")
-  protected String mappingType;
+    @XmlElement(name = "Sequence")
+    protected Sequence sequence;
+    protected String dseqFor;
+    @XmlAttribute(name = "mappingType")
+    protected String mappingType;
 
-  /**
-   * Gets the value of the sequence property.
-   * 
-   * @return possible object is {@link Sequence }
-   * 
-   */
-  public Sequence getSequence()
-  {
-    return sequence;
-  }
+    /**
+     * Gets the value of the sequence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Sequence }
+     *     
+     */
+    public Sequence getSequence() {
+        return sequence;
+    }
 
-  /**
-   * Sets the value of the sequence property.
-   * 
-   * @param value
-   *          allowed object is {@link Sequence }
-   * 
-   */
-  public void setSequence(Sequence value)
-  {
-    this.sequence = value;
-  }
+    /**
+     * Sets the value of the sequence property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Sequence }
+     *     
+     */
+    public void setSequence(Sequence value) {
+        this.sequence = value;
+    }
 
-  /**
-   * Gets the value of the dseqFor property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDseqFor()
-  {
-    return dseqFor;
-  }
+    /**
+     * Gets the value of the dseqFor property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDseqFor() {
+        return dseqFor;
+    }
 
-  /**
-   * Sets the value of the dseqFor property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDseqFor(String value)
-  {
-    this.dseqFor = value;
-  }
+    /**
+     * Sets the value of the dseqFor property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDseqFor(String value) {
+        this.dseqFor = value;
+    }
 
-  /**
-   * Gets the value of the mappingType property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getMappingType()
-  {
-    return mappingType;
-  }
+    /**
+     * Gets the value of the mappingType property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMappingType() {
+        return mappingType;
+    }
 
-  /**
-   * Sets the value of the mappingType property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setMappingType(String value)
-  {
-    this.mappingType = value;
-  }
+    /**
+     * Sets the value of the mappingType property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMappingType(String value) {
+        this.mappingType = value;
+    }
 
 }
index b0d667c..0eb5a86 100644 (file)
@@ -1,60 +1,61 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlEnum;
 import javax.xml.bind.annotation.XmlEnumValue;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for NoValueColour.
+ * <p>Java class for NoValueColour.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class. &lt;pre&gt; &amp;lt;simpleType
- * name="NoValueColour"&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}string"&amp;gt; &amp;lt;enumeration
- * value="None"/&amp;gt; &amp;lt;enumeration value="Min"/&amp;gt;
- * &amp;lt;enumeration value="Max"/&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/simpleType&amp;gt; &lt;/pre&gt;
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="NoValueColour">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="None"/>
+ *     &lt;enumeration value="Min"/>
+ *     &lt;enumeration value="Max"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
  * 
  */
 @XmlType(name = "NoValueColour", namespace = "www.jalview.org/colours")
 @XmlEnum
-public enum NoValueColour
-{
-
-  @XmlEnumValue("None")
-  NONE("None"), @XmlEnumValue("Min")
-  MIN("Min"), @XmlEnumValue("Max")
-  MAX("Max");
-
-  private final String value;
-
-  NoValueColour(String v)
-  {
-    value = v;
-  }
-
-  public String value()
-  {
-    return value;
-  }
-
-  public static NoValueColour fromValue(String v)
-  {
-    for (NoValueColour c : NoValueColour.values())
-    {
-      if (c.value.equals(v))
-      {
-        return c;
-      }
+public enum NoValueColour {
+
+    @XmlEnumValue("None")
+    NONE("None"),
+    @XmlEnumValue("Min")
+    MIN("Min"),
+    @XmlEnumValue("Max")
+    MAX("Max");
+    private final String value;
+
+    NoValueColour(String v) {
+        value = v;
+    }
+
+    public String value() {
+        return value;
+    }
+
+    public static NoValueColour fromValue(String v) {
+        for (NoValueColour c: NoValueColour.values()) {
+            if (c.value.equals(v)) {
+                return c;
+            }
+        }
+        throw new IllegalArgumentException(v);
     }
-    throw new IllegalArgumentException(v);
-  }
 
 }
index 46ae594..8b38877 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.JAXBElement;
@@ -12,560 +13,484 @@ import javax.xml.bind.annotation.XmlElementDecl;
 import javax.xml.bind.annotation.XmlRegistry;
 import javax.xml.namespace.QName;
 
+
 /**
- * This object contains factory methods for each Java content interface and Java
- * element interface generated in the jalview.xml.binding.jalview package.
- * &lt;p&gt;An ObjectFactory allows you to programatically construct new
- * instances of the Java representation for XML content. The Java representation
- * of XML content can consist of schema derived interfaces and classes
- * representing the binding of schema type definitions, element declarations and
- * model groups. Factory methods for each of these are provided in this class.
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the jalview.xml.binding.jalview package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
  * 
  */
 @XmlRegistry
-public class ObjectFactory
-{
-
-  private final static QName _JalviewModel_QNAME = new QName(
-          "www.jalview.org", "JalviewModel");
-
-  private final static QName _JalviewUserColours_QNAME = new QName(
-          "www.jalview.org/colours", "JalviewUserColours");
-
-  private final static QName _WebServiceParameterSet_QNAME = new QName(
-          "www.jalview.org/xml/wsparamset", "WebServiceParameterSet");
-
-  /**
-   * Create a new ObjectFactory that can be used to create new instances of
-   * schema derived classes for package: jalview.xml.binding.jalview
-   * 
-   */
-  public ObjectFactory()
-  {
-  }
-
-  /**
-   * Create an instance of {@link MapListType }
-   * 
-   */
-  public MapListType createMapListType()
-  {
-    return new MapListType();
-  }
-
-  /**
-   * Create an instance of {@link Sequence }
-   * 
-   */
-  public Sequence createSequence()
-  {
-    return new Sequence();
-  }
-
-  /**
-   * Create an instance of {@link AlcodonFrame }
-   * 
-   */
-  public AlcodonFrame createAlcodonFrame()
-  {
-    return new AlcodonFrame();
-  }
-
-  /**
-   * Create an instance of {@link Annotation }
-   * 
-   */
-  public Annotation createAnnotation()
-  {
-    return new Annotation();
-  }
-
-  /**
-   * Create an instance of {@link SequenceSet }
-   * 
-   */
-  public SequenceSet createSequenceSet()
-  {
-    return new SequenceSet();
-  }
-
-  /**
-   * Create an instance of {@link FeatureMatcherSet }
-   * 
-   */
-  public FeatureMatcherSet createFeatureMatcherSet()
-  {
-    return new FeatureMatcherSet();
-  }
-
-  /**
-   * Create an instance of {@link JalviewUserColours }
-   * 
-   */
-  public JalviewUserColours createJalviewUserColours()
-  {
-    return new JalviewUserColours();
-  }
-
-  /**
-   * Create an instance of {@link Pdbentry }
-   * 
-   */
-  public Pdbentry createPdbentry()
-  {
-    return new Pdbentry();
-  }
-
-  /**
-   * Create an instance of {@link Feature }
-   * 
-   */
-  public Feature createFeature()
-  {
-    return new Feature();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel }
-   * 
-   */
-  public JalviewModel createJalviewModel()
-  {
-    return new JalviewModel();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.FeatureSettings }
-   * 
-   */
-  public JalviewModel.FeatureSettings createJalviewModelFeatureSettings()
-  {
-    return new JalviewModel.FeatureSettings();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.PcaViewer }
-   * 
-   */
-  public JalviewModel.PcaViewer createJalviewModelPcaViewer()
-  {
-    return new JalviewModel.PcaViewer();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.Viewport }
-   * 
-   */
-  public JalviewModel.Viewport createJalviewModelViewport()
-  {
-    return new JalviewModel.Viewport();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.JSeq }
-   * 
-   */
-  public JalviewModel.JSeq createJalviewModelJSeq()
-  {
-    return new JalviewModel.JSeq();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.JSeq.RnaViewer }
-   * 
-   */
-  public JalviewModel.JSeq.RnaViewer createJalviewModelJSeqRnaViewer()
-  {
-    return new JalviewModel.JSeq.RnaViewer();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.JSeq.Pdbids }
-   * 
-   */
-  public JalviewModel.JSeq.Pdbids createJalviewModelJSeqPdbids()
-  {
-    return new JalviewModel.JSeq.Pdbids();
-  }
-
-  /**
-   * Create an instance of {@link AnnotationColourScheme }
-   * 
-   */
-  public AnnotationColourScheme createAnnotationColourScheme()
-  {
-    return new AnnotationColourScheme();
-  }
-
-  /**
-   * Create an instance of {@link PcaDataType }
-   * 
-   */
-  public PcaDataType createPcaDataType()
-  {
-    return new PcaDataType();
-  }
-
-  /**
-   * Create an instance of {@link DoubleVector }
-   * 
-   */
-  public DoubleVector createDoubleVector()
-  {
-    return new DoubleVector();
-  }
-
-  /**
-   * Create an instance of {@link DoubleMatrix }
-   * 
-   */
-  public DoubleMatrix createDoubleMatrix()
-  {
-    return new DoubleMatrix();
-  }
-
-  /**
-   * Create an instance of {@link Mapping }
-   * 
-   */
-  public Mapping createMapping()
-  {
-    return new Mapping();
-  }
-
-  /**
-   * Create an instance of {@link MapListType.MapListFrom }
-   * 
-   */
-  public MapListType.MapListFrom createMapListTypeMapListFrom()
-  {
-    return new MapListType.MapListFrom();
-  }
-
-  /**
-   * Create an instance of {@link MapListType.MapListTo }
-   * 
-   */
-  public MapListType.MapListTo createMapListTypeMapListTo()
-  {
-    return new MapListType.MapListTo();
-  }
-
-  /**
-   * Create an instance of {@link SequenceType }
-   * 
-   */
-  public SequenceType createSequenceType()
-  {
-    return new SequenceType();
-  }
-
-  /**
-   * Create an instance of {@link Sequence.DBRef }
-   * 
-   */
-  public Sequence.DBRef createSequenceDBRef()
-  {
-    return new Sequence.DBRef();
-  }
-
-  /**
-   * Create an instance of {@link AlcodonFrame.Alcodon }
-   * 
-   */
-  public AlcodonFrame.Alcodon createAlcodonFrameAlcodon()
-  {
-    return new AlcodonFrame.Alcodon();
-  }
-
-  /**
-   * Create an instance of {@link AlcodonFrame.AlcodMap }
-   * 
-   */
-  public AlcodonFrame.AlcodMap createAlcodonFrameAlcodMap()
-  {
-    return new AlcodonFrame.AlcodMap();
-  }
-
-  /**
-   * Create an instance of {@link AnnotationElement }
-   * 
-   */
-  public AnnotationElement createAnnotationElement()
-  {
-    return new AnnotationElement();
-  }
-
-  /**
-   * Create an instance of {@link Annotation.ThresholdLine }
-   * 
-   */
-  public Annotation.ThresholdLine createAnnotationThresholdLine()
-  {
-    return new Annotation.ThresholdLine();
-  }
-
-  /**
-   * Create an instance of {@link Annotation.Property }
-   * 
-   */
-  public Annotation.Property createAnnotationProperty()
-  {
-    return new Annotation.Property();
-  }
-
-  /**
-   * Create an instance of {@link SequenceSet.SequenceSetProperties }
-   * 
-   */
-  public SequenceSet.SequenceSetProperties createSequenceSetSequenceSetProperties()
-  {
-    return new SequenceSet.SequenceSetProperties();
-  }
-
-  /**
-   * Create an instance of {@link VAMSAS }
-   * 
-   */
-  public VAMSAS createVAMSAS()
-  {
-    return new VAMSAS();
-  }
-
-  /**
-   * Create an instance of {@link FeatureMatcher }
-   * 
-   */
-  public FeatureMatcher createFeatureMatcher()
-  {
-    return new FeatureMatcher();
-  }
-
-  /**
-   * Create an instance of {@link WebServiceParameterSet }
-   * 
-   */
-  public WebServiceParameterSet createWebServiceParameterSet()
-  {
-    return new WebServiceParameterSet();
-  }
-
-  /**
-   * Create an instance of {@link FeatureMatcherSet.CompoundMatcher }
-   * 
-   */
-  public FeatureMatcherSet.CompoundMatcher createFeatureMatcherSetCompoundMatcher()
-  {
-    return new FeatureMatcherSet.CompoundMatcher();
-  }
-
-  /**
-   * Create an instance of {@link JalviewUserColours.Colour }
-   * 
-   */
-  public JalviewUserColours.Colour createJalviewUserColoursColour()
-  {
-    return new JalviewUserColours.Colour();
-  }
-
-  /**
-   * Create an instance of {@link JalviewUserColours.Filter }
-   * 
-   */
-  public JalviewUserColours.Filter createJalviewUserColoursFilter()
-  {
-    return new JalviewUserColours.Filter();
-  }
-
-  /**
-   * Create an instance of {@link Pdbentry.Property }
-   * 
-   */
-  public Pdbentry.Property createPdbentryProperty()
-  {
-    return new Pdbentry.Property();
-  }
-
-  /**
-   * Create an instance of {@link Feature.OtherData }
-   * 
-   */
-  public Feature.OtherData createFeatureOtherData()
-  {
-    return new Feature.OtherData();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.JGroup }
-   * 
-   */
-  public JalviewModel.JGroup createJalviewModelJGroup()
-  {
-    return new JalviewModel.JGroup();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.UserColours }
-   * 
-   */
-  public JalviewModel.UserColours createJalviewModelUserColours()
-  {
-    return new JalviewModel.UserColours();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.Tree }
-   * 
-   */
-  public JalviewModel.Tree createJalviewModelTree()
-  {
-    return new JalviewModel.Tree();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.FeatureSettings.Setting }
-   * 
-   */
-  public JalviewModel.FeatureSettings.Setting createJalviewModelFeatureSettingsSetting()
-  {
-    return new JalviewModel.FeatureSettings.Setting();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.FeatureSettings.Group }
-   * 
-   */
-  public JalviewModel.FeatureSettings.Group createJalviewModelFeatureSettingsGroup()
-  {
-    return new JalviewModel.FeatureSettings.Group();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.PcaViewer.SequencePoint }
-   * 
-   */
-  public JalviewModel.PcaViewer.SequencePoint createJalviewModelPcaViewerSequencePoint()
-  {
-    return new JalviewModel.PcaViewer.SequencePoint();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.PcaViewer.Axis }
-   * 
-   */
-  public JalviewModel.PcaViewer.Axis createJalviewModelPcaViewerAxis()
-  {
-    return new JalviewModel.PcaViewer.Axis();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.PcaViewer.SeqPointMin }
-   * 
-   */
-  public JalviewModel.PcaViewer.SeqPointMin createJalviewModelPcaViewerSeqPointMin()
-  {
-    return new JalviewModel.PcaViewer.SeqPointMin();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.PcaViewer.SeqPointMax }
-   * 
-   */
-  public JalviewModel.PcaViewer.SeqPointMax createJalviewModelPcaViewerSeqPointMax()
-  {
-    return new JalviewModel.PcaViewer.SeqPointMax();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.Viewport.HiddenColumns }
-   * 
-   */
-  public JalviewModel.Viewport.HiddenColumns createJalviewModelViewportHiddenColumns()
-  {
-    return new JalviewModel.Viewport.HiddenColumns();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.Viewport.CalcIdParam }
-   * 
-   */
-  public JalviewModel.Viewport.CalcIdParam createJalviewModelViewportCalcIdParam()
-  {
-    return new JalviewModel.Viewport.CalcIdParam();
-  }
-
-  /**
-   * Create an instance of
-   * {@link JalviewModel.JSeq.RnaViewer.SecondaryStructure }
-   * 
-   */
-  public JalviewModel.JSeq.RnaViewer.SecondaryStructure createJalviewModelJSeqRnaViewerSecondaryStructure()
-  {
-    return new JalviewModel.JSeq.RnaViewer.SecondaryStructure();
-  }
-
-  /**
-   * Create an instance of {@link JalviewModel.JSeq.Pdbids.StructureState }
-   * 
-   */
-  public JalviewModel.JSeq.Pdbids.StructureState createJalviewModelJSeqPdbidsStructureState()
-  {
-    return new JalviewModel.JSeq.Pdbids.StructureState();
-  }
-
-  /**
-   * Create an instance of {@link JAXBElement }{@code <}{@link JalviewModel
-   * }{@code >}
-   * 
-   * @param value
-   *          Java instance representing xml element's value.
-   * @return the new instance of {@link JAXBElement
-   *         }{@code <}{@link JalviewModel }{@code >}
-   */
-  @XmlElementDecl(namespace = "www.jalview.org", name = "JalviewModel")
-  public JAXBElement<JalviewModel> createJalviewModel(JalviewModel value)
-  {
-    return new JAXBElement<JalviewModel>(_JalviewModel_QNAME,
-            JalviewModel.class, null, value);
-  }
-
-  /**
-   * Create an instance of {@link JAXBElement
-   * }{@code <}{@link JalviewUserColours }{@code >}
-   * 
-   * @param value
-   *          Java instance representing xml element's value.
-   * @return the new instance of {@link JAXBElement
-   *         }{@code <}{@link JalviewUserColours }{@code >}
-   */
-  @XmlElementDecl(
-    namespace = "www.jalview.org/colours",
-    name = "JalviewUserColours")
-  public JAXBElement<JalviewUserColours> createJalviewUserColours(
-          JalviewUserColours value)
-  {
-    return new JAXBElement<JalviewUserColours>(_JalviewUserColours_QNAME,
-            JalviewUserColours.class, null, value);
-  }
-
-  /**
-   * Create an instance of {@link JAXBElement
-   * }{@code <}{@link WebServiceParameterSet }{@code >}
-   * 
-   * @param value
-   *          Java instance representing xml element's value.
-   * @return the new instance of {@link JAXBElement
-   *         }{@code <}{@link WebServiceParameterSet }{@code >}
-   */
-  @XmlElementDecl(
-    namespace = "www.jalview.org/xml/wsparamset",
-    name = "WebServiceParameterSet")
-  public JAXBElement<WebServiceParameterSet> createWebServiceParameterSet(
-          WebServiceParameterSet value)
-  {
-    return new JAXBElement<WebServiceParameterSet>(
-            _WebServiceParameterSet_QNAME, WebServiceParameterSet.class,
-            null, value);
-  }
+public class ObjectFactory {
+
+    private final static QName _WebServiceParameterSet_QNAME = new QName("www.jalview.org/xml/wsparamset", "WebServiceParameterSet");
+    private final static QName _JalviewModel_QNAME = new QName("www.jalview.org", "JalviewModel");
+    private final static QName _JalviewUserColours_QNAME = new QName("www.jalview.org/colours", "JalviewUserColours");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: jalview.xml.binding.jalview
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link AlcodonFrame }
+     * 
+     */
+    public AlcodonFrame createAlcodonFrame() {
+        return new AlcodonFrame();
+    }
+
+    /**
+     * Create an instance of {@link MapListType }
+     * 
+     */
+    public MapListType createMapListType() {
+        return new MapListType();
+    }
+
+    /**
+     * Create an instance of {@link Sequence }
+     * 
+     */
+    public Sequence createSequence() {
+        return new Sequence();
+    }
+
+    /**
+     * Create an instance of {@link Annotation }
+     * 
+     */
+    public Annotation createAnnotation() {
+        return new Annotation();
+    }
+
+    /**
+     * Create an instance of {@link SequenceSet }
+     * 
+     */
+    public SequenceSet createSequenceSet() {
+        return new SequenceSet();
+    }
+
+    /**
+     * Create an instance of {@link FeatureMatcherSet }
+     * 
+     */
+    public FeatureMatcherSet createFeatureMatcherSet() {
+        return new FeatureMatcherSet();
+    }
+
+    /**
+     * Create an instance of {@link JalviewUserColours }
+     * 
+     */
+    public JalviewUserColours createJalviewUserColours() {
+        return new JalviewUserColours();
+    }
+
+    /**
+     * Create an instance of {@link Pdbentry }
+     * 
+     */
+    public Pdbentry createPdbentry() {
+        return new Pdbentry();
+    }
+
+    /**
+     * Create an instance of {@link Feature }
+     * 
+     */
+    public Feature createFeature() {
+        return new Feature();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel }
+     * 
+     */
+    public JalviewModel createJalviewModel() {
+        return new JalviewModel();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.FeatureSettings }
+     * 
+     */
+    public JalviewModel.FeatureSettings createJalviewModelFeatureSettings() {
+        return new JalviewModel.FeatureSettings();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.PcaViewer }
+     * 
+     */
+    public JalviewModel.PcaViewer createJalviewModelPcaViewer() {
+        return new JalviewModel.PcaViewer();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.Viewport }
+     * 
+     */
+    public JalviewModel.Viewport createJalviewModelViewport() {
+        return new JalviewModel.Viewport();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.JSeq }
+     * 
+     */
+    public JalviewModel.JSeq createJalviewModelJSeq() {
+        return new JalviewModel.JSeq();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.JSeq.RnaViewer }
+     * 
+     */
+    public JalviewModel.JSeq.RnaViewer createJalviewModelJSeqRnaViewer() {
+        return new JalviewModel.JSeq.RnaViewer();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.JSeq.Pdbids }
+     * 
+     */
+    public JalviewModel.JSeq.Pdbids createJalviewModelJSeqPdbids() {
+        return new JalviewModel.JSeq.Pdbids();
+    }
+
+    /**
+     * Create an instance of {@link DoubleMatrix }
+     * 
+     */
+    public DoubleMatrix createDoubleMatrix() {
+        return new DoubleMatrix();
+    }
+
+    /**
+     * Create an instance of {@link AnnotationColourScheme }
+     * 
+     */
+    public AnnotationColourScheme createAnnotationColourScheme() {
+        return new AnnotationColourScheme();
+    }
+
+    /**
+     * Create an instance of {@link PcaDataType }
+     * 
+     */
+    public PcaDataType createPcaDataType() {
+        return new PcaDataType();
+    }
+
+    /**
+     * Create an instance of {@link DoubleVector }
+     * 
+     */
+    public DoubleVector createDoubleVector() {
+        return new DoubleVector();
+    }
+
+    /**
+     * Create an instance of {@link AlcodonFrame.Alcodon }
+     * 
+     */
+    public AlcodonFrame.Alcodon createAlcodonFrameAlcodon() {
+        return new AlcodonFrame.Alcodon();
+    }
+
+    /**
+     * Create an instance of {@link AlcodonFrame.AlcodMap }
+     * 
+     */
+    public AlcodonFrame.AlcodMap createAlcodonFrameAlcodMap() {
+        return new AlcodonFrame.AlcodMap();
+    }
+
+    /**
+     * Create an instance of {@link AnnotationElement }
+     * 
+     */
+    public AnnotationElement createAnnotationElement() {
+        return new AnnotationElement();
+    }
+
+    /**
+     * Create an instance of {@link Mapping }
+     * 
+     */
+    public Mapping createMapping() {
+        return new Mapping();
+    }
+
+    /**
+     * Create an instance of {@link MapListType.MapListFrom }
+     * 
+     */
+    public MapListType.MapListFrom createMapListTypeMapListFrom() {
+        return new MapListType.MapListFrom();
+    }
+
+    /**
+     * Create an instance of {@link MapListType.MapListTo }
+     * 
+     */
+    public MapListType.MapListTo createMapListTypeMapListTo() {
+        return new MapListType.MapListTo();
+    }
+
+    /**
+     * Create an instance of {@link SequenceType }
+     * 
+     */
+    public SequenceType createSequenceType() {
+        return new SequenceType();
+    }
+
+    /**
+     * Create an instance of {@link Sequence.DBRef }
+     * 
+     */
+    public Sequence.DBRef createSequenceDBRef() {
+        return new Sequence.DBRef();
+    }
+
+    /**
+     * Create an instance of {@link Annotation.ThresholdLine }
+     * 
+     */
+    public Annotation.ThresholdLine createAnnotationThresholdLine() {
+        return new Annotation.ThresholdLine();
+    }
+
+    /**
+     * Create an instance of {@link Annotation.Property }
+     * 
+     */
+    public Annotation.Property createAnnotationProperty() {
+        return new Annotation.Property();
+    }
+
+    /**
+     * Create an instance of {@link SequenceSet.SequenceSetProperties }
+     * 
+     */
+    public SequenceSet.SequenceSetProperties createSequenceSetSequenceSetProperties() {
+        return new SequenceSet.SequenceSetProperties();
+    }
+
+    /**
+     * Create an instance of {@link VAMSAS }
+     * 
+     */
+    public VAMSAS createVAMSAS() {
+        return new VAMSAS();
+    }
+
+    /**
+     * Create an instance of {@link FeatureMatcher }
+     * 
+     */
+    public FeatureMatcher createFeatureMatcher() {
+        return new FeatureMatcher();
+    }
+
+    /**
+     * Create an instance of {@link WebServiceParameterSet }
+     * 
+     */
+    public WebServiceParameterSet createWebServiceParameterSet() {
+        return new WebServiceParameterSet();
+    }
+
+    /**
+     * Create an instance of {@link FeatureMatcherSet.CompoundMatcher }
+     * 
+     */
+    public FeatureMatcherSet.CompoundMatcher createFeatureMatcherSetCompoundMatcher() {
+        return new FeatureMatcherSet.CompoundMatcher();
+    }
+
+    /**
+     * Create an instance of {@link JalviewUserColours.Colour }
+     * 
+     */
+    public JalviewUserColours.Colour createJalviewUserColoursColour() {
+        return new JalviewUserColours.Colour();
+    }
+
+    /**
+     * Create an instance of {@link JalviewUserColours.Filter }
+     * 
+     */
+    public JalviewUserColours.Filter createJalviewUserColoursFilter() {
+        return new JalviewUserColours.Filter();
+    }
+
+    /**
+     * Create an instance of {@link Pdbentry.Property }
+     * 
+     */
+    public Pdbentry.Property createPdbentryProperty() {
+        return new Pdbentry.Property();
+    }
+
+    /**
+     * Create an instance of {@link Feature.OtherData }
+     * 
+     */
+    public Feature.OtherData createFeatureOtherData() {
+        return new Feature.OtherData();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.JGroup }
+     * 
+     */
+    public JalviewModel.JGroup createJalviewModelJGroup() {
+        return new JalviewModel.JGroup();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.UserColours }
+     * 
+     */
+    public JalviewModel.UserColours createJalviewModelUserColours() {
+        return new JalviewModel.UserColours();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.Tree }
+     * 
+     */
+    public JalviewModel.Tree createJalviewModelTree() {
+        return new JalviewModel.Tree();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.FeatureSettings.Setting }
+     * 
+     */
+    public JalviewModel.FeatureSettings.Setting createJalviewModelFeatureSettingsSetting() {
+        return new JalviewModel.FeatureSettings.Setting();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.FeatureSettings.Group }
+     * 
+     */
+    public JalviewModel.FeatureSettings.Group createJalviewModelFeatureSettingsGroup() {
+        return new JalviewModel.FeatureSettings.Group();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.PcaViewer.SequencePoint }
+     * 
+     */
+    public JalviewModel.PcaViewer.SequencePoint createJalviewModelPcaViewerSequencePoint() {
+        return new JalviewModel.PcaViewer.SequencePoint();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.PcaViewer.Axis }
+     * 
+     */
+    public JalviewModel.PcaViewer.Axis createJalviewModelPcaViewerAxis() {
+        return new JalviewModel.PcaViewer.Axis();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.PcaViewer.SeqPointMin }
+     * 
+     */
+    public JalviewModel.PcaViewer.SeqPointMin createJalviewModelPcaViewerSeqPointMin() {
+        return new JalviewModel.PcaViewer.SeqPointMin();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.PcaViewer.SeqPointMax }
+     * 
+     */
+    public JalviewModel.PcaViewer.SeqPointMax createJalviewModelPcaViewerSeqPointMax() {
+        return new JalviewModel.PcaViewer.SeqPointMax();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.Viewport.HiddenColumns }
+     * 
+     */
+    public JalviewModel.Viewport.HiddenColumns createJalviewModelViewportHiddenColumns() {
+        return new JalviewModel.Viewport.HiddenColumns();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.Viewport.CalcIdParam }
+     * 
+     */
+    public JalviewModel.Viewport.CalcIdParam createJalviewModelViewportCalcIdParam() {
+        return new JalviewModel.Viewport.CalcIdParam();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.Viewport.Overview }
+     * 
+     */
+    public JalviewModel.Viewport.Overview createJalviewModelViewportOverview() {
+        return new JalviewModel.Viewport.Overview();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.JSeq.RnaViewer.SecondaryStructure }
+     * 
+     */
+    public JalviewModel.JSeq.RnaViewer.SecondaryStructure createJalviewModelJSeqRnaViewerSecondaryStructure() {
+        return new JalviewModel.JSeq.RnaViewer.SecondaryStructure();
+    }
+
+    /**
+     * Create an instance of {@link JalviewModel.JSeq.Pdbids.StructureState }
+     * 
+     */
+    public JalviewModel.JSeq.Pdbids.StructureState createJalviewModelJSeqPdbidsStructureState() {
+        return new JalviewModel.JSeq.Pdbids.StructureState();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link WebServiceParameterSet }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "www.jalview.org/xml/wsparamset", name = "WebServiceParameterSet")
+    public JAXBElement<WebServiceParameterSet> createWebServiceParameterSet(WebServiceParameterSet value) {
+        return new JAXBElement<WebServiceParameterSet>(_WebServiceParameterSet_QNAME, WebServiceParameterSet.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link JalviewModel }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "www.jalview.org", name = "JalviewModel")
+    public JAXBElement<JalviewModel> createJalviewModel(JalviewModel value) {
+        return new JAXBElement<JalviewModel>(_JalviewModel_QNAME, JalviewModel.class, null, value);
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link JalviewUserColours }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "www.jalview.org/colours", name = "JalviewUserColours")
+    public JAXBElement<JalviewUserColours> createJalviewUserColours(JalviewUserColours value) {
+        return new JAXBElement<JalviewUserColours>(_JalviewUserColours_QNAME, JalviewUserColours.class, null, value);
+    }
 
 }
index 0717541..b261199 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,114 +13,117 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * 
- * The results of a PCA calculation
- * 
+ *                             The results of a PCA calculation
+ *                     
  * 
- * &lt;p&gt;Java class for PcaDataType complex type.
+ * <p>Java class for PcaDataType complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="PcaDataType"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="pairwiseMatrix"
- * type="{www.jalview.org}DoubleMatrix"/&amp;gt; &amp;lt;element
- * name="tridiagonalMatrix" type="{www.jalview.org}DoubleMatrix"/&amp;gt;
- * &amp;lt;element name="eigenMatrix"
- * type="{www.jalview.org}DoubleMatrix"/&amp;gt; &amp;lt;/sequence&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="PcaDataType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="pairwiseMatrix" type="{www.jalview.org}DoubleMatrix"/>
+ *         &lt;element name="tridiagonalMatrix" type="{www.jalview.org}DoubleMatrix"/>
+ *         &lt;element name="eigenMatrix" type="{www.jalview.org}DoubleMatrix"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "PcaDataType",
-  namespace = "www.jalview.org",
-  propOrder =
-  { "pairwiseMatrix", "tridiagonalMatrix", "eigenMatrix" })
-public class PcaDataType
-{
-
-  @XmlElement(required = true)
-  protected DoubleMatrix pairwiseMatrix;
-
-  @XmlElement(required = true)
-  protected DoubleMatrix tridiagonalMatrix;
+@XmlType(name = "PcaDataType", namespace = "www.jalview.org", propOrder = {
+    "pairwiseMatrix",
+    "tridiagonalMatrix",
+    "eigenMatrix"
+})
+public class PcaDataType {
 
-  @XmlElement(required = true)
-  protected DoubleMatrix eigenMatrix;
+    @XmlElement(required = true)
+    protected DoubleMatrix pairwiseMatrix;
+    @XmlElement(required = true)
+    protected DoubleMatrix tridiagonalMatrix;
+    @XmlElement(required = true)
+    protected DoubleMatrix eigenMatrix;
 
-  /**
-   * Gets the value of the pairwiseMatrix property.
-   * 
-   * @return possible object is {@link DoubleMatrix }
-   * 
-   */
-  public DoubleMatrix getPairwiseMatrix()
-  {
-    return pairwiseMatrix;
-  }
+    /**
+     * Gets the value of the pairwiseMatrix property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DoubleMatrix }
+     *     
+     */
+    public DoubleMatrix getPairwiseMatrix() {
+        return pairwiseMatrix;
+    }
 
-  /**
-   * Sets the value of the pairwiseMatrix property.
-   * 
-   * @param value
-   *          allowed object is {@link DoubleMatrix }
-   * 
-   */
-  public void setPairwiseMatrix(DoubleMatrix value)
-  {
-    this.pairwiseMatrix = value;
-  }
+    /**
+     * Sets the value of the pairwiseMatrix property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DoubleMatrix }
+     *     
+     */
+    public void setPairwiseMatrix(DoubleMatrix value) {
+        this.pairwiseMatrix = value;
+    }
 
-  /**
-   * Gets the value of the tridiagonalMatrix property.
-   * 
-   * @return possible object is {@link DoubleMatrix }
-   * 
-   */
-  public DoubleMatrix getTridiagonalMatrix()
-  {
-    return tridiagonalMatrix;
-  }
+    /**
+     * Gets the value of the tridiagonalMatrix property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DoubleMatrix }
+     *     
+     */
+    public DoubleMatrix getTridiagonalMatrix() {
+        return tridiagonalMatrix;
+    }
 
-  /**
-   * Sets the value of the tridiagonalMatrix property.
-   * 
-   * @param value
-   *          allowed object is {@link DoubleMatrix }
-   * 
-   */
-  public void setTridiagonalMatrix(DoubleMatrix value)
-  {
-    this.tridiagonalMatrix = value;
-  }
+    /**
+     * Sets the value of the tridiagonalMatrix property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DoubleMatrix }
+     *     
+     */
+    public void setTridiagonalMatrix(DoubleMatrix value) {
+        this.tridiagonalMatrix = value;
+    }
 
-  /**
-   * Gets the value of the eigenMatrix property.
-   * 
-   * @return possible object is {@link DoubleMatrix }
-   * 
-   */
-  public DoubleMatrix getEigenMatrix()
-  {
-    return eigenMatrix;
-  }
+    /**
+     * Gets the value of the eigenMatrix property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DoubleMatrix }
+     *     
+     */
+    public DoubleMatrix getEigenMatrix() {
+        return eigenMatrix;
+    }
 
-  /**
-   * Sets the value of the eigenMatrix property.
-   * 
-   * @param value
-   *          allowed object is {@link DoubleMatrix }
-   * 
-   */
-  public void setEigenMatrix(DoubleMatrix value)
-  {
-    this.eigenMatrix = value;
-  }
+    /**
+     * Sets the value of the eigenMatrix property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DoubleMatrix }
+     *     
+     */
+    public void setEigenMatrix(DoubleMatrix value) {
+        this.eigenMatrix = value;
+    }
 
 }
index 7d5447b..fd2e336 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,223 +16,232 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for pdbentry complex type.
+ * <p>Java class for pdbentry complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="pdbentry"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;sequence
- * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;element name="property"
- * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;attribute name="value" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="id" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="type" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="file" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="pdbentry">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ *         &lt;element name="property" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="type" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="file" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "pdbentry",
-  namespace = "www.jalview.org",
-  propOrder =
-  { "property" })
-@XmlSeeAlso({ jalview.xml.binding.jalview.JalviewModel.JSeq.Pdbids.class })
-public class Pdbentry
-{
-
-  protected List<Pdbentry.Property> property;
-
-  @XmlAttribute(name = "id", required = true)
-  protected String id;
-
-  @XmlAttribute(name = "type")
-  protected String type;
-
-  @XmlAttribute(name = "file")
-  protected String file;
-
-  /**
-   * Gets the value of the property property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the property property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getProperty().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link Pdbentry.Property }
-   * 
-   * 
-   */
-  public List<Pdbentry.Property> getProperty()
-  {
-    if (property == null)
-    {
-      property = new ArrayList<Pdbentry.Property>();
-    }
-    return this.property;
-  }
-
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
-
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
-
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
-
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
-
-  /**
-   * Gets the value of the file property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getFile()
-  {
-    return file;
-  }
-
-  /**
-   * Sets the value of the file property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setFile(String value)
-  {
-    this.file = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
-   * /&amp;gt; &amp;lt;attribute name="value" use="required"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class Property
-  {
-
-    @XmlAttribute(name = "name", required = true)
-    protected String name;
-
-    @XmlAttribute(name = "value", required = true)
-    protected String value;
+@XmlType(name = "pdbentry", namespace = "www.jalview.org", propOrder = {
+    "property"
+})
+@XmlSeeAlso({
+    jalview.xml.binding.jalview.JalviewModel.JSeq.Pdbids.class
+})
+public class Pdbentry {
+
+    protected List<Pdbentry.Property> property;
+    @XmlAttribute(name = "id", required = true)
+    protected String id;
+    @XmlAttribute(name = "type")
+    protected String type;
+    @XmlAttribute(name = "file")
+    protected String file;
 
     /**
-     * Gets the value of the name property.
+     * Gets the value of the property property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the property property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getProperty().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Pdbentry.Property }
+     * 
      * 
-     * @return possible object is {@link String }
+     */
+    public List<Pdbentry.Property> getProperty() {
+        if (property == null) {
+            property = new ArrayList<Pdbentry.Property>();
+        }
+        return this.property;
+    }
+
+    /**
+     * Gets the value of the id property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getName()
-    {
-      return name;
+    public String getId() {
+        return id;
     }
 
     /**
-     * Sets the value of the name property.
+     * Sets the value of the id property.
      * 
      * @param value
-     *          allowed object is {@link String }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the type property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public void setName(String value)
-    {
-      this.name = value;
+    public String getType() {
+        return type;
     }
 
     /**
-     * Gets the value of the value property.
+     * Sets the value of the type property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the file property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getValue()
-    {
-      return value;
+    public String getFile() {
+        return file;
     }
 
     /**
-     * Sets the value of the value property.
+     * Sets the value of the file property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setValue(String value)
-    {
-      this.value = value;
+    public void setFile(String value) {
+        this.file = value;
     }
 
-  }
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="value" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Property {
+
+        @XmlAttribute(name = "name", required = true)
+        protected String name;
+        @XmlAttribute(name = "value", required = true)
+        protected String value;
+
+        /**
+         * Gets the value of the name property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * Sets the value of the name property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setName(String value) {
+            this.name = value;
+        }
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
 
 }
index 2001845..6a199a2 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -16,325 +17,332 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;extension
- * base="{www.vamsas.ac.uk/jalview/version2}SequenceType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="DBRef" maxOccurs="unbounded"
- * minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}Mapping" minOccurs="0"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="source"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="version" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="accessionId"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="locus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false"
- * /&amp;gt; &amp;lt;attribute name="canonical"
- * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="dsseqid"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="biotype" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/extension&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;extension base="{www.vamsas.ac.uk/jalview/version2}SequenceType">
+ *       &lt;sequence>
+ *         &lt;element name="DBRef" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;sequence>
+ *                   &lt;element ref="{www.vamsas.ac.uk/jalview/version2}Mapping" minOccurs="0"/>
+ *                 &lt;/sequence>
+ *                 &lt;attribute name="source" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="version" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="accessionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="locus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *                 &lt;attribute name="canonical" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *       &lt;/sequence>
+ *       &lt;attribute name="dsseqid" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="biotype" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/extension>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "", propOrder = { "dbRef" })
+@XmlType(name = "", propOrder = {
+    "dbRef"
+})
 @XmlRootElement(name = "Sequence")
-public class Sequence extends SequenceType
+public class Sequence
+    extends SequenceType
 {
 
-  @XmlElement(name = "DBRef")
-  protected List<Sequence.DBRef> dbRef;
-
-  @XmlAttribute(name = "dsseqid")
-  protected String dsseqid;
-
-  @XmlAttribute(name = "biotype")
-  protected String biotype;
-
-  /**
-   * Gets the value of the dbRef property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the dbRef property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getDBRef().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link Sequence.DBRef }
-   * 
-   * 
-   */
-  public List<Sequence.DBRef> getDBRef()
-  {
-    if (dbRef == null)
-    {
-      dbRef = new ArrayList<Sequence.DBRef>();
-    }
-    return this.dbRef;
-  }
-
-  /**
-   * Gets the value of the dsseqid property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDsseqid()
-  {
-    return dsseqid;
-  }
-
-  /**
-   * Sets the value of the dsseqid property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDsseqid(String value)
-  {
-    this.dsseqid = value;
-  }
-
-  /**
-   * Gets the value of the biotype property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getBiotype()
-  {
-    return biotype;
-  }
-
-  /**
-   * Sets the value of the biotype property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setBiotype(String value)
-  {
-    this.biotype = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
-   * &amp;lt;sequence&amp;gt; &amp;lt;element
-   * ref="{www.vamsas.ac.uk/jalview/version2}Mapping" minOccurs="0"/&amp;gt;
-   * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="source"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="version" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="accessionId"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
-   * name="locus" type="{http://www.w3.org/2001/XMLSchema}boolean"
-   * default="false" /&amp;gt; &amp;lt;attribute name="canonical"
-   * type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "mapping" })
-  public static class DBRef
-  {
-
-    @XmlElement(name = "Mapping")
-    protected Mapping mapping;
-
-    @XmlAttribute(name = "source")
-    protected String source;
-
-    @XmlAttribute(name = "version")
-    protected String version;
-
-    @XmlAttribute(name = "accessionId")
-    protected String accessionId;
-
-    @XmlAttribute(name = "locus")
-    protected Boolean locus;
-
-    @XmlAttribute(name = "canonical")
-    protected Boolean canonical;
+    @XmlElement(name = "DBRef")
+    protected List<Sequence.DBRef> dbRef;
+    @XmlAttribute(name = "dsseqid")
+    protected String dsseqid;
+    @XmlAttribute(name = "biotype")
+    protected String biotype;
 
     /**
-     * Gets the value of the mapping property.
+     * Gets the value of the dbRef property.
      * 
-     * @return possible object is {@link Mapping }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dbRef property.
      * 
-     */
-    public Mapping getMapping()
-    {
-      return mapping;
-    }
-
-    /**
-     * Sets the value of the mapping property.
-     * 
-     * @param value
-     *          allowed object is {@link Mapping }
-     * 
-     */
-    public void setMapping(Mapping value)
-    {
-      this.mapping = value;
-    }
-
-    /**
-     * Gets the value of the source property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDBRef().add(newItem);
+     * </pre>
      * 
-     * @return possible object is {@link String }
      * 
-     */
-    public String getSource()
-    {
-      return source;
-    }
-
-    /**
-     * Sets the value of the source property.
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Sequence.DBRef }
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setSource(String value)
-    {
-      this.source = value;
+    public List<Sequence.DBRef> getDBRef() {
+        if (dbRef == null) {
+            dbRef = new ArrayList<Sequence.DBRef>();
+        }
+        return this.dbRef;
     }
 
     /**
-     * Gets the value of the version property.
-     * 
-     * @return possible object is {@link String }
+     * Gets the value of the dsseqid property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getVersion()
-    {
-      return version;
+    public String getDsseqid() {
+        return dsseqid;
     }
 
     /**
-     * Sets the value of the version property.
+     * Sets the value of the dsseqid property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setVersion(String value)
-    {
-      this.version = value;
+    public void setDsseqid(String value) {
+        this.dsseqid = value;
     }
 
     /**
-     * Gets the value of the accessionId property.
-     * 
-     * @return possible object is {@link String }
+     * Gets the value of the biotype property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getAccessionId()
-    {
-      return accessionId;
+    public String getBiotype() {
+        return biotype;
     }
 
     /**
-     * Sets the value of the accessionId property.
+     * Sets the value of the biotype property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setAccessionId(String value)
-    {
-      this.accessionId = value;
+    public void setBiotype(String value) {
+        this.biotype = value;
     }
 
-    /**
-     * Gets the value of the locus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isLocus()
-    {
-      if (locus == null)
-      {
-        return false;
-      }
-      else
-      {
-        return locus;
-      }
-    }
 
     /**
-     * Sets the value of the locus property.
+     * <p>Java class for anonymous complex type.
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public void setLocus(Boolean value)
-    {
-      this.locus = value;
-    }
-
-    /**
-     * Gets the value of the canonical property.
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}Mapping" minOccurs="0"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="source" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="version" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="accessionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="locus" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *       &lt;attribute name="canonical" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @return possible object is {@link Boolean }
      * 
      */
-    public boolean isCanonical()
-    {
-      if (canonical == null)
-      {
-        return false;
-      }
-      else
-      {
-        return canonical;
-      }
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "mapping"
+    })
+    public static class DBRef {
+
+        @XmlElement(name = "Mapping")
+        protected Mapping mapping;
+        @XmlAttribute(name = "source")
+        protected String source;
+        @XmlAttribute(name = "version")
+        protected String version;
+        @XmlAttribute(name = "accessionId")
+        protected String accessionId;
+        @XmlAttribute(name = "locus")
+        protected Boolean locus;
+        @XmlAttribute(name = "canonical")
+        protected Boolean canonical;
+
+        /**
+         * Gets the value of the mapping property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Mapping }
+         *     
+         */
+        public Mapping getMapping() {
+            return mapping;
+        }
+
+        /**
+         * Sets the value of the mapping property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Mapping }
+         *     
+         */
+        public void setMapping(Mapping value) {
+            this.mapping = value;
+        }
+
+        /**
+         * Gets the value of the source property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getSource() {
+            return source;
+        }
+
+        /**
+         * Sets the value of the source property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setSource(String value) {
+            this.source = value;
+        }
+
+        /**
+         * Gets the value of the version property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getVersion() {
+            return version;
+        }
+
+        /**
+         * Sets the value of the version property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setVersion(String value) {
+            this.version = value;
+        }
+
+        /**
+         * Gets the value of the accessionId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getAccessionId() {
+            return accessionId;
+        }
+
+        /**
+         * Sets the value of the accessionId property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setAccessionId(String value) {
+            this.accessionId = value;
+        }
+
+        /**
+         * Gets the value of the locus property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isLocus() {
+            if (locus == null) {
+                return false;
+            } else {
+                return locus;
+            }
+        }
+
+        /**
+         * Sets the value of the locus property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setLocus(Boolean value) {
+            this.locus = value;
+        }
+
+        /**
+         * Gets the value of the canonical property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isCanonical() {
+            if (canonical == null) {
+                return false;
+            } else {
+                return canonical;
+            }
+        }
+
+        /**
+         * Sets the value of the canonical property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setCanonical(Boolean value) {
+            this.canonical = value;
+        }
 
-    /**
-     * Sets the value of the canonical property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setCanonical(Boolean value)
-    {
-      this.canonical = value;
     }
 
-  }
-
 }
index d6464b3..ed2c120 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -16,287 +17,302 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
- * &amp;lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}Sequence" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}Annotation" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;element name="sequenceSetProperties"
- * maxOccurs="unbounded" minOccurs="0"&amp;gt; &amp;lt;complexType&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
- * name="key" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;attribute name="value"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &amp;lt;/element&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}AlcodonFrame" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;attribute
- * name="gapChar" use="required" type="{http://www.w3.org/2001/XMLSchema}string"
- * /&amp;gt; &amp;lt;attribute name="datasetId"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType>
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}Sequence" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}Annotation" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element name="sequenceSetProperties" maxOccurs="unbounded" minOccurs="0">
+ *           &lt;complexType>
+ *             &lt;complexContent>
+ *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 &lt;attribute name="key" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *               &lt;/restriction>
+ *             &lt;/complexContent>
+ *           &lt;/complexType>
+ *         &lt;/element>
+ *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}AlcodonFrame" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="gapChar" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="datasetId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "",
-  propOrder =
-  { "sequence", "annotation", "sequenceSetProperties", "alcodonFrame" })
+@XmlType(name = "", propOrder = {
+    "sequence",
+    "annotation",
+    "sequenceSetProperties",
+    "alcodonFrame"
+})
 @XmlRootElement(name = "SequenceSet")
-public class SequenceSet
-{
-
-  @XmlElement(name = "Sequence")
-  protected List<Sequence> sequence;
-
-  @XmlElement(name = "Annotation")
-  protected List<Annotation> annotation;
+public class SequenceSet {
 
-  protected List<SequenceSet.SequenceSetProperties> sequenceSetProperties;
+    @XmlElement(name = "Sequence")
+    protected List<Sequence> sequence;
+    @XmlElement(name = "Annotation")
+    protected List<Annotation> annotation;
+    protected List<SequenceSet.SequenceSetProperties> sequenceSetProperties;
+    @XmlElement(name = "AlcodonFrame")
+    protected List<AlcodonFrame> alcodonFrame;
+    @XmlAttribute(name = "gapChar", required = true)
+    protected String gapChar;
+    @XmlAttribute(name = "datasetId")
+    protected String datasetId;
 
-  @XmlElement(name = "AlcodonFrame")
-  protected List<AlcodonFrame> alcodonFrame;
-
-  @XmlAttribute(name = "gapChar", required = true)
-  protected String gapChar;
-
-  @XmlAttribute(name = "datasetId")
-  protected String datasetId;
-
-  /**
-   * Gets the value of the sequence property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the sequence property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getSequence().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link Sequence }
-   * 
-   * 
-   */
-  public List<Sequence> getSequence()
-  {
-    if (sequence == null)
-    {
-      sequence = new ArrayList<Sequence>();
+    /**
+     * Gets the value of the sequence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the sequence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSequence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Sequence }
+     * 
+     * 
+     */
+    public List<Sequence> getSequence() {
+        if (sequence == null) {
+            sequence = new ArrayList<Sequence>();
+        }
+        return this.sequence;
     }
-    return this.sequence;
-  }
 
-  /**
-   * Gets the value of the annotation property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the annotation property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getAnnotation().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link Annotation }
-   * 
-   * 
-   */
-  public List<Annotation> getAnnotation()
-  {
-    if (annotation == null)
-    {
-      annotation = new ArrayList<Annotation>();
+    /**
+     * Gets the value of the annotation property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the annotation property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAnnotation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Annotation }
+     * 
+     * 
+     */
+    public List<Annotation> getAnnotation() {
+        if (annotation == null) {
+            annotation = new ArrayList<Annotation>();
+        }
+        return this.annotation;
     }
-    return this.annotation;
-  }
 
-  /**
-   * Gets the value of the sequenceSetProperties property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the sequenceSetProperties property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getSequenceSetProperties().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link SequenceSet.SequenceSetProperties }
-   * 
-   * 
-   */
-  public List<SequenceSet.SequenceSetProperties> getSequenceSetProperties()
-  {
-    if (sequenceSetProperties == null)
-    {
-      sequenceSetProperties = new ArrayList<SequenceSet.SequenceSetProperties>();
+    /**
+     * Gets the value of the sequenceSetProperties property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the sequenceSetProperties property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSequenceSetProperties().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SequenceSet.SequenceSetProperties }
+     * 
+     * 
+     */
+    public List<SequenceSet.SequenceSetProperties> getSequenceSetProperties() {
+        if (sequenceSetProperties == null) {
+            sequenceSetProperties = new ArrayList<SequenceSet.SequenceSetProperties>();
+        }
+        return this.sequenceSetProperties;
     }
-    return this.sequenceSetProperties;
-  }
 
-  /**
-   * Gets the value of the alcodonFrame property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the alcodonFrame property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getAlcodonFrame().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link AlcodonFrame }
-   * 
-   * 
-   */
-  public List<AlcodonFrame> getAlcodonFrame()
-  {
-    if (alcodonFrame == null)
-    {
-      alcodonFrame = new ArrayList<AlcodonFrame>();
+    /**
+     * Gets the value of the alcodonFrame property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the alcodonFrame property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAlcodonFrame().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link AlcodonFrame }
+     * 
+     * 
+     */
+    public List<AlcodonFrame> getAlcodonFrame() {
+        if (alcodonFrame == null) {
+            alcodonFrame = new ArrayList<AlcodonFrame>();
+        }
+        return this.alcodonFrame;
     }
-    return this.alcodonFrame;
-  }
-
-  /**
-   * Gets the value of the gapChar property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getGapChar()
-  {
-    return gapChar;
-  }
-
-  /**
-   * Sets the value of the gapChar property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setGapChar(String value)
-  {
-    this.gapChar = value;
-  }
-
-  /**
-   * Gets the value of the datasetId property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDatasetId()
-  {
-    return datasetId;
-  }
-
-  /**
-   * Sets the value of the datasetId property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDatasetId(String value)
-  {
-    this.datasetId = value;
-  }
-
-  /**
-   * &lt;p&gt;Java class for anonymous complex type.
-   * 
-   * &lt;p&gt;The following schema fragment specifies the expected content
-   * contained within this class.
-   * 
-   * &lt;pre&gt; &amp;lt;complexType&amp;gt; &amp;lt;complexContent&amp;gt;
-   * &amp;lt;restriction
-   * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt; &amp;lt;attribute
-   * name="key" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;attribute name="value"
-   * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
-   * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
-   * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class SequenceSetProperties
-  {
-
-    @XmlAttribute(name = "key")
-    protected String key;
-
-    @XmlAttribute(name = "value")
-    protected String value;
 
     /**
-     * Gets the value of the key property.
-     * 
-     * @return possible object is {@link String }
+     * Gets the value of the gapChar property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getKey()
-    {
-      return key;
+    public String getGapChar() {
+        return gapChar;
     }
 
     /**
-     * Sets the value of the key property.
+     * Sets the value of the gapChar property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setKey(String value)
-    {
-      this.key = value;
+    public void setGapChar(String value) {
+        this.gapChar = value;
     }
 
     /**
-     * Gets the value of the value property.
-     * 
-     * @return possible object is {@link String }
+     * Gets the value of the datasetId property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getValue()
-    {
-      return value;
+    public String getDatasetId() {
+        return datasetId;
     }
 
     /**
-     * Sets the value of the value property.
+     * Sets the value of the datasetId property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setValue(String value)
-    {
-      this.value = value;
+    public void setDatasetId(String value) {
+        this.datasetId = value;
     }
 
-  }
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="key" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class SequenceSetProperties {
+
+        @XmlAttribute(name = "key")
+        protected String key;
+        @XmlAttribute(name = "value")
+        protected String value;
+
+        /**
+         * Gets the value of the key property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getKey() {
+            return key;
+        }
+
+        /**
+         * Sets the value of the key property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setKey(String value) {
+            this.key = value;
+        }
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+    }
 
 }
index 2e378da..cb7fa05 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -13,132 +14,140 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for SequenceType complex type.
+ * <p>Java class for SequenceType complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="SequenceType"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="sequence"
- * type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string"
- * minOccurs="0"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="id"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt; &amp;lt;attribute
- * name="description" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="SequenceType">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="sequence" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *       &lt;attribute name="description" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "SequenceType", propOrder = { "sequence", "name" })
-@XmlSeeAlso({ Sequence.class })
-public class SequenceType
-{
-
-  protected String sequence;
-
-  protected String name;
-
-  @XmlAttribute(name = "id")
-  protected String id;
-
-  @XmlAttribute(name = "description")
-  protected String description;
-
-  /**
-   * Gets the value of the sequence property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getSequence()
-  {
-    return sequence;
-  }
-
-  /**
-   * Sets the value of the sequence property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setSequence(String value)
-  {
-    this.sequence = value;
-  }
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getName()
-  {
-    return name;
-  }
-
-  /**
-   * Sets the value of the name property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setName(String value)
-  {
-    this.name = value;
-  }
-
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
-
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
-
-  /**
-   * Gets the value of the description property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDescription()
-  {
-    return description;
-  }
-
-  /**
-   * Sets the value of the description property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDescription(String value)
-  {
-    this.description = value;
-  }
+@XmlType(name = "SequenceType", propOrder = {
+    "sequence",
+    "name"
+})
+@XmlSeeAlso({
+    Sequence.class
+})
+public class SequenceType {
+
+    protected String sequence;
+    protected String name;
+    @XmlAttribute(name = "id")
+    protected String id;
+    @XmlAttribute(name = "description")
+    protected String description;
+
+    /**
+     * Gets the value of the sequence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSequence() {
+        return sequence;
+    }
+
+    /**
+     * Sets the value of the sequence property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSequence(String value) {
+        this.sequence = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
 
 }
index 501c729..49c2dd2 100644 (file)
@@ -1,42 +1,47 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlEnum;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for ThresholdType.
+ * <p>Java class for ThresholdType.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class. &lt;pre&gt; &amp;lt;simpleType
- * name="ThresholdType"&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}string"&amp;gt; &amp;lt;enumeration
- * value="NONE"/&amp;gt; &amp;lt;enumeration value="ABOVE"/&amp;gt;
- * &amp;lt;enumeration value="BELOW"/&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/simpleType&amp;gt; &lt;/pre&gt;
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="ThresholdType">
+ *   &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     &lt;enumeration value="NONE"/>
+ *     &lt;enumeration value="ABOVE"/>
+ *     &lt;enumeration value="BELOW"/>
+ *   &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
  * 
  */
 @XmlType(name = "ThresholdType", namespace = "www.jalview.org/colours")
 @XmlEnum
-public enum ThresholdType
-{
+public enum ThresholdType {
 
-  NONE, ABOVE, BELOW;
+    NONE,
+    ABOVE,
+    BELOW;
 
-  public String value()
-  {
-    return name();
-  }
+    public String value() {
+        return name();
+    }
 
-  public static ThresholdType fromValue(String v)
-  {
-    return valueOf(v);
-  }
+    public static ThresholdType fromValue(String v) {
+        return valueOf(v);
+    }
 
 }
index 932ba3b..d697534 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -14,85 +15,95 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for VAMSAS complex type.
+ * <p>Java class for VAMSAS complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="VAMSAS"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="Tree"
- * type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;element
- * ref="{www.vamsas.ac.uk/jalview/version2}SequenceSet" maxOccurs="unbounded"
- * minOccurs="0"/&amp;gt; &amp;lt;/sequence&amp;gt; &amp;lt;/restriction&amp;gt;
- * &amp;lt;/complexContent&amp;gt; &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="VAMSAS">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="Tree" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}SequenceSet" maxOccurs="unbounded" minOccurs="0"/>
+ *       &lt;/sequence>
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "VAMSAS", propOrder = { "tree", "sequenceSet" })
-public class VAMSAS
-{
-
-  @XmlElement(name = "Tree")
-  protected List<String> tree;
+@XmlType(name = "VAMSAS", propOrder = {
+    "tree",
+    "sequenceSet"
+})
+public class VAMSAS {
 
-  @XmlElement(name = "SequenceSet")
-  protected List<SequenceSet> sequenceSet;
+    @XmlElement(name = "Tree")
+    protected List<String> tree;
+    @XmlElement(name = "SequenceSet")
+    protected List<SequenceSet> sequenceSet;
 
-  /**
-   * Gets the value of the tree property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the tree property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getTree().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link String }
-   * 
-   * 
-   */
-  public List<String> getTree()
-  {
-    if (tree == null)
-    {
-      tree = new ArrayList<String>();
+    /**
+     * Gets the value of the tree property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the tree property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getTree().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getTree() {
+        if (tree == null) {
+            tree = new ArrayList<String>();
+        }
+        return this.tree;
     }
-    return this.tree;
-  }
 
-  /**
-   * Gets the value of the sequenceSet property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the sequenceSet property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getSequenceSet().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link SequenceSet }
-   * 
-   * 
-   */
-  public List<SequenceSet> getSequenceSet()
-  {
-    if (sequenceSet == null)
-    {
-      sequenceSet = new ArrayList<SequenceSet>();
+    /**
+     * Gets the value of the sequenceSet property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the sequenceSet property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSequenceSet().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SequenceSet }
+     * 
+     * 
+     */
+    public List<SequenceSet> getSequenceSet() {
+        if (sequenceSet == null) {
+            sequenceSet = new ArrayList<SequenceSet>();
+        }
+        return this.sequenceSet;
     }
-    return this.sequenceSet;
-  }
 
 }
index 44d5829..1935391 100644 (file)
@@ -1,10 +1,11 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -17,173 +18,177 @@ import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * &lt;p&gt;Java class for WebServiceParameterSet complex type.
+ * <p>Java class for WebServiceParameterSet complex type.
  * 
- * &lt;p&gt;The following schema fragment specifies the expected content
- * contained within this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
- * &lt;pre&gt; &amp;lt;complexType name="WebServiceParameterSet"&amp;gt;
- * &amp;lt;complexContent&amp;gt; &amp;lt;restriction
- * base="{http://www.w3.org/2001/XMLSchema}anyType"&amp;gt;
- * &amp;lt;sequence&amp;gt; &amp;lt;element name="Version"
- * type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="description"
- * type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&amp;gt;
- * &amp;lt;element name="serviceURL"
- * type="{http://www.w3.org/2001/XMLSchema}anyURI"
- * maxOccurs="unbounded"/&amp;gt; &amp;lt;element name="parameters"
- * type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
- * &amp;lt;/sequence&amp;gt; &amp;lt;attribute name="name" use="required"
- * type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
- * &amp;lt;/restriction&amp;gt; &amp;lt;/complexContent&amp;gt;
- * &amp;lt;/complexType&amp;gt; &lt;/pre&gt;
+ * <pre>
+ * &lt;complexType name="WebServiceParameterSet">
+ *   &lt;complexContent>
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       &lt;sequence>
+ *         &lt;element name="Version" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         &lt;element name="serviceURL" type="{http://www.w3.org/2001/XMLSchema}anyURI" maxOccurs="unbounded"/>
+ *         &lt;element name="parameters" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       &lt;/sequence>
+ *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ *     &lt;/restriction>
+ *   &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "WebServiceParameterSet",
-  namespace = "www.jalview.org/xml/wsparamset",
-  propOrder =
-  { "version", "description", "serviceURL", "parameters" })
+@XmlType(name = "WebServiceParameterSet", namespace = "www.jalview.org/xml/wsparamset", propOrder = {
+    "version",
+    "description",
+    "serviceURL",
+    "parameters"
+})
 @XmlSeeAlso({
-    jalview.xml.binding.jalview.JalviewModel.Viewport.CalcIdParam.class })
-public class WebServiceParameterSet
-{
-
-  @XmlElement(name = "Version", namespace = "")
-  protected String version;
-
-  @XmlElement(namespace = "")
-  protected String description;
-
-  @XmlElement(namespace = "", required = true)
-  @XmlSchemaType(name = "anyURI")
-  protected List<String> serviceURL;
-
-  @XmlElement(namespace = "", required = true)
-  protected String parameters;
-
-  @XmlAttribute(name = "name", required = true)
-  protected String name;
-
-  /**
-   * Gets the value of the version property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getVersion()
-  {
-    return version;
-  }
-
-  /**
-   * Sets the value of the version property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setVersion(String value)
-  {
-    this.version = value;
-  }
-
-  /**
-   * Gets the value of the description property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDescription()
-  {
-    return description;
-  }
-
-  /**
-   * Sets the value of the description property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDescription(String value)
-  {
-    this.description = value;
-  }
-
-  /**
-   * Gets the value of the serviceURL property.
-   * 
-   * &lt;p&gt; This accessor method returns a reference to the live list, not a
-   * snapshot. Therefore any modification you make to the returned list will be
-   * present inside the JAXB object. This is why there is not a
-   * &lt;CODE&gt;set&lt;/CODE&gt; method for the serviceURL property.
-   * 
-   * &lt;p&gt; For example, to add a new item, do as follows: &lt;pre&gt;
-   * getServiceURL().add(newItem); &lt;/pre&gt;
-   * 
-   * 
-   * &lt;p&gt; Objects of the following type(s) are allowed in the list
-   * {@link String }
-   * 
-   * 
-   */
-  public List<String> getServiceURL()
-  {
-    if (serviceURL == null)
-    {
-      serviceURL = new ArrayList<String>();
+    jalview.xml.binding.jalview.JalviewModel.Viewport.CalcIdParam.class
+})
+public class WebServiceParameterSet {
+
+    @XmlElement(name = "Version", namespace = "")
+    protected String version;
+    @XmlElement(namespace = "")
+    protected String description;
+    @XmlElement(namespace = "", required = true)
+    @XmlSchemaType(name = "anyURI")
+    protected List<String> serviceURL;
+    @XmlElement(namespace = "", required = true)
+    protected String parameters;
+    @XmlAttribute(name = "name", required = true)
+    protected String name;
+
+    /**
+     * Gets the value of the version property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets the value of the version property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setVersion(String value) {
+        this.version = value;
+    }
+
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
+
+    /**
+     * Gets the value of the serviceURL property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the serviceURL property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getServiceURL().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getServiceURL() {
+        if (serviceURL == null) {
+            serviceURL = new ArrayList<String>();
+        }
+        return this.serviceURL;
+    }
+
+    /**
+     * Gets the value of the parameters property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getParameters() {
+        return parameters;
+    }
+
+    /**
+     * Sets the value of the parameters property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setParameters(String value) {
+        this.parameters = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
     }
-    return this.serviceURL;
-  }
-
-  /**
-   * Gets the value of the parameters property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getParameters()
-  {
-    return parameters;
-  }
-
-  /**
-   * Sets the value of the parameters property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setParameters(String value)
-  {
-    this.parameters = value;
-  }
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getName()
-  {
-    return name;
-  }
-
-  /**
-   * Sets the value of the name property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setName(String value)
-  {
-    this.name = value;
-  }
 
 }
index aa2ab9e..338e645 100644 (file)
@@ -1,11 +1,9 @@
 //
-// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
-// See https://eclipse-ee4j.github.io/jaxb-ri 
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2021.08.30 at 11:05:22 AM BST 
+// Generated on: 2023.01.31 at 04:07:08 PM GMT 
 //
 
-@javax.xml.bind.annotation.XmlSchema(
-  namespace = "www.vamsas.ac.uk/jalview/version2",
-  elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+@javax.xml.bind.annotation.XmlSchema(namespace = "www.vamsas.ac.uk/jalview/version2", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
 package jalview.xml.binding.jalview;
index b38df87..b07b8e2 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -14,16 +15,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes different types of citations. Equivalent to the flat file RX-, RG-,
- * RA-, RT- and RL-lines.
+ * Describes different types of citations.
+ *             Equivalent to the flat file RX-, RG-, RA-, RT- and RL-lines.
  * 
- * <p>
- * Java class for citationType complex type.
+ * <p>Java class for citationType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="citationType">
@@ -73,457 +72,456 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "citationType",
-  propOrder =
-  { "title", "editorList", "authorList", "locator", "dbReference" })
-public class CitationType
-{
-
-  protected String title;
-
-  protected NameListType editorList;
-
-  protected NameListType authorList;
-
-  protected String locator;
-
-  protected List<DbReferenceType> dbReference;
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
-
-  @XmlAttribute(name = "date")
-  protected String date;
-
-  @XmlAttribute(name = "name")
-  protected String name;
-
-  @XmlAttribute(name = "volume")
-  protected String volume;
-
-  @XmlAttribute(name = "first")
-  protected String first;
-
-  @XmlAttribute(name = "last")
-  protected String last;
-
-  @XmlAttribute(name = "publisher")
-  protected String publisher;
-
-  @XmlAttribute(name = "city")
-  protected String city;
-
-  @XmlAttribute(name = "db")
-  protected String db;
-
-  @XmlAttribute(name = "number")
-  protected String number;
-
-  @XmlAttribute(name = "institute")
-  protected String institute;
-
-  @XmlAttribute(name = "country")
-  protected String country;
-
-  /**
-   * Gets the value of the title property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getTitle()
-  {
-    return title;
-  }
-
-  /**
-   * Sets the value of the title property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setTitle(String value)
-  {
-    this.title = value;
-  }
-
-  /**
-   * Gets the value of the editorList property.
-   * 
-   * @return possible object is {@link NameListType }
-   * 
-   */
-  public NameListType getEditorList()
-  {
-    return editorList;
-  }
-
-  /**
-   * Sets the value of the editorList property.
-   * 
-   * @param value
-   *          allowed object is {@link NameListType }
-   * 
-   */
-  public void setEditorList(NameListType value)
-  {
-    this.editorList = value;
-  }
-
-  /**
-   * Gets the value of the authorList property.
-   * 
-   * @return possible object is {@link NameListType }
-   * 
-   */
-  public NameListType getAuthorList()
-  {
-    return authorList;
-  }
-
-  /**
-   * Sets the value of the authorList property.
-   * 
-   * @param value
-   *          allowed object is {@link NameListType }
-   * 
-   */
-  public void setAuthorList(NameListType value)
-  {
-    this.authorList = value;
-  }
-
-  /**
-   * Gets the value of the locator property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getLocator()
-  {
-    return locator;
-  }
-
-  /**
-   * Sets the value of the locator property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setLocator(String value)
-  {
-    this.locator = value;
-  }
-
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the dbReference property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getDbReference().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link DbReferenceType }
-   * 
-   * 
-   */
-  public List<DbReferenceType> getDbReference()
-  {
-    if (dbReference == null)
-    {
-      dbReference = new ArrayList<DbReferenceType>();
-    }
-    return this.dbReference;
-  }
-
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
-
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
-
-  /**
-   * Gets the value of the date property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDate()
-  {
-    return date;
-  }
-
-  /**
-   * Sets the value of the date property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDate(String value)
-  {
-    this.date = value;
-  }
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getName()
-  {
-    return name;
-  }
-
-  /**
-   * Sets the value of the name property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setName(String value)
-  {
-    this.name = value;
-  }
-
-  /**
-   * Gets the value of the volume property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getVolume()
-  {
-    return volume;
-  }
-
-  /**
-   * Sets the value of the volume property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setVolume(String value)
-  {
-    this.volume = value;
-  }
-
-  /**
-   * Gets the value of the first property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getFirst()
-  {
-    return first;
-  }
-
-  /**
-   * Sets the value of the first property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setFirst(String value)
-  {
-    this.first = value;
-  }
-
-  /**
-   * Gets the value of the last property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getLast()
-  {
-    return last;
-  }
-
-  /**
-   * Sets the value of the last property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setLast(String value)
-  {
-    this.last = value;
-  }
-
-  /**
-   * Gets the value of the publisher property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getPublisher()
-  {
-    return publisher;
-  }
-
-  /**
-   * Sets the value of the publisher property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setPublisher(String value)
-  {
-    this.publisher = value;
-  }
-
-  /**
-   * Gets the value of the city property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getCity()
-  {
-    return city;
-  }
-
-  /**
-   * Sets the value of the city property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setCity(String value)
-  {
-    this.city = value;
-  }
-
-  /**
-   * Gets the value of the db property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDb()
-  {
-    return db;
-  }
-
-  /**
-   * Sets the value of the db property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDb(String value)
-  {
-    this.db = value;
-  }
-
-  /**
-   * Gets the value of the number property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getNumber()
-  {
-    return number;
-  }
-
-  /**
-   * Sets the value of the number property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setNumber(String value)
-  {
-    this.number = value;
-  }
-
-  /**
-   * Gets the value of the institute property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getInstitute()
-  {
-    return institute;
-  }
-
-  /**
-   * Sets the value of the institute property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setInstitute(String value)
-  {
-    this.institute = value;
-  }
-
-  /**
-   * Gets the value of the country property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getCountry()
-  {
-    return country;
-  }
-
-  /**
-   * Sets the value of the country property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setCountry(String value)
-  {
-    this.country = value;
-  }
+@XmlType(name = "citationType", propOrder = {
+    "title",
+    "editorList",
+    "authorList",
+    "locator",
+    "dbReference"
+})
+public class CitationType {
+
+    protected String title;
+    protected NameListType editorList;
+    protected NameListType authorList;
+    protected String locator;
+    protected List<DbReferenceType> dbReference;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "date")
+    protected String date;
+    @XmlAttribute(name = "name")
+    protected String name;
+    @XmlAttribute(name = "volume")
+    protected String volume;
+    @XmlAttribute(name = "first")
+    protected String first;
+    @XmlAttribute(name = "last")
+    protected String last;
+    @XmlAttribute(name = "publisher")
+    protected String publisher;
+    @XmlAttribute(name = "city")
+    protected String city;
+    @XmlAttribute(name = "db")
+    protected String db;
+    @XmlAttribute(name = "number")
+    protected String number;
+    @XmlAttribute(name = "institute")
+    protected String institute;
+    @XmlAttribute(name = "country")
+    protected String country;
+
+    /**
+     * Gets the value of the title property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * Sets the value of the title property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTitle(String value) {
+        this.title = value;
+    }
+
+    /**
+     * Gets the value of the editorList property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link NameListType }
+     *     
+     */
+    public NameListType getEditorList() {
+        return editorList;
+    }
+
+    /**
+     * Sets the value of the editorList property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link NameListType }
+     *     
+     */
+    public void setEditorList(NameListType value) {
+        this.editorList = value;
+    }
+
+    /**
+     * Gets the value of the authorList property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link NameListType }
+     *     
+     */
+    public NameListType getAuthorList() {
+        return authorList;
+    }
+
+    /**
+     * Sets the value of the authorList property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link NameListType }
+     *     
+     */
+    public void setAuthorList(NameListType value) {
+        this.authorList = value;
+    }
+
+    /**
+     * Gets the value of the locator property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLocator() {
+        return locator;
+    }
+
+    /**
+     * Sets the value of the locator property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLocator(String value) {
+        this.locator = value;
+    }
+
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dbReference property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDbReference().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DbReferenceType }
+     * 
+     * 
+     */
+    public List<DbReferenceType> getDbReference() {
+        if (dbReference == null) {
+            dbReference = new ArrayList<DbReferenceType>();
+        }
+        return this.dbReference;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the date property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDate() {
+        return date;
+    }
+
+    /**
+     * Sets the value of the date property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDate(String value) {
+        this.date = value;
+    }
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the volume property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getVolume() {
+        return volume;
+    }
+
+    /**
+     * Sets the value of the volume property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setVolume(String value) {
+        this.volume = value;
+    }
+
+    /**
+     * Gets the value of the first property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFirst() {
+        return first;
+    }
+
+    /**
+     * Sets the value of the first property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFirst(String value) {
+        this.first = value;
+    }
+
+    /**
+     * Gets the value of the last property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLast() {
+        return last;
+    }
+
+    /**
+     * Sets the value of the last property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLast(String value) {
+        this.last = value;
+    }
+
+    /**
+     * Gets the value of the publisher property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getPublisher() {
+        return publisher;
+    }
+
+    /**
+     * Sets the value of the publisher property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setPublisher(String value) {
+        this.publisher = value;
+    }
+
+    /**
+     * Gets the value of the city property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCity() {
+        return city;
+    }
+
+    /**
+     * Sets the value of the city property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCity(String value) {
+        this.city = value;
+    }
+
+    /**
+     * Gets the value of the db property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDb() {
+        return db;
+    }
+
+    /**
+     * Sets the value of the db property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDb(String value) {
+        this.db = value;
+    }
+
+    /**
+     * Gets the value of the number property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getNumber() {
+        return number;
+    }
+
+    /**
+     * Sets the value of the number property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setNumber(String value) {
+        this.number = value;
+    }
+
+    /**
+     * Gets the value of the institute property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getInstitute() {
+        return institute;
+    }
+
+    /**
+     * Sets the value of the institute property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setInstitute(String value) {
+        this.institute = value;
+    }
+
+    /**
+     * Gets the value of the country property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCountry() {
+        return country;
+    }
+
+    /**
+     * Sets the value of the country property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCountry(String value) {
+        this.country = value;
+    }
 
 }
index 424bcff..7dc9df3 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,15 +16,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * Describes a cofactor.
  * 
- * <p>
- * Java class for cofactorType complex type.
+ * <p>Java class for cofactorType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="cofactorType">
@@ -42,94 +41,94 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "cofactorType", propOrder = { "name", "dbReference" })
-public class CofactorType
-{
-
-  @XmlElement(required = true)
-  protected String name;
-
-  @XmlElement(required = true)
-  protected DbReferenceType dbReference;
+@XmlType(name = "cofactorType", propOrder = {
+    "name",
+    "dbReference"
+})
+public class CofactorType {
 
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
+    @XmlElement(required = true)
+    protected String name;
+    @XmlElement(required = true)
+    protected DbReferenceType dbReference;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
 
-  /**
-   * Gets the value of the name property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getName()
-  {
-    return name;
-  }
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
 
-  /**
-   * Sets the value of the name property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setName(String value)
-  {
-    this.name = value;
-  }
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
 
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * @return possible object is {@link DbReferenceType }
-   * 
-   */
-  public DbReferenceType getDbReference()
-  {
-    return dbReference;
-  }
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public DbReferenceType getDbReference() {
+        return dbReference;
+    }
 
-  /**
-   * Sets the value of the dbReference property.
-   * 
-   * @param value
-   *          allowed object is {@link DbReferenceType }
-   * 
-   */
-  public void setDbReference(DbReferenceType value)
-  {
-    this.dbReference = value;
-  }
+    /**
+     * Sets the value of the dbReference property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public void setDbReference(DbReferenceType value) {
+        this.dbReference = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
 }
index afd1da1..8766f7a 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -16,16 +17,14 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes different types of general annotations. Equivalent to the flat file
- * CC-line.
+ * Describes different types of general annotations.
+ *             Equivalent to the flat file CC-line.
  * 
- * <p>
- * Java class for commentType complex type.
+ * <p>Java class for commentType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="commentType">
@@ -174,1673 +173,1619 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "commentType",
-  propOrder =
-  { "molecule", "absorption", "kinetics", "phDependence", "redoxPotential",
-      "temperatureDependence", "reaction", "physiologicalReaction",
-      "cofactor", "subcellularLocation", "conflict", "link", "event",
-      "isoform", "interactant", "organismsDiffer", "experiments", "disease",
-      "location", "text" })
-public class CommentType
-{
-
-  protected MoleculeType molecule;
-
-  protected CommentType.Absorption absorption;
-
-  protected CommentType.Kinetics kinetics;
-
-  protected CommentType.PhDependence phDependence;
-
-  protected CommentType.RedoxPotential redoxPotential;
-
-  protected CommentType.TemperatureDependence temperatureDependence;
-
-  protected ReactionType reaction;
-
-  protected List<PhysiologicalReactionType> physiologicalReaction;
-
-  protected List<CofactorType> cofactor;
-
-  protected List<SubcellularLocationType> subcellularLocation;
-
-  protected CommentType.Conflict conflict;
-
-  protected List<CommentType.Link> link;
+@XmlType(name = "commentType", propOrder = {
+    "molecule",
+    "absorption",
+    "kinetics",
+    "phDependence",
+    "redoxPotential",
+    "temperatureDependence",
+    "reaction",
+    "physiologicalReaction",
+    "cofactor",
+    "subcellularLocation",
+    "conflict",
+    "link",
+    "event",
+    "isoform",
+    "interactant",
+    "organismsDiffer",
+    "experiments",
+    "disease",
+    "location",
+    "text"
+})
+public class CommentType {
+
+    protected MoleculeType molecule;
+    protected CommentType.Absorption absorption;
+    protected CommentType.Kinetics kinetics;
+    protected CommentType.PhDependence phDependence;
+    protected CommentType.RedoxPotential redoxPotential;
+    protected CommentType.TemperatureDependence temperatureDependence;
+    protected ReactionType reaction;
+    protected List<PhysiologicalReactionType> physiologicalReaction;
+    protected List<CofactorType> cofactor;
+    protected List<SubcellularLocationType> subcellularLocation;
+    protected CommentType.Conflict conflict;
+    protected List<CommentType.Link> link;
+    protected List<EventType> event;
+    protected List<IsoformType> isoform;
+    protected List<InteractantType> interactant;
+    @XmlElement(defaultValue = "false")
+    protected Boolean organismsDiffer;
+    protected Integer experiments;
+    protected CommentType.Disease disease;
+    protected List<LocationType> location;
+    protected List<EvidencedStringType> text;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "locationType")
+    protected String locationType;
+    @XmlAttribute(name = "name")
+    protected String name;
+    @XmlAttribute(name = "mass")
+    protected Float mass;
+    @XmlAttribute(name = "error")
+    protected String error;
+    @XmlAttribute(name = "method")
+    protected String method;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
 
-  protected List<EventType> event;
-
-  protected List<IsoformType> isoform;
-
-  protected List<InteractantType> interactant;
-
-  @XmlElement(defaultValue = "false")
-  protected Boolean organismsDiffer;
-
-  protected Integer experiments;
-
-  protected CommentType.Disease disease;
-
-  protected List<LocationType> location;
-
-  protected List<EvidencedStringType> text;
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
-
-  @XmlAttribute(name = "locationType")
-  protected String locationType;
-
-  @XmlAttribute(name = "name")
-  protected String name;
-
-  @XmlAttribute(name = "mass")
-  protected Float mass;
-
-  @XmlAttribute(name = "error")
-  protected String error;
-
-  @XmlAttribute(name = "method")
-  protected String method;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
-
-  /**
-   * Gets the value of the molecule property.
-   * 
-   * @return possible object is {@link MoleculeType }
-   * 
-   */
-  public MoleculeType getMolecule()
-  {
-    return molecule;
-  }
-
-  /**
-   * Sets the value of the molecule property.
-   * 
-   * @param value
-   *          allowed object is {@link MoleculeType }
-   * 
-   */
-  public void setMolecule(MoleculeType value)
-  {
-    this.molecule = value;
-  }
-
-  /**
-   * Gets the value of the absorption property.
-   * 
-   * @return possible object is {@link CommentType.Absorption }
-   * 
-   */
-  public CommentType.Absorption getAbsorption()
-  {
-    return absorption;
-  }
-
-  /**
-   * Sets the value of the absorption property.
-   * 
-   * @param value
-   *          allowed object is {@link CommentType.Absorption }
-   * 
-   */
-  public void setAbsorption(CommentType.Absorption value)
-  {
-    this.absorption = value;
-  }
-
-  /**
-   * Gets the value of the kinetics property.
-   * 
-   * @return possible object is {@link CommentType.Kinetics }
-   * 
-   */
-  public CommentType.Kinetics getKinetics()
-  {
-    return kinetics;
-  }
-
-  /**
-   * Sets the value of the kinetics property.
-   * 
-   * @param value
-   *          allowed object is {@link CommentType.Kinetics }
-   * 
-   */
-  public void setKinetics(CommentType.Kinetics value)
-  {
-    this.kinetics = value;
-  }
-
-  /**
-   * Gets the value of the phDependence property.
-   * 
-   * @return possible object is {@link CommentType.PhDependence }
-   * 
-   */
-  public CommentType.PhDependence getPhDependence()
-  {
-    return phDependence;
-  }
-
-  /**
-   * Sets the value of the phDependence property.
-   * 
-   * @param value
-   *          allowed object is {@link CommentType.PhDependence }
-   * 
-   */
-  public void setPhDependence(CommentType.PhDependence value)
-  {
-    this.phDependence = value;
-  }
-
-  /**
-   * Gets the value of the redoxPotential property.
-   * 
-   * @return possible object is {@link CommentType.RedoxPotential }
-   * 
-   */
-  public CommentType.RedoxPotential getRedoxPotential()
-  {
-    return redoxPotential;
-  }
-
-  /**
-   * Sets the value of the redoxPotential property.
-   * 
-   * @param value
-   *          allowed object is {@link CommentType.RedoxPotential }
-   * 
-   */
-  public void setRedoxPotential(CommentType.RedoxPotential value)
-  {
-    this.redoxPotential = value;
-  }
-
-  /**
-   * Gets the value of the temperatureDependence property.
-   * 
-   * @return possible object is {@link CommentType.TemperatureDependence }
-   * 
-   */
-  public CommentType.TemperatureDependence getTemperatureDependence()
-  {
-    return temperatureDependence;
-  }
-
-  /**
-   * Sets the value of the temperatureDependence property.
-   * 
-   * @param value
-   *          allowed object is {@link CommentType.TemperatureDependence }
-   * 
-   */
-  public void setTemperatureDependence(
-          CommentType.TemperatureDependence value)
-  {
-    this.temperatureDependence = value;
-  }
-
-  /**
-   * Gets the value of the reaction property.
-   * 
-   * @return possible object is {@link ReactionType }
-   * 
-   */
-  public ReactionType getReaction()
-  {
-    return reaction;
-  }
-
-  /**
-   * Sets the value of the reaction property.
-   * 
-   * @param value
-   *          allowed object is {@link ReactionType }
-   * 
-   */
-  public void setReaction(ReactionType value)
-  {
-    this.reaction = value;
-  }
-
-  /**
-   * Gets the value of the physiologicalReaction property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the physiologicalReaction property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getPhysiologicalReaction().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link PhysiologicalReactionType }
-   * 
-   * 
-   */
-  public List<PhysiologicalReactionType> getPhysiologicalReaction()
-  {
-    if (physiologicalReaction == null)
-    {
-      physiologicalReaction = new ArrayList<PhysiologicalReactionType>();
+    /**
+     * Gets the value of the molecule property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MoleculeType }
+     *     
+     */
+    public MoleculeType getMolecule() {
+        return molecule;
     }
-    return this.physiologicalReaction;
-  }
-
-  /**
-   * Gets the value of the cofactor property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the cofactor property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getCofactor().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link CofactorType }
-   * 
-   * 
-   */
-  public List<CofactorType> getCofactor()
-  {
-    if (cofactor == null)
-    {
-      cofactor = new ArrayList<CofactorType>();
+
+    /**
+     * Sets the value of the molecule property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MoleculeType }
+     *     
+     */
+    public void setMolecule(MoleculeType value) {
+        this.molecule = value;
     }
-    return this.cofactor;
-  }
-
-  /**
-   * Gets the value of the subcellularLocation property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the subcellularLocation property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getSubcellularLocation().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link SubcellularLocationType }
-   * 
-   * 
-   */
-  public List<SubcellularLocationType> getSubcellularLocation()
-  {
-    if (subcellularLocation == null)
-    {
-      subcellularLocation = new ArrayList<SubcellularLocationType>();
+
+    /**
+     * Gets the value of the absorption property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CommentType.Absorption }
+     *     
+     */
+    public CommentType.Absorption getAbsorption() {
+        return absorption;
     }
-    return this.subcellularLocation;
-  }
-
-  /**
-   * Gets the value of the conflict property.
-   * 
-   * @return possible object is {@link CommentType.Conflict }
-   * 
-   */
-  public CommentType.Conflict getConflict()
-  {
-    return conflict;
-  }
-
-  /**
-   * Sets the value of the conflict property.
-   * 
-   * @param value
-   *          allowed object is {@link CommentType.Conflict }
-   * 
-   */
-  public void setConflict(CommentType.Conflict value)
-  {
-    this.conflict = value;
-  }
-
-  /**
-   * Gets the value of the link property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the link property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getLink().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link CommentType.Link }
-   * 
-   * 
-   */
-  public List<CommentType.Link> getLink()
-  {
-    if (link == null)
-    {
-      link = new ArrayList<CommentType.Link>();
+
+    /**
+     * Sets the value of the absorption property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CommentType.Absorption }
+     *     
+     */
+    public void setAbsorption(CommentType.Absorption value) {
+        this.absorption = value;
     }
-    return this.link;
-  }
-
-  /**
-   * Gets the value of the event property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the event property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvent().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link EventType }
-   * 
-   * 
-   */
-  public List<EventType> getEvent()
-  {
-    if (event == null)
-    {
-      event = new ArrayList<EventType>();
+
+    /**
+     * Gets the value of the kinetics property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CommentType.Kinetics }
+     *     
+     */
+    public CommentType.Kinetics getKinetics() {
+        return kinetics;
     }
-    return this.event;
-  }
-
-  /**
-   * Gets the value of the isoform property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the isoform property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getIsoform().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link IsoformType
-   * }
-   * 
-   * 
-   */
-  public List<IsoformType> getIsoform()
-  {
-    if (isoform == null)
-    {
-      isoform = new ArrayList<IsoformType>();
+
+    /**
+     * Sets the value of the kinetics property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CommentType.Kinetics }
+     *     
+     */
+    public void setKinetics(CommentType.Kinetics value) {
+        this.kinetics = value;
     }
-    return this.isoform;
-  }
-
-  /**
-   * Gets the value of the interactant property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the interactant property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getInteractant().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link InteractantType }
-   * 
-   * 
-   */
-  public List<InteractantType> getInteractant()
-  {
-    if (interactant == null)
-    {
-      interactant = new ArrayList<InteractantType>();
+
+    /**
+     * Gets the value of the phDependence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CommentType.PhDependence }
+     *     
+     */
+    public CommentType.PhDependence getPhDependence() {
+        return phDependence;
     }
-    return this.interactant;
-  }
-
-  /**
-   * Gets the value of the organismsDiffer property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isOrganismsDiffer()
-  {
-    return organismsDiffer;
-  }
-
-  /**
-   * Sets the value of the organismsDiffer property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setOrganismsDiffer(Boolean value)
-  {
-    this.organismsDiffer = value;
-  }
-
-  /**
-   * Gets the value of the experiments property.
-   * 
-   * @return possible object is {@link Integer }
-   * 
-   */
-  public Integer getExperiments()
-  {
-    return experiments;
-  }
-
-  /**
-   * Sets the value of the experiments property.
-   * 
-   * @param value
-   *          allowed object is {@link Integer }
-   * 
-   */
-  public void setExperiments(Integer value)
-  {
-    this.experiments = value;
-  }
-
-  /**
-   * Gets the value of the disease property.
-   * 
-   * @return possible object is {@link CommentType.Disease }
-   * 
-   */
-  public CommentType.Disease getDisease()
-  {
-    return disease;
-  }
-
-  /**
-   * Sets the value of the disease property.
-   * 
-   * @param value
-   *          allowed object is {@link CommentType.Disease }
-   * 
-   */
-  public void setDisease(CommentType.Disease value)
-  {
-    this.disease = value;
-  }
-
-  /**
-   * Gets the value of the location property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the location property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getLocation().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link LocationType }
-   * 
-   * 
-   */
-  public List<LocationType> getLocation()
-  {
-    if (location == null)
-    {
-      location = new ArrayList<LocationType>();
+
+    /**
+     * Sets the value of the phDependence property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CommentType.PhDependence }
+     *     
+     */
+    public void setPhDependence(CommentType.PhDependence value) {
+        this.phDependence = value;
     }
-    return this.location;
-  }
-
-  /**
-   * Gets the value of the text property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the text property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getText().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidencedStringType }
-   * 
-   * 
-   */
-  public List<EvidencedStringType> getText()
-  {
-    if (text == null)
-    {
-      text = new ArrayList<EvidencedStringType>();
+
+    /**
+     * Gets the value of the redoxPotential property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CommentType.RedoxPotential }
+     *     
+     */
+    public CommentType.RedoxPotential getRedoxPotential() {
+        return redoxPotential;
     }
-    return this.text;
-  }
-
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
-
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
-
-  /**
-   * Gets the value of the locationType property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getLocationType()
-  {
-    return locationType;
-  }
-
-  /**
-   * Sets the value of the locationType property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setLocationType(String value)
-  {
-    this.locationType = value;
-  }
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getName()
-  {
-    return name;
-  }
-
-  /**
-   * Sets the value of the name property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setName(String value)
-  {
-    this.name = value;
-  }
-
-  /**
-   * Gets the value of the mass property.
-   * 
-   * @return possible object is {@link Float }
-   * 
-   */
-  public Float getMass()
-  {
-    return mass;
-  }
-
-  /**
-   * Sets the value of the mass property.
-   * 
-   * @param value
-   *          allowed object is {@link Float }
-   * 
-   */
-  public void setMass(Float value)
-  {
-    this.mass = value;
-  }
-
-  /**
-   * Gets the value of the error property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getError()
-  {
-    return error;
-  }
-
-  /**
-   * Sets the value of the error property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setError(String value)
-  {
-    this.error = value;
-  }
-
-  /**
-   * Gets the value of the method property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getMethod()
-  {
-    return method;
-  }
-
-  /**
-   * Sets the value of the method property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setMethod(String value)
-  {
-    this.method = value;
-  }
-
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+
+    /**
+     * Sets the value of the redoxPotential property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CommentType.RedoxPotential }
+     *     
+     */
+    public void setRedoxPotential(CommentType.RedoxPotential value) {
+        this.redoxPotential = value;
     }
-    return this.evidence;
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="max" type="{http://uniprot.org/uniprot}evidencedStringType" minOccurs="0"/>
-   *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "max", "text" })
-  public static class Absorption
-  {
-
-    protected EvidencedStringType max;
 
-    protected List<EvidencedStringType> text;
+    /**
+     * Gets the value of the temperatureDependence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CommentType.TemperatureDependence }
+     *     
+     */
+    public CommentType.TemperatureDependence getTemperatureDependence() {
+        return temperatureDependence;
+    }
 
     /**
-     * Gets the value of the max property.
+     * Sets the value of the temperatureDependence property.
      * 
-     * @return possible object is {@link EvidencedStringType }
+     * @param value
+     *     allowed object is
+     *     {@link CommentType.TemperatureDependence }
+     *     
+     */
+    public void setTemperatureDependence(CommentType.TemperatureDependence value) {
+        this.temperatureDependence = value;
+    }
+
+    /**
+     * Gets the value of the reaction property.
      * 
+     * @return
+     *     possible object is
+     *     {@link ReactionType }
+     *     
      */
-    public EvidencedStringType getMax()
-    {
-      return max;
+    public ReactionType getReaction() {
+        return reaction;
     }
 
     /**
-     * Sets the value of the max property.
+     * Sets the value of the reaction property.
      * 
      * @param value
-     *          allowed object is {@link EvidencedStringType }
-     * 
+     *     allowed object is
+     *     {@link ReactionType }
+     *     
      */
-    public void setMax(EvidencedStringType value)
-    {
-      this.max = value;
+    public void setReaction(ReactionType value) {
+        this.reaction = value;
     }
 
     /**
-     * Gets the value of the text property.
+     * Gets the value of the physiologicalReaction property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the text property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the physiologicalReaction property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getText().add(newItem);
+     *    getPhysiologicalReaction().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
+     * {@link PhysiologicalReactionType }
      * 
      * 
      */
-    public List<EvidencedStringType> getText()
-    {
-      if (text == null)
-      {
-        text = new ArrayList<EvidencedStringType>();
-      }
-      return this.text;
+    public List<PhysiologicalReactionType> getPhysiologicalReaction() {
+        if (physiologicalReaction == null) {
+            physiologicalReaction = new ArrayList<PhysiologicalReactionType>();
+        }
+        return this.physiologicalReaction;
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="sequence" minOccurs="0">
-   *           &lt;complexType>
-   *             &lt;complexContent>
-   *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *                 &lt;attribute name="resource" use="required">
-   *                   &lt;simpleType>
-   *                     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
-   *                       &lt;enumeration value="EMBL-CDS"/>
-   *                       &lt;enumeration value="EMBL"/>
-   *                     &lt;/restriction>
-   *                   &lt;/simpleType>
-   *                 &lt;/attribute>
-   *                 &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *                 &lt;attribute name="version" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *               &lt;/restriction>
-   *             &lt;/complexContent>
-   *           &lt;/complexType>
-   *         &lt;/element>
-   *       &lt;/sequence>
-   *       &lt;attribute name="type" use="required">
-   *         &lt;simpleType>
-   *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
-   *             &lt;enumeration value="frameshift"/>
-   *             &lt;enumeration value="erroneous initiation"/>
-   *             &lt;enumeration value="erroneous termination"/>
-   *             &lt;enumeration value="erroneous gene model prediction"/>
-   *             &lt;enumeration value="erroneous translation"/>
-   *             &lt;enumeration value="miscellaneous discrepancy"/>
-   *           &lt;/restriction>
-   *         &lt;/simpleType>
-   *       &lt;/attribute>
-   *       &lt;attribute name="ref" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "sequence" })
-  public static class Conflict
-  {
-
-    protected CommentType.Conflict.Sequence sequence;
-
-    @XmlAttribute(name = "type", required = true)
-    protected String type;
-
-    @XmlAttribute(name = "ref")
-    protected String ref;
-
     /**
-     * Gets the value of the sequence property.
+     * Gets the value of the cofactor property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the cofactor property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getCofactor().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link CofactorType }
      * 
-     * @return possible object is {@link CommentType.Conflict.Sequence }
      * 
      */
-    public CommentType.Conflict.Sequence getSequence()
-    {
-      return sequence;
+    public List<CofactorType> getCofactor() {
+        if (cofactor == null) {
+            cofactor = new ArrayList<CofactorType>();
+        }
+        return this.cofactor;
     }
 
     /**
-     * Sets the value of the sequence property.
+     * Gets the value of the subcellularLocation property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the subcellularLocation property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getSubcellularLocation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link SubcellularLocationType }
      * 
-     * @param value
-     *          allowed object is {@link CommentType.Conflict.Sequence }
      * 
      */
-    public void setSequence(CommentType.Conflict.Sequence value)
-    {
-      this.sequence = value;
+    public List<SubcellularLocationType> getSubcellularLocation() {
+        if (subcellularLocation == null) {
+            subcellularLocation = new ArrayList<SubcellularLocationType>();
+        }
+        return this.subcellularLocation;
     }
 
     /**
-     * Gets the value of the type property.
-     * 
-     * @return possible object is {@link String }
+     * Gets the value of the conflict property.
      * 
+     * @return
+     *     possible object is
+     *     {@link CommentType.Conflict }
+     *     
      */
-    public String getType()
-    {
-      return type;
+    public CommentType.Conflict getConflict() {
+        return conflict;
     }
 
     /**
-     * Sets the value of the type property.
+     * Sets the value of the conflict property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link CommentType.Conflict }
+     *     
      */
-    public void setType(String value)
-    {
-      this.type = value;
+    public void setConflict(CommentType.Conflict value) {
+        this.conflict = value;
     }
 
     /**
-     * Gets the value of the ref property.
+     * Gets the value of the link property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the link property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getLink().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link CommentType.Link }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getRef()
-    {
-      return ref;
+    public List<CommentType.Link> getLink() {
+        if (link == null) {
+            link = new ArrayList<CommentType.Link>();
+        }
+        return this.link;
     }
 
     /**
-     * Sets the value of the ref property.
+     * Gets the value of the event property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the event property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvent().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EventType }
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setRef(String value)
-    {
-      this.ref = value;
+    public List<EventType> getEvent() {
+        if (event == null) {
+            event = new ArrayList<EventType>();
+        }
+        return this.event;
     }
 
     /**
-     * <p>
-     * Java class for anonymous complex type.
+     * Gets the value of the isoform property.
      * 
      * <p>
-     * The following schema fragment specifies the expected content contained
-     * within this class.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the isoform property.
      * 
+     * <p>
+     * For example, to add a new item, do as follows:
      * <pre>
-     * &lt;complexType>
-     *   &lt;complexContent>
-     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-     *       &lt;attribute name="resource" use="required">
-     *         &lt;simpleType>
-     *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
-     *             &lt;enumeration value="EMBL-CDS"/>
-     *             &lt;enumeration value="EMBL"/>
-     *           &lt;/restriction>
-     *         &lt;/simpleType>
-     *       &lt;/attribute>
-     *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-     *       &lt;attribute name="version" type="{http://www.w3.org/2001/XMLSchema}int" />
-     *     &lt;/restriction>
-     *   &lt;/complexContent>
-     * &lt;/complexType>
+     *    getIsoform().add(newItem);
      * </pre>
      * 
      * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link IsoformType }
+     * 
+     * 
      */
-    @XmlAccessorType(XmlAccessType.FIELD)
-    @XmlType(name = "")
-    public static class Sequence
-    {
-
-      @XmlAttribute(name = "resource", required = true)
-      protected String resource;
-
-      @XmlAttribute(name = "id", required = true)
-      protected String id;
-
-      @XmlAttribute(name = "version")
-      protected Integer version;
-
-      /**
-       * Gets the value of the resource property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getResource()
-      {
-        return resource;
-      }
-
-      /**
-       * Sets the value of the resource property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setResource(String value)
-      {
-        this.resource = value;
-      }
-
-      /**
-       * Gets the value of the id property.
-       * 
-       * @return possible object is {@link String }
-       * 
-       */
-      public String getId()
-      {
-        return id;
-      }
-
-      /**
-       * Sets the value of the id property.
-       * 
-       * @param value
-       *          allowed object is {@link String }
-       * 
-       */
-      public void setId(String value)
-      {
-        this.id = value;
-      }
-
-      /**
-       * Gets the value of the version property.
-       * 
-       * @return possible object is {@link Integer }
-       * 
-       */
-      public Integer getVersion()
-      {
-        return version;
-      }
-
-      /**
-       * Sets the value of the version property.
-       * 
-       * @param value
-       *          allowed object is {@link Integer }
-       * 
-       */
-      public void setVersion(Integer value)
-      {
-        this.version = value;
-      }
-
+    public List<IsoformType> getIsoform() {
+        if (isoform == null) {
+            isoform = new ArrayList<IsoformType>();
+        }
+        return this.isoform;
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
-   *         &lt;element name="acronym" type="{http://www.w3.org/2001/XMLSchema}string"/>
-   *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string"/>
-   *         &lt;element name="dbReference" type="{http://uniprot.org/uniprot}dbReferenceType"/>
-   *       &lt;/sequence>
-   *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "name", "acronym", "description", "dbReference" })
-  public static class Disease
-  {
-
-    @XmlElement(required = true)
-    protected String name;
-
-    @XmlElement(required = true)
-    protected String acronym;
+    /**
+     * Gets the value of the interactant property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the interactant property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getInteractant().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link InteractantType }
+     * 
+     * 
+     */
+    public List<InteractantType> getInteractant() {
+        if (interactant == null) {
+            interactant = new ArrayList<InteractantType>();
+        }
+        return this.interactant;
+    }
 
-    @XmlElement(required = true)
-    protected String description;
+    /**
+     * Gets the value of the organismsDiffer property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isOrganismsDiffer() {
+        return organismsDiffer;
+    }
 
-    @XmlElement(required = true)
-    protected DbReferenceType dbReference;
+    /**
+     * Sets the value of the organismsDiffer property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setOrganismsDiffer(Boolean value) {
+        this.organismsDiffer = value;
+    }
 
-    @XmlAttribute(name = "id", required = true)
-    protected String id;
+    /**
+     * Gets the value of the experiments property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Integer }
+     *     
+     */
+    public Integer getExperiments() {
+        return experiments;
+    }
 
     /**
-     * Gets the value of the name property.
+     * Sets the value of the experiments property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link Integer }
+     *     
+     */
+    public void setExperiments(Integer value) {
+        this.experiments = value;
+    }
+
+    /**
+     * Gets the value of the disease property.
      * 
+     * @return
+     *     possible object is
+     *     {@link CommentType.Disease }
+     *     
      */
-    public String getName()
-    {
-      return name;
+    public CommentType.Disease getDisease() {
+        return disease;
     }
 
     /**
-     * Sets the value of the name property.
+     * Sets the value of the disease property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link CommentType.Disease }
+     *     
      */
-    public void setName(String value)
-    {
-      this.name = value;
+    public void setDisease(CommentType.Disease value) {
+        this.disease = value;
     }
 
     /**
-     * Gets the value of the acronym property.
+     * Gets the value of the location property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the location property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getLocation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link LocationType }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getAcronym()
-    {
-      return acronym;
+    public List<LocationType> getLocation() {
+        if (location == null) {
+            location = new ArrayList<LocationType>();
+        }
+        return this.location;
     }
 
     /**
-     * Sets the value of the acronym property.
+     * Gets the value of the text property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the text property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getText().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EvidencedStringType }
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setAcronym(String value)
-    {
-      this.acronym = value;
+    public List<EvidencedStringType> getText() {
+        if (text == null) {
+            text = new ArrayList<EvidencedStringType>();
+        }
+        return this.text;
     }
 
     /**
-     * Gets the value of the description property.
-     * 
-     * @return possible object is {@link String }
+     * Gets the value of the type property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getDescription()
-    {
-      return description;
+    public String getType() {
+        return type;
     }
 
     /**
-     * Sets the value of the description property.
+     * Sets the value of the type property.
      * 
      * @param value
-     *          allowed object is {@link String }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the locationType property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public void setDescription(String value)
-    {
-      this.description = value;
+    public String getLocationType() {
+        return locationType;
     }
 
     /**
-     * Gets the value of the dbReference property.
+     * Sets the value of the locationType property.
      * 
-     * @return possible object is {@link DbReferenceType }
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLocationType(String value) {
+        this.locationType = value;
+    }
+
+    /**
+     * Gets the value of the name property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public DbReferenceType getDbReference()
-    {
-      return dbReference;
+    public String getName() {
+        return name;
     }
 
     /**
-     * Sets the value of the dbReference property.
+     * Sets the value of the name property.
      * 
      * @param value
-     *          allowed object is {@link DbReferenceType }
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
+
+    /**
+     * Gets the value of the mass property.
      * 
+     * @return
+     *     possible object is
+     *     {@link Float }
+     *     
      */
-    public void setDbReference(DbReferenceType value)
-    {
-      this.dbReference = value;
+    public Float getMass() {
+        return mass;
     }
 
     /**
-     * Gets the value of the id property.
+     * Sets the value of the mass property.
      * 
-     * @return possible object is {@link String }
+     * @param value
+     *     allowed object is
+     *     {@link Float }
+     *     
+     */
+    public void setMass(Float value) {
+        this.mass = value;
+    }
+
+    /**
+     * Gets the value of the error property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public String getId()
-    {
-      return id;
+    public String getError() {
+        return error;
     }
 
     /**
-     * Sets the value of the id property.
+     * Sets the value of the error property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setId(String value)
-    {
-      this.id = value;
+    public void setError(String value) {
+        this.error = value;
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="KM" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="Vmax" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "km", "vmax", "text" })
-  public static class Kinetics
-  {
-
-    @XmlElement(name = "KM")
-    protected List<EvidencedStringType> km;
-
-    @XmlElement(name = "Vmax")
-    protected List<EvidencedStringType> vmax;
+    /**
+     * Gets the value of the method property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMethod() {
+        return method;
+    }
 
-    protected List<EvidencedStringType> text;
+    /**
+     * Sets the value of the method property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMethod(String value) {
+        this.method = value;
+    }
 
     /**
-     * Gets the value of the km property.
+     * Gets the value of the evidence property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the km property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getKM().add(newItem);
+     *    getEvidence().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
+     * {@link Integer }
      * 
      * 
      */
-    public List<EvidencedStringType> getKM()
-    {
-      if (km == null)
-      {
-        km = new ArrayList<EvidencedStringType>();
-      }
-      return this.km;
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
 
+
     /**
-     * Gets the value of the vmax property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the vmax property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getVmax().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="max" type="{http://uniprot.org/uniprot}evidencedStringType" minOccurs="0"/>
+     *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getVmax()
-    {
-      if (vmax == null)
-      {
-        vmax = new ArrayList<EvidencedStringType>();
-      }
-      return this.vmax;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "max",
+        "text"
+    })
+    public static class Absorption {
+
+        protected EvidencedStringType max;
+        protected List<EvidencedStringType> text;
+
+        /**
+         * Gets the value of the max property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getMax() {
+            return max;
+        }
+
+        /**
+         * Sets the value of the max property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setMax(EvidencedStringType value) {
+            this.max = value;
+        }
+
+        /**
+         * Gets the value of the text property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the text property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getText().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getText() {
+            if (text == null) {
+                text = new ArrayList<EvidencedStringType>();
+            }
+            return this.text;
+        }
+
     }
 
+
     /**
-     * Gets the value of the text property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the text property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getText().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="sequence" minOccurs="0">
+     *           &lt;complexType>
+     *             &lt;complexContent>
+     *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *                 &lt;attribute name="resource" use="required">
+     *                   &lt;simpleType>
+     *                     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+     *                       &lt;enumeration value="EMBL-CDS"/>
+     *                       &lt;enumeration value="EMBL"/>
+     *                     &lt;/restriction>
+     *                   &lt;/simpleType>
+     *                 &lt;/attribute>
+     *                 &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *                 &lt;attribute name="version" type="{http://www.w3.org/2001/XMLSchema}int" />
+     *               &lt;/restriction>
+     *             &lt;/complexContent>
+     *           &lt;/complexType>
+     *         &lt;/element>
+     *       &lt;/sequence>
+     *       &lt;attribute name="type" use="required">
+     *         &lt;simpleType>
+     *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+     *             &lt;enumeration value="frameshift"/>
+     *             &lt;enumeration value="erroneous initiation"/>
+     *             &lt;enumeration value="erroneous termination"/>
+     *             &lt;enumeration value="erroneous gene model prediction"/>
+     *             &lt;enumeration value="erroneous translation"/>
+     *             &lt;enumeration value="miscellaneous discrepancy"/>
+     *           &lt;/restriction>
+     *         &lt;/simpleType>
+     *       &lt;/attribute>
+     *       &lt;attribute name="ref" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getText()
-    {
-      if (text == null)
-      {
-        text = new ArrayList<EvidencedStringType>();
-      }
-      return this.text;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "sequence"
+    })
+    public static class Conflict {
+
+        protected CommentType.Conflict.Sequence sequence;
+        @XmlAttribute(name = "type", required = true)
+        protected String type;
+        @XmlAttribute(name = "ref")
+        protected String ref;
+
+        /**
+         * Gets the value of the sequence property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link CommentType.Conflict.Sequence }
+         *     
+         */
+        public CommentType.Conflict.Sequence getSequence() {
+            return sequence;
+        }
+
+        /**
+         * Sets the value of the sequence property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link CommentType.Conflict.Sequence }
+         *     
+         */
+        public void setSequence(CommentType.Conflict.Sequence value) {
+            this.sequence = value;
+        }
+
+        /**
+         * Gets the value of the type property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getType() {
+            return type;
+        }
+
+        /**
+         * Sets the value of the type property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setType(String value) {
+            this.type = value;
+        }
+
+        /**
+         * Gets the value of the ref property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getRef() {
+            return ref;
+        }
+
+        /**
+         * Sets the value of the ref property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setRef(String value) {
+            this.ref = value;
+        }
+
+
+        /**
+         * <p>Java class for anonymous complex type.
+         * 
+         * <p>The following schema fragment specifies the expected content contained within this class.
+         * 
+         * <pre>
+         * &lt;complexType>
+         *   &lt;complexContent>
+         *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+         *       &lt;attribute name="resource" use="required">
+         *         &lt;simpleType>
+         *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+         *             &lt;enumeration value="EMBL-CDS"/>
+         *             &lt;enumeration value="EMBL"/>
+         *           &lt;/restriction>
+         *         &lt;/simpleType>
+         *       &lt;/attribute>
+         *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+         *       &lt;attribute name="version" type="{http://www.w3.org/2001/XMLSchema}int" />
+         *     &lt;/restriction>
+         *   &lt;/complexContent>
+         * &lt;/complexType>
+         * </pre>
+         * 
+         * 
+         */
+        @XmlAccessorType(XmlAccessType.FIELD)
+        @XmlType(name = "")
+        public static class Sequence {
+
+            @XmlAttribute(name = "resource", required = true)
+            protected String resource;
+            @XmlAttribute(name = "id", required = true)
+            protected String id;
+            @XmlAttribute(name = "version")
+            protected Integer version;
+
+            /**
+             * Gets the value of the resource property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getResource() {
+                return resource;
+            }
+
+            /**
+             * Sets the value of the resource property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setResource(String value) {
+                this.resource = value;
+            }
+
+            /**
+             * Gets the value of the id property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link String }
+             *     
+             */
+            public String getId() {
+                return id;
+            }
+
+            /**
+             * Sets the value of the id property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link String }
+             *     
+             */
+            public void setId(String value) {
+                this.id = value;
+            }
+
+            /**
+             * Gets the value of the version property.
+             * 
+             * @return
+             *     possible object is
+             *     {@link Integer }
+             *     
+             */
+            public Integer getVersion() {
+                return version;
+            }
+
+            /**
+             * Sets the value of the version property.
+             * 
+             * @param value
+             *     allowed object is
+             *     {@link Integer }
+             *     
+             */
+            public void setVersion(Integer value) {
+                this.version = value;
+            }
+
+        }
+
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;attribute name="uri" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class Link
-  {
-
-    @XmlAttribute(name = "uri", required = true)
-    @XmlSchemaType(name = "anyURI")
-    protected String uri;
 
     /**
-     * Gets the value of the uri property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+     *         &lt;element name="acronym" type="{http://www.w3.org/2001/XMLSchema}string"/>
+     *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string"/>
+     *         &lt;element name="dbReference" type="{http://uniprot.org/uniprot}dbReferenceType"/>
+     *       &lt;/sequence>
+     *       &lt;attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getUri()
-    {
-      return uri;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "name",
+        "acronym",
+        "description",
+        "dbReference"
+    })
+    public static class Disease {
+
+        @XmlElement(required = true)
+        protected String name;
+        @XmlElement(required = true)
+        protected String acronym;
+        @XmlElement(required = true)
+        protected String description;
+        @XmlElement(required = true)
+        protected DbReferenceType dbReference;
+        @XmlAttribute(name = "id", required = true)
+        protected String id;
+
+        /**
+         * Gets the value of the name property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getName() {
+            return name;
+        }
+
+        /**
+         * Sets the value of the name property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setName(String value) {
+            this.name = value;
+        }
+
+        /**
+         * Gets the value of the acronym property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getAcronym() {
+            return acronym;
+        }
+
+        /**
+         * Sets the value of the acronym property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setAcronym(String value) {
+            this.acronym = value;
+        }
+
+        /**
+         * Gets the value of the description property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getDescription() {
+            return description;
+        }
+
+        /**
+         * Sets the value of the description property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setDescription(String value) {
+            this.description = value;
+        }
+
+        /**
+         * Gets the value of the dbReference property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link DbReferenceType }
+         *     
+         */
+        public DbReferenceType getDbReference() {
+            return dbReference;
+        }
+
+        /**
+         * Sets the value of the dbReference property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link DbReferenceType }
+         *     
+         */
+        public void setDbReference(DbReferenceType value) {
+            this.dbReference = value;
+        }
+
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
+
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setId(String value) {
+            this.id = value;
+        }
+
     }
 
+
     /**
-     * Sets the value of the uri property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="KM" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="Vmax" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setUri(String value)
-    {
-      this.uri = value;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "km",
+        "vmax",
+        "text"
+    })
+    public static class Kinetics {
+
+        @XmlElement(name = "KM")
+        protected List<EvidencedStringType> km;
+        @XmlElement(name = "Vmax")
+        protected List<EvidencedStringType> vmax;
+        protected List<EvidencedStringType> text;
+
+        /**
+         * Gets the value of the km property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the km property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getKM().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getKM() {
+            if (km == null) {
+                km = new ArrayList<EvidencedStringType>();
+            }
+            return this.km;
+        }
+
+        /**
+         * Gets the value of the vmax property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the vmax property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getVmax().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getVmax() {
+            if (vmax == null) {
+                vmax = new ArrayList<EvidencedStringType>();
+            }
+            return this.vmax;
+        }
+
+        /**
+         * Gets the value of the text property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the text property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getText().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getText() {
+            if (text == null) {
+                text = new ArrayList<EvidencedStringType>();
+            }
+            return this.text;
+        }
+
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "text" })
-  public static class PhDependence
-  {
-
-    @XmlElement(required = true)
-    protected List<EvidencedStringType> text;
 
     /**
-     * Gets the value of the text property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the text property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getText().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="uri" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getText()
-    {
-      if (text == null)
-      {
-        text = new ArrayList<EvidencedStringType>();
-      }
-      return this.text;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Link {
+
+        @XmlAttribute(name = "uri", required = true)
+        @XmlSchemaType(name = "anyURI")
+        protected String uri;
+
+        /**
+         * Gets the value of the uri property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getUri() {
+            return uri;
+        }
+
+        /**
+         * Sets the value of the uri property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setUri(String value) {
+            this.uri = value;
+        }
+
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "text" })
-  public static class RedoxPotential
-  {
-
-    @XmlElement(required = true)
-    protected List<EvidencedStringType> text;
 
     /**
-     * Gets the value of the text property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the text property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getText().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getText()
-    {
-      if (text == null)
-      {
-        text = new ArrayList<EvidencedStringType>();
-      }
-      return this.text;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "text"
+    })
+    public static class PhDependence {
+
+        @XmlElement(required = true)
+        protected List<EvidencedStringType> text;
+
+        /**
+         * Gets the value of the text property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the text property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getText().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getText() {
+            if (text == null) {
+                text = new ArrayList<EvidencedStringType>();
+            }
+            return this.text;
+        }
+
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "text" })
-  public static class TemperatureDependence
-  {
-
-    @XmlElement(required = true)
-    protected List<EvidencedStringType> text;
 
     /**
-     * Gets the value of the text property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the text property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getText().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "text"
+    })
+    public static class RedoxPotential {
+
+        @XmlElement(required = true)
+        protected List<EvidencedStringType> text;
+
+        /**
+         * Gets the value of the text property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the text property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getText().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getText() {
+            if (text == null) {
+                text = new ArrayList<EvidencedStringType>();
+            }
+            return this.text;
+        }
+
+    }
+
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="text" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
      * 
      * 
      */
-    public List<EvidencedStringType> getText()
-    {
-      if (text == null)
-      {
-        text = new ArrayList<EvidencedStringType>();
-      }
-      return this.text;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "text"
+    })
+    public static class TemperatureDependence {
+
+        @XmlElement(required = true)
+        protected List<EvidencedStringType> text;
+
+        /**
+         * Gets the value of the text property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the text property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getText().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getText() {
+            if (text == null) {
+                text = new ArrayList<EvidencedStringType>();
+            }
+            return this.text;
+        }
 
-  }
+    }
 
 }
index 1b98b9b..e1b1db1 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,16 +13,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes the authors of a citation when these are represented by a
- * consortium. Equivalent to the flat file RG-line.
+ * Describes the authors of a citation when these are represented by a consortium.
+ *             Equivalent to the flat file RG-line.
  * 
- * <p>
- * Java class for consortiumType complex type.
+ * <p>Java class for consortiumType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="consortiumType">
@@ -37,33 +36,33 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "consortiumType")
-public class ConsortiumType
-{
+public class ConsortiumType {
 
-  @XmlAttribute(name = "name", required = true)
-  protected String name;
+    @XmlAttribute(name = "name", required = true)
+    protected String name;
 
-  /**
-   * Gets the value of the name property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getName()
-  {
-    return name;
-  }
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
 
-  /**
-   * Sets the value of the name property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setName(String value)
-  {
-    this.name = value;
-  }
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
 
 }
index 84cbba7..9bfde39 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -14,16 +15,15 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes a database cross-reference. Equivalent to the flat file DR-line.
+ * Describes a database cross-reference.
+ *             Equivalent to the flat file DR-line.
+ *             
  * 
+ * <p>Java class for dbReferenceType complex type.
  * 
- * <p>
- * Java class for dbReferenceType complex type.
- * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="dbReferenceType">
@@ -44,153 +44,149 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "dbReferenceType", propOrder = { "molecule", "property" })
-public class DbReferenceType
-{
-
-  protected MoleculeType molecule;
-
-  protected List<PropertyType> property;
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
-
-  @XmlAttribute(name = "id", required = true)
-  protected String id;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
-
-  /**
-   * Gets the value of the molecule property.
-   * 
-   * @return possible object is {@link MoleculeType }
-   * 
-   */
-  public MoleculeType getMolecule()
-  {
-    return molecule;
-  }
+@XmlType(name = "dbReferenceType", propOrder = {
+    "molecule",
+    "property"
+})
+public class DbReferenceType {
+
+    protected MoleculeType molecule;
+    protected List<PropertyType> property;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "id", required = true)
+    protected String id;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
+
+    /**
+     * Gets the value of the molecule property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MoleculeType }
+     *     
+     */
+    public MoleculeType getMolecule() {
+        return molecule;
+    }
 
-  /**
-   * Sets the value of the molecule property.
-   * 
-   * @param value
-   *          allowed object is {@link MoleculeType }
-   * 
-   */
-  public void setMolecule(MoleculeType value)
-  {
-    this.molecule = value;
-  }
+    /**
+     * Sets the value of the molecule property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MoleculeType }
+     *     
+     */
+    public void setMolecule(MoleculeType value) {
+        this.molecule = value;
+    }
 
-  /**
-   * Gets the value of the property property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the property property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getProperty().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link PropertyType }
-   * 
-   * 
-   */
-  public List<PropertyType> getProperty()
-  {
-    if (property == null)
-    {
-      property = new ArrayList<PropertyType>();
+    /**
+     * Gets the value of the property property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the property property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getProperty().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link PropertyType }
+     * 
+     * 
+     */
+    public List<PropertyType> getProperty() {
+        if (property == null) {
+            property = new ArrayList<PropertyType>();
+        }
+        return this.property;
     }
-    return this.property;
-  }
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
 
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
 }
index 65bbd88..8ca1da7 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -18,13 +19,11 @@ import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.datatype.XMLGregorianCalendar;
 
+
 /**
- * <p>
- * Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType>
@@ -66,594 +65,561 @@ import javax.xml.datatype.XMLGregorianCalendar;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "",
-  propOrder =
-  { "accession", "name", "protein", "gene", "organism", "organismHost",
-      "geneLocation", "reference", "comment", "dbReference",
-      "proteinExistence", "keyword", "feature", "evidence", "sequence" })
+@XmlType(name = "", propOrder = {
+    "accession",
+    "name",
+    "protein",
+    "gene",
+    "organism",
+    "organismHost",
+    "geneLocation",
+    "reference",
+    "comment",
+    "dbReference",
+    "proteinExistence",
+    "keyword",
+    "feature",
+    "evidence",
+    "sequence"
+})
 @XmlRootElement(name = "entry")
-public class Entry
-{
-
-  @XmlElement(required = true)
-  protected List<String> accession;
-
-  @XmlElement(required = true)
-  protected List<String> name;
-
-  @XmlElement(required = true)
-  protected ProteinType protein;
-
-  protected List<GeneType> gene;
+public class Entry {
+
+    @XmlElement(required = true)
+    protected List<String> accession;
+    @XmlElement(required = true)
+    protected List<String> name;
+    @XmlElement(required = true)
+    protected ProteinType protein;
+    protected List<GeneType> gene;
+    @XmlElement(required = true)
+    protected OrganismType organism;
+    protected List<OrganismType> organismHost;
+    protected List<GeneLocationType> geneLocation;
+    @XmlElement(required = true)
+    protected List<ReferenceType> reference;
+    @XmlElement(nillable = true)
+    protected List<CommentType> comment;
+    protected List<DbReferenceType> dbReference;
+    @XmlElement(required = true)
+    protected ProteinExistenceType proteinExistence;
+    protected List<KeywordType> keyword;
+    protected List<FeatureType> feature;
+    protected List<EvidenceType> evidence;
+    @XmlElement(required = true)
+    protected SequenceType sequence;
+    @XmlAttribute(name = "dataset", required = true)
+    protected String dataset;
+    @XmlAttribute(name = "created", required = true)
+    @XmlSchemaType(name = "date")
+    protected XMLGregorianCalendar created;
+    @XmlAttribute(name = "modified", required = true)
+    @XmlSchemaType(name = "date")
+    protected XMLGregorianCalendar modified;
+    @XmlAttribute(name = "version", required = true)
+    protected int version;
+
+    /**
+     * Gets the value of the accession property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the accession property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getAccession().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getAccession() {
+        if (accession == null) {
+            accession = new ArrayList<String>();
+        }
+        return this.accession;
+    }
 
-  @XmlElement(required = true)
-  protected OrganismType organism;
+    /**
+     * Gets the value of the name property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the name property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getName().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getName() {
+        if (name == null) {
+            name = new ArrayList<String>();
+        }
+        return this.name;
+    }
 
-  protected List<OrganismType> organismHost;
+    /**
+     * Gets the value of the protein property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ProteinType }
+     *     
+     */
+    public ProteinType getProtein() {
+        return protein;
+    }
 
-  protected List<GeneLocationType> geneLocation;
+    /**
+     * Sets the value of the protein property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ProteinType }
+     *     
+     */
+    public void setProtein(ProteinType value) {
+        this.protein = value;
+    }
 
-  @XmlElement(required = true)
-  protected List<ReferenceType> reference;
+    /**
+     * Gets the value of the gene property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the gene property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getGene().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link GeneType }
+     * 
+     * 
+     */
+    public List<GeneType> getGene() {
+        if (gene == null) {
+            gene = new ArrayList<GeneType>();
+        }
+        return this.gene;
+    }
 
-  @XmlElement(nillable = true)
-  protected List<CommentType> comment;
+    /**
+     * Gets the value of the organism property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link OrganismType }
+     *     
+     */
+    public OrganismType getOrganism() {
+        return organism;
+    }
 
-  protected List<DbReferenceType> dbReference;
+    /**
+     * Sets the value of the organism property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link OrganismType }
+     *     
+     */
+    public void setOrganism(OrganismType value) {
+        this.organism = value;
+    }
 
-  @XmlElement(required = true)
-  protected ProteinExistenceType proteinExistence;
+    /**
+     * Gets the value of the organismHost property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the organismHost property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrganismHost().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link OrganismType }
+     * 
+     * 
+     */
+    public List<OrganismType> getOrganismHost() {
+        if (organismHost == null) {
+            organismHost = new ArrayList<OrganismType>();
+        }
+        return this.organismHost;
+    }
 
-  protected List<KeywordType> keyword;
+    /**
+     * Gets the value of the geneLocation property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the geneLocation property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getGeneLocation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link GeneLocationType }
+     * 
+     * 
+     */
+    public List<GeneLocationType> getGeneLocation() {
+        if (geneLocation == null) {
+            geneLocation = new ArrayList<GeneLocationType>();
+        }
+        return this.geneLocation;
+    }
 
-  protected List<FeatureType> feature;
+    /**
+     * Gets the value of the reference property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the reference property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getReference().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link ReferenceType }
+     * 
+     * 
+     */
+    public List<ReferenceType> getReference() {
+        if (reference == null) {
+            reference = new ArrayList<ReferenceType>();
+        }
+        return this.reference;
+    }
 
-  protected List<EvidenceType> evidence;
+    /**
+     * Gets the value of the comment property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the comment property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getComment().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link CommentType }
+     * 
+     * 
+     */
+    public List<CommentType> getComment() {
+        if (comment == null) {
+            comment = new ArrayList<CommentType>();
+        }
+        return this.comment;
+    }
 
-  @XmlElement(required = true)
-  protected SequenceType sequence;
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dbReference property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDbReference().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DbReferenceType }
+     * 
+     * 
+     */
+    public List<DbReferenceType> getDbReference() {
+        if (dbReference == null) {
+            dbReference = new ArrayList<DbReferenceType>();
+        }
+        return this.dbReference;
+    }
 
-  @XmlAttribute(name = "dataset", required = true)
-  protected String dataset;
+    /**
+     * Gets the value of the proteinExistence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ProteinExistenceType }
+     *     
+     */
+    public ProteinExistenceType getProteinExistence() {
+        return proteinExistence;
+    }
 
-  @XmlAttribute(name = "created", required = true)
-  @XmlSchemaType(name = "date")
-  protected XMLGregorianCalendar created;
+    /**
+     * Sets the value of the proteinExistence property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ProteinExistenceType }
+     *     
+     */
+    public void setProteinExistence(ProteinExistenceType value) {
+        this.proteinExistence = value;
+    }
 
-  @XmlAttribute(name = "modified", required = true)
-  @XmlSchemaType(name = "date")
-  protected XMLGregorianCalendar modified;
+    /**
+     * Gets the value of the keyword property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the keyword property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getKeyword().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link KeywordType }
+     * 
+     * 
+     */
+    public List<KeywordType> getKeyword() {
+        if (keyword == null) {
+            keyword = new ArrayList<KeywordType>();
+        }
+        return this.keyword;
+    }
 
-  @XmlAttribute(name = "version", required = true)
-  protected int version;
+    /**
+     * Gets the value of the feature property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the feature property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getFeature().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link FeatureType }
+     * 
+     * 
+     */
+    public List<FeatureType> getFeature() {
+        if (feature == null) {
+            feature = new ArrayList<FeatureType>();
+        }
+        return this.feature;
+    }
 
-  /**
-   * Gets the value of the accession property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the accession property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getAccession().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getAccession()
-  {
-    if (accession == null)
-    {
-      accession = new ArrayList<String>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EvidenceType }
+     * 
+     * 
+     */
+    public List<EvidenceType> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<EvidenceType>();
+        }
+        return this.evidence;
     }
-    return this.accession;
-  }
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the name property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getName()
-  {
-    if (name == null)
-    {
-      name = new ArrayList<String>();
+
+    /**
+     * Gets the value of the sequence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SequenceType }
+     *     
+     */
+    public SequenceType getSequence() {
+        return sequence;
     }
-    return this.name;
-  }
-
-  /**
-   * Gets the value of the protein property.
-   * 
-   * @return possible object is {@link ProteinType }
-   * 
-   */
-  public ProteinType getProtein()
-  {
-    return protein;
-  }
-
-  /**
-   * Sets the value of the protein property.
-   * 
-   * @param value
-   *          allowed object is {@link ProteinType }
-   * 
-   */
-  public void setProtein(ProteinType value)
-  {
-    this.protein = value;
-  }
-
-  /**
-   * Gets the value of the gene property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the gene property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getGene().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link GeneType }
-   * 
-   * 
-   */
-  public List<GeneType> getGene()
-  {
-    if (gene == null)
-    {
-      gene = new ArrayList<GeneType>();
+
+    /**
+     * Sets the value of the sequence property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SequenceType }
+     *     
+     */
+    public void setSequence(SequenceType value) {
+        this.sequence = value;
     }
-    return this.gene;
-  }
-
-  /**
-   * Gets the value of the organism property.
-   * 
-   * @return possible object is {@link OrganismType }
-   * 
-   */
-  public OrganismType getOrganism()
-  {
-    return organism;
-  }
-
-  /**
-   * Sets the value of the organism property.
-   * 
-   * @param value
-   *          allowed object is {@link OrganismType }
-   * 
-   */
-  public void setOrganism(OrganismType value)
-  {
-    this.organism = value;
-  }
-
-  /**
-   * Gets the value of the organismHost property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the organismHost property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getOrganismHost().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link OrganismType }
-   * 
-   * 
-   */
-  public List<OrganismType> getOrganismHost()
-  {
-    if (organismHost == null)
-    {
-      organismHost = new ArrayList<OrganismType>();
+
+    /**
+     * Gets the value of the dataset property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDataset() {
+        return dataset;
     }
-    return this.organismHost;
-  }
-
-  /**
-   * Gets the value of the geneLocation property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the geneLocation property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getGeneLocation().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link GeneLocationType }
-   * 
-   * 
-   */
-  public List<GeneLocationType> getGeneLocation()
-  {
-    if (geneLocation == null)
-    {
-      geneLocation = new ArrayList<GeneLocationType>();
+
+    /**
+     * Sets the value of the dataset property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDataset(String value) {
+        this.dataset = value;
     }
-    return this.geneLocation;
-  }
-
-  /**
-   * Gets the value of the reference property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the reference property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getReference().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link ReferenceType }
-   * 
-   * 
-   */
-  public List<ReferenceType> getReference()
-  {
-    if (reference == null)
-    {
-      reference = new ArrayList<ReferenceType>();
+
+    /**
+     * Gets the value of the created property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getCreated() {
+        return created;
     }
-    return this.reference;
-  }
-
-  /**
-   * Gets the value of the comment property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the comment property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getComment().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link CommentType
-   * }
-   * 
-   * 
-   */
-  public List<CommentType> getComment()
-  {
-    if (comment == null)
-    {
-      comment = new ArrayList<CommentType>();
+
+    /**
+     * Sets the value of the created property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setCreated(XMLGregorianCalendar value) {
+        this.created = value;
     }
-    return this.comment;
-  }
-
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the dbReference property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getDbReference().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link DbReferenceType }
-   * 
-   * 
-   */
-  public List<DbReferenceType> getDbReference()
-  {
-    if (dbReference == null)
-    {
-      dbReference = new ArrayList<DbReferenceType>();
+
+    /**
+     * Gets the value of the modified property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getModified() {
+        return modified;
     }
-    return this.dbReference;
-  }
-
-  /**
-   * Gets the value of the proteinExistence property.
-   * 
-   * @return possible object is {@link ProteinExistenceType }
-   * 
-   */
-  public ProteinExistenceType getProteinExistence()
-  {
-    return proteinExistence;
-  }
-
-  /**
-   * Sets the value of the proteinExistence property.
-   * 
-   * @param value
-   *          allowed object is {@link ProteinExistenceType }
-   * 
-   */
-  public void setProteinExistence(ProteinExistenceType value)
-  {
-    this.proteinExistence = value;
-  }
-
-  /**
-   * Gets the value of the keyword property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the keyword property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getKeyword().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link KeywordType
-   * }
-   * 
-   * 
-   */
-  public List<KeywordType> getKeyword()
-  {
-    if (keyword == null)
-    {
-      keyword = new ArrayList<KeywordType>();
+
+    /**
+     * Sets the value of the modified property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setModified(XMLGregorianCalendar value) {
+        this.modified = value;
     }
-    return this.keyword;
-  }
-
-  /**
-   * Gets the value of the feature property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the feature property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getFeature().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link FeatureType
-   * }
-   * 
-   * 
-   */
-  public List<FeatureType> getFeature()
-  {
-    if (feature == null)
-    {
-      feature = new ArrayList<FeatureType>();
+
+    /**
+     * Gets the value of the version property.
+     * 
+     */
+    public int getVersion() {
+        return version;
     }
-    return this.feature;
-  }
-
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidenceType }
-   * 
-   * 
-   */
-  public List<EvidenceType> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<EvidenceType>();
+
+    /**
+     * Sets the value of the version property.
+     * 
+     */
+    public void setVersion(int value) {
+        this.version = value;
     }
-    return this.evidence;
-  }
-
-  /**
-   * Gets the value of the sequence property.
-   * 
-   * @return possible object is {@link SequenceType }
-   * 
-   */
-  public SequenceType getSequence()
-  {
-    return sequence;
-  }
-
-  /**
-   * Sets the value of the sequence property.
-   * 
-   * @param value
-   *          allowed object is {@link SequenceType }
-   * 
-   */
-  public void setSequence(SequenceType value)
-  {
-    this.sequence = value;
-  }
-
-  /**
-   * Gets the value of the dataset property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDataset()
-  {
-    return dataset;
-  }
-
-  /**
-   * Sets the value of the dataset property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDataset(String value)
-  {
-    this.dataset = value;
-  }
-
-  /**
-   * Gets the value of the created property.
-   * 
-   * @return possible object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public XMLGregorianCalendar getCreated()
-  {
-    return created;
-  }
-
-  /**
-   * Sets the value of the created property.
-   * 
-   * @param value
-   *          allowed object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public void setCreated(XMLGregorianCalendar value)
-  {
-    this.created = value;
-  }
-
-  /**
-   * Gets the value of the modified property.
-   * 
-   * @return possible object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public XMLGregorianCalendar getModified()
-  {
-    return modified;
-  }
-
-  /**
-   * Sets the value of the modified property.
-   * 
-   * @param value
-   *          allowed object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public void setModified(XMLGregorianCalendar value)
-  {
-    this.modified = value;
-  }
-
-  /**
-   * Gets the value of the version property.
-   * 
-   */
-  public int getVersion()
-  {
-    return version;
-  }
-
-  /**
-   * Sets the value of the version property.
-   * 
-   */
-  public void setVersion(int value)
-  {
-    this.version = value;
-  }
 
 }
index d3fe7f9..44566fe 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,15 +13,13 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * Describes the type of events that cause alternative products.
  * 
- * <p>
- * Java class for eventType complex type.
+ * <p>Java class for eventType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="eventType">
@@ -45,33 +44,33 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "eventType")
-public class EventType
-{
+public class EventType {
 
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
 }
index 6e0ff99..371a778 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.math.BigInteger;
@@ -13,15 +14,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes the evidence for an annotation. No flat file equivalent.
+ * Describes the evidence for an annotation.
+ *             No flat file equivalent.
  * 
- * <p>
- * Java class for evidenceType complex type.
+ * <p>Java class for evidenceType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="evidenceType">
@@ -41,110 +41,113 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "evidenceType", propOrder = { "source", "importedFrom" })
-public class EvidenceType
-{
-
-  protected SourceType source;
-
-  protected ImportedFromType importedFrom;
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
-
-  @XmlAttribute(name = "key", required = true)
-  protected BigInteger key;
-
-  /**
-   * Gets the value of the source property.
-   * 
-   * @return possible object is {@link SourceType }
-   * 
-   */
-  public SourceType getSource()
-  {
-    return source;
-  }
-
-  /**
-   * Sets the value of the source property.
-   * 
-   * @param value
-   *          allowed object is {@link SourceType }
-   * 
-   */
-  public void setSource(SourceType value)
-  {
-    this.source = value;
-  }
-
-  /**
-   * Gets the value of the importedFrom property.
-   * 
-   * @return possible object is {@link ImportedFromType }
-   * 
-   */
-  public ImportedFromType getImportedFrom()
-  {
-    return importedFrom;
-  }
-
-  /**
-   * Sets the value of the importedFrom property.
-   * 
-   * @param value
-   *          allowed object is {@link ImportedFromType }
-   * 
-   */
-  public void setImportedFrom(ImportedFromType value)
-  {
-    this.importedFrom = value;
-  }
-
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
-
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
-
-  /**
-   * Gets the value of the key property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getKey()
-  {
-    return key;
-  }
-
-  /**
-   * Sets the value of the key property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setKey(BigInteger value)
-  {
-    this.key = value;
-  }
+@XmlType(name = "evidenceType", propOrder = {
+    "source",
+    "importedFrom"
+})
+public class EvidenceType {
+
+    protected SourceType source;
+    protected ImportedFromType importedFrom;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "key", required = true)
+    protected BigInteger key;
+
+    /**
+     * Gets the value of the source property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SourceType }
+     *     
+     */
+    public SourceType getSource() {
+        return source;
+    }
+
+    /**
+     * Sets the value of the source property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SourceType }
+     *     
+     */
+    public void setSource(SourceType value) {
+        this.source = value;
+    }
+
+    /**
+     * Gets the value of the importedFrom property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link ImportedFromType }
+     *     
+     */
+    public ImportedFromType getImportedFrom() {
+        return importedFrom;
+    }
+
+    /**
+     * Sets the value of the importedFrom property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link ImportedFromType }
+     *     
+     */
+    public void setImportedFrom(ImportedFromType value) {
+        this.importedFrom = value;
+    }
+
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setKey(BigInteger value) {
+        this.key = value;
+    }
 
 }
index 33e8c53..def955e 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,13 +16,11 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
- * <p>
- * Java class for evidencedStringType complex type.
+ * <p>Java class for evidencedStringType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="evidencedStringType">
@@ -45,94 +44,93 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "evidencedStringType", propOrder = { "value" })
-public class EvidencedStringType
-{
-
-  @XmlValue
-  protected String value;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
+@XmlType(name = "evidencedStringType", propOrder = {
+    "value"
+})
+public class EvidencedStringType {
 
-  @XmlAttribute(name = "status")
-  protected String status;
+    @XmlValue
+    protected String value;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
+    @XmlAttribute(name = "status")
+    protected String status;
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
-  /**
-   * Gets the value of the status property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getStatus()
-  {
-    return status;
-  }
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getStatus() {
+        return status;
+    }
 
-  /**
-   * Sets the value of the status property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setStatus(String value)
-  {
-    this.status = value;
-  }
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStatus(String value) {
+        this.status = value;
+    }
 
 }
index fe9f4c4..0a6f7fe 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,16 +16,14 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes different types of sequence annotations. Equivalent to the flat
- * file FT-line.
+ * Describes different types of sequence annotations.
+ *             Equivalent to the flat file FT-line.
  * 
- * <p>
- * Java class for featureType complex type.
+ * <p>Java class for featureType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="featureType">
@@ -101,259 +100,254 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "featureType",
-  propOrder =
-  { "original", "variation", "location" })
-public class FeatureType
-{
-
-  protected String original;
-
-  protected List<String> variation;
-
-  @XmlElement(required = true)
-  protected LocationType location;
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
+@XmlType(name = "featureType", propOrder = {
+    "original",
+    "variation",
+    "location"
+})
+public class FeatureType {
 
-  @XmlAttribute(name = "status")
-  protected String status;
+    protected String original;
+    protected List<String> variation;
+    @XmlElement(required = true)
+    protected LocationType location;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "status")
+    protected String status;
+    @XmlAttribute(name = "id")
+    protected String id;
+    @XmlAttribute(name = "description")
+    protected String description;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
+    @XmlAttribute(name = "ref")
+    protected String ref;
 
-  @XmlAttribute(name = "id")
-  protected String id;
-
-  @XmlAttribute(name = "description")
-  protected String description;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
-
-  @XmlAttribute(name = "ref")
-  protected String ref;
-
-  /**
-   * Gets the value of the original property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getOriginal()
-  {
-    return original;
-  }
+    /**
+     * Gets the value of the original property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getOriginal() {
+        return original;
+    }
 
-  /**
-   * Sets the value of the original property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setOriginal(String value)
-  {
-    this.original = value;
-  }
+    /**
+     * Sets the value of the original property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setOriginal(String value) {
+        this.original = value;
+    }
 
-  /**
-   * Gets the value of the variation property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the variation property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getVariation().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getVariation()
-  {
-    if (variation == null)
-    {
-      variation = new ArrayList<String>();
+    /**
+     * Gets the value of the variation property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the variation property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getVariation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getVariation() {
+        if (variation == null) {
+            variation = new ArrayList<String>();
+        }
+        return this.variation;
     }
-    return this.variation;
-  }
 
-  /**
-   * Gets the value of the location property.
-   * 
-   * @return possible object is {@link LocationType }
-   * 
-   */
-  public LocationType getLocation()
-  {
-    return location;
-  }
+    /**
+     * Gets the value of the location property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link LocationType }
+     *     
+     */
+    public LocationType getLocation() {
+        return location;
+    }
 
-  /**
-   * Sets the value of the location property.
-   * 
-   * @param value
-   *          allowed object is {@link LocationType }
-   * 
-   */
-  public void setLocation(LocationType value)
-  {
-    this.location = value;
-  }
+    /**
+     * Sets the value of the location property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link LocationType }
+     *     
+     */
+    public void setLocation(LocationType value) {
+        this.location = value;
+    }
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
-  /**
-   * Gets the value of the status property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getStatus()
-  {
-    return status;
-  }
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getStatus() {
+        return status;
+    }
 
-  /**
-   * Sets the value of the status property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setStatus(String value)
-  {
-    this.status = value;
-  }
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStatus(String value) {
+        this.status = value;
+    }
 
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
 
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
 
-  /**
-   * Gets the value of the description property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDescription()
-  {
-    return description;
-  }
+    /**
+     * Gets the value of the description property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDescription() {
+        return description;
+    }
 
-  /**
-   * Sets the value of the description property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDescription(String value)
-  {
-    this.description = value;
-  }
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
-  /**
-   * Gets the value of the ref property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getRef()
-  {
-    return ref;
-  }
+    /**
+     * Gets the value of the ref property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getRef() {
+        return ref;
+    }
 
-  /**
-   * Sets the value of the ref property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setRef(String value)
-  {
-    this.ref = value;
-  }
+    /**
+     * Sets the value of the ref property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setRef(String value) {
+        this.ref = value;
+    }
 
 }
index 33f0bfd..9a04acc 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -14,16 +15,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes non-nuclear gene locations (organelles and plasmids). Equivalent to
- * the flat file OG-line.
+ * Describes non-nuclear gene locations (organelles and plasmids).
+ *             Equivalent to the flat file OG-line.
  * 
- * <p>
- * Java class for geneLocationType complex type.
+ * <p>Java class for geneLocationType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="geneLocationType">
@@ -57,102 +56,97 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "geneLocationType", propOrder = { "name" })
-public class GeneLocationType
-{
-
-  protected List<StatusType> name;
+@XmlType(name = "geneLocationType", propOrder = {
+    "name"
+})
+public class GeneLocationType {
 
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
+    protected List<StatusType> name;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
 
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the name property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link StatusType
-   * }
-   * 
-   * 
-   */
-  public List<StatusType> getName()
-  {
-    if (name == null)
-    {
-      name = new ArrayList<StatusType>();
+    /**
+     * Gets the value of the name property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the name property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getName().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link StatusType }
+     * 
+     * 
+     */
+    public List<StatusType> getName() {
+        if (name == null) {
+            name = new ArrayList<StatusType>();
+        }
+        return this.name;
     }
-    return this.name;
-  }
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
 }
index 84850d3..8b69d3d 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,16 +16,14 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
- * Describes different types of gene designations. Equivalent to the flat file
- * GN-line.
+ * Describes different types of gene designations.
+ *             Equivalent to the flat file GN-line.
  * 
- * <p>
- * Java class for geneNameType complex type.
+ * <p>Java class for geneNameType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="geneNameType">
@@ -49,94 +48,93 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "geneNameType", propOrder = { "value" })
-public class GeneNameType
-{
-
-  @XmlValue
-  protected String value;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
+@XmlType(name = "geneNameType", propOrder = {
+    "value"
+})
+public class GeneNameType {
 
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
+    @XmlValue
+    protected String value;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
 }
index 0b0a19e..24285cb 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -14,15 +15,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes a gene. Equivalent to the flat file GN-line.
+ * Describes a gene.
+ *             Equivalent to the flat file GN-line.
  * 
- * <p>
- * Java class for geneType complex type.
+ * <p>Java class for geneType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="geneType">
@@ -39,43 +39,41 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "geneType", propOrder = { "name" })
-public class GeneType
-{
+@XmlType(name = "geneType", propOrder = {
+    "name"
+})
+public class GeneType {
 
-  @XmlElement(required = true)
-  protected List<GeneNameType> name;
+    @XmlElement(required = true)
+    protected List<GeneNameType> name;
 
-  /**
-   * Gets the value of the name property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the name property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link GeneNameType }
-   * 
-   * 
-   */
-  public List<GeneNameType> getName()
-  {
-    if (name == null)
-    {
-      name = new ArrayList<GeneNameType>();
+    /**
+     * Gets the value of the name property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the name property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getName().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link GeneNameType }
+     * 
+     * 
+     */
+    public List<GeneNameType> getName() {
+        if (name == null) {
+            name = new ArrayList<GeneNameType>();
+        }
+        return this.name;
     }
-    return this.name;
-  }
 
 }
index f46afb5..070e48e 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,16 +13,13 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes the source of the evidence, when it is not assigned by UniProt, but
- * imported from an external database.
+ * Describes the source of the evidence, when it is not assigned by UniProt, but imported from an external database.
  * 
- * <p>
- * Java class for importedFromType complex type.
+ * <p>Java class for importedFromType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="importedFromType">
@@ -38,34 +36,36 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "importedFromType", propOrder = { "dbReference" })
-public class ImportedFromType
-{
+@XmlType(name = "importedFromType", propOrder = {
+    "dbReference"
+})
+public class ImportedFromType {
 
-  @XmlElement(required = true)
-  protected DbReferenceType dbReference;
+    @XmlElement(required = true)
+    protected DbReferenceType dbReference;
 
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * @return possible object is {@link DbReferenceType }
-   * 
-   */
-  public DbReferenceType getDbReference()
-  {
-    return dbReference;
-  }
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public DbReferenceType getDbReference() {
+        return dbReference;
+    }
 
-  /**
-   * Sets the value of the dbReference property.
-   * 
-   * @param value
-   *          allowed object is {@link DbReferenceType }
-   * 
-   */
-  public void setDbReference(DbReferenceType value)
-  {
-    this.dbReference = value;
-  }
+    /**
+     * Sets the value of the dbReference property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public void setDbReference(DbReferenceType value) {
+        this.dbReference = value;
+    }
 
 }
index 0e59c4b..9a0e97a 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,13 +13,11 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for interactantType complex type.
+ * <p>Java class for interactantType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="interactantType">
@@ -34,84 +33,87 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "interactantType", propOrder = { "id", "label" })
-public class InteractantType
-{
-
-  protected String id;
-
-  protected String label;
+@XmlType(name = "interactantType", propOrder = {
+    "id",
+    "label"
+})
+public class InteractantType {
 
-  @XmlAttribute(name = "intactId", required = true)
-  protected String intactId;
+    protected String id;
+    protected String label;
+    @XmlAttribute(name = "intactId", required = true)
+    protected String intactId;
 
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
 
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
 
-  /**
-   * Gets the value of the label property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getLabel()
-  {
-    return label;
-  }
+    /**
+     * Gets the value of the label property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getLabel() {
+        return label;
+    }
 
-  /**
-   * Sets the value of the label property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setLabel(String value)
-  {
-    this.label = value;
-  }
+    /**
+     * Sets the value of the label property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setLabel(String value) {
+        this.label = value;
+    }
 
-  /**
-   * Gets the value of the intactId property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getIntactId()
-  {
-    return intactId;
-  }
+    /**
+     * Gets the value of the intactId property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getIntactId() {
+        return intactId;
+    }
 
-  /**
-   * Sets the value of the intactId property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setIntactId(String value)
-  {
-    this.intactId = value;
-  }
+    /**
+     * Sets the value of the intactId property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setIntactId(String value) {
+        this.intactId = value;
+    }
 
 }
index 631ab01..33710ef 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -16,15 +17,13 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
  * Describes isoforms in 'alternative products' annotations.
  * 
- * <p>
- * Java class for isoformType complex type.
+ * <p>Java class for isoformType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="isoformType">
@@ -70,316 +69,302 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "isoformType",
-  propOrder =
-  { "id", "name", "sequence", "text" })
-public class IsoformType
-{
-
-  @XmlElement(required = true)
-  protected List<String> id;
-
-  @XmlElement(required = true)
-  protected List<IsoformType.Name> name;
-
-  @XmlElement(required = true)
-  protected IsoformType.Sequence sequence;
-
-  protected List<EvidencedStringType> text;
-
-  /**
-   * Gets the value of the id property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the id property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getId().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getId()
-  {
-    if (id == null)
-    {
-      id = new ArrayList<String>();
-    }
-    return this.id;
-  }
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the name property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link IsoformType.Name }
-   * 
-   * 
-   */
-  public List<IsoformType.Name> getName()
-  {
-    if (name == null)
-    {
-      name = new ArrayList<IsoformType.Name>();
-    }
-    return this.name;
-  }
+@XmlType(name = "isoformType", propOrder = {
+    "id",
+    "name",
+    "sequence",
+    "text"
+})
+public class IsoformType {
 
-  /**
-   * Gets the value of the sequence property.
-   * 
-   * @return possible object is {@link IsoformType.Sequence }
-   * 
-   */
-  public IsoformType.Sequence getSequence()
-  {
-    return sequence;
-  }
-
-  /**
-   * Sets the value of the sequence property.
-   * 
-   * @param value
-   *          allowed object is {@link IsoformType.Sequence }
-   * 
-   */
-  public void setSequence(IsoformType.Sequence value)
-  {
-    this.sequence = value;
-  }
-
-  /**
-   * Gets the value of the text property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the text property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getText().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidencedStringType }
-   * 
-   * 
-   */
-  public List<EvidencedStringType> getText()
-  {
-    if (text == null)
-    {
-      text = new ArrayList<EvidencedStringType>();
-    }
-    return this.text;
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;simpleContent>
-   *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-   *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
-   *     &lt;/extension>
-   *   &lt;/simpleContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "value" })
-  public static class Name
-  {
-
-    @XmlValue
-    protected String value;
-
-    @XmlAttribute(name = "evidence")
-    protected List<Integer> evidence;
+    @XmlElement(required = true)
+    protected List<String> id;
+    @XmlElement(required = true)
+    protected List<IsoformType.Name> name;
+    @XmlElement(required = true)
+    protected IsoformType.Sequence sequence;
+    protected List<EvidencedStringType> text;
 
     /**
-     * Gets the value of the value property.
+     * Gets the value of the id property.
      * 
-     * @return possible object is {@link String }
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the id property.
      * 
-     */
-    public String getValue()
-    {
-      return value;
-    }
-
-    /**
-     * Sets the value of the value property.
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getId().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setValue(String value)
-    {
-      this.value = value;
+    public List<String> getId() {
+        if (id == null) {
+            id = new ArrayList<String>();
+        }
+        return this.id;
     }
 
     /**
-     * Gets the value of the evidence property.
+     * Gets the value of the name property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the evidence property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the name property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getEvidence().add(newItem);
+     *    getName().add(newItem);
      * </pre>
      * 
      * 
      * <p>
-     * Objects of the following type(s) are allowed in the list {@link Integer }
+     * Objects of the following type(s) are allowed in the list
+     * {@link IsoformType.Name }
      * 
      * 
      */
-    public List<Integer> getEvidence()
-    {
-      if (evidence == null)
-      {
-        evidence = new ArrayList<Integer>();
-      }
-      return this.evidence;
+    public List<IsoformType.Name> getName() {
+        if (name == null) {
+            name = new ArrayList<IsoformType.Name>();
+        }
+        return this.name;
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;attribute name="type" use="required">
-   *         &lt;simpleType>
-   *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
-   *             &lt;enumeration value="not described"/>
-   *             &lt;enumeration value="described"/>
-   *             &lt;enumeration value="displayed"/>
-   *             &lt;enumeration value="external"/>
-   *           &lt;/restriction>
-   *         &lt;/simpleType>
-   *       &lt;/attribute>
-   *       &lt;attribute name="ref" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "")
-  public static class Sequence
-  {
-
-    @XmlAttribute(name = "type", required = true)
-    protected String type;
-
-    @XmlAttribute(name = "ref")
-    protected String ref;
-
     /**
-     * Gets the value of the type property.
-     * 
-     * @return possible object is {@link String }
+     * Gets the value of the sequence property.
      * 
+     * @return
+     *     possible object is
+     *     {@link IsoformType.Sequence }
+     *     
      */
-    public String getType()
-    {
-      return type;
+    public IsoformType.Sequence getSequence() {
+        return sequence;
     }
 
     /**
-     * Sets the value of the type property.
+     * Sets the value of the sequence property.
      * 
      * @param value
-     *          allowed object is {@link String }
-     * 
+     *     allowed object is
+     *     {@link IsoformType.Sequence }
+     *     
      */
-    public void setType(String value)
-    {
-      this.type = value;
+    public void setSequence(IsoformType.Sequence value) {
+        this.sequence = value;
     }
 
     /**
-     * Gets the value of the ref property.
+     * Gets the value of the text property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the text property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getText().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EvidencedStringType }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getRef()
-    {
-      return ref;
+    public List<EvidencedStringType> getText() {
+        if (text == null) {
+            text = new ArrayList<EvidencedStringType>();
+        }
+        return this.text;
     }
 
+
     /**
-     * Sets the value of the ref property.
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setRef(String value)
-    {
-      this.ref = value;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Name {
+
+        @XmlValue
+        protected String value;
+        @XmlAttribute(name = "evidence")
+        protected List<Integer> evidence;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the evidence property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the evidence property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEvidence().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Integer }
+         * 
+         * 
+         */
+        public List<Integer> getEvidence() {
+            if (evidence == null) {
+                evidence = new ArrayList<Integer>();
+            }
+            return this.evidence;
+        }
+
     }
 
-  }
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;attribute name="type" use="required">
+     *         &lt;simpleType>
+     *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+     *             &lt;enumeration value="not described"/>
+     *             &lt;enumeration value="described"/>
+     *             &lt;enumeration value="displayed"/>
+     *             &lt;enumeration value="external"/>
+     *           &lt;/restriction>
+     *         &lt;/simpleType>
+     *       &lt;/attribute>
+     *       &lt;attribute name="ref" type="{http://www.w3.org/2001/XMLSchema}string" />
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "")
+    public static class Sequence {
+
+        @XmlAttribute(name = "type", required = true)
+        protected String type;
+        @XmlAttribute(name = "ref")
+        protected String ref;
+
+        /**
+         * Gets the value of the type property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getType() {
+            return type;
+        }
+
+        /**
+         * Sets the value of the type property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setType(String value) {
+            this.type = value;
+        }
+
+        /**
+         * Gets the value of the ref property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getRef() {
+            return ref;
+        }
+
+        /**
+         * Sets the value of the ref property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setRef(String value) {
+            this.ref = value;
+        }
+
+    }
 
 }
index ac58dfd..3f1a75f 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,13 +16,11 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
- * <p>
- * Java class for keywordType complex type.
+ * <p>Java class for keywordType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="keywordType">
@@ -37,94 +36,93 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "keywordType", propOrder = { "value" })
-public class KeywordType
-{
-
-  @XmlValue
-  protected String value;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
+@XmlType(name = "keywordType", propOrder = {
+    "value"
+})
+public class KeywordType {
 
-  @XmlAttribute(name = "id", required = true)
-  protected String id;
+    @XmlValue
+    protected String value;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
+    @XmlAttribute(name = "id", required = true)
+    protected String id;
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
 
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
 
 }
index d1d1457..5d7e7e9 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,17 +13,13 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes a sequence location as either a range with a begin and end or as a
- * position. The 'sequence' attribute is only used when the location is not on
- * the canonical sequence displayed in the current entry.
+ * Describes a sequence location as either a range with a begin and end or as a position. The 'sequence' attribute is only used when the location is not on the canonical sequence displayed in the current entry.
  * 
- * <p>
- * Java class for locationType complex type.
+ * <p>Java class for locationType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="locationType">
@@ -44,109 +41,113 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "locationType", propOrder = { "begin", "end", "position" })
-public class LocationType
-{
-
-  protected PositionType begin;
-
-  protected PositionType end;
-
-  protected PositionType position;
-
-  @XmlAttribute(name = "sequence")
-  protected String sequence;
-
-  /**
-   * Gets the value of the begin property.
-   * 
-   * @return possible object is {@link PositionType }
-   * 
-   */
-  public PositionType getBegin()
-  {
-    return begin;
-  }
-
-  /**
-   * Sets the value of the begin property.
-   * 
-   * @param value
-   *          allowed object is {@link PositionType }
-   * 
-   */
-  public void setBegin(PositionType value)
-  {
-    this.begin = value;
-  }
-
-  /**
-   * Gets the value of the end property.
-   * 
-   * @return possible object is {@link PositionType }
-   * 
-   */
-  public PositionType getEnd()
-  {
-    return end;
-  }
-
-  /**
-   * Sets the value of the end property.
-   * 
-   * @param value
-   *          allowed object is {@link PositionType }
-   * 
-   */
-  public void setEnd(PositionType value)
-  {
-    this.end = value;
-  }
-
-  /**
-   * Gets the value of the position property.
-   * 
-   * @return possible object is {@link PositionType }
-   * 
-   */
-  public PositionType getPosition()
-  {
-    return position;
-  }
-
-  /**
-   * Sets the value of the position property.
-   * 
-   * @param value
-   *          allowed object is {@link PositionType }
-   * 
-   */
-  public void setPosition(PositionType value)
-  {
-    this.position = value;
-  }
-
-  /**
-   * Gets the value of the sequence property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getSequence()
-  {
-    return sequence;
-  }
-
-  /**
-   * Sets the value of the sequence property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setSequence(String value)
-  {
-    this.sequence = value;
-  }
+@XmlType(name = "locationType", propOrder = {
+    "begin",
+    "end",
+    "position"
+})
+public class LocationType {
+
+    protected PositionType begin;
+    protected PositionType end;
+    protected PositionType position;
+    @XmlAttribute(name = "sequence")
+    protected String sequence;
+
+    /**
+     * Gets the value of the begin property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PositionType }
+     *     
+     */
+    public PositionType getBegin() {
+        return begin;
+    }
+
+    /**
+     * Sets the value of the begin property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PositionType }
+     *     
+     */
+    public void setBegin(PositionType value) {
+        this.begin = value;
+    }
+
+    /**
+     * Gets the value of the end property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PositionType }
+     *     
+     */
+    public PositionType getEnd() {
+        return end;
+    }
+
+    /**
+     * Sets the value of the end property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PositionType }
+     *     
+     */
+    public void setEnd(PositionType value) {
+        this.end = value;
+    }
+
+    /**
+     * Gets the value of the position property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link PositionType }
+     *     
+     */
+    public PositionType getPosition() {
+        return position;
+    }
+
+    /**
+     * Sets the value of the position property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link PositionType }
+     *     
+     */
+    public void setPosition(PositionType value) {
+        this.position = value;
+    }
+
+    /**
+     * Gets the value of the sequence property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getSequence() {
+        return sequence;
+    }
+
+    /**
+     * Sets the value of the sequence property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setSequence(String value) {
+        this.sequence = value;
+    }
 
 }
index 72f6c4f..b7657f8 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -13,15 +14,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
  * Describes a molecule by name or unique identifier.
  * 
- * <p>
- * Java class for moleculeType complex type.
+ * <p>Java class for moleculeType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="moleculeType">
@@ -36,60 +35,62 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "moleculeType", propOrder = { "value" })
-public class MoleculeType
-{
-
-  @XmlValue
-  protected String value;
+@XmlType(name = "moleculeType", propOrder = {
+    "value"
+})
+public class MoleculeType {
 
-  @XmlAttribute(name = "id")
-  protected String id;
+    @XmlValue
+    protected String value;
+    @XmlAttribute(name = "id")
+    protected String id;
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
 
-  /**
-   * Gets the value of the id property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getId()
-  {
-    return id;
-  }
+    /**
+     * Gets the value of the id property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getId() {
+        return id;
+    }
 
-  /**
-   * Sets the value of the id property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setId(String value)
-  {
-    this.id = value;
-  }
+    /**
+     * Sets the value of the id property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setId(String value) {
+        this.id = value;
+    }
 
 }
index 947f2f4..c316941 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,13 +16,11 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for nameListType complex type.
+ * <p>Java class for nameListType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="nameListType">
@@ -39,45 +38,45 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "nameListType", propOrder = { "consortiumOrPerson" })
-public class NameListType
-{
+@XmlType(name = "nameListType", propOrder = {
+    "consortiumOrPerson"
+})
+public class NameListType {
 
-  @XmlElements({
-      @XmlElement(name = "consortium", type = ConsortiumType.class),
-      @XmlElement(name = "person", type = PersonType.class) })
-  protected List<Object> consortiumOrPerson;
+    @XmlElements({
+        @XmlElement(name = "consortium", type = ConsortiumType.class),
+        @XmlElement(name = "person", type = PersonType.class)
+    })
+    protected List<Object> consortiumOrPerson;
 
-  /**
-   * Gets the value of the consortiumOrPerson property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the consortiumOrPerson property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getConsortiumOrPerson().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link ConsortiumType } {@link PersonType }
-   * 
-   * 
-   */
-  public List<Object> getConsortiumOrPerson()
-  {
-    if (consortiumOrPerson == null)
-    {
-      consortiumOrPerson = new ArrayList<Object>();
+    /**
+     * Gets the value of the consortiumOrPerson property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the consortiumOrPerson property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getConsortiumOrPerson().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link ConsortiumType }
+     * {@link PersonType }
+     * 
+     * 
+     */
+    public List<Object> getConsortiumOrPerson() {
+        if (consortiumOrPerson == null) {
+            consortiumOrPerson = new ArrayList<Object>();
+        }
+        return this.consortiumOrPerson;
     }
-    return this.consortiumOrPerson;
-  }
 
 }
index a647bd0..324ef9f 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.JAXBElement;
@@ -12,558 +13,496 @@ import javax.xml.bind.annotation.XmlElementDecl;
 import javax.xml.bind.annotation.XmlRegistry;
 import javax.xml.namespace.QName;
 
+
 /**
- * This object contains factory methods for each Java content interface and Java
- * element interface generated in the jalview.xml.binding.uniprot package.
- * <p>
- * An ObjectFactory allows you to programatically construct new instances of the
- * Java representation for XML content. The Java representation of XML content
- * can consist of schema derived interfaces and classes representing the binding
- * of schema type definitions, element declarations and model groups. Factory
- * methods for each of these are provided in this class.
+ * This object contains factory methods for each 
+ * Java content interface and Java element interface 
+ * generated in the jalview.xml.binding.uniprot package. 
+ * <p>An ObjectFactory allows you to programatically 
+ * construct new instances of the Java representation 
+ * for XML content. The Java representation of XML 
+ * content can consist of schema derived interfaces 
+ * and classes representing the binding of schema 
+ * type definitions, element declarations and model 
+ * groups.  Factory methods for each of these are 
+ * provided in this class.
  * 
  */
 @XmlRegistry
-public class ObjectFactory
-{
-
-  private final static QName _Copyright_QNAME = new QName(
-          "http://uniprot.org/uniprot", "copyright");
-
-  /**
-   * Create a new ObjectFactory that can be used to create new instances of
-   * schema derived classes for package: jalview.xml.binding.uniprot
-   * 
-   */
-  public ObjectFactory()
-  {
-  }
-
-  /**
-   * Create an instance of {@link SourceDataType }
-   * 
-   */
-  public SourceDataType createSourceDataType()
-  {
-    return new SourceDataType();
-  }
-
-  /**
-   * Create an instance of {@link IsoformType }
-   * 
-   */
-  public IsoformType createIsoformType()
-  {
-    return new IsoformType();
-  }
-
-  /**
-   * Create an instance of {@link CommentType }
-   * 
-   */
-  public CommentType createCommentType()
-  {
-    return new CommentType();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.Conflict }
-   * 
-   */
-  public CommentType.Conflict createCommentTypeConflict()
-  {
-    return new CommentType.Conflict();
-  }
-
-  /**
-   * Create an instance of {@link OrganismType }
-   * 
-   */
-  public OrganismType createOrganismType()
-  {
-    return new OrganismType();
-  }
-
-  /**
-   * Create an instance of {@link ProteinType }
-   * 
-   */
-  public ProteinType createProteinType()
-  {
-    return new ProteinType();
-  }
-
-  /**
-   * Create an instance of {@link Entry }
-   * 
-   */
-  public Entry createEntry()
-  {
-    return new Entry();
-  }
-
-  /**
-   * Create an instance of {@link GeneType }
-   * 
-   */
-  public GeneType createGeneType()
-  {
-    return new GeneType();
-  }
-
-  /**
-   * Create an instance of {@link GeneLocationType }
-   * 
-   */
-  public GeneLocationType createGeneLocationType()
-  {
-    return new GeneLocationType();
-  }
-
-  /**
-   * Create an instance of {@link ReferenceType }
-   * 
-   */
-  public ReferenceType createReferenceType()
-  {
-    return new ReferenceType();
-  }
-
-  /**
-   * Create an instance of {@link DbReferenceType }
-   * 
-   */
-  public DbReferenceType createDbReferenceType()
-  {
-    return new DbReferenceType();
-  }
-
-  /**
-   * Create an instance of {@link ProteinExistenceType }
-   * 
-   */
-  public ProteinExistenceType createProteinExistenceType()
-  {
-    return new ProteinExistenceType();
-  }
-
-  /**
-   * Create an instance of {@link KeywordType }
-   * 
-   */
-  public KeywordType createKeywordType()
-  {
-    return new KeywordType();
-  }
-
-  /**
-   * Create an instance of {@link FeatureType }
-   * 
-   */
-  public FeatureType createFeatureType()
-  {
-    return new FeatureType();
-  }
-
-  /**
-   * Create an instance of {@link EvidenceType }
-   * 
-   */
-  public EvidenceType createEvidenceType()
-  {
-    return new EvidenceType();
-  }
-
-  /**
-   * Create an instance of {@link SequenceType }
-   * 
-   */
-  public SequenceType createSequenceType()
-  {
-    return new SequenceType();
-  }
-
-  /**
-   * Create an instance of {@link Uniprot }
-   * 
-   */
-  public Uniprot createUniprot()
-  {
-    return new Uniprot();
-  }
-
-  /**
-   * Create an instance of {@link StatusType }
-   * 
-   */
-  public StatusType createStatusType()
-  {
-    return new StatusType();
-  }
-
-  /**
-   * Create an instance of {@link PositionType }
-   * 
-   */
-  public PositionType createPositionType()
-  {
-    return new PositionType();
-  }
-
-  /**
-   * Create an instance of {@link ConsortiumType }
-   * 
-   */
-  public ConsortiumType createConsortiumType()
-  {
-    return new ConsortiumType();
-  }
-
-  /**
-   * Create an instance of {@link GeneNameType }
-   * 
-   */
-  public GeneNameType createGeneNameType()
-  {
-    return new GeneNameType();
-  }
-
-  /**
-   * Create an instance of {@link LocationType }
-   * 
-   */
-  public LocationType createLocationType()
-  {
-    return new LocationType();
-  }
-
-  /**
-   * Create an instance of {@link CitationType }
-   * 
-   */
-  public CitationType createCitationType()
-  {
-    return new CitationType();
-  }
-
-  /**
-   * Create an instance of {@link PropertyType }
-   * 
-   */
-  public PropertyType createPropertyType()
-  {
-    return new PropertyType();
-  }
-
-  /**
-   * Create an instance of {@link PhysiologicalReactionType }
-   * 
-   */
-  public PhysiologicalReactionType createPhysiologicalReactionType()
-  {
-    return new PhysiologicalReactionType();
-  }
-
-  /**
-   * Create an instance of {@link CofactorType }
-   * 
-   */
-  public CofactorType createCofactorType()
-  {
-    return new CofactorType();
-  }
-
-  /**
-   * Create an instance of {@link EvidencedStringType }
-   * 
-   */
-  public EvidencedStringType createEvidencedStringType()
-  {
-    return new EvidencedStringType();
-  }
-
-  /**
-   * Create an instance of {@link PersonType }
-   * 
-   */
-  public PersonType createPersonType()
-  {
-    return new PersonType();
-  }
-
-  /**
-   * Create an instance of {@link ImportedFromType }
-   * 
-   */
-  public ImportedFromType createImportedFromType()
-  {
-    return new ImportedFromType();
-  }
-
-  /**
-   * Create an instance of {@link EventType }
-   * 
-   */
-  public EventType createEventType()
-  {
-    return new EventType();
-  }
-
-  /**
-   * Create an instance of {@link InteractantType }
-   * 
-   */
-  public InteractantType createInteractantType()
-  {
-    return new InteractantType();
-  }
-
-  /**
-   * Create an instance of {@link NameListType }
-   * 
-   */
-  public NameListType createNameListType()
-  {
-    return new NameListType();
-  }
-
-  /**
-   * Create an instance of {@link ReactionType }
-   * 
-   */
-  public ReactionType createReactionType()
-  {
-    return new ReactionType();
-  }
-
-  /**
-   * Create an instance of {@link SourceType }
-   * 
-   */
-  public SourceType createSourceType()
-  {
-    return new SourceType();
-  }
-
-  /**
-   * Create an instance of {@link MoleculeType }
-   * 
-   */
-  public MoleculeType createMoleculeType()
-  {
-    return new MoleculeType();
-  }
-
-  /**
-   * Create an instance of {@link OrganismNameType }
-   * 
-   */
-  public OrganismNameType createOrganismNameType()
-  {
-    return new OrganismNameType();
-  }
-
-  /**
-   * Create an instance of {@link SubcellularLocationType }
-   * 
-   */
-  public SubcellularLocationType createSubcellularLocationType()
-  {
-    return new SubcellularLocationType();
-  }
-
-  /**
-   * Create an instance of {@link SourceDataType.Strain }
-   * 
-   */
-  public SourceDataType.Strain createSourceDataTypeStrain()
-  {
-    return new SourceDataType.Strain();
-  }
-
-  /**
-   * Create an instance of {@link SourceDataType.Plasmid }
-   * 
-   */
-  public SourceDataType.Plasmid createSourceDataTypePlasmid()
-  {
-    return new SourceDataType.Plasmid();
-  }
-
-  /**
-   * Create an instance of {@link SourceDataType.Transposon }
-   * 
-   */
-  public SourceDataType.Transposon createSourceDataTypeTransposon()
-  {
-    return new SourceDataType.Transposon();
-  }
-
-  /**
-   * Create an instance of {@link SourceDataType.Tissue }
-   * 
-   */
-  public SourceDataType.Tissue createSourceDataTypeTissue()
-  {
-    return new SourceDataType.Tissue();
-  }
-
-  /**
-   * Create an instance of {@link IsoformType.Name }
-   * 
-   */
-  public IsoformType.Name createIsoformTypeName()
-  {
-    return new IsoformType.Name();
-  }
-
-  /**
-   * Create an instance of {@link IsoformType.Sequence }
-   * 
-   */
-  public IsoformType.Sequence createIsoformTypeSequence()
-  {
-    return new IsoformType.Sequence();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.Absorption }
-   * 
-   */
-  public CommentType.Absorption createCommentTypeAbsorption()
-  {
-    return new CommentType.Absorption();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.Kinetics }
-   * 
-   */
-  public CommentType.Kinetics createCommentTypeKinetics()
-  {
-    return new CommentType.Kinetics();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.PhDependence }
-   * 
-   */
-  public CommentType.PhDependence createCommentTypePhDependence()
-  {
-    return new CommentType.PhDependence();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.RedoxPotential }
-   * 
-   */
-  public CommentType.RedoxPotential createCommentTypeRedoxPotential()
-  {
-    return new CommentType.RedoxPotential();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.TemperatureDependence }
-   * 
-   */
-  public CommentType.TemperatureDependence createCommentTypeTemperatureDependence()
-  {
-    return new CommentType.TemperatureDependence();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.Link }
-   * 
-   */
-  public CommentType.Link createCommentTypeLink()
-  {
-    return new CommentType.Link();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.Disease }
-   * 
-   */
-  public CommentType.Disease createCommentTypeDisease()
-  {
-    return new CommentType.Disease();
-  }
-
-  /**
-   * Create an instance of {@link CommentType.Conflict.Sequence }
-   * 
-   */
-  public CommentType.Conflict.Sequence createCommentTypeConflictSequence()
-  {
-    return new CommentType.Conflict.Sequence();
-  }
-
-  /**
-   * Create an instance of {@link OrganismType.Lineage }
-   * 
-   */
-  public OrganismType.Lineage createOrganismTypeLineage()
-  {
-    return new OrganismType.Lineage();
-  }
-
-  /**
-   * Create an instance of {@link ProteinType.RecommendedName }
-   * 
-   */
-  public ProteinType.RecommendedName createProteinTypeRecommendedName()
-  {
-    return new ProteinType.RecommendedName();
-  }
-
-  /**
-   * Create an instance of {@link ProteinType.AlternativeName }
-   * 
-   */
-  public ProteinType.AlternativeName createProteinTypeAlternativeName()
-  {
-    return new ProteinType.AlternativeName();
-  }
-
-  /**
-   * Create an instance of {@link ProteinType.SubmittedName }
-   * 
-   */
-  public ProteinType.SubmittedName createProteinTypeSubmittedName()
-  {
-    return new ProteinType.SubmittedName();
-  }
-
-  /**
-   * Create an instance of {@link ProteinType.Domain }
-   * 
-   */
-  public ProteinType.Domain createProteinTypeDomain()
-  {
-    return new ProteinType.Domain();
-  }
-
-  /**
-   * Create an instance of {@link ProteinType.Component }
-   * 
-   */
-  public ProteinType.Component createProteinTypeComponent()
-  {
-    return new ProteinType.Component();
-  }
-
-  /**
-   * Create an instance of {@link JAXBElement }{@code <}{@link String
-   * }{@code >}}
-   * 
-   */
-  @XmlElementDecl(
-    namespace = "http://uniprot.org/uniprot",
-    name = "copyright")
-  public JAXBElement<String> createCopyright(String value)
-  {
-    return new JAXBElement<String>(_Copyright_QNAME, String.class, null,
-            value);
-  }
+public class ObjectFactory {
+
+    private final static QName _Copyright_QNAME = new QName("http://uniprot.org/uniprot", "copyright");
+
+    /**
+     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: jalview.xml.binding.uniprot
+     * 
+     */
+    public ObjectFactory() {
+    }
+
+    /**
+     * Create an instance of {@link SourceDataType }
+     * 
+     */
+    public SourceDataType createSourceDataType() {
+        return new SourceDataType();
+    }
+
+    /**
+     * Create an instance of {@link IsoformType }
+     * 
+     */
+    public IsoformType createIsoformType() {
+        return new IsoformType();
+    }
+
+    /**
+     * Create an instance of {@link CommentType }
+     * 
+     */
+    public CommentType createCommentType() {
+        return new CommentType();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.Conflict }
+     * 
+     */
+    public CommentType.Conflict createCommentTypeConflict() {
+        return new CommentType.Conflict();
+    }
+
+    /**
+     * Create an instance of {@link OrganismType }
+     * 
+     */
+    public OrganismType createOrganismType() {
+        return new OrganismType();
+    }
+
+    /**
+     * Create an instance of {@link ProteinType }
+     * 
+     */
+    public ProteinType createProteinType() {
+        return new ProteinType();
+    }
+
+    /**
+     * Create an instance of {@link Entry }
+     * 
+     */
+    public Entry createEntry() {
+        return new Entry();
+    }
+
+    /**
+     * Create an instance of {@link GeneType }
+     * 
+     */
+    public GeneType createGeneType() {
+        return new GeneType();
+    }
+
+    /**
+     * Create an instance of {@link GeneLocationType }
+     * 
+     */
+    public GeneLocationType createGeneLocationType() {
+        return new GeneLocationType();
+    }
+
+    /**
+     * Create an instance of {@link ReferenceType }
+     * 
+     */
+    public ReferenceType createReferenceType() {
+        return new ReferenceType();
+    }
+
+    /**
+     * Create an instance of {@link DbReferenceType }
+     * 
+     */
+    public DbReferenceType createDbReferenceType() {
+        return new DbReferenceType();
+    }
+
+    /**
+     * Create an instance of {@link ProteinExistenceType }
+     * 
+     */
+    public ProteinExistenceType createProteinExistenceType() {
+        return new ProteinExistenceType();
+    }
+
+    /**
+     * Create an instance of {@link KeywordType }
+     * 
+     */
+    public KeywordType createKeywordType() {
+        return new KeywordType();
+    }
+
+    /**
+     * Create an instance of {@link FeatureType }
+     * 
+     */
+    public FeatureType createFeatureType() {
+        return new FeatureType();
+    }
+
+    /**
+     * Create an instance of {@link EvidenceType }
+     * 
+     */
+    public EvidenceType createEvidenceType() {
+        return new EvidenceType();
+    }
+
+    /**
+     * Create an instance of {@link SequenceType }
+     * 
+     */
+    public SequenceType createSequenceType() {
+        return new SequenceType();
+    }
+
+    /**
+     * Create an instance of {@link Uniprot }
+     * 
+     */
+    public Uniprot createUniprot() {
+        return new Uniprot();
+    }
+
+    /**
+     * Create an instance of {@link StatusType }
+     * 
+     */
+    public StatusType createStatusType() {
+        return new StatusType();
+    }
+
+    /**
+     * Create an instance of {@link PositionType }
+     * 
+     */
+    public PositionType createPositionType() {
+        return new PositionType();
+    }
+
+    /**
+     * Create an instance of {@link ConsortiumType }
+     * 
+     */
+    public ConsortiumType createConsortiumType() {
+        return new ConsortiumType();
+    }
+
+    /**
+     * Create an instance of {@link GeneNameType }
+     * 
+     */
+    public GeneNameType createGeneNameType() {
+        return new GeneNameType();
+    }
+
+    /**
+     * Create an instance of {@link LocationType }
+     * 
+     */
+    public LocationType createLocationType() {
+        return new LocationType();
+    }
+
+    /**
+     * Create an instance of {@link CitationType }
+     * 
+     */
+    public CitationType createCitationType() {
+        return new CitationType();
+    }
+
+    /**
+     * Create an instance of {@link PropertyType }
+     * 
+     */
+    public PropertyType createPropertyType() {
+        return new PropertyType();
+    }
+
+    /**
+     * Create an instance of {@link PhysiologicalReactionType }
+     * 
+     */
+    public PhysiologicalReactionType createPhysiologicalReactionType() {
+        return new PhysiologicalReactionType();
+    }
+
+    /**
+     * Create an instance of {@link CofactorType }
+     * 
+     */
+    public CofactorType createCofactorType() {
+        return new CofactorType();
+    }
+
+    /**
+     * Create an instance of {@link EvidencedStringType }
+     * 
+     */
+    public EvidencedStringType createEvidencedStringType() {
+        return new EvidencedStringType();
+    }
+
+    /**
+     * Create an instance of {@link PersonType }
+     * 
+     */
+    public PersonType createPersonType() {
+        return new PersonType();
+    }
+
+    /**
+     * Create an instance of {@link ImportedFromType }
+     * 
+     */
+    public ImportedFromType createImportedFromType() {
+        return new ImportedFromType();
+    }
+
+    /**
+     * Create an instance of {@link EventType }
+     * 
+     */
+    public EventType createEventType() {
+        return new EventType();
+    }
+
+    /**
+     * Create an instance of {@link InteractantType }
+     * 
+     */
+    public InteractantType createInteractantType() {
+        return new InteractantType();
+    }
+
+    /**
+     * Create an instance of {@link NameListType }
+     * 
+     */
+    public NameListType createNameListType() {
+        return new NameListType();
+    }
+
+    /**
+     * Create an instance of {@link ReactionType }
+     * 
+     */
+    public ReactionType createReactionType() {
+        return new ReactionType();
+    }
+
+    /**
+     * Create an instance of {@link SourceType }
+     * 
+     */
+    public SourceType createSourceType() {
+        return new SourceType();
+    }
+
+    /**
+     * Create an instance of {@link MoleculeType }
+     * 
+     */
+    public MoleculeType createMoleculeType() {
+        return new MoleculeType();
+    }
+
+    /**
+     * Create an instance of {@link OrganismNameType }
+     * 
+     */
+    public OrganismNameType createOrganismNameType() {
+        return new OrganismNameType();
+    }
+
+    /**
+     * Create an instance of {@link SubcellularLocationType }
+     * 
+     */
+    public SubcellularLocationType createSubcellularLocationType() {
+        return new SubcellularLocationType();
+    }
+
+    /**
+     * Create an instance of {@link SourceDataType.Strain }
+     * 
+     */
+    public SourceDataType.Strain createSourceDataTypeStrain() {
+        return new SourceDataType.Strain();
+    }
+
+    /**
+     * Create an instance of {@link SourceDataType.Plasmid }
+     * 
+     */
+    public SourceDataType.Plasmid createSourceDataTypePlasmid() {
+        return new SourceDataType.Plasmid();
+    }
+
+    /**
+     * Create an instance of {@link SourceDataType.Transposon }
+     * 
+     */
+    public SourceDataType.Transposon createSourceDataTypeTransposon() {
+        return new SourceDataType.Transposon();
+    }
+
+    /**
+     * Create an instance of {@link SourceDataType.Tissue }
+     * 
+     */
+    public SourceDataType.Tissue createSourceDataTypeTissue() {
+        return new SourceDataType.Tissue();
+    }
+
+    /**
+     * Create an instance of {@link IsoformType.Name }
+     * 
+     */
+    public IsoformType.Name createIsoformTypeName() {
+        return new IsoformType.Name();
+    }
+
+    /**
+     * Create an instance of {@link IsoformType.Sequence }
+     * 
+     */
+    public IsoformType.Sequence createIsoformTypeSequence() {
+        return new IsoformType.Sequence();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.Absorption }
+     * 
+     */
+    public CommentType.Absorption createCommentTypeAbsorption() {
+        return new CommentType.Absorption();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.Kinetics }
+     * 
+     */
+    public CommentType.Kinetics createCommentTypeKinetics() {
+        return new CommentType.Kinetics();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.PhDependence }
+     * 
+     */
+    public CommentType.PhDependence createCommentTypePhDependence() {
+        return new CommentType.PhDependence();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.RedoxPotential }
+     * 
+     */
+    public CommentType.RedoxPotential createCommentTypeRedoxPotential() {
+        return new CommentType.RedoxPotential();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.TemperatureDependence }
+     * 
+     */
+    public CommentType.TemperatureDependence createCommentTypeTemperatureDependence() {
+        return new CommentType.TemperatureDependence();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.Link }
+     * 
+     */
+    public CommentType.Link createCommentTypeLink() {
+        return new CommentType.Link();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.Disease }
+     * 
+     */
+    public CommentType.Disease createCommentTypeDisease() {
+        return new CommentType.Disease();
+    }
+
+    /**
+     * Create an instance of {@link CommentType.Conflict.Sequence }
+     * 
+     */
+    public CommentType.Conflict.Sequence createCommentTypeConflictSequence() {
+        return new CommentType.Conflict.Sequence();
+    }
+
+    /**
+     * Create an instance of {@link OrganismType.Lineage }
+     * 
+     */
+    public OrganismType.Lineage createOrganismTypeLineage() {
+        return new OrganismType.Lineage();
+    }
+
+    /**
+     * Create an instance of {@link ProteinType.RecommendedName }
+     * 
+     */
+    public ProteinType.RecommendedName createProteinTypeRecommendedName() {
+        return new ProteinType.RecommendedName();
+    }
+
+    /**
+     * Create an instance of {@link ProteinType.AlternativeName }
+     * 
+     */
+    public ProteinType.AlternativeName createProteinTypeAlternativeName() {
+        return new ProteinType.AlternativeName();
+    }
+
+    /**
+     * Create an instance of {@link ProteinType.SubmittedName }
+     * 
+     */
+    public ProteinType.SubmittedName createProteinTypeSubmittedName() {
+        return new ProteinType.SubmittedName();
+    }
+
+    /**
+     * Create an instance of {@link ProteinType.Domain }
+     * 
+     */
+    public ProteinType.Domain createProteinTypeDomain() {
+        return new ProteinType.Domain();
+    }
+
+    /**
+     * Create an instance of {@link ProteinType.Component }
+     * 
+     */
+    public ProteinType.Component createProteinTypeComponent() {
+        return new ProteinType.Component();
+    }
+
+    /**
+     * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+     * 
+     */
+    @XmlElementDecl(namespace = "http://uniprot.org/uniprot", name = "copyright")
+    public JAXBElement<String> createCopyright(String value) {
+        return new JAXBElement<String>(_Copyright_QNAME, String.class, null, value);
+    }
 
 }
index 5668759..5e82f4f 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -13,15 +14,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
  * Describes different types of source organism names.
  * 
- * <p>
- * Java class for organismNameType complex type.
+ * <p>Java class for organismNameType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="organismNameType">
@@ -46,60 +45,62 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "organismNameType", propOrder = { "value" })
-public class OrganismNameType
-{
-
-  @XmlValue
-  protected String value;
+@XmlType(name = "organismNameType", propOrder = {
+    "value"
+})
+public class OrganismNameType {
 
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
+    @XmlValue
+    protected String value;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
 }
index e53de4c..ca8ad97 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,15 +16,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * Describes the source organism.
  * 
- * <p>
- * Java class for organismType complex type.
+ * <p>Java class for organismType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="organismType">
@@ -53,203 +52,190 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "organismType",
-  propOrder =
-  { "name", "dbReference", "lineage" })
-public class OrganismType
-{
-
-  @XmlElement(required = true)
-  protected List<OrganismNameType> name;
-
-  @XmlElement(required = true)
-  protected List<DbReferenceType> dbReference;
-
-  protected OrganismType.Lineage lineage;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
-
-  /**
-   * Gets the value of the name property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the name property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link OrganismNameType }
-   * 
-   * 
-   */
-  public List<OrganismNameType> getName()
-  {
-    if (name == null)
-    {
-      name = new ArrayList<OrganismNameType>();
+@XmlType(name = "organismType", propOrder = {
+    "name",
+    "dbReference",
+    "lineage"
+})
+public class OrganismType {
+
+    @XmlElement(required = true)
+    protected List<OrganismNameType> name;
+    @XmlElement(required = true)
+    protected List<DbReferenceType> dbReference;
+    protected OrganismType.Lineage lineage;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
+
+    /**
+     * Gets the value of the name property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the name property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getName().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link OrganismNameType }
+     * 
+     * 
+     */
+    public List<OrganismNameType> getName() {
+        if (name == null) {
+            name = new ArrayList<OrganismNameType>();
+        }
+        return this.name;
     }
-    return this.name;
-  }
-
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the dbReference property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getDbReference().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link DbReferenceType }
-   * 
-   * 
-   */
-  public List<DbReferenceType> getDbReference()
-  {
-    if (dbReference == null)
-    {
-      dbReference = new ArrayList<DbReferenceType>();
+
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dbReference property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDbReference().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DbReferenceType }
+     * 
+     * 
+     */
+    public List<DbReferenceType> getDbReference() {
+        if (dbReference == null) {
+            dbReference = new ArrayList<DbReferenceType>();
+        }
+        return this.dbReference;
     }
-    return this.dbReference;
-  }
-
-  /**
-   * Gets the value of the lineage property.
-   * 
-   * @return possible object is {@link OrganismType.Lineage }
-   * 
-   */
-  public OrganismType.Lineage getLineage()
-  {
-    return lineage;
-  }
-
-  /**
-   * Sets the value of the lineage property.
-   * 
-   * @param value
-   *          allowed object is {@link OrganismType.Lineage }
-   * 
-   */
-  public void setLineage(OrganismType.Lineage value)
-  {
-    this.lineage = value;
-  }
-
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+
+    /**
+     * Gets the value of the lineage property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link OrganismType.Lineage }
+     *     
+     */
+    public OrganismType.Lineage getLineage() {
+        return lineage;
     }
-    return this.evidence;
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="taxon" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "taxon" })
-  public static class Lineage
-  {
 
-    @XmlElement(required = true)
-    protected List<String> taxon;
+    /**
+     * Sets the value of the lineage property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link OrganismType.Lineage }
+     *     
+     */
+    public void setLineage(OrganismType.Lineage value) {
+        this.lineage = value;
+    }
 
     /**
-     * Gets the value of the taxon property.
+     * Gets the value of the evidence property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the taxon property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getTaxon().add(newItem);
+     *    getEvidence().add(newItem);
      * </pre>
      * 
      * 
      * <p>
-     * Objects of the following type(s) are allowed in the list {@link String }
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
      * 
      * 
      */
-    public List<String> getTaxon()
-    {
-      if (taxon == null)
-      {
-        taxon = new ArrayList<String>();
-      }
-      return this.taxon;
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
 
-  }
+
+    /**
+     * <p>Java class for anonymous complex type.
+     * 
+     * <p>The following schema fragment specifies the expected content contained within this class.
+     * 
+     * <pre>
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="taxon" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
+     * </pre>
+     * 
+     * 
+     */
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "taxon"
+    })
+    public static class Lineage {
+
+        @XmlElement(required = true)
+        protected List<String> taxon;
+
+        /**
+         * Gets the value of the taxon property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the taxon property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getTaxon().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link String }
+         * 
+         * 
+         */
+        public List<String> getTaxon() {
+            if (taxon == null) {
+                taxon = new ArrayList<String>();
+            }
+            return this.taxon;
+        }
+
+    }
 
 }
index ebbb691..4639054 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,13 +13,11 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for personType complex type.
+ * <p>Java class for personType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="personType">
@@ -34,33 +33,33 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "personType")
-public class PersonType
-{
+public class PersonType {
 
-  @XmlAttribute(name = "name", required = true)
-  protected String name;
+    @XmlAttribute(name = "name", required = true)
+    protected String name;
 
-  /**
-   * Gets the value of the name property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getName()
-  {
-    return name;
-  }
+    /**
+     * Gets the value of the name property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getName() {
+        return name;
+    }
 
-  /**
-   * Sets the value of the name property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setName(String value)
-  {
-    this.name = value;
-  }
+    /**
+     * Sets the value of the name property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setName(String value) {
+        this.name = value;
+    }
 
 }
index 95298e4..b01e412 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,15 +16,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * Describes a physiological reaction.
  * 
- * <p>
- * Java class for physiologicalReactionType complex type.
+ * <p>Java class for physiologicalReactionType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="physiologicalReactionType">
@@ -49,94 +48,93 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "physiologicalReactionType", propOrder = { "dbReference" })
-public class PhysiologicalReactionType
-{
-
-  @XmlElement(required = true)
-  protected DbReferenceType dbReference;
-
-  @XmlAttribute(name = "direction", required = true)
-  protected String direction;
+@XmlType(name = "physiologicalReactionType", propOrder = {
+    "dbReference"
+})
+public class PhysiologicalReactionType {
 
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
+    @XmlElement(required = true)
+    protected DbReferenceType dbReference;
+    @XmlAttribute(name = "direction", required = true)
+    protected String direction;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
 
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * @return possible object is {@link DbReferenceType }
-   * 
-   */
-  public DbReferenceType getDbReference()
-  {
-    return dbReference;
-  }
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public DbReferenceType getDbReference() {
+        return dbReference;
+    }
 
-  /**
-   * Sets the value of the dbReference property.
-   * 
-   * @param value
-   *          allowed object is {@link DbReferenceType }
-   * 
-   */
-  public void setDbReference(DbReferenceType value)
-  {
-    this.dbReference = value;
-  }
+    /**
+     * Sets the value of the dbReference property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public void setDbReference(DbReferenceType value) {
+        this.dbReference = value;
+    }
 
-  /**
-   * Gets the value of the direction property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getDirection()
-  {
-    return direction;
-  }
+    /**
+     * Gets the value of the direction property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getDirection() {
+        return direction;
+    }
 
-  /**
-   * Sets the value of the direction property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setDirection(String value)
-  {
-    this.direction = value;
-  }
+    /**
+     * Sets the value of the direction property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDirection(String value) {
+        this.direction = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
 }
index c3713fa..25d6030 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.math.BigInteger;
@@ -16,13 +17,11 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for positionType complex type.
+ * <p>Java class for positionType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="positionType">
@@ -50,101 +49,95 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "positionType")
-public class PositionType
-{
-
-  @XmlAttribute(name = "position")
-  @XmlSchemaType(name = "unsignedLong")
-  protected BigInteger position;
-
-  @XmlAttribute(name = "status")
-  protected String status;
+public class PositionType {
 
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
+    @XmlAttribute(name = "position")
+    @XmlSchemaType(name = "unsignedLong")
+    protected BigInteger position;
+    @XmlAttribute(name = "status")
+    protected String status;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
 
-  /**
-   * Gets the value of the position property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getPosition()
-  {
-    return position;
-  }
-
-  /**
-   * Sets the value of the position property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setPosition(BigInteger value)
-  {
-    this.position = value;
-  }
+    /**
+     * Gets the value of the position property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getPosition() {
+        return position;
+    }
 
-  /**
-   * Gets the value of the status property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getStatus()
-  {
-    if (status == null)
-    {
-      return "certain";
+    /**
+     * Sets the value of the position property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setPosition(BigInteger value) {
+        this.position = value;
     }
-    else
-    {
-      return status;
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getStatus() {
+        if (status == null) {
+            return "certain";
+        } else {
+            return status;
+        }
     }
-  }
 
-  /**
-   * Sets the value of the status property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setStatus(String value)
-  {
-    this.status = value;
-  }
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStatus(String value) {
+        this.status = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
 }
index 6b43149..b1ab0f3 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,13 +13,11 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for propertyType complex type.
+ * <p>Java class for propertyType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="propertyType">
@@ -35,59 +34,59 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "propertyType")
-public class PropertyType
-{
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
+public class PropertyType {
 
-  @XmlAttribute(name = "value", required = true)
-  protected String value;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "value", required = true)
+    protected String value;
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
 
 }
index 3d07edb..73f4c21 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,16 +13,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes the evidence for the protein's existence. Equivalent to the flat
- * file PE-line.
+ * Describes the evidence for the protein's existence.
+ *             Equivalent to the flat file PE-line.
  * 
- * <p>
- * Java class for proteinExistenceType complex type.
+ * <p>Java class for proteinExistenceType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="proteinExistenceType">
@@ -47,33 +46,33 @@ import javax.xml.bind.annotation.XmlType;
  */
 @XmlAccessorType(XmlAccessType.FIELD)
 @XmlType(name = "proteinExistenceType")
-public class ProteinExistenceType
-{
+public class ProteinExistenceType {
 
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
 
-  /**
-   * Gets the value of the type property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getType()
-  {
-    return type;
-  }
+    /**
+     * Gets the value of the type property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getType() {
+        return type;
+    }
 
-  /**
-   * Sets the value of the type property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setType(String value)
-  {
-    this.type = value;
-  }
+    /**
+     * Sets the value of the type property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setType(String value) {
+        this.type = value;
+    }
 
 }
index 5a7d731..f3d0e80 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -14,16 +15,14 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes the names for the protein and parts thereof. Equivalent to the flat
- * file DE-line.
+ * Describes the names for the protein and parts thereof.
+ *             Equivalent to the flat file DE-line.
  * 
- * <p>
- * Java class for proteinType complex type.
+ * <p>Java class for proteinType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="proteinType">
@@ -58,497 +57,66 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "proteinType",
-  propOrder =
-  { "recommendedName", "alternativeName", "submittedName", "allergenName",
-      "biotechName", "cdAntigenName", "innName", "domain", "component" })
-public class ProteinType
-{
-
-  protected ProteinType.RecommendedName recommendedName;
-
-  protected List<ProteinType.AlternativeName> alternativeName;
-
-  protected List<ProteinType.SubmittedName> submittedName;
-
-  protected EvidencedStringType allergenName;
-
-  protected EvidencedStringType biotechName;
-
-  protected List<EvidencedStringType> cdAntigenName;
-
-  protected List<EvidencedStringType> innName;
-
-  protected List<ProteinType.Domain> domain;
-
-  protected List<ProteinType.Component> component;
-
-  /**
-   * Gets the value of the recommendedName property.
-   * 
-   * @return possible object is {@link ProteinType.RecommendedName }
-   * 
-   */
-  public ProteinType.RecommendedName getRecommendedName()
-  {
-    return recommendedName;
-  }
-
-  /**
-   * Sets the value of the recommendedName property.
-   * 
-   * @param value
-   *          allowed object is {@link ProteinType.RecommendedName }
-   * 
-   */
-  public void setRecommendedName(ProteinType.RecommendedName value)
-  {
-    this.recommendedName = value;
-  }
-
-  /**
-   * Gets the value of the alternativeName property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the alternativeName property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getAlternativeName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link ProteinType.AlternativeName }
-   * 
-   * 
-   */
-  public List<ProteinType.AlternativeName> getAlternativeName()
-  {
-    if (alternativeName == null)
-    {
-      alternativeName = new ArrayList<ProteinType.AlternativeName>();
-    }
-    return this.alternativeName;
-  }
-
-  /**
-   * Gets the value of the submittedName property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the submittedName property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getSubmittedName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link ProteinType.SubmittedName }
-   * 
-   * 
-   */
-  public List<ProteinType.SubmittedName> getSubmittedName()
-  {
-    if (submittedName == null)
-    {
-      submittedName = new ArrayList<ProteinType.SubmittedName>();
-    }
-    return this.submittedName;
-  }
-
-  /**
-   * Gets the value of the allergenName property.
-   * 
-   * @return possible object is {@link EvidencedStringType }
-   * 
-   */
-  public EvidencedStringType getAllergenName()
-  {
-    return allergenName;
-  }
-
-  /**
-   * Sets the value of the allergenName property.
-   * 
-   * @param value
-   *          allowed object is {@link EvidencedStringType }
-   * 
-   */
-  public void setAllergenName(EvidencedStringType value)
-  {
-    this.allergenName = value;
-  }
-
-  /**
-   * Gets the value of the biotechName property.
-   * 
-   * @return possible object is {@link EvidencedStringType }
-   * 
-   */
-  public EvidencedStringType getBiotechName()
-  {
-    return biotechName;
-  }
-
-  /**
-   * Sets the value of the biotechName property.
-   * 
-   * @param value
-   *          allowed object is {@link EvidencedStringType }
-   * 
-   */
-  public void setBiotechName(EvidencedStringType value)
-  {
-    this.biotechName = value;
-  }
-
-  /**
-   * Gets the value of the cdAntigenName property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the cdAntigenName property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getCdAntigenName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidencedStringType }
-   * 
-   * 
-   */
-  public List<EvidencedStringType> getCdAntigenName()
-  {
-    if (cdAntigenName == null)
-    {
-      cdAntigenName = new ArrayList<EvidencedStringType>();
-    }
-    return this.cdAntigenName;
-  }
-
-  /**
-   * Gets the value of the innName property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the innName property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getInnName().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidencedStringType }
-   * 
-   * 
-   */
-  public List<EvidencedStringType> getInnName()
-  {
-    if (innName == null)
-    {
-      innName = new ArrayList<EvidencedStringType>();
-    }
-    return this.innName;
-  }
-
-  /**
-   * Gets the value of the domain property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the domain property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getDomain().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link ProteinType.Domain }
-   * 
-   * 
-   */
-  public List<ProteinType.Domain> getDomain()
-  {
-    if (domain == null)
-    {
-      domain = new ArrayList<ProteinType.Domain>();
-    }
-    return this.domain;
-  }
-
-  /**
-   * Gets the value of the component property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the component property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getComponent().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link ProteinType.Component }
-   * 
-   * 
-   */
-  public List<ProteinType.Component> getComponent()
-  {
-    if (component == null)
-    {
-      component = new ArrayList<ProteinType.Component>();
-    }
-    return this.component;
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="fullName" type="{http://uniprot.org/uniprot}evidencedStringType" minOccurs="0"/>
-   *         &lt;element name="shortName" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="ecNumber" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "fullName", "shortName", "ecNumber" })
-  public static class AlternativeName
-  {
-
-    protected EvidencedStringType fullName;
-
-    protected List<EvidencedStringType> shortName;
-
-    protected List<EvidencedStringType> ecNumber;
-
-    /**
-     * Gets the value of the fullName property.
-     * 
-     * @return possible object is {@link EvidencedStringType }
-     * 
-     */
-    public EvidencedStringType getFullName()
-    {
-      return fullName;
-    }
-
-    /**
-     * Sets the value of the fullName property.
-     * 
-     * @param value
-     *          allowed object is {@link EvidencedStringType }
-     * 
-     */
-    public void setFullName(EvidencedStringType value)
-    {
-      this.fullName = value;
-    }
-
-    /**
-     * Gets the value of the shortName property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the shortName property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getShortName().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
-     */
-    public List<EvidencedStringType> getShortName()
-    {
-      if (shortName == null)
-      {
-        shortName = new ArrayList<EvidencedStringType>();
-      }
-      return this.shortName;
-    }
-
-    /**
-     * Gets the value of the ecNumber property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the ecNumber property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
-     * 
-     * <pre>
-     * getEcNumber().add(newItem);
-     * </pre>
-     * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
-     */
-    public List<EvidencedStringType> getEcNumber()
-    {
-      if (ecNumber == null)
-      {
-        ecNumber = new ArrayList<EvidencedStringType>();
-      }
-      return this.ecNumber;
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;group ref="{http://uniprot.org/uniprot}proteinNameGroup"/>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "recommendedName", "alternativeName", "submittedName", "allergenName",
-        "biotechName", "cdAntigenName", "innName" })
-  public static class Component
-  {
+@XmlType(name = "proteinType", propOrder = {
+    "recommendedName",
+    "alternativeName",
+    "submittedName",
+    "allergenName",
+    "biotechName",
+    "cdAntigenName",
+    "innName",
+    "domain",
+    "component"
+})
+public class ProteinType {
 
     protected ProteinType.RecommendedName recommendedName;
-
     protected List<ProteinType.AlternativeName> alternativeName;
-
     protected List<ProteinType.SubmittedName> submittedName;
-
     protected EvidencedStringType allergenName;
-
     protected EvidencedStringType biotechName;
-
     protected List<EvidencedStringType> cdAntigenName;
-
     protected List<EvidencedStringType> innName;
+    protected List<ProteinType.Domain> domain;
+    protected List<ProteinType.Component> component;
 
     /**
      * Gets the value of the recommendedName property.
      * 
-     * @return possible object is {@link ProteinType.RecommendedName }
-     * 
+     * @return
+     *     possible object is
+     *     {@link ProteinType.RecommendedName }
+     *     
      */
-    public ProteinType.RecommendedName getRecommendedName()
-    {
-      return recommendedName;
+    public ProteinType.RecommendedName getRecommendedName() {
+        return recommendedName;
     }
 
     /**
      * Sets the value of the recommendedName property.
      * 
      * @param value
-     *          allowed object is {@link ProteinType.RecommendedName }
-     * 
+     *     allowed object is
+     *     {@link ProteinType.RecommendedName }
+     *     
      */
-    public void setRecommendedName(ProteinType.RecommendedName value)
-    {
-      this.recommendedName = value;
+    public void setRecommendedName(ProteinType.RecommendedName value) {
+        this.recommendedName = value;
     }
 
     /**
      * Gets the value of the alternativeName property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the alternativeName property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the alternativeName property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getAlternativeName().add(newItem);
+     *    getAlternativeName().add(newItem);
      * </pre>
      * 
      * 
@@ -558,29 +126,26 @@ public class ProteinType
      * 
      * 
      */
-    public List<ProteinType.AlternativeName> getAlternativeName()
-    {
-      if (alternativeName == null)
-      {
-        alternativeName = new ArrayList<ProteinType.AlternativeName>();
-      }
-      return this.alternativeName;
+    public List<ProteinType.AlternativeName> getAlternativeName() {
+        if (alternativeName == null) {
+            alternativeName = new ArrayList<ProteinType.AlternativeName>();
+        }
+        return this.alternativeName;
     }
 
     /**
      * Gets the value of the submittedName property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the submittedName property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the submittedName property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getSubmittedName().add(newItem);
+     *    getSubmittedName().add(newItem);
      * </pre>
      * 
      * 
@@ -590,75 +155,74 @@ public class ProteinType
      * 
      * 
      */
-    public List<ProteinType.SubmittedName> getSubmittedName()
-    {
-      if (submittedName == null)
-      {
-        submittedName = new ArrayList<ProteinType.SubmittedName>();
-      }
-      return this.submittedName;
+    public List<ProteinType.SubmittedName> getSubmittedName() {
+        if (submittedName == null) {
+            submittedName = new ArrayList<ProteinType.SubmittedName>();
+        }
+        return this.submittedName;
     }
 
     /**
      * Gets the value of the allergenName property.
      * 
-     * @return possible object is {@link EvidencedStringType }
-     * 
+     * @return
+     *     possible object is
+     *     {@link EvidencedStringType }
+     *     
      */
-    public EvidencedStringType getAllergenName()
-    {
-      return allergenName;
+    public EvidencedStringType getAllergenName() {
+        return allergenName;
     }
 
     /**
      * Sets the value of the allergenName property.
      * 
      * @param value
-     *          allowed object is {@link EvidencedStringType }
-     * 
+     *     allowed object is
+     *     {@link EvidencedStringType }
+     *     
      */
-    public void setAllergenName(EvidencedStringType value)
-    {
-      this.allergenName = value;
+    public void setAllergenName(EvidencedStringType value) {
+        this.allergenName = value;
     }
 
     /**
      * Gets the value of the biotechName property.
      * 
-     * @return possible object is {@link EvidencedStringType }
-     * 
+     * @return
+     *     possible object is
+     *     {@link EvidencedStringType }
+     *     
      */
-    public EvidencedStringType getBiotechName()
-    {
-      return biotechName;
+    public EvidencedStringType getBiotechName() {
+        return biotechName;
     }
 
     /**
      * Sets the value of the biotechName property.
      * 
      * @param value
-     *          allowed object is {@link EvidencedStringType }
-     * 
+     *     allowed object is
+     *     {@link EvidencedStringType }
+     *     
      */
-    public void setBiotechName(EvidencedStringType value)
-    {
-      this.biotechName = value;
+    public void setBiotechName(EvidencedStringType value) {
+        this.biotechName = value;
     }
 
     /**
      * Gets the value of the cdAntigenName property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the cdAntigenName property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the cdAntigenName property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getCdAntigenName().add(newItem);
+     *    getCdAntigenName().add(newItem);
      * </pre>
      * 
      * 
@@ -668,29 +232,26 @@ public class ProteinType
      * 
      * 
      */
-    public List<EvidencedStringType> getCdAntigenName()
-    {
-      if (cdAntigenName == null)
-      {
-        cdAntigenName = new ArrayList<EvidencedStringType>();
-      }
-      return this.cdAntigenName;
+    public List<EvidencedStringType> getCdAntigenName() {
+        if (cdAntigenName == null) {
+            cdAntigenName = new ArrayList<EvidencedStringType>();
+        }
+        return this.cdAntigenName;
     }
 
     /**
      * Gets the value of the innName property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the innName property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the innName property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getInnName().add(newItem);
+     *    getInnName().add(newItem);
      * </pre>
      * 
      * 
@@ -700,472 +261,849 @@ public class ProteinType
      * 
      * 
      */
-    public List<EvidencedStringType> getInnName()
-    {
-      if (innName == null)
-      {
-        innName = new ArrayList<EvidencedStringType>();
-      }
-      return this.innName;
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;group ref="{http://uniprot.org/uniprot}proteinNameGroup"/>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(
-    name = "",
-    propOrder =
-    { "recommendedName", "alternativeName", "submittedName", "allergenName",
-        "biotechName", "cdAntigenName", "innName" })
-  public static class Domain
-  {
-
-    protected ProteinType.RecommendedName recommendedName;
-
-    protected List<ProteinType.AlternativeName> alternativeName;
-
-    protected List<ProteinType.SubmittedName> submittedName;
-
-    protected EvidencedStringType allergenName;
-
-    protected EvidencedStringType biotechName;
-
-    protected List<EvidencedStringType> cdAntigenName;
-
-    protected List<EvidencedStringType> innName;
-
-    /**
-     * Gets the value of the recommendedName property.
-     * 
-     * @return possible object is {@link ProteinType.RecommendedName }
-     * 
-     */
-    public ProteinType.RecommendedName getRecommendedName()
-    {
-      return recommendedName;
+    public List<EvidencedStringType> getInnName() {
+        if (innName == null) {
+            innName = new ArrayList<EvidencedStringType>();
+        }
+        return this.innName;
     }
 
     /**
-     * Sets the value of the recommendedName property.
-     * 
-     * @param value
-     *          allowed object is {@link ProteinType.RecommendedName }
-     * 
-     */
-    public void setRecommendedName(ProteinType.RecommendedName value)
-    {
-      this.recommendedName = value;
-    }
-
-    /**
-     * Gets the value of the alternativeName property.
+     * Gets the value of the domain property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the alternativeName property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the domain property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getAlternativeName().add(newItem);
+     *    getDomain().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link ProteinType.AlternativeName }
+     * {@link ProteinType.Domain }
      * 
      * 
      */
-    public List<ProteinType.AlternativeName> getAlternativeName()
-    {
-      if (alternativeName == null)
-      {
-        alternativeName = new ArrayList<ProteinType.AlternativeName>();
-      }
-      return this.alternativeName;
+    public List<ProteinType.Domain> getDomain() {
+        if (domain == null) {
+            domain = new ArrayList<ProteinType.Domain>();
+        }
+        return this.domain;
     }
 
     /**
-     * Gets the value of the submittedName property.
+     * Gets the value of the component property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the submittedName property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the component property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getSubmittedName().add(newItem);
+     *    getComponent().add(newItem);
      * </pre>
      * 
      * 
      * <p>
      * Objects of the following type(s) are allowed in the list
-     * {@link ProteinType.SubmittedName }
-     * 
-     * 
-     */
-    public List<ProteinType.SubmittedName> getSubmittedName()
-    {
-      if (submittedName == null)
-      {
-        submittedName = new ArrayList<ProteinType.SubmittedName>();
-      }
-      return this.submittedName;
-    }
-
-    /**
-     * Gets the value of the allergenName property.
-     * 
-     * @return possible object is {@link EvidencedStringType }
-     * 
-     */
-    public EvidencedStringType getAllergenName()
-    {
-      return allergenName;
-    }
-
-    /**
-     * Sets the value of the allergenName property.
+     * {@link ProteinType.Component }
      * 
-     * @param value
-     *          allowed object is {@link EvidencedStringType }
      * 
      */
-    public void setAllergenName(EvidencedStringType value)
-    {
-      this.allergenName = value;
+    public List<ProteinType.Component> getComponent() {
+        if (component == null) {
+            component = new ArrayList<ProteinType.Component>();
+        }
+        return this.component;
     }
 
-    /**
-     * Gets the value of the biotechName property.
-     * 
-     * @return possible object is {@link EvidencedStringType }
-     * 
-     */
-    public EvidencedStringType getBiotechName()
-    {
-      return biotechName;
-    }
 
     /**
-     * Sets the value of the biotechName property.
+     * <p>Java class for anonymous complex type.
      * 
-     * @param value
-     *          allowed object is {@link EvidencedStringType }
-     * 
-     */
-    public void setBiotechName(EvidencedStringType value)
-    {
-      this.biotechName = value;
-    }
-
-    /**
-     * Gets the value of the cdAntigenName property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the cdAntigenName property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getCdAntigenName().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="fullName" type="{http://uniprot.org/uniprot}evidencedStringType" minOccurs="0"/>
+     *         &lt;element name="shortName" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="ecNumber" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getCdAntigenName()
-    {
-      if (cdAntigenName == null)
-      {
-        cdAntigenName = new ArrayList<EvidencedStringType>();
-      }
-      return this.cdAntigenName;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "fullName",
+        "shortName",
+        "ecNumber"
+    })
+    public static class AlternativeName {
+
+        protected EvidencedStringType fullName;
+        protected List<EvidencedStringType> shortName;
+        protected List<EvidencedStringType> ecNumber;
+
+        /**
+         * Gets the value of the fullName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getFullName() {
+            return fullName;
+        }
+
+        /**
+         * Sets the value of the fullName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setFullName(EvidencedStringType value) {
+            this.fullName = value;
+        }
+
+        /**
+         * Gets the value of the shortName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the shortName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getShortName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getShortName() {
+            if (shortName == null) {
+                shortName = new ArrayList<EvidencedStringType>();
+            }
+            return this.shortName;
+        }
+
+        /**
+         * Gets the value of the ecNumber property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the ecNumber property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEcNumber().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getEcNumber() {
+            if (ecNumber == null) {
+                ecNumber = new ArrayList<EvidencedStringType>();
+            }
+            return this.ecNumber;
+        }
+
     }
 
+
     /**
-     * Gets the value of the innName property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the innName property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getInnName().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;group ref="{http://uniprot.org/uniprot}proteinNameGroup"/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getInnName()
-    {
-      if (innName == null)
-      {
-        innName = new ArrayList<EvidencedStringType>();
-      }
-      return this.innName;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "recommendedName",
+        "alternativeName",
+        "submittedName",
+        "allergenName",
+        "biotechName",
+        "cdAntigenName",
+        "innName"
+    })
+    public static class Component {
+
+        protected ProteinType.RecommendedName recommendedName;
+        protected List<ProteinType.AlternativeName> alternativeName;
+        protected List<ProteinType.SubmittedName> submittedName;
+        protected EvidencedStringType allergenName;
+        protected EvidencedStringType biotechName;
+        protected List<EvidencedStringType> cdAntigenName;
+        protected List<EvidencedStringType> innName;
+
+        /**
+         * Gets the value of the recommendedName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link ProteinType.RecommendedName }
+         *     
+         */
+        public ProteinType.RecommendedName getRecommendedName() {
+            return recommendedName;
+        }
+
+        /**
+         * Sets the value of the recommendedName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link ProteinType.RecommendedName }
+         *     
+         */
+        public void setRecommendedName(ProteinType.RecommendedName value) {
+            this.recommendedName = value;
+        }
+
+        /**
+         * Gets the value of the alternativeName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the alternativeName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getAlternativeName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link ProteinType.AlternativeName }
+         * 
+         * 
+         */
+        public List<ProteinType.AlternativeName> getAlternativeName() {
+            if (alternativeName == null) {
+                alternativeName = new ArrayList<ProteinType.AlternativeName>();
+            }
+            return this.alternativeName;
+        }
+
+        /**
+         * Gets the value of the submittedName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the submittedName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getSubmittedName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link ProteinType.SubmittedName }
+         * 
+         * 
+         */
+        public List<ProteinType.SubmittedName> getSubmittedName() {
+            if (submittedName == null) {
+                submittedName = new ArrayList<ProteinType.SubmittedName>();
+            }
+            return this.submittedName;
+        }
+
+        /**
+         * Gets the value of the allergenName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getAllergenName() {
+            return allergenName;
+        }
+
+        /**
+         * Sets the value of the allergenName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setAllergenName(EvidencedStringType value) {
+            this.allergenName = value;
+        }
+
+        /**
+         * Gets the value of the biotechName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getBiotechName() {
+            return biotechName;
+        }
+
+        /**
+         * Sets the value of the biotechName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setBiotechName(EvidencedStringType value) {
+            this.biotechName = value;
+        }
+
+        /**
+         * Gets the value of the cdAntigenName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the cdAntigenName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getCdAntigenName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getCdAntigenName() {
+            if (cdAntigenName == null) {
+                cdAntigenName = new ArrayList<EvidencedStringType>();
+            }
+            return this.cdAntigenName;
+        }
+
+        /**
+         * Gets the value of the innName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the innName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getInnName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getInnName() {
+            if (innName == null) {
+                innName = new ArrayList<EvidencedStringType>();
+            }
+            return this.innName;
+        }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="fullName" type="{http://uniprot.org/uniprot}evidencedStringType"/>
-   *         &lt;element name="shortName" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *         &lt;element name="ecNumber" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "fullName", "shortName", "ecNumber" })
-  public static class RecommendedName
-  {
-
-    @XmlElement(required = true)
-    protected EvidencedStringType fullName;
-
-    protected List<EvidencedStringType> shortName;
-
-    protected List<EvidencedStringType> ecNumber;
-
-    /**
-     * Gets the value of the fullName property.
-     * 
-     * @return possible object is {@link EvidencedStringType }
-     * 
-     */
-    public EvidencedStringType getFullName()
-    {
-      return fullName;
     }
 
-    /**
-     * Sets the value of the fullName property.
-     * 
-     * @param value
-     *          allowed object is {@link EvidencedStringType }
-     * 
-     */
-    public void setFullName(EvidencedStringType value)
-    {
-      this.fullName = value;
-    }
 
     /**
-     * Gets the value of the shortName property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the shortName property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getShortName().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;group ref="{http://uniprot.org/uniprot}proteinNameGroup"/>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getShortName()
-    {
-      if (shortName == null)
-      {
-        shortName = new ArrayList<EvidencedStringType>();
-      }
-      return this.shortName;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "recommendedName",
+        "alternativeName",
+        "submittedName",
+        "allergenName",
+        "biotechName",
+        "cdAntigenName",
+        "innName"
+    })
+    public static class Domain {
+
+        protected ProteinType.RecommendedName recommendedName;
+        protected List<ProteinType.AlternativeName> alternativeName;
+        protected List<ProteinType.SubmittedName> submittedName;
+        protected EvidencedStringType allergenName;
+        protected EvidencedStringType biotechName;
+        protected List<EvidencedStringType> cdAntigenName;
+        protected List<EvidencedStringType> innName;
+
+        /**
+         * Gets the value of the recommendedName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link ProteinType.RecommendedName }
+         *     
+         */
+        public ProteinType.RecommendedName getRecommendedName() {
+            return recommendedName;
+        }
+
+        /**
+         * Sets the value of the recommendedName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link ProteinType.RecommendedName }
+         *     
+         */
+        public void setRecommendedName(ProteinType.RecommendedName value) {
+            this.recommendedName = value;
+        }
+
+        /**
+         * Gets the value of the alternativeName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the alternativeName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getAlternativeName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link ProteinType.AlternativeName }
+         * 
+         * 
+         */
+        public List<ProteinType.AlternativeName> getAlternativeName() {
+            if (alternativeName == null) {
+                alternativeName = new ArrayList<ProteinType.AlternativeName>();
+            }
+            return this.alternativeName;
+        }
+
+        /**
+         * Gets the value of the submittedName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the submittedName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getSubmittedName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link ProteinType.SubmittedName }
+         * 
+         * 
+         */
+        public List<ProteinType.SubmittedName> getSubmittedName() {
+            if (submittedName == null) {
+                submittedName = new ArrayList<ProteinType.SubmittedName>();
+            }
+            return this.submittedName;
+        }
+
+        /**
+         * Gets the value of the allergenName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getAllergenName() {
+            return allergenName;
+        }
+
+        /**
+         * Sets the value of the allergenName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setAllergenName(EvidencedStringType value) {
+            this.allergenName = value;
+        }
+
+        /**
+         * Gets the value of the biotechName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getBiotechName() {
+            return biotechName;
+        }
+
+        /**
+         * Sets the value of the biotechName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setBiotechName(EvidencedStringType value) {
+            this.biotechName = value;
+        }
+
+        /**
+         * Gets the value of the cdAntigenName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the cdAntigenName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getCdAntigenName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getCdAntigenName() {
+            if (cdAntigenName == null) {
+                cdAntigenName = new ArrayList<EvidencedStringType>();
+            }
+            return this.cdAntigenName;
+        }
+
+        /**
+         * Gets the value of the innName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the innName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getInnName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getInnName() {
+            if (innName == null) {
+                innName = new ArrayList<EvidencedStringType>();
+            }
+            return this.innName;
+        }
+
     }
 
+
     /**
-     * Gets the value of the ecNumber property.
-     * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the ecNumber property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getEcNumber().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="fullName" type="{http://uniprot.org/uniprot}evidencedStringType"/>
+     *         &lt;element name="shortName" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *         &lt;element name="ecNumber" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getEcNumber()
-    {
-      if (ecNumber == null)
-      {
-        ecNumber = new ArrayList<EvidencedStringType>();
-      }
-      return this.ecNumber;
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;complexContent>
-   *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
-   *       &lt;sequence>
-   *         &lt;element name="fullName" type="{http://uniprot.org/uniprot}evidencedStringType"/>
-   *         &lt;element name="ecNumber" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
-   *       &lt;/sequence>
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "fullName", "ecNumber" })
-  public static class SubmittedName
-  {
-
-    @XmlElement(required = true)
-    protected EvidencedStringType fullName;
-
-    protected List<EvidencedStringType> ecNumber;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "fullName",
+        "shortName",
+        "ecNumber"
+    })
+    public static class RecommendedName {
+
+        @XmlElement(required = true)
+        protected EvidencedStringType fullName;
+        protected List<EvidencedStringType> shortName;
+        protected List<EvidencedStringType> ecNumber;
+
+        /**
+         * Gets the value of the fullName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getFullName() {
+            return fullName;
+        }
+
+        /**
+         * Sets the value of the fullName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setFullName(EvidencedStringType value) {
+            this.fullName = value;
+        }
+
+        /**
+         * Gets the value of the shortName property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the shortName property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getShortName().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getShortName() {
+            if (shortName == null) {
+                shortName = new ArrayList<EvidencedStringType>();
+            }
+            return this.shortName;
+        }
+
+        /**
+         * Gets the value of the ecNumber property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the ecNumber property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEcNumber().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getEcNumber() {
+            if (ecNumber == null) {
+                ecNumber = new ArrayList<EvidencedStringType>();
+            }
+            return this.ecNumber;
+        }
 
-    /**
-     * Gets the value of the fullName property.
-     * 
-     * @return possible object is {@link EvidencedStringType }
-     * 
-     */
-    public EvidencedStringType getFullName()
-    {
-      return fullName;
     }
 
-    /**
-     * Sets the value of the fullName property.
-     * 
-     * @param value
-     *          allowed object is {@link EvidencedStringType }
-     * 
-     */
-    public void setFullName(EvidencedStringType value)
-    {
-      this.fullName = value;
-    }
 
     /**
-     * Gets the value of the ecNumber property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the ecNumber property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getEcNumber().add(newItem);
+     * &lt;complexType>
+     *   &lt;complexContent>
+     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+     *       &lt;sequence>
+     *         &lt;element name="fullName" type="{http://uniprot.org/uniprot}evidencedStringType"/>
+     *         &lt;element name="ecNumber" type="{http://uniprot.org/uniprot}evidencedStringType" maxOccurs="unbounded" minOccurs="0"/>
+     *       &lt;/sequence>
+     *     &lt;/restriction>
+     *   &lt;/complexContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link EvidencedStringType }
-     * 
-     * 
      */
-    public List<EvidencedStringType> getEcNumber()
-    {
-      if (ecNumber == null)
-      {
-        ecNumber = new ArrayList<EvidencedStringType>();
-      }
-      return this.ecNumber;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "fullName",
+        "ecNumber"
+    })
+    public static class SubmittedName {
+
+        @XmlElement(required = true)
+        protected EvidencedStringType fullName;
+        protected List<EvidencedStringType> ecNumber;
+
+        /**
+         * Gets the value of the fullName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public EvidencedStringType getFullName() {
+            return fullName;
+        }
+
+        /**
+         * Sets the value of the fullName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link EvidencedStringType }
+         *     
+         */
+        public void setFullName(EvidencedStringType value) {
+            this.fullName = value;
+        }
+
+        /**
+         * Gets the value of the ecNumber property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the ecNumber property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEcNumber().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link EvidencedStringType }
+         * 
+         * 
+         */
+        public List<EvidencedStringType> getEcNumber() {
+            if (ecNumber == null) {
+                ecNumber = new ArrayList<EvidencedStringType>();
+            }
+            return this.ecNumber;
+        }
 
-  }
+    }
 
 }
index bc660fe..0e84d09 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,15 +16,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
  * Describes a chemical reaction.
  * 
- * <p>
- * Java class for reactionType complex type.
+ * <p>Java class for reactionType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="reactionType">
@@ -42,103 +41,99 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "reactionType", propOrder = { "text", "dbReference" })
-public class ReactionType
-{
-
-  @XmlElement(required = true)
-  protected String text;
+@XmlType(name = "reactionType", propOrder = {
+    "text",
+    "dbReference"
+})
+public class ReactionType {
 
-  @XmlElement(required = true)
-  protected List<DbReferenceType> dbReference;
+    @XmlElement(required = true)
+    protected String text;
+    @XmlElement(required = true)
+    protected List<DbReferenceType> dbReference;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
 
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
-
-  /**
-   * Gets the value of the text property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getText()
-  {
-    return text;
-  }
+    /**
+     * Gets the value of the text property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getText() {
+        return text;
+    }
 
-  /**
-   * Sets the value of the text property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setText(String value)
-  {
-    this.text = value;
-  }
+    /**
+     * Sets the value of the text property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setText(String value) {
+        this.text = value;
+    }
 
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the dbReference property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getDbReference().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link DbReferenceType }
-   * 
-   * 
-   */
-  public List<DbReferenceType> getDbReference()
-  {
-    if (dbReference == null)
-    {
-      dbReference = new ArrayList<DbReferenceType>();
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the dbReference property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getDbReference().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link DbReferenceType }
+     * 
+     * 
+     */
+    public List<DbReferenceType> getDbReference() {
+        if (dbReference == null) {
+            dbReference = new ArrayList<DbReferenceType>();
+        }
+        return this.dbReference;
     }
-    return this.dbReference;
-  }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
 }
index 729acae..afd4647 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,16 +16,14 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes a citation and a summary of its content. Equivalent to the flat
- * file RN-, RP-, RC-, RX-, RG-, RA-, RT- and RL-lines.
+ * Describes a citation and a summary of its content.
+ *             Equivalent to the flat file RN-, RP-, RC-, RX-, RG-, RA-, RT- and RL-lines.
  * 
- * <p>
- * Java class for referenceType complex type.
+ * <p>Java class for referenceType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="referenceType">
@@ -44,156 +43,151 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "referenceType",
-  propOrder =
-  { "citation", "scope", "source" })
-public class ReferenceType
-{
-
-  @XmlElement(required = true)
-  protected CitationType citation;
-
-  @XmlElement(required = true)
-  protected List<String> scope;
-
-  protected SourceDataType source;
-
-  @XmlAttribute(name = "evidence")
-  protected List<Integer> evidence;
-
-  @XmlAttribute(name = "key", required = true)
-  protected String key;
-
-  /**
-   * Gets the value of the citation property.
-   * 
-   * @return possible object is {@link CitationType }
-   * 
-   */
-  public CitationType getCitation()
-  {
-    return citation;
-  }
+@XmlType(name = "referenceType", propOrder = {
+    "citation",
+    "scope",
+    "source"
+})
+public class ReferenceType {
+
+    @XmlElement(required = true)
+    protected CitationType citation;
+    @XmlElement(required = true)
+    protected List<String> scope;
+    protected SourceDataType source;
+    @XmlAttribute(name = "evidence")
+    protected List<Integer> evidence;
+    @XmlAttribute(name = "key", required = true)
+    protected String key;
+
+    /**
+     * Gets the value of the citation property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link CitationType }
+     *     
+     */
+    public CitationType getCitation() {
+        return citation;
+    }
 
-  /**
-   * Sets the value of the citation property.
-   * 
-   * @param value
-   *          allowed object is {@link CitationType }
-   * 
-   */
-  public void setCitation(CitationType value)
-  {
-    this.citation = value;
-  }
+    /**
+     * Sets the value of the citation property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link CitationType }
+     *     
+     */
+    public void setCitation(CitationType value) {
+        this.citation = value;
+    }
 
-  /**
-   * Gets the value of the scope property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the scope property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getScope().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getScope()
-  {
-    if (scope == null)
-    {
-      scope = new ArrayList<String>();
+    /**
+     * Gets the value of the scope property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the scope property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getScope().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getScope() {
+        if (scope == null) {
+            scope = new ArrayList<String>();
+        }
+        return this.scope;
     }
-    return this.scope;
-  }
 
-  /**
-   * Gets the value of the source property.
-   * 
-   * @return possible object is {@link SourceDataType }
-   * 
-   */
-  public SourceDataType getSource()
-  {
-    return source;
-  }
+    /**
+     * Gets the value of the source property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link SourceDataType }
+     *     
+     */
+    public SourceDataType getSource() {
+        return source;
+    }
 
-  /**
-   * Sets the value of the source property.
-   * 
-   * @param value
-   *          allowed object is {@link SourceDataType }
-   * 
-   */
-  public void setSource(SourceDataType value)
-  {
-    this.source = value;
-  }
+    /**
+     * Sets the value of the source property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link SourceDataType }
+     *     
+     */
+    public void setSource(SourceDataType value) {
+        this.source = value;
+    }
 
-  /**
-   * Gets the value of the evidence property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the evidence property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEvidence().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Integer }
-   * 
-   * 
-   */
-  public List<Integer> getEvidence()
-  {
-    if (evidence == null)
-    {
-      evidence = new ArrayList<Integer>();
+    /**
+     * Gets the value of the evidence property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the evidence property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEvidence().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Integer }
+     * 
+     * 
+     */
+    public List<Integer> getEvidence() {
+        if (evidence == null) {
+            evidence = new ArrayList<Integer>();
+        }
+        return this.evidence;
     }
-    return this.evidence;
-  }
 
-  /**
-   * Gets the value of the key property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getKey()
-  {
-    return key;
-  }
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getKey() {
+        return key;
+    }
 
-  /**
-   * Sets the value of the key property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setKey(String value)
-  {
-    this.key = value;
-  }
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setKey(String value) {
+        this.key = value;
+    }
 
 }
index 78ddd89..cddff7f 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -15,13 +16,11 @@ import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 import javax.xml.datatype.XMLGregorianCalendar;
 
+
 /**
- * <p>
- * Java class for sequenceType complex type.
+ * <p>Java class for sequenceType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="sequenceType">
@@ -49,202 +48,195 @@ import javax.xml.datatype.XMLGregorianCalendar;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "sequenceType", propOrder = { "value" })
-public class SequenceType
-{
-
-  @XmlValue
-  protected String value;
-
-  @XmlAttribute(name = "length", required = true)
-  protected int length;
-
-  @XmlAttribute(name = "mass", required = true)
-  protected int mass;
-
-  @XmlAttribute(name = "checksum", required = true)
-  protected String checksum;
-
-  @XmlAttribute(name = "modified", required = true)
-  @XmlSchemaType(name = "date")
-  protected XMLGregorianCalendar modified;
-
-  @XmlAttribute(name = "version", required = true)
-  protected int version;
-
-  @XmlAttribute(name = "precursor")
-  protected Boolean precursor;
-
-  @XmlAttribute(name = "fragment")
-  protected String fragment;
-
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
-
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
-
-  /**
-   * Gets the value of the length property.
-   * 
-   */
-  public int getLength()
-  {
-    return length;
-  }
-
-  /**
-   * Sets the value of the length property.
-   * 
-   */
-  public void setLength(int value)
-  {
-    this.length = value;
-  }
-
-  /**
-   * Gets the value of the mass property.
-   * 
-   */
-  public int getMass()
-  {
-    return mass;
-  }
-
-  /**
-   * Sets the value of the mass property.
-   * 
-   */
-  public void setMass(int value)
-  {
-    this.mass = value;
-  }
-
-  /**
-   * Gets the value of the checksum property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getChecksum()
-  {
-    return checksum;
-  }
-
-  /**
-   * Sets the value of the checksum property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setChecksum(String value)
-  {
-    this.checksum = value;
-  }
-
-  /**
-   * Gets the value of the modified property.
-   * 
-   * @return possible object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public XMLGregorianCalendar getModified()
-  {
-    return modified;
-  }
-
-  /**
-   * Sets the value of the modified property.
-   * 
-   * @param value
-   *          allowed object is {@link XMLGregorianCalendar }
-   * 
-   */
-  public void setModified(XMLGregorianCalendar value)
-  {
-    this.modified = value;
-  }
-
-  /**
-   * Gets the value of the version property.
-   * 
-   */
-  public int getVersion()
-  {
-    return version;
-  }
-
-  /**
-   * Sets the value of the version property.
-   * 
-   */
-  public void setVersion(int value)
-  {
-    this.version = value;
-  }
-
-  /**
-   * Gets the value of the precursor property.
-   * 
-   * @return possible object is {@link Boolean }
-   * 
-   */
-  public Boolean isPrecursor()
-  {
-    return precursor;
-  }
-
-  /**
-   * Sets the value of the precursor property.
-   * 
-   * @param value
-   *          allowed object is {@link Boolean }
-   * 
-   */
-  public void setPrecursor(Boolean value)
-  {
-    this.precursor = value;
-  }
-
-  /**
-   * Gets the value of the fragment property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getFragment()
-  {
-    return fragment;
-  }
-
-  /**
-   * Sets the value of the fragment property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setFragment(String value)
-  {
-    this.fragment = value;
-  }
+@XmlType(name = "sequenceType", propOrder = {
+    "value"
+})
+public class SequenceType {
+
+    @XmlValue
+    protected String value;
+    @XmlAttribute(name = "length", required = true)
+    protected int length;
+    @XmlAttribute(name = "mass", required = true)
+    protected int mass;
+    @XmlAttribute(name = "checksum", required = true)
+    protected String checksum;
+    @XmlAttribute(name = "modified", required = true)
+    @XmlSchemaType(name = "date")
+    protected XMLGregorianCalendar modified;
+    @XmlAttribute(name = "version", required = true)
+    protected int version;
+    @XmlAttribute(name = "precursor")
+    protected Boolean precursor;
+    @XmlAttribute(name = "fragment")
+    protected String fragment;
+
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the length property.
+     * 
+     */
+    public int getLength() {
+        return length;
+    }
+
+    /**
+     * Sets the value of the length property.
+     * 
+     */
+    public void setLength(int value) {
+        this.length = value;
+    }
+
+    /**
+     * Gets the value of the mass property.
+     * 
+     */
+    public int getMass() {
+        return mass;
+    }
+
+    /**
+     * Sets the value of the mass property.
+     * 
+     */
+    public void setMass(int value) {
+        this.mass = value;
+    }
+
+    /**
+     * Gets the value of the checksum property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getChecksum() {
+        return checksum;
+    }
+
+    /**
+     * Sets the value of the checksum property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setChecksum(String value) {
+        this.checksum = value;
+    }
+
+    /**
+     * Gets the value of the modified property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public XMLGregorianCalendar getModified() {
+        return modified;
+    }
+
+    /**
+     * Sets the value of the modified property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link XMLGregorianCalendar }
+     *     
+     */
+    public void setModified(XMLGregorianCalendar value) {
+        this.modified = value;
+    }
+
+    /**
+     * Gets the value of the version property.
+     * 
+     */
+    public int getVersion() {
+        return version;
+    }
+
+    /**
+     * Sets the value of the version property.
+     * 
+     */
+    public void setVersion(int value) {
+        this.version = value;
+    }
+
+    /**
+     * Gets the value of the precursor property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Boolean }
+     *     
+     */
+    public Boolean isPrecursor() {
+        return precursor;
+    }
+
+    /**
+     * Sets the value of the precursor property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Boolean }
+     *     
+     */
+    public void setPrecursor(Boolean value) {
+        this.precursor = value;
+    }
+
+    /**
+     * Gets the value of the fragment property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getFragment() {
+        return fragment;
+    }
+
+    /**
+     * Sets the value of the fragment property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setFragment(String value) {
+        this.fragment = value;
+    }
 
 }
index 3b71bae..f66020c 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -17,16 +18,14 @@ import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
- * Describes the source of the sequence according to the citation. Equivalent to
- * the flat file RC-line.
+ * Describes the source of the sequence according to the citation.
+ *             Equivalent to the flat file RC-line.
  * 
- * <p>
- * Java class for sourceDataType complex type.
+ * <p>Java class for sourceDataType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="sourceDataType">
@@ -78,401 +77,385 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "sourceDataType",
-  propOrder =
-  { "strainOrPlasmidOrTransposon" })
-public class SourceDataType
-{
-
-  @XmlElements({
-      @XmlElement(name = "strain", type = SourceDataType.Strain.class),
-      @XmlElement(name = "plasmid", type = SourceDataType.Plasmid.class),
-      @XmlElement(
-        name = "transposon",
-        type = SourceDataType.Transposon.class),
-      @XmlElement(name = "tissue", type = SourceDataType.Tissue.class) })
-  protected List<Object> strainOrPlasmidOrTransposon;
-
-  /**
-   * Gets the value of the strainOrPlasmidOrTransposon property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the strainOrPlasmidOrTransposon property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getStrainOrPlasmidOrTransposon().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link SourceDataType.Strain } {@link SourceDataType.Plasmid }
-   * {@link SourceDataType.Transposon } {@link SourceDataType.Tissue }
-   * 
-   * 
-   */
-  public List<Object> getStrainOrPlasmidOrTransposon()
-  {
-    if (strainOrPlasmidOrTransposon == null)
-    {
-      strainOrPlasmidOrTransposon = new ArrayList<Object>();
-    }
-    return this.strainOrPlasmidOrTransposon;
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;simpleContent>
-   *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-   *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
-   *     &lt;/extension>
-   *   &lt;/simpleContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "value" })
-  public static class Plasmid
-  {
-
-    @XmlValue
-    protected String value;
-
-    @XmlAttribute(name = "evidence")
-    protected List<Integer> evidence;
-
-    /**
-     * Gets the value of the value property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getValue()
-    {
-      return value;
-    }
+@XmlType(name = "sourceDataType", propOrder = {
+    "strainOrPlasmidOrTransposon"
+})
+public class SourceDataType {
+
+    @XmlElements({
+        @XmlElement(name = "strain", type = SourceDataType.Strain.class),
+        @XmlElement(name = "plasmid", type = SourceDataType.Plasmid.class),
+        @XmlElement(name = "transposon", type = SourceDataType.Transposon.class),
+        @XmlElement(name = "tissue", type = SourceDataType.Tissue.class)
+    })
+    protected List<Object> strainOrPlasmidOrTransposon;
 
     /**
-     * Sets the value of the value property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setValue(String value)
-    {
-      this.value = value;
-    }
-
-    /**
-     * Gets the value of the evidence property.
+     * Gets the value of the strainOrPlasmidOrTransposon property.
      * 
      * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the evidence property.
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the strainOrPlasmidOrTransposon property.
      * 
      * <p>
      * For example, to add a new item, do as follows:
-     * 
      * <pre>
-     * getEvidence().add(newItem);
+     *    getStrainOrPlasmidOrTransposon().add(newItem);
      * </pre>
      * 
      * 
      * <p>
-     * Objects of the following type(s) are allowed in the list {@link Integer }
+     * Objects of the following type(s) are allowed in the list
+     * {@link SourceDataType.Strain }
+     * {@link SourceDataType.Plasmid }
+     * {@link SourceDataType.Transposon }
+     * {@link SourceDataType.Tissue }
      * 
      * 
      */
-    public List<Integer> getEvidence()
-    {
-      if (evidence == null)
-      {
-        evidence = new ArrayList<Integer>();
-      }
-      return this.evidence;
+    public List<Object> getStrainOrPlasmidOrTransposon() {
+        if (strainOrPlasmidOrTransposon == null) {
+            strainOrPlasmidOrTransposon = new ArrayList<Object>();
+        }
+        return this.strainOrPlasmidOrTransposon;
     }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;simpleContent>
-   *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-   *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
-   *     &lt;/extension>
-   *   &lt;/simpleContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "value" })
-  public static class Strain
-  {
-
-    @XmlValue
-    protected String value;
-
-    @XmlAttribute(name = "evidence")
-    protected List<Integer> evidence;
 
     /**
-     * Gets the value of the value property.
+     * <p>Java class for anonymous complex type.
      * 
-     * @return possible object is {@link String }
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public String getValue()
-    {
-      return value;
-    }
-
-    /**
-     * Sets the value of the value property.
+     * <pre>
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
+     * </pre>
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setValue(String value)
-    {
-      this.value = value;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Plasmid {
+
+        @XmlValue
+        protected String value;
+        @XmlAttribute(name = "evidence")
+        protected List<Integer> evidence;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the evidence property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the evidence property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEvidence().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Integer }
+         * 
+         * 
+         */
+        public List<Integer> getEvidence() {
+            if (evidence == null) {
+                evidence = new ArrayList<Integer>();
+            }
+            return this.evidence;
+        }
+
     }
 
+
     /**
-     * Gets the value of the evidence property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the evidence property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getEvidence().add(newItem);
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link Integer }
-     * 
-     * 
      */
-    public List<Integer> getEvidence()
-    {
-      if (evidence == null)
-      {
-        evidence = new ArrayList<Integer>();
-      }
-      return this.evidence;
-    }
-
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;simpleContent>
-   *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-   *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
-   *     &lt;/extension>
-   *   &lt;/simpleContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "value" })
-  public static class Tissue
-  {
-
-    @XmlValue
-    protected String value;
-
-    @XmlAttribute(name = "evidence")
-    protected List<Integer> evidence;
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Strain {
+
+        @XmlValue
+        protected String value;
+        @XmlAttribute(name = "evidence")
+        protected List<Integer> evidence;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the evidence property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the evidence property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEvidence().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Integer }
+         * 
+         * 
+         */
+        public List<Integer> getEvidence() {
+            if (evidence == null) {
+                evidence = new ArrayList<Integer>();
+            }
+            return this.evidence;
+        }
 
-    /**
-     * Gets the value of the value property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getValue()
-    {
-      return value;
     }
 
-    /**
-     * Sets the value of the value property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setValue(String value)
-    {
-      this.value = value;
-    }
 
     /**
-     * Gets the value of the evidence property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the evidence property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getEvidence().add(newItem);
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link Integer }
-     * 
-     * 
      */
-    public List<Integer> getEvidence()
-    {
-      if (evidence == null)
-      {
-        evidence = new ArrayList<Integer>();
-      }
-      return this.evidence;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Tissue {
+
+        @XmlValue
+        protected String value;
+        @XmlAttribute(name = "evidence")
+        protected List<Integer> evidence;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the evidence property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the evidence property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEvidence().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Integer }
+         * 
+         * 
+         */
+        public List<Integer> getEvidence() {
+            if (evidence == null) {
+                evidence = new ArrayList<Integer>();
+            }
+            return this.evidence;
+        }
 
-  }
-
-  /**
-   * <p>
-   * Java class for anonymous complex type.
-   * 
-   * <p>
-   * The following schema fragment specifies the expected content contained
-   * within this class.
-   * 
-   * <pre>
-   * &lt;complexType>
-   *   &lt;simpleContent>
-   *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
-   *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
-   *     &lt;/extension>
-   *   &lt;/simpleContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @XmlAccessorType(XmlAccessType.FIELD)
-  @XmlType(name = "", propOrder = { "value" })
-  public static class Transposon
-  {
-
-    @XmlValue
-    protected String value;
-
-    @XmlAttribute(name = "evidence")
-    protected List<Integer> evidence;
-
-    /**
-     * Gets the value of the value property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getValue()
-    {
-      return value;
     }
 
-    /**
-     * Sets the value of the value property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setValue(String value)
-    {
-      this.value = value;
-    }
 
     /**
-     * Gets the value of the evidence property.
+     * <p>Java class for anonymous complex type.
      * 
-     * <p>
-     * This accessor method returns a reference to the live list, not a
-     * snapshot. Therefore any modification you make to the returned list will
-     * be present inside the JAXB object. This is why there is not a
-     * <CODE>set</CODE> method for the evidence property.
-     * 
-     * <p>
-     * For example, to add a new item, do as follows:
+     * <p>The following schema fragment specifies the expected content contained within this class.
      * 
      * <pre>
-     * getEvidence().add(newItem);
+     * &lt;complexType>
+     *   &lt;simpleContent>
+     *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+     *       &lt;attribute name="evidence" type="{http://uniprot.org/uniprot}intListType" />
+     *     &lt;/extension>
+     *   &lt;/simpleContent>
+     * &lt;/complexType>
      * </pre>
      * 
      * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list {@link Integer }
-     * 
-     * 
      */
-    public List<Integer> getEvidence()
-    {
-      if (evidence == null)
-      {
-        evidence = new ArrayList<Integer>();
-      }
-      return this.evidence;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "value"
+    })
+    public static class Transposon {
+
+        @XmlValue
+        protected String value;
+        @XmlAttribute(name = "evidence")
+        protected List<Integer> evidence;
+
+        /**
+         * Gets the value of the value property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * Sets the value of the value property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        /**
+         * Gets the value of the evidence property.
+         * 
+         * <p>
+         * This accessor method returns a reference to the live list,
+         * not a snapshot. Therefore any modification you make to the
+         * returned list will be present inside the JAXB object.
+         * This is why there is not a <CODE>set</CODE> method for the evidence property.
+         * 
+         * <p>
+         * For example, to add a new item, do as follows:
+         * <pre>
+         *    getEvidence().add(newItem);
+         * </pre>
+         * 
+         * 
+         * <p>
+         * Objects of the following type(s) are allowed in the list
+         * {@link Integer }
+         * 
+         * 
+         */
+        public List<Integer> getEvidence() {
+            if (evidence == null) {
+                evidence = new ArrayList<Integer>();
+            }
+            return this.evidence;
+        }
 
-  }
+    }
 
 }
index 5d71178..012d588 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.math.BigInteger;
@@ -13,17 +14,13 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes the source of the data using a database cross-reference (or a 'ref'
- * attribute when the source cannot be found in a public data source, such as
- * PubMed, and is cited only within the UniProtKB entry).
+ * Describes the source of the data using a database cross-reference (or a 'ref' attribute when the source cannot be found in a public data source, such as PubMed, and is cited only within the UniProtKB entry).
  * 
- * <p>
- * Java class for sourceType complex type.
+ * <p>Java class for sourceType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="sourceType">
@@ -41,59 +38,61 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "sourceType", propOrder = { "dbReference" })
-public class SourceType
-{
-
-  protected DbReferenceType dbReference;
+@XmlType(name = "sourceType", propOrder = {
+    "dbReference"
+})
+public class SourceType {
 
-  @XmlAttribute(name = "ref")
-  protected BigInteger ref;
+    protected DbReferenceType dbReference;
+    @XmlAttribute(name = "ref")
+    protected BigInteger ref;
 
-  /**
-   * Gets the value of the dbReference property.
-   * 
-   * @return possible object is {@link DbReferenceType }
-   * 
-   */
-  public DbReferenceType getDbReference()
-  {
-    return dbReference;
-  }
+    /**
+     * Gets the value of the dbReference property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public DbReferenceType getDbReference() {
+        return dbReference;
+    }
 
-  /**
-   * Sets the value of the dbReference property.
-   * 
-   * @param value
-   *          allowed object is {@link DbReferenceType }
-   * 
-   */
-  public void setDbReference(DbReferenceType value)
-  {
-    this.dbReference = value;
-  }
+    /**
+     * Sets the value of the dbReference property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link DbReferenceType }
+     *     
+     */
+    public void setDbReference(DbReferenceType value) {
+        this.dbReference = value;
+    }
 
-  /**
-   * Gets the value of the ref property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getRef()
-  {
-    return ref;
-  }
+    /**
+     * Gets the value of the ref property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getRef() {
+        return ref;
+    }
 
-  /**
-   * Sets the value of the ref property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setRef(BigInteger value)
-  {
-    this.ref = value;
-  }
+    /**
+     * Sets the value of the ref property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setRef(BigInteger value) {
+        this.ref = value;
+    }
 
 }
index 5f22a99..8411265 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -13,15 +14,13 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
 
+
 /**
  * Indicates whether the name of a plasmid is known or unknown.
  * 
- * <p>
- * Java class for statusType complex type.
+ * <p>Java class for statusType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="statusType">
@@ -43,67 +42,66 @@ import javax.xml.bind.annotation.XmlValue;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "statusType", propOrder = { "value" })
-public class StatusType
-{
-
-  @XmlValue
-  protected String value;
-
-  @XmlAttribute(name = "status")
-  protected String status;
+@XmlType(name = "statusType", propOrder = {
+    "value"
+})
+public class StatusType {
 
-  /**
-   * Gets the value of the value property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getValue()
-  {
-    return value;
-  }
+    @XmlValue
+    protected String value;
+    @XmlAttribute(name = "status")
+    protected String status;
 
-  /**
-   * Sets the value of the value property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setValue(String value)
-  {
-    this.value = value;
-  }
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getValue() {
+        return value;
+    }
 
-  /**
-   * Gets the value of the status property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getStatus()
-  {
-    if (status == null)
-    {
-      return "known";
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setValue(String value) {
+        this.value = value;
     }
-    else
-    {
-      return status;
+
+    /**
+     * Gets the value of the status property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getStatus() {
+        if (status == null) {
+            return "known";
+        } else {
+            return status;
+        }
     }
-  }
 
-  /**
-   * Sets the value of the status property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setStatus(String value)
-  {
-    this.status = value;
-  }
+    /**
+     * Sets the value of the status property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setStatus(String value) {
+        this.status = value;
+    }
 
 }
index f1a06ef..77765a7 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -14,16 +15,13 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * Describes the subcellular location and optionally the topology and
- * orientation of a molecule.
+ * Describes the subcellular location and optionally the topology and orientation of a molecule.
  * 
- * <p>
- * Java class for subcellularLocationType complex type.
+ * <p>Java class for subcellularLocationType complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType name="subcellularLocationType">
@@ -42,114 +40,103 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "subcellularLocationType",
-  propOrder =
-  { "location", "topology", "orientation" })
-public class SubcellularLocationType
-{
-
-  @XmlElement(required = true)
-  protected List<EvidencedStringType> location;
-
-  protected List<EvidencedStringType> topology;
+@XmlType(name = "subcellularLocationType", propOrder = {
+    "location",
+    "topology",
+    "orientation"
+})
+public class SubcellularLocationType {
 
-  protected List<EvidencedStringType> orientation;
+    @XmlElement(required = true)
+    protected List<EvidencedStringType> location;
+    protected List<EvidencedStringType> topology;
+    protected List<EvidencedStringType> orientation;
 
-  /**
-   * Gets the value of the location property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the location property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getLocation().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidencedStringType }
-   * 
-   * 
-   */
-  public List<EvidencedStringType> getLocation()
-  {
-    if (location == null)
-    {
-      location = new ArrayList<EvidencedStringType>();
+    /**
+     * Gets the value of the location property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the location property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getLocation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EvidencedStringType }
+     * 
+     * 
+     */
+    public List<EvidencedStringType> getLocation() {
+        if (location == null) {
+            location = new ArrayList<EvidencedStringType>();
+        }
+        return this.location;
     }
-    return this.location;
-  }
 
-  /**
-   * Gets the value of the topology property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the topology property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getTopology().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidencedStringType }
-   * 
-   * 
-   */
-  public List<EvidencedStringType> getTopology()
-  {
-    if (topology == null)
-    {
-      topology = new ArrayList<EvidencedStringType>();
+    /**
+     * Gets the value of the topology property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the topology property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getTopology().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EvidencedStringType }
+     * 
+     * 
+     */
+    public List<EvidencedStringType> getTopology() {
+        if (topology == null) {
+            topology = new ArrayList<EvidencedStringType>();
+        }
+        return this.topology;
     }
-    return this.topology;
-  }
 
-  /**
-   * Gets the value of the orientation property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the orientation property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getOrientation().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list
-   * {@link EvidencedStringType }
-   * 
-   * 
-   */
-  public List<EvidencedStringType> getOrientation()
-  {
-    if (orientation == null)
-    {
-      orientation = new ArrayList<EvidencedStringType>();
+    /**
+     * Gets the value of the orientation property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the orientation property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getOrientation().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link EvidencedStringType }
+     * 
+     * 
+     */
+    public List<EvidencedStringType> getOrientation() {
+        if (orientation == null) {
+            orientation = new ArrayList<EvidencedStringType>();
+        }
+        return this.orientation;
     }
-    return this.orientation;
-  }
 
 }
index 3383e5d..a18d58b 100644 (file)
@@ -2,9 +2,10 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
+
 package jalview.xml.binding.uniprot;
 
 import java.util.ArrayList;
@@ -15,13 +16,11 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for anonymous complex type.
+ * <p>Java class for anonymous complex type.
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * <p>The following schema fragment specifies the expected content contained within this class.
  * 
  * <pre>
  * &lt;complexType>
@@ -39,68 +38,68 @@ import javax.xml.bind.annotation.XmlType;
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "", propOrder = { "entry", "copyright" })
+@XmlType(name = "", propOrder = {
+    "entry",
+    "copyright"
+})
 @XmlRootElement(name = "uniprot")
-public class Uniprot
-{
-
-  @XmlElement(required = true)
-  protected List<Entry> entry;
+public class Uniprot {
 
-  protected String copyright;
+    @XmlElement(required = true)
+    protected List<Entry> entry;
+    protected String copyright;
 
-  /**
-   * Gets the value of the entry property.
-   * 
-   * <p>
-   * This accessor method returns a reference to the live list, not a snapshot.
-   * Therefore any modification you make to the returned list will be present
-   * inside the JAXB object. This is why there is not a <CODE>set</CODE> method
-   * for the entry property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getEntry().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link Entry }
-   * 
-   * 
-   */
-  public List<Entry> getEntry()
-  {
-    if (entry == null)
-    {
-      entry = new ArrayList<Entry>();
+    /**
+     * Gets the value of the entry property.
+     * 
+     * <p>
+     * This accessor method returns a reference to the live list,
+     * not a snapshot. Therefore any modification you make to the
+     * returned list will be present inside the JAXB object.
+     * This is why there is not a <CODE>set</CODE> method for the entry property.
+     * 
+     * <p>
+     * For example, to add a new item, do as follows:
+     * <pre>
+     *    getEntry().add(newItem);
+     * </pre>
+     * 
+     * 
+     * <p>
+     * Objects of the following type(s) are allowed in the list
+     * {@link Entry }
+     * 
+     * 
+     */
+    public List<Entry> getEntry() {
+        if (entry == null) {
+            entry = new ArrayList<Entry>();
+        }
+        return this.entry;
     }
-    return this.entry;
-  }
 
-  /**
-   * Gets the value of the copyright property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getCopyright()
-  {
-    return copyright;
-  }
+    /**
+     * Gets the value of the copyright property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getCopyright() {
+        return copyright;
+    }
 
-  /**
-   * Sets the value of the copyright property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setCopyright(String value)
-  {
-    this.copyright = value;
-  }
+    /**
+     * Sets the value of the copyright property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setCopyright(String value) {
+        this.copyright = value;
+    }
 
 }
index 8a7c699..b8a8636 100644 (file)
@@ -2,10 +2,8 @@
 // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2019.04.05 at 08:01:44 AM BST 
+// Generated on: 2023.01.31 at 04:07:10 PM GMT 
 //
 
-@javax.xml.bind.annotation.XmlSchema(
-  namespace = "http://uniprot.org/uniprot",
-  elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://uniprot.org/uniprot", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
 package jalview.xml.binding.uniprot;
index 2970e3d..e693a7c 100644 (file)
@@ -28,6 +28,16 @@ import static org.testng.AssertJUnit.assertNull;
 import static org.testng.AssertJUnit.assertSame;
 import static org.testng.AssertJUnit.assertTrue;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import jalview.bin.Cache;
 import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.AlignedCodonFrame.SequenceToSequenceMapping;
 import jalview.datamodel.Alignment;
@@ -42,15 +52,6 @@ import jalview.util.DBRefUtils;
 import jalview.util.MapList;
 import jalview.ws.SequenceFetcher;
 import jalview.ws.SequenceFetcherFactory;
-import jalview.ws.params.InvalidArgumentException;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
 
 public class CrossRefTest
 {
@@ -62,6 +63,12 @@ public class CrossRefTest
     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
   }
 
+  @BeforeMethod(alwaysRun = true)
+  public void loadProperties()
+  {
+    Cache.loadProperties("test/jalview/util/comparisonTestProps.jvprops");
+  }
+
   @Test(groups = { "Functional" })
   public void testFindXDbRefs()
   {
@@ -187,6 +194,7 @@ public class CrossRefTest
     AlignmentI al = new Alignment(new SequenceI[] { emblSeq, uniprotSeq });
     Alignment xrefs = new CrossRef(new SequenceI[] { emblSeq }, al)
             .findXrefSequences("UNIPROT", true);
+    System.err.println("xrefs=" + xrefs);
     assertEquals(1, xrefs.getHeight());
     assertSame(uniprotSeq, xrefs.getSequenceAt(0));
   }
index 6e18324..0151a12 100644 (file)
@@ -20,8 +20,6 @@
  */
 package jalview.datamodel;
 
-import java.util.Locale;
-
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertFalse;
 import static org.testng.AssertJUnit.assertNotNull;
@@ -30,20 +28,13 @@ import static org.testng.AssertJUnit.assertNull;
 import static org.testng.AssertJUnit.assertSame;
 import static org.testng.AssertJUnit.assertTrue;
 
-import jalview.analysis.AlignmentGenerator;
-import jalview.commands.EditCommand;
-import jalview.commands.EditCommand.Action;
-import jalview.datamodel.PDBEntry.Type;
-import jalview.gui.JvOptionPane;
-import jalview.util.MapList;
-import jalview.ws.params.InvalidArgumentException;
-
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.BitSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Vector;
 
 import org.testng.Assert;
@@ -51,6 +42,13 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import jalview.analysis.AlignmentGenerator;
+import jalview.bin.Cache;
+import jalview.commands.EditCommand;
+import jalview.commands.EditCommand.Action;
+import jalview.datamodel.PDBEntry.Type;
+import jalview.gui.JvOptionPane;
+import jalview.util.MapList;
 import junit.extensions.PA;
 
 public class SequenceTest
@@ -62,6 +60,12 @@ public class SequenceTest
     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
   }
 
+  @BeforeMethod(alwaysRun = true)
+  public void loadProperties()
+  {
+    Cache.loadProperties("test/jalview/util/comparisonTestProps.jvprops");
+  }
+
   Sequence seq;
 
   @BeforeMethod(alwaysRun = true)
@@ -123,9 +127,13 @@ public class SequenceTest
     assertTrue(new Sequence("prot", "ASDFASDFASDFXXXXXXXXX").isProtein());
     // test DNA with X
     assertFalse(new Sequence("prot", "ACGTACGTACGTXXXXXXXX").isProtein());
+    // short sequence is nucleotide only if 50% is nucleotide and remaining N/X
+    // is either N or X only
+    assertTrue(new Sequence("prot", "ACGTACGTACGTXN").isProtein());
     // test DNA with N
     assertFalse(new Sequence("prot", "ACGTACGTACGTNNNNNNNN").isProtein());
     // test RNA with X
+    assertFalse(new Sequence("prot", "ACGUACGUACGUACTGACAXX").isProtein());
     assertFalse(new Sequence("prot", "ACGUACGUACGUXXXXXXXXX").isProtein());
     assertFalse(new Sequence("prot", "ACGUACGUACGUNNNNNNNNN").isProtein());
   }
index a137ff6..2d7e3dc 100644 (file)
@@ -22,6 +22,7 @@ package jalview.gui;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertNotNull;
 
 import java.awt.Dimension;
 import java.awt.Font;
@@ -290,4 +291,43 @@ public class AlignmentPanelTest
     Cache.setProperty("FIGURE_AUTOIDWIDTH", Boolean.TRUE.toString());
     assertEquals(115, af.alignPanel.getVisibleIdWidth(false));
   }
-}
+  @Test(groups = "Functional")
+  public void testSetOverviewTitle()
+  {
+    OverviewPanel ov1 = this.af.openOverviewPanel(true);
+    String alignFrameTitle = af.getTitle();
+    assertEquals(ov1.getTitle(), "Overview " + alignFrameTitle);
+    
+    /*
+     * on New View, existing overview should get " Original" added to title
+     * and new view's overview should get " View 1" added
+     */
+    af.newView_actionPerformed(null);
+    assertEquals(ov1.getTitle(), "Overview " + alignFrameTitle + " Original");
+    OverviewPanel ov2 = this.af.openOverviewPanel(true);
+    assertEquals(ov2.getTitle(), "Overview " + alignFrameTitle + " View 1");
+  }
+  
+  @Test(groups = "Functional")
+  public void testSetOverviewTitle_automaticOverview()
+  {
+    Cache.setProperty("SHOW_OVERVIEW",  "true");
+    AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/uniref50.fa", DataSourceType.FILE);
+    OverviewPanel ov1 = alignFrame.alignPanel.getOverviewPanel();
+    assertNotNull(ov1);
+    String alignFrameTitle = alignFrame.getTitle();
+    assertEquals(ov1.getTitle(), "Overview " + alignFrameTitle);
+    
+    /*
+     * on New View, existing overview should get " Original" added to title
+     * and new view's automatic overview should have " View 1" added
+     */
+    alignFrame.newView_actionPerformed(null);
+    assertEquals(ov1.getTitle(), "Overview " + alignFrameTitle + " Original");
+    OverviewPanel ov2 = alignFrame.alignPanel.getOverviewPanel();
+    assertNotNull(ov2);
+    assertEquals(ov2.getTitle(), "Overview " + alignFrameTitle + " View 1");
+  }
+}
\ No newline at end of file
diff --git a/test/jalview/gui/QuitHandlerTest.java b/test/jalview/gui/QuitHandlerTest.java
new file mode 100644 (file)
index 0000000..b257088
--- /dev/null
@@ -0,0 +1,304 @@
+package jalview.gui;
+
+import static org.testng.Assert.assertNotNull;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import jalview.bin.Cache;
+import jalview.bin.Jalview;
+import jalview.gui.QuitHandler.QResponse;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileLoader;
+import jalview.project.Jalview2XML;
+
+@Test(singleThreaded = true)
+public class QuitHandlerTest
+{
+  private static String saveProjectFile = "test-output/tempSaveFile.jvp";
+
+  private static String saveFastaFile = "test-output/tempSaveFile.fa";
+
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+    Jalview2XML.setDebugDelaySave(3);
+  }
+
+  /**
+   * @throws java.lang.Exception
+   */
+  @BeforeClass(alwaysRun = true)
+  public static void setUpBeforeClass() throws Exception
+  {
+    Cache.loadProperties("test/jalview/gui/quitProps.jvprops");
+
+    /*
+     * set news feed last read to a future time to ensure no
+     * 'unread' news item is displayed
+     */
+    Date oneHourFromNow = new Date(
+            System.currentTimeMillis() + 3600 * 1000);
+    Cache.setDateProperty("JALVIEW_NEWS_RSS_LASTMODIFIED", oneHourFromNow);
+
+    Jalview.main(
+            new String[]
+            { "-nowebservicediscovery", "-nosplash", "-nonews" });
+  }
+
+  @AfterClass(alwaysRun = true)
+  public static void resetProps()
+  {
+    // reset quit response
+    QuitHandler.setResponse(QResponse.NULL);
+    // reset mock response
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+    // close desktop windows/frames
+    Desktop.instance.closeAll_actionPerformed(null);
+    // reset debug delay
+    Jalview2XML.setDebugDelaySave(20);
+  }
+
+  @BeforeMethod(alwaysRun = true)
+  public static void tearDownAfterClass() throws Exception
+  {
+    // reset quit response
+    QuitHandler.setResponse(QResponse.NULL);
+    // reset mock response
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+    // close desktop windows/frames
+    Desktop.instance.closeAll_actionPerformed(null);
+    // reset debug delay
+    Cache.setProperty("DEBUG_DELAY_SAVE", "false");
+    Jalview2XML.setDebugDelaySave(3);
+    // set the project file
+    Desktop.instance.setProjectFile(new File(saveProjectFile));
+  }
+
+  @AfterMethod(alwaysRun = true)
+  public static void cleanup()
+  {
+    // delete save files
+    List<String> files = new ArrayList<>();
+    files.add(saveProjectFile);
+    files.add(saveFastaFile);
+    for (String filename : files)
+    {
+      File file = new File(filename);
+      if (file.exists())
+      {
+        file.delete();
+      }
+    }
+  }
+
+  @Test(groups = { "Functional" }, singleThreaded = true, priority = 1)
+  public void testInstantQuit() throws Exception
+  {
+    String inFile = "examples/uniref50.fa";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+            DataSourceType.FILE);
+    assertNotNull(af, "Didn't read input file " + inFile);
+
+    long start = System.currentTimeMillis();
+
+    // if a save is attempted it will delay 3s
+    Jalview2XML.setDebugDelaySave(3);
+    Cache.setProperty("DEBUG_DELAY_SAVE", "true");
+
+    // loaded file but haven't done anything, should just quit
+    QResponse response = QuitHandler.getQuitResponse(true);
+    long end = System.currentTimeMillis();
+
+    Assert.assertEquals(response, QResponse.QUIT);
+    Assert.assertTrue(end - start < 500,
+            "Quit-with-no-save-needed took too long (" + (end - start)
+                    + "ms)");
+    Desktop.instance.closeAll_actionPerformed(null);
+  }
+
+  @Test(groups = { "Functional" }, singleThreaded = true, priority = 10)
+  public void testWaitForSaveQuit() throws Exception
+  {
+    String inFile = "examples/uniref50.fa";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+            DataSourceType.FILE);
+    assertNotNull(af, "Didn't read input file " + inFile);
+
+    long start = System.currentTimeMillis();
+
+    // start a long save (3s)
+    Jalview2XML.setDebugDelaySave(3);
+    Cache.setProperty("DEBUG_DELAY_SAVE", "true");
+    Desktop.instance.saveState_actionPerformed(false);
+
+    // give the saveState thread time to start!
+    Thread.sleep(500);
+
+    // af.saveAlignment(saveProjectFile, FileFormat.Jalview);
+    QResponse response = QuitHandler.getQuitResponse(true);
+    long end = System.currentTimeMillis();
+
+    Assert.assertEquals(response, QResponse.QUIT);
+    Assert.assertTrue(end - start > 2900,
+            "Quit-whilst-saving was too short (" + (end - start) + "ms)");
+
+    Desktop.instance.closeAll_actionPerformed(null);
+  }
+
+  @Test(groups = { "Functional" }, singleThreaded = true, priority = 9)
+  public void testSavedProjectChanges() throws Exception
+  {
+    String inFile = "examples/uniref50.fa";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+            DataSourceType.FILE);
+    assertNotNull(af, "Didn't read input file " + inFile);
+    AlignViewport viewport = af.getViewport();
+    // pretend something has happened
+    viewport.setSavedUpToDate(false);
+    Jalview2XML.setStateSavedUpToDate(false);
+
+    // don't want to hang around here
+    Cache.setProperty("DEBUG_DELAY_SAVE", "false");
+    af.saveAlignment(saveProjectFile, FileFormat.Jalview);
+
+    // this is only a two button dialog [Quit] [Cancel] so use NO_OPTION (to
+    // mean [CANCEL] -- file should already be saved so this doesn't happen and
+    // we get a QUIT response)
+    JvOptionPane.setMockResponse(JvOptionPane.NO_OPTION);
+    QResponse response = QuitHandler.getQuitResponse(true);
+
+    // if not saved this would be CANCEL_QUIT
+    Assert.assertEquals(response, QResponse.QUIT);
+    Desktop.instance.closeAll_actionPerformed(null);
+  }
+
+  @Test(groups = { "Functional" }, singleThreaded = true, priority = 9)
+  public void testSavedAlignmentChanges() throws Exception
+  {
+    String inFile = "examples/uniref50.fa";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+            DataSourceType.FILE);
+    assertNotNull(af, "Didn't read input file " + inFile);
+    AlignViewport viewport = af.getViewport();
+    // pretend something has happened
+    viewport.setSavedUpToDate(false);
+    Jalview2XML.setStateSavedUpToDate(false);
+
+    // no hanging around needed here
+    Cache.setProperty("DEBUG_DELAY_SAVE", "false");
+    af.saveAlignment(saveFastaFile, FileFormat.Fasta);
+
+    // this is only a two button dialog [Quit] [Cancel] so use NO_OPTION
+    JvOptionPane.setMockResponse(JvOptionPane.NO_OPTION);
+    QResponse response = QuitHandler.getQuitResponse(true);
+
+    // if not saved this would be CANCEL_QUIT
+    Assert.assertEquals(response, QResponse.QUIT);
+    Desktop.instance.closeAll_actionPerformed(null);
+  }
+
+  @Test(groups = { "Functional" }, singleThreaded = true, priority = 1)
+  public void testUnsavedChanges() throws Exception
+  {
+    String inFile = "examples/uniref50.fa";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+            DataSourceType.FILE);
+    assertNotNull(af, "Didn't read input file " + inFile);
+    AlignViewport viewport = af.getViewport();
+    // pretend something has happened
+    viewport.setSavedUpToDate(false);
+    Jalview2XML.setStateSavedUpToDate(false);
+
+    // this is only a two button dialog [Quit] [Cancel] so use NO_OPTION
+    JvOptionPane.setMockResponse(JvOptionPane.NO_OPTION);
+    QResponse response = QuitHandler.getQuitResponse(true);
+
+    Assert.assertEquals(response, QResponse.CANCEL_QUIT);
+    Desktop.instance.closeAll_actionPerformed(null);
+  }
+
+  @Test(groups = { "Functional" }, singleThreaded = true, priority = 1)
+  public void testNoGUIUnsavedChanges() throws Exception
+  {
+    String inFile = "examples/uniref50.fa";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+            DataSourceType.FILE);
+    assertNotNull(af, "Didn't read input file " + inFile);
+    AlignViewport viewport = af.getViewport();
+    // pretend something has happened
+    viewport.setSavedUpToDate(false);
+    Jalview2XML.setStateSavedUpToDate(false);
+
+    // this is only a two button dialog [Quit] [Cancel] so use NO_OPTION
+    JvOptionPane.setMockResponse(JvOptionPane.NO_OPTION);
+    /*
+    QResponse response = QuitHandler.getQuitResponse(false,
+            QuitHandler.defaultOkQuit, () -> {
+              // set FORCE_QUIT without the force quit
+              QuitHandler.setResponse(QResponse.FORCE_QUIT);
+              return null;
+            }, QuitHandler.defaultCancelQuit);
+            */
+    QResponse response = QuitHandler.getQuitResponse(false);
+
+    Assert.assertEquals(response, QResponse.QUIT);
+    Desktop.instance.closeAll_actionPerformed(null);
+  }
+
+  @Test(groups = { "Functional" }, singleThreaded = true, priority = 11)
+  public void testForceQuit() throws Exception
+  {
+    String inFile = "examples/uniref50.fa";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(inFile,
+            DataSourceType.FILE);
+    assertNotNull(af, "Didn't read input file " + inFile);
+
+    long start = System.currentTimeMillis();
+
+    // start a long save (10s)
+    Jalview2XML.setDebugDelaySave(10);
+    Cache.setProperty("DEBUG_DELAY_SAVE", "true");
+    Desktop.instance.saveState_actionPerformed(false);
+
+    // give the saveState thread time to start!
+    Thread.sleep(100);
+
+    // this will select "Force Quit"
+    JvOptionPane.setMockResponse(JvOptionPane.YES_OPTION);
+    QResponse response = QuitHandler.getQuitResponse(true,
+            QuitHandler.defaultOkQuit, () -> {
+              // set FORCE_QUIT without the force quit
+              jalview.bin.Console.debug(
+                      "Setting FORCE_QUIT without actually quitting");
+              QuitHandler.setResponse(QResponse.FORCE_QUIT);
+              return null;
+            }, QuitHandler.defaultCancelQuit);
+    long end = System.currentTimeMillis();
+
+    Assert.assertEquals(response, QResponse.FORCE_QUIT);
+    // if the wait (min wait is 1s) wasn't long enough...
+    Assert.assertTrue(end - start > 1000,
+            "Force-Quit-whilst-saving was too short (" + (end - start)
+                    + "ms)");
+    // if the wait was too long (probably waited for file to save)
+    Assert.assertTrue(end - start < 9090,
+            "Force-Quit-whilst-saving was too long (" + (end - start)
+                    + "ms)");
+
+    Desktop.instance.closeAll_actionPerformed(null);
+  }
+
+}
diff --git a/test/jalview/gui/quitProps.jvprops b/test/jalview/gui/quitProps.jvprops
new file mode 100644 (file)
index 0000000..be2b1cb
--- /dev/null
@@ -0,0 +1,7 @@
+DEBUG_DELAY_SAVE=true
+BACKUPFILES_ENABLED=true
+BACKUPFILES_FC_INCLUDE=false
+BACKUPFILES_PRESET=1
+CONFIRM_OVERWRITE_FILE=true
+SHOW_STARTUP_FILE=false
+logs.Jalview.level=DEBUG
index 79d622c..c070edb 100644 (file)
@@ -23,11 +23,13 @@ package jalview.project;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNotSame;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertSame;
 import static org.testng.Assert.assertTrue;
 
 import java.awt.Color;
+import java.awt.Rectangle;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -48,8 +50,10 @@ import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.api.FeatureColourI;
 import jalview.api.ViewStyleI;
+import jalview.bin.Cache;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.GeneLocus;
 import jalview.datamodel.HiddenSequences;
@@ -69,8 +73,10 @@ import jalview.gui.AlignViewport;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.Desktop;
 import jalview.gui.JvOptionPane;
+import jalview.gui.OverviewPanel;
 import jalview.gui.PCAPanel;
 import jalview.gui.PopupMenu;
+import jalview.gui.Preferences;
 import jalview.gui.SliderPanel;
 import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
@@ -233,8 +239,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
 
     boolean diffseqcols = false, diffgseqcols = false;
     SequenceI[] sqs = af.getViewport().getAlignment().getSequencesArray();
-    for (int p = 0, pSize = af.getViewport().getAlignment()
-            .getWidth(); p < pSize && (!diffseqcols || !diffgseqcols); p++)
+    for (int p = 0,
+            pSize = af.getViewport().getAlignment().getWidth(); p < pSize
+                    && (!diffseqcols || !diffgseqcols); p++)
     {
       if (_rcs.findColour(sqs[0].getCharAt(p), p, sqs[0], null, 0f) != _rcs
               .findColour(sqs[5].getCharAt(p), p, sqs[5], null, 0f))
@@ -253,8 +260,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     assertTrue(__rcs.isSeqAssociated(),
             "Group Annotation colourscheme wasn't sequence associated");
 
-    for (int p = 0, pSize = af.getViewport().getAlignment()
-            .getWidth(); p < pSize && (!diffseqcols || !diffgseqcols); p++)
+    for (int p = 0,
+            pSize = af.getViewport().getAlignment().getWidth(); p < pSize
+                    && (!diffseqcols || !diffgseqcols); p++)
     {
       if (_rgcs.findColour(sqs[1].getCharAt(p), p, sqs[1], null,
               0f) != _rgcs.findColour(sqs[2].getCharAt(p), p, sqs[2], null,
@@ -585,6 +593,14 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3b1", "2.8.3"));
     assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.3", "2.8.2b1"));
     assertFalse(Jalview2XML.isVersionStringLaterThan("2.8.0b2", "2.8.0b1"));
+    /*
+     * test for patch release versions
+     */
+    assertFalse(Jalview2XML.isVersionStringLaterThan("2.11.3.0", "2.11.2"));
+    assertTrue(Jalview2XML.isVersionStringLaterThan("2.11.3.0","2.11.4"));
+    assertFalse(Jalview2XML.isVersionStringLaterThan("2.12.2.0b1","2.12.2.0"));
+    assertFalse(Jalview2XML.isVersionStringLaterThan("2.12.2.3","2.12.2.2"));
+
   }
 
   /**
@@ -819,6 +835,88 @@ public class Jalview2xmlTests extends Jalview2xmlBase
    * @throws IOException
    */
   @Test(groups = { "Functional" })
+  public void testStoreAndRecoverAnnotationRowElementColours()
+          throws IOException
+  {
+    Desktop.instance.closeAll_actionPerformed(null);
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded("SEQ\tMNQ",
+            DataSourceType.PASTE);
+
+    AlignViewport av = af.getViewport();
+    AlignmentI al = av.getAlignment();
+    SequenceI fsq;
+    fsq = al.getSequenceAt(0);
+    Annotation annots[] = new Annotation[fsq.getLength()];
+    AlignmentAnnotation ala = new AlignmentAnnotation("Colour", "Annots",
+            annots);
+    annots[0] = new Annotation(1.0f);
+    annots[1] = new Annotation(2.0f);
+    annots[2] = new Annotation(3.0f);
+    annots[0].colour = Color.RED;
+    annots[1].colour = Color.GREEN;
+    annots[2].colour = Color.BLUE;
+    ala.validateRangeAndDisplay();
+    al.getSequenceAt(0).addAlignmentAnnotation(ala);
+    al.addAnnotation(ala);
+    /*
+     * and colour by annotation
+     */
+    AnnotationColourGradient acg = new AnnotationColourGradient(ala,
+            af.alignPanel.av.getGlobalColourScheme(), 0);
+    acg.setSeqAssociated(true);
+    acg.setPredefinedColours(true);
+    af.changeColour(acg);
+    Color seqcol[] = new Color[3];
+    for (int iStart=fsq.findIndex(fsq.getStart()),i=0;i<3;i++) {
+      seqcol[i] = af.alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer().getResidueColour(fsq, iStart+i, null);
+    }
+    /*
+     * save project, close windows, reload project, verify
+     */
+    File tfile = File.createTempFile(
+            "testStoreAndRecoverAnnotRowElemColors", ".jvp");
+    tfile.deleteOnExit();
+    new Jalview2XML(false).saveState(tfile);
+    //Desktop.instance.closeAll_actionPerformed(null);
+    af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+            DataSourceType.FILE);
+    Assert.assertNotNull(af, "Failed to reload project");
+    /*
+     * verify alignment annotation has colors
+     */
+    av = af.getViewport();
+    
+    ColourSchemeI loadedCscheme = av.getGlobalColourScheme();
+    Assert.assertTrue(loadedCscheme instanceof AnnotationColourGradient,"Didn't apply Annotation colour gradient");
+    acg = (AnnotationColourGradient) loadedCscheme;
+    assertTrue(acg.isSeqAssociated());
+    assertTrue(acg.isPredefinedColours());
+
+    al = av.getAlignment();
+    fsq = al.getSequenceAt(0);
+    ala = fsq.getAnnotation()[0];
+    Assert.assertNotNull(ala, "No annotation row recovered");
+    Assert.assertNotNull(ala.annotations);
+    for (int iStart = al.getSequenceAt(0)
+            .findIndex(al.getSequenceAt(0).getStart()), i = 0; i < 3; i++)
+    {
+      Assert.assertTrue(ala.annotations[i].colour!=null);
+      Assert.assertTrue(ala.annotations[i].colour.equals(annots[i].colour));
+      Color newseqcol = af.alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer().getResidueColour(fsq, iStart+i, null);
+      Assert.assertTrue(seqcol[i].equals(newseqcol),"Sequence shading is different");
+
+    }
+    
+  }
+
+  /**
+   * Configure an alignment and a sub-group each with distinct colour schemes,
+   * Conservation and PID thresholds, and confirm these are restored from the
+   * saved project.
+   * 
+   * @throws IOException
+   */
+  @Test(groups = { "Functional" })
   public void testStoreAndRecoverColourThresholds() throws IOException
   {
     Desktop.instance.closeAll_actionPerformed(null);
@@ -1274,4 +1372,158 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     assertTrue(dbRef instanceof GeneLocus);
     assertEquals(dbRef, dbref3);
   }
+
+  /**
+   * test store and recovery of Overview windows
+   * 
+   * @throws Exception
+   */
+  @Test(groups = { "Functional" }, enabled = true)
+  public void testStoreAndRecoverOverview() throws Exception
+  {
+    Desktop.instance.closeAll_actionPerformed(null);
+
+    Cache.setProperty("SHOW_OVERVIEW", "false");
+    Cache.setProperty(Preferences.USE_LEGACY_GAP, "false");
+    Cache.setColourProperty(Preferences.GAP_COLOUR, Color.green);
+    Cache.setColourProperty(Preferences.HIDDEN_COLOUR, Color.yellow);
+    Cache.setProperty(Preferences.SHOW_OV_HIDDEN_AT_START, "true");
+
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/uniref50.fa", DataSourceType.FILE);
+
+    /*
+     * open and resize / reposition overview 
+     */
+    af.overviewMenuItem_actionPerformed(null);
+    OverviewPanel ov1 = af.alignPanel.getOverviewPanel();
+    assertNotNull(ov1);
+    ov1.setFrameBounds(20, 30, 200, 400);
+    assertEquals(ov1.getTitle(), "Overview examples/uniref50.fa");
+    assertTrue(ov1.isShowHiddenRegions());
+
+    /*
+     * open a New View and its Overview and reposition it
+     */
+    af.newView_actionPerformed(null);
+    af.overviewMenuItem_actionPerformed(null);
+    OverviewPanel ov2 = af.alignPanel.getOverviewPanel();
+    assertNotNull(ov2);
+    assertNotSame(ov1, ov2);
+    ov2.setFrameBounds(25, 35, 205, 405);
+    assertEquals(ov1.getTitle(), "Overview examples/uniref50.fa Original");
+    assertEquals(ov2.getTitle(), "Overview examples/uniref50.fa View 1");
+
+    File tfile = File.createTempFile("testStoreAndRecoverOverview", ".jvp");
+    new Jalview2XML(false).saveState(tfile);
+    Desktop.instance.closeAll_actionPerformed(null);
+
+    /*
+     * change preferences (should _not_ affect reloaded Overviews)
+     */
+    Cache.setProperty("SHOW_OVERVIEW", "true");
+    Cache.setProperty(Preferences.USE_LEGACY_GAP, "true");
+    Cache.setColourProperty(Preferences.GAP_COLOUR, Color.blue);
+    Cache.setColourProperty(Preferences.HIDDEN_COLOUR, Color.orange);
+    Cache.setProperty(Preferences.SHOW_OV_HIDDEN_AT_START, "false");
+
+    af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+            DataSourceType.FILE);
+
+    /*
+     * workaround: explicitly select View 1 (not in focus after restore)
+     */
+    af.tabSelectionChanged(1);
+
+    /*
+     * verify restored overview for View 1
+     */
+    ov2 = af.alignPanel.getOverviewPanel();
+    assertEquals(ov2.getCanvas().getGapColour(), Color.green);
+    // 'non-legacy' colouring uses white for non-gapped residues
+    assertEquals(ov2.getCanvas().getResidueColour(), Color.white);
+    assertEquals(ov2.getCanvas().getHiddenColour(), Color.yellow);
+    assertEquals(ov2.getTitle(), "Overview examples/uniref50.fa View 1");
+    assertEquals(ov2.getFrameBounds(), new Rectangle(25, 35, 205, 405));
+    assertTrue(ov2.isShowHiddenRegions());
+
+    /*
+     * verify restored overview for Original view
+     */
+    af.tabSelectionChanged(0);
+    ov1 = af.alignPanel.getOverviewPanel();
+    assertEquals(ov1.getCanvas().getGapColour(), Color.green);
+    // 'non-legacy' colouring uses white for non-gapped residues
+    assertEquals(ov1.getCanvas().getResidueColour(), Color.white);
+    assertEquals(ov1.getCanvas().getHiddenColour(), Color.yellow);
+    assertEquals(ov1.getTitle(), "Overview examples/uniref50.fa Original");
+    assertEquals(ov1.getFrameBounds(), new Rectangle(20, 30, 200, 400));
+    assertTrue(ov1.isShowHiddenRegions());
+  }
+
+  /**
+   * Test that a view with no Overview is restored with no Overview, even if
+   * 'Open Overview' is selected in Preferences
+   * 
+   * @throws Exception
+   */
+  @Test(groups = { "Functional" }, enabled = true)
+  public void testStoreAndRecoverNoOverview() throws Exception
+  {
+    Cache.setProperty("SHOW_OVERVIEW", "false");
+    Desktop.instance.closeAll_actionPerformed(null);
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            ">seq1\nMATRSQFLVNF\n", DataSourceType.PASTE);
+
+    File tfile = File.createTempFile("testStoreAndRecoverOverview", ".jvp");
+    new Jalview2XML(false).saveState(tfile);
+    Desktop.instance.closeAll_actionPerformed(null);
+
+    Cache.setProperty("SHOW_OVERVIEW", "true");
+    af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+            DataSourceType.FILE);
+
+    assertNull(af.alignPanel.getOverviewPanel());
+  }
+
+  /**
+   * Test that a view from an older version of Jalview is restored with Overview automatically shown when the preference is set
+   * 
+   * @throws Exception
+   */
+  @Test(groups = { "Functional" }, enabled = true)
+  public void testAutoShowOverviewForLegacyProjects() throws Exception
+  {
+    Desktop.instance.closeAll_actionPerformed(null);
+    Cache.setProperty("SHOW_OVERVIEW", "true");
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/exampleFile.jvp", DataSourceType.FILE);
+
+    Cache.setProperty("SHOW_OVERVIEW", "false");
+    assertNotNull(af.alignPanel.getOverviewPanel());
+  }
+
+  /**
+   * Test that loading example.jvp, doing some stuff, then hitting reload
+   * doesn't leave the modified window still open
+   * 
+   * See JAL-4127 - interactively performing the same actions and reloading
+   * works fine, but programmatically they do not
+   * 
+   * @throws Exception
+   */
+  @Test(groups = {"Functional"}, enabled=false)
+  public void testReloadActuallyReloads() throws Exception
+  {
+    Desktop.instance.closeAll_actionPerformed(null);
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/exampleFile.jvp", DataSourceType.FILE);
+    af.getViewport().getColumnSelection().addElement(3);
+    af.hideSelColumns_actionPerformed(null);
+    af.newView("new", true);
+    af.reload_actionPerformed(null);
+    Thread.sleep(30);
+    // af exists still but isn't shown
+    assertTrue(af.isClosed());
+  }
 }
index c59e520..cdb69e3 100644 (file)
@@ -46,8 +46,9 @@ public class OverviewRendererTest
   @Test
   public void testGetColumnColourFromSequence()
   {
-    OverviewResColourFinder cf = new OverviewResColourFinder(false,
-            Color.PINK, Color.green); // gapColour, hiddenColour
+    // gapColour, residueColour, hiddenColour
+    OverviewResColourFinder cf = new OverviewResColourFinder(
+            Color.PINK, Color.white, Color.green); 
     Sequence seq1 = new Sequence("seq1", "PQ-RL-");
     Sequence seq2 = new Sequence("seq2", "FVE");
     AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
index 3931dbf..028777e 100644 (file)
@@ -22,6 +22,12 @@ package jalview.renderer;
 
 import static org.testng.AssertJUnit.assertEquals;
 
+import java.awt.Color;
+import java.util.ArrayList;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
@@ -30,16 +36,11 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignViewport;
 import jalview.gui.JvOptionPane;
+import jalview.gui.OverviewCanvas;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.UserColourScheme;
 import jalview.schemes.ZappoColourScheme;
 
-import java.awt.Color;
-import java.util.ArrayList;
-
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
 public class OverviewResColourFinderTest
 {
 
@@ -185,7 +186,7 @@ public class OverviewResColourFinderTest
             av.getResidueShading(), groups, seq, 2, null));
 
     // use legacy colouring
-    rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
 
     // G in group specified as magenta in Zappo
     assertEquals(Color.magenta, rcf.getResidueColour(false,
@@ -200,7 +201,7 @@ public class OverviewResColourFinderTest
             av.getResidueShading(), groups, seq, 2, null));
 
     // use new colouring
-    rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
 
     // G in group specified as magenta in Zappo
     assertEquals(Color.magenta, rcf.getResidueColour(false,
@@ -233,12 +234,10 @@ public class OverviewResColourFinderTest
 
     // gaps gap colour
     c = rcf.getBoxColour(shader, seq, 3);
-    assertEquals(
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP,
-            c);
+    assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
 
     // legacy colouring set explicitly via constructor
-    rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
     shader = new ResidueShader();
 
     // residues light gray
@@ -259,12 +258,10 @@ public class OverviewResColourFinderTest
 
     // gaps gap colour
     c = rcf.getBoxColour(shader, seq, 3);
-    assertEquals(
-            jalview.renderer.OverviewResColourFinder.OVERVIEW_DEFAULT_GAP,
-            c);
+    assertEquals(OverviewCanvas.OVERVIEW_DEFAULT_GAP, c);
 
     // non legacy colouring with colour scheme
-    rcf = new OverviewResColourFinder(false, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.blue, Color.white, Color.red);
     shader = new ResidueShader(new ZappoColourScheme());
 
     // M residue pink
@@ -276,7 +273,7 @@ public class OverviewResColourFinderTest
     assertEquals(Color.blue, c);
 
     // legacy colouring with colour scheme
-    rcf = new OverviewResColourFinder(true, Color.blue, Color.red);
+    rcf = new OverviewResColourFinder(Color.white, Color.lightGray, Color.red);
 
     // M residue pink
     c = rcf.getBoxColour(shader, seq, 0);
index 180deaf..28f39d8 100644 (file)
@@ -23,8 +23,6 @@ package jalview.schemes;
 import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertNull;
 
-import jalview.gui.JvOptionPane;
-
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -32,6 +30,8 @@ import java.util.Map;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import jalview.gui.JvOptionPane;
+
 public class ResiduePropertiesTest
 {
 
@@ -222,7 +222,8 @@ public class ResiduePropertiesTest
      */
     residues = ResidueProperties.getResidues(true, true);
     Collections.sort(residues);
-    assertEquals("[A, C, G, I, N, R, T, U, X, Y]", residues.toString());
+    assertEquals("[A, B, C, D, G, H, I, K, M, N, R, S, T, U, V, W, X, Y]",
+            residues.toString());
   }
 
   @Test(groups = { "Functional" })
index cef9ffc..99c097f 100644 (file)
@@ -24,13 +24,15 @@ import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertFalse;
 import static org.testng.AssertJUnit.assertTrue;
 
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import jalview.bin.Cache;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 import jalview.gui.JvOptionPane;
 
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
 public class ComparisonTest
 {
 
@@ -41,6 +43,12 @@ public class ComparisonTest
     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
   }
 
+  @BeforeMethod(alwaysRun = true)
+  public void loadProperties()
+  {
+    Cache.loadProperties("test/jalview/util/comparisonTestProps.jvprops");
+  }
+
   @Test(groups = { "Functional" })
   public void testIsGap()
   {
@@ -60,24 +68,41 @@ public class ComparisonTest
   @Test(groups = { "Functional" })
   public void testIsNucleotide_sequences()
   {
-    SequenceI seq = new Sequence("eightypercent", "agctuAGCPV");
+    SequenceI seq = new Sequence("eightypercent+fivepercent", "agctuagcPV");
     assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
     assertFalse(
             Comparison.isNucleotide(new SequenceI[][]
             { new SequenceI[] { seq } }));
 
-    seq = new Sequence("eightyfivepercent", "agctuAGCPVagctuAGCUV");
+    seq = new Sequence("eightyfivepercent+tenpercent",
+            "agctuagcgVagctuagcuVE");
+    assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
+
+    seq = new Sequence(">nineyfivepercent+0percent",
+            "aagctuagcgEagctuagcua");
+    assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
+
+    seq = new Sequence("nineyfivepercent+0percent", "agctuagcgEagctuagcua");
     assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
 
-    seq = new Sequence("nineypercent", "agctuAGCgVagctuAGCUV");
+    seq = new Sequence("nineyfivepercent+fivepercent",
+            "agctuagcgWagctuagcua");
     assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
 
+    seq = new Sequence("nineyfivepercent+tenpercent",
+            "agctuagcgEWWctuagcua");
+    assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
+
+    seq = new Sequence("eightyfivepercent+fifteenpercent",
+            "agctuagcgWWWctuagcua");
+    assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
+
     seq = new Sequence("eightyfivepercentgapped",
             "--agc--tuA--GCPV-a---gct-uA-GC---UV");
     assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
 
-    seq = new Sequence("nineypercentgapped",
-            "ag--ct-u-A---GC---g----Vag--c---tuAGCUV");
+    seq = new Sequence("ninetyfivepercentgapped",
+            "ag--ct-u-a---gc---g----aag--c---tuagcuV");
     assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
 
     seq = new Sequence("allgap", "---------");
@@ -108,8 +133,10 @@ public class ComparisonTest
                 new SequenceI[]
                 { seq, seq, seq, seq, seq2, seq2, null } }));
 
-    seq = new Sequence("ProteinThatLooksLikeDNA", "WYATGCCTGAgtcgt");
-    // 12/14 = 85.7%
+    String seqString = "aaatatatatgEcctgagtcgt";
+    seq = new Sequence("ShortProteinThatLooksLikeDNA", seqString);
+    assertFalse(Comparison.isNucleotide(new SequenceI[] { seq }));
+    seq = new Sequence("LongProteinThatLooksLikeDNA", seqString.repeat(10));
     assertTrue(Comparison.isNucleotide(new SequenceI[] { seq }));
 
     assertFalse(Comparison.isNucleotide((SequenceI[]) null));
@@ -165,6 +192,25 @@ public class ComparisonTest
     assertFalse(Comparison.isNucleotide('P'));
   }
 
+  @Test(groups = { "Functional" })
+  public void testIsNucleotideAmbiguity()
+  {
+    assertTrue(Comparison.isNucleotide('b', true));
+    assertTrue(Comparison.isNucleotide('B', true));
+    assertTrue(Comparison.isNucleotide('d', true));
+    assertTrue(Comparison.isNucleotide('V', true));
+    assertTrue(Comparison.isNucleotide('M', true));
+    assertTrue(Comparison.isNucleotide('s', true));
+    assertTrue(Comparison.isNucleotide('W', true));
+    assertTrue(Comparison.isNucleotide('x', true));
+    assertTrue(Comparison.isNucleotide('Y', true));
+    assertTrue(Comparison.isNucleotide('r', true));
+    assertTrue(Comparison.isNucleotide('i', true));
+    assertFalse(Comparison.isNucleotide('-', true));
+    assertFalse(Comparison.isNucleotide('n', true));
+    assertFalse(Comparison.isNucleotide('P', true));
+  }
+
   /**
    * Test the percentage identity calculation for two sequences
    */
@@ -206,6 +252,30 @@ public class ComparisonTest
     assertFalse(Comparison.isNucleotideSequence("aAgGcCtTuUx", false));
     assertTrue(Comparison.isNucleotideSequence("a A-g.GcCtTuU", true));
     assertFalse(Comparison.isNucleotideSequence("a A-g.GcCtTuU", false));
+    assertFalse(Comparison.isNucleotideSequence("gatactawgataca", false));
+    // including nucleotide ambiguity
+    assertTrue(
+            Comparison.isNucleotideSequence("gatacaWgataca", true, true));
+    assertFalse(
+            Comparison.isNucleotideSequence("gatacaEgataca", true, true));
+
+    // not quite all nucleotides and ambiguity codes
+    Sequence seq = new Sequence("Ambiguity DNA codes", "gatacagatacabve");
+    assertFalse(Comparison.isNucleotide(seq));
+    // all nucleotide and nucleotide ambiguity codes
+    seq = new Sequence("Ambiguity DNA codes", "gatacagatacabvt");
+    assertFalse(Comparison.isNucleotide(seq));
+    seq = new Sequence("Ambiguity DNA codes", "agatacabb");
+    assertFalse(Comparison.isNucleotide(seq));
+    // 55% nucleotide with only Xs or Ns
+    assertTrue(Comparison
+            .isNucleotide(new Sequence("dnaWithXs", "gatacaXXXX")));
+    assertTrue(Comparison
+            .isNucleotide(new Sequence("dnaWithXs", "gatacaNNNN")));
+    assertFalse(Comparison
+            .isNucleotide(new Sequence("dnaWithXs", "gatacXXXXX")));
+    assertFalse(Comparison
+            .isNucleotide(new Sequence("dnaWithXs", "gatacNNNNN")));
   }
 
   @Test(groups = { "Functional" })
@@ -219,4 +289,23 @@ public class ComparisonTest
     assertFalse(Comparison.isSameResidue('a', 'A', true));
     assertFalse(Comparison.isSameResidue('A', 'a', true));
   }
+
+  @Test(groups = { "Functional" })
+  public void testNucleotideProportion()
+  {
+    assertFalse(Comparison.myShortSequenceNucleotideProportionCount(2, 3));
+    assertTrue(Comparison.myShortSequenceNucleotideProportionCount(3, 3));
+    assertFalse(Comparison.myShortSequenceNucleotideProportionCount(2, 4));
+    assertTrue(Comparison.myShortSequenceNucleotideProportionCount(3, 4));
+    assertFalse(
+            Comparison.myShortSequenceNucleotideProportionCount(17, 20));
+    assertTrue(Comparison.myShortSequenceNucleotideProportionCount(18, 20));
+    assertFalse(
+            Comparison.myShortSequenceNucleotideProportionCount(38, 50));
+    assertTrue(Comparison.myShortSequenceNucleotideProportionCount(39, 50));
+    assertFalse(
+            Comparison.myShortSequenceNucleotideProportionCount(54, 100));
+    assertTrue(
+            Comparison.myShortSequenceNucleotideProportionCount(55, 100));
+  }
 }
diff --git a/test/jalview/util/comparisonTestProps.jvprops b/test/jalview/util/comparisonTestProps.jvprops
new file mode 100644 (file)
index 0000000..55f9303
--- /dev/null
@@ -0,0 +1,5 @@
+NUCLEOTIDE_AMBIGUITY_DETECTION=true
+NUCLEOTIDE_COUNT_PERCENT=55
+NUCLEOTIDE_COUNT_LONG_SEQUENCE_AMBIGUITY_PERCENT=95
+NUCLEOTIDE_COUNT_SHORT=100
+NUCLEOTIDE_COUNT_VERY_SHORT=4
index 7eb3b75..176cddc 100644 (file)
@@ -224,9 +224,6 @@ public class UniprotTest
     res = DBRefUtils.searchRefsForSource(seq.getDBRefs(),
             DBRefSource.UNIPROT);
     assertEquals(2, res.size());
-    res = DBRefUtils.searchRefs(seq.getDBRefs(), "AAK85932");
-    assertEquals(1, res.size());
-    assertTrue("1".equals(res.get(0).getVersion()));
     /*
      * NB this test fragile - relies on ordering being preserved
      */
index cf8634a..b6e8379 100755 (executable)
 ### Edited to use adoptium domain to gain access to Java 17 (LTS) versions.
 
 BASE=https://api.adoptium.net/v3/binary/latest
+ZULU_BASE=https://cdn.azul.com/zulu/bin
 RELEASE_TYPE=ga
 JVM_IMPL=hotspot
 HEAP_SIZE=normal
 VENDOR=eclipse
 IMAGE_TYPE=jdk
+TAR=tar
+ZIP=zip
+UNZIP=unzip
+
+STRIP_MAC_APP_BUNDLING=false
+# archives not needed for JDKs
+CREATE_ARCHIVES=""
+# need zip with top-level jre dir for getdown updates. need tgz without top-level jre dir for install4j bundling
 
 RM=/bin/rm
 
 # unzip-strip from https://superuser.com/questions/518347/equivalent-to-tars-strip-components-1-in-unzip
-unzip-strip() (
+unzip-strip() {
   local zip=$1
   local dest=${2:-.}
-  local temp=$(mktemp -d) && unzip -qq -d "$temp" "$zip" && mkdir -p "$dest" &&
+  local temp=$(mktemp -d) && $UNZIP -qq -d "$temp" "$zip" && mkdir -p "$dest" &&
   shopt -s dotglob && local f=("$temp"/*) &&
   if (( ${#f[@]} == 1 )) && [[ -d "${f[0]}" ]] ; then
     mv "$temp"/*/* "$dest"
   else
     mv "$temp"/* "$dest"
   fi && rmdir "$temp"/* "$temp"
-)
+}
+
+dl_zulu() {
+  local OS="$1"
+  local ARCH="$2"
+  local VERSION="$3"
+  local TARFILE="$4"
+  declare -A osmap
+  osmap[mac]=macosx
+  osmap[windows]=win
+  osmap[linux]=linux
+  ZOS="${osmap[$OS]}"
+  echo "- Looking for download from Azul"
+  LATEST_DL_URL_FILE=$(wget -q -O - "${ZULU_BASE}/" | perl -n -e 'm/<a\b[^>]*href="(([^"]*\/)?zulu[^"]*-ca-'"${IMAGE_TYPE}""${VERSION}"'\.[^"]*-'"${ZOS}"'_'"${ARCH}"'.tar.gz)"[^"]*>/ && print "$1\n";' | tail -1)
+  local URL="${ZULU_BASE}/${LATEST_DL_URL_FILE}"
+  if [ -z "${LATEST_DL_URL_FILE}" ]; then
+    echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}' found at Azul"
+    return 1
+  fi
+  echo "- Found at Azul. Downloading '${URL}'"
+  wget -q -O "${TARFILE}" "${URL}" "${TARFILE}"
+  echo RETURN=$?
+  if [ "$?" != 0 ]; then
+    echo "- Download from Azul failed"
+    return 1
+  fi
+  return 0
+}
+
+declare -A DOWNLOAD_SUMMARY
 
 for FEATURE_VERSION in 8 11 17; do
   for OS_ARCH in mac:x64 mac:aarch64 windows:x64 linux:x64 linux:arm linux:aarch64; do
@@ -42,13 +80,30 @@ for FEATURE_VERSION in 8 11 17; do
     ARCH=${OS_ARCH#*:}
     NAME="${IMAGE_TYPE}-${FEATURE_VERSION}-${OS}-${ARCH}"
     TARFILE="${NAME}.tgz"
+    DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="None"
+    STRIP_COMPONENTS=1
+    MAC_STRIP_COMPONENTS=3
     echo "* Downloading ${TARFILE}"
     URL="${BASE}/${FEATURE_VERSION}/${RELEASE_TYPE}/${OS}/${ARCH}/${IMAGE_TYPE}/${JVM_IMPL}/${HEAP_SIZE}/${VENDOR}"
     wget -q -O "${TARFILE}" "${URL}"
     if [ "$?" != 0 ]; then
-      echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}'"
+      echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}' at Adoptium"
       $RM -f "${TARFILE}"
-      continue;
+
+      # Try Azul Zulu (not an API, a bit messier, but has Java 8 JRE for mac:aarch64
+      dl_zulu "${OS}" "${ARCH}" "${FEATURE_VERSION}" "${TARFILE}"
+
+      if [ "$?" != 0 ]; then
+        DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="None"
+        continue;
+      fi
+      STRIP_COMPONENTS=2
+      MAC_STRIP_COMPONENTS=4
+      DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="Azul"
+      echo "Set ${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}=Azul"
+    else
+      DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="Adoptium"
+      echo "Set ${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}=Adoptium"
     fi
     echo "Unpacking ${TARFILE}"
     JREDIR="${NAME}/${IMAGE_TYPE}"
@@ -60,14 +115,58 @@ for FEATURE_VERSION in 8 11 17; do
       RET=$?
     else
       echo "using tar"
-      tar --strip-components=1 -C "${JREDIR}" -zxf "${TARFILE}"
-      RET=$?
+      if [ x$OS = xmac -a x$STRIP_MAC_APP_BUNDLING = xtrue ]; then
+        echo "Running $TAR --strip-components=\"${MAC_STRIP_COMPONENTS}\" -C \"${JREDIR}\" -zxf \"${TARFILE}\" \"*/Contents/Home\""
+        $TAR --strip-components="${MAC_STRIP_COMPONENTS}" -C "${JREDIR}" -zxf "${TARFILE}" "*/Contents/Home"
+        RET=$?
+      else
+        $TAR --strip-components="${STRIP_COMPONENTS}" -C "${JREDIR}" -zxf "${TARFILE}"
+        RET=$?
+      fi
     fi
     if [ "$RET" != 0 ]; then
       echo "Error unpacking ${TARFILE}"
       exit 1
     fi
     $RM "${TARFILE}"
+    if [ \! -z "$CREATE_ARCHIVES" ]; then
+      for CREATEARCHIVE in ${CREATE_ARCHIVES}; do
+        ARCHIVEDIR=$CREATEARCHIVE
+        case $CREATEARCHIVE in
+          zip)
+            EXT=${CREATEARCHIVE}
+            echo "Creating ${NAME}.${EXT} for getdown updates"
+            [ \! -d ${ARCHIVEDIR} ] && mkdir -p "${ARCHIVEDIR}"
+            ABSARCHIVEDIR="${PWD}/$ARCHIVEDIR"
+            ZIPFILE="${ABSARCHIVEDIR}/${NAME}.${CREATEARCHIVE}"
+            [ -e "${ZIPFILE}" ] && $RM "${ZIPFILE}"
+            cd ${NAME}
+            $ZIP -X -r "${ZIPFILE}" "${IMAGE_TYPE}"
+            cd -
+            ;;
+          tgz)
+            EXT=tar.gz
+            echo "Creating ${NAME}.${EXT} for install4j bundling"
+            [ \! -d ${ARCHIVEDIR} ] && mkdir -p "${ARCHIVEDIR}"
+            $TAR -C "${JREDIR}" -zcf "${ARCHIVEDIR}/${NAME}.${EXT}" .
+            # make symbolic link with _ instead of - for install4j9
+            NEWNAME=${NAME//-/_}
+            echo "Linking from ${NEWNAME}.${EXT} for install4j9"
+            [ -e "${ARCHIVEDIR}/${NEWNAME}.${EXT}" ] && $RM "${ARCHIVEDIR}/${NEWNAME}.${EXT}"
+            ln -s "${NAME}.${EXT}" "${ARCHIVEDIR}/${NEWNAME}.${EXT}"
+            ;;
+          *)
+            echo "Archiving as '${CREATEARCHIVE}' file not supported"
+            ;;
+        esac
+      done
+    fi
   done
 done
 
+echo ""
+echo "Download Summary"
+for OA in "${!DOWNLOAD_SUMMARY[@]}"; do
+  echo "$OA: ${DOWNLOAD_SUMMARY[$OA]}"
+done
+
index 26442ea..c1a5a0d 100755 (executable)
@@ -15,6 +15,7 @@
 ### Edited to use adoptium domain to gain access to Java 17 (LTS) versions.
 
 BASE=https://api.adoptium.net/v3/binary/latest
+ZULU_BASE=https://cdn.azul.com/zulu/bin
 RELEASE_TYPE=ga
 JVM_IMPL=hotspot
 HEAP_SIZE=normal
@@ -31,7 +32,7 @@ CREATE_ARCHIVES="zip tgz"
 RM=/bin/rm
 
 # unzip-strip from https://superuser.com/questions/518347/equivalent-to-tars-strip-components-1-in-unzip
-unzip-strip() (
+unzip-strip() {
   local zip=$1
   local dest=${2:-.}
   local temp=$(mktemp -d) && $UNZIP -qq -d "$temp" "$zip" && mkdir -p "$dest" &&
@@ -41,7 +42,36 @@ unzip-strip() (
   else
     mv "$temp"/* "$dest"
   fi && rmdir "$temp"/* "$temp"
-)
+}
+
+dl_zulu() {
+  local OS="$1"
+  local ARCH="$2"
+  local VERSION="$3"
+  local TARFILE="$4"
+  declare -A osmap
+  osmap[mac]=macosx
+  osmap[windows]=win
+  osmap[linux]=linux
+  ZOS="${osmap[$OS]}"
+  echo "- Looking for download from Azul"
+  LATEST_DL_URL_FILE=$(wget -q -O - "${ZULU_BASE}/" | perl -n -e 'm/<a\b[^>]*href="(([^"]*\/)?zulu[^"]*-ca-'"${IMAGE_TYPE}""${VERSION}"'\.[^"]*-'"${ZOS}"'_'"${ARCH}"'.tar.gz)"[^"]*>/ && print "$1\n";' | tail -1)
+  local URL="${ZULU_BASE}/${LATEST_DL_URL_FILE}"
+  if [ -z "${LATEST_DL_URL_FILE}" ]; then
+    echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}' found at Azul"
+    return 1
+  fi
+  echo "- Found at Azul. Downloading '${URL}'"
+  wget -q -O "${TARFILE}" "${URL}" "${TARFILE}"
+  echo RETURN=$?
+  if [ "$?" != 0 ]; then
+    echo "- Download from Azul failed"
+    return 1
+  fi
+  return 0
+}
+
+declare -A DOWNLOAD_SUMMARY
 
 for FEATURE_VERSION in 8 11 17; do
   for OS_ARCH in mac:x64 mac:aarch64 windows:x64 linux:x64 linux:arm linux:aarch64; do
@@ -49,13 +79,30 @@ for FEATURE_VERSION in 8 11 17; do
     ARCH=${OS_ARCH#*:}
     NAME="${IMAGE_TYPE}-${FEATURE_VERSION}-${OS}-${ARCH}"
     TARFILE="${NAME}.tgz"
+    DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="None"
+    STRIP_COMPONENTS=1
+    MAC_STRIP_COMPONENTS=3
     echo "* Downloading ${TARFILE}"
     URL="${BASE}/${FEATURE_VERSION}/${RELEASE_TYPE}/${OS}/${ARCH}/${IMAGE_TYPE}/${JVM_IMPL}/${HEAP_SIZE}/${VENDOR}"
     wget -q -O "${TARFILE}" "${URL}"
     if [ "$?" != 0 ]; then
-      echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}'"
+      echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}' at Adoptium"
       $RM -f "${TARFILE}"
-      continue;
+
+      # Try Azul Zulu (not an API, a bit messier, but has Java 8 JRE for mac:aarch64
+      dl_zulu "${OS}" "${ARCH}" "${FEATURE_VERSION}" "${TARFILE}"
+
+      if [ "$?" != 0 ]; then
+        DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="None"
+        continue;
+      fi
+      STRIP_COMPONENTS=2
+      MAC_STRIP_COMPONENTS=4
+      DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="Azul"
+      echo "Set ${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}=Azul"
+    else
+      DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="Adoptium"
+      echo "Set ${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}=Adoptium"
     fi
     echo "Unpacking ${TARFILE}"
     JREDIR="${NAME}/${IMAGE_TYPE}"
@@ -68,10 +115,11 @@ for FEATURE_VERSION in 8 11 17; do
     else
       echo "using tar"
       if [ x$OS = xmac -a x$STRIP_MAC_APP_BUNDLING = xtrue ]; then
-        $TAR --strip-components=3 -C "${JREDIR}" -zxf "${TARFILE}" "*/Contents/Home"
+        echo "Running $TAR --strip-components=\"${MAC_STRIP_COMPONENTS}\" -C \"${JREDIR}\" -zxf \"${TARFILE}\" \"*/Contents/Home\""
+        $TAR --strip-components="${MAC_STRIP_COMPONENTS}" -C "${JREDIR}" -zxf "${TARFILE}" "*/Contents/Home"
         RET=$?
       else
-        $TAR --strip-components=1 -C "${JREDIR}" -zxf "${TARFILE}"
+        $TAR --strip-components="${STRIP_COMPONENTS}" -C "${JREDIR}" -zxf "${TARFILE}"
         RET=$?
       fi
     fi
@@ -115,3 +163,9 @@ for FEATURE_VERSION in 8 11 17; do
   done
 done
 
+echo ""
+echo "Download Summary"
+for OA in "${!DOWNLOAD_SUMMARY[@]}"; do
+  echo "$OA: ${DOWNLOAD_SUMMARY[$OA]}"
+done
+
diff --git a/utils/install4j/auto_file_associations-i4j10.pl b/utils/install4j/auto_file_associations-i4j10.pl
new file mode 100755 (executable)
index 0000000..f7e17a1
--- /dev/null
@@ -0,0 +1,227 @@
+#!/usr/bin/env perl
+
+use strict;
+
+my $i4jversion = 10;
+if ($ARGV[0] eq "-v") {
+  shift @ARGV;
+  $i4jversion = shift @ARGV;
+  die("-v i4jversion must be an integer [probably 7 or 8]") unless $i4jversion =~ m/^\d+$/;
+}
+
+my $fileformats = $ARGV[0];
+$fileformats = "../../src/jalview/io/FileFormat.java" unless $fileformats;
+
+# default mimetype will be text/x-$shortname
+# TODO: find an actual extension for mat, see JAL-Xxxxx for outstanding issues too
+# TODO: look up standard mime type used for BLASTfmt matrices, etc
+my $mimetypes = {
+  rnaml => "application/rnaml+xml",
+  biojson => "application/x-jalview-biojson+json",
+  jnet => "application/x-jalview-jnet+text",
+  features => "application/x-jalview-features+text",
+  scorematrix => "application/x-jalview-scorematrix+text",
+  pdb => "chemical/x-pdb",
+  mmcif => "chemical/x-cif",
+  mmcif2 => "chemical/x-mmcif",
+  jalview => "application/x-jalview+xml+zip",
+  jvl => "application/x-jalview-jvl+text",
+  annotations => "application/x-jalview-annotations+text",
+};
+
+my @dontaddshortname = qw(features json);
+my @dontaddextension = qw(html xml json jar mfa fastq);
+my $add_associations = {
+  biojson => {shortname=>"biojson",name=>"BioJSON",extensions=>["biojson"]},
+  gff2 => {shortname=>"gff2",name=>"Generic Features Format v2",extensions=>["gff2"]},
+  gff3 => {shortname=>"gff3",name=>"Generic Features Format v3",extensions=>["gff3"]},
+  features => {shortname=>"features",name=>"Jalview Features",extensions=>["features","jvfeatures"]},
+  annotations => {shortname=>"annotations",name=>"Jalview Annotations",extensions=>["annotations","jvannotations"]},
+  mmcif => {shortname=>"mmcif",name=>"CIF",extensions=>["cif"]},
+  mmcif2 => {shortname=>"mmcif2",name=>"mmCIF",extensions=>["mcif","mmcif"]},
+  jvl => {shortname=>"jvl",name=>"Jalview Launch",extensions=>["jvl"],iconfile=>"jvl_file"},
+  jnet => {shortname=>"jnet",name=>"JnetFile",extensions=>["concise","jnet"]},
+  scorematrix => {shortname=>"scorematrix",name=>"Substitution Matrix",extensions=>["mat"]},
+};
+my $add_extensions = {
+  blc => ["blc"],
+};
+my @put_first = qw(jalview jvl);
+my @owner = @put_first;
+
+my @non_primary = qw(mmcif mmcif2 pdb);
+
+my $v = ($i4jversion >= 8)?$i4jversion:"";
+my $i4jtemplatefile = "file_associations_template-install4j${v}.xml";
+my $i4jtemplate;
+my $mactemplatefile = "file_associations_template-Info_plist.xml";
+my $mactemplate;
+
+open(MT,"<$mactemplatefile") or die("Could not open '$mactemplatefile' for reading");
+while(<MT>){
+  $mactemplate .= $_;
+}
+close(MT);
+open(IT,"<$i4jtemplatefile") or die("Could not open '$i4jtemplatefile' for reading");
+while(<IT>){
+  $i4jtemplate .= $_;
+}
+close(IT);
+my $macauto;
+my $i4jauto;
+
+my $macautofile = $mactemplatefile;
+$macautofile =~ s/template/auto$1/;
+
+my $i4jautofile = $i4jtemplatefile;
+$i4jautofile =~ s/template/auto$1/;
+
+for my $key (sort keys %$add_associations) {
+  my $a = $add_associations->{$key};
+  warn("Known file association for $a->{shortname} (".join(",",@{$a->{extensions}}).")\n");
+}
+
+open(MA,">$macautofile") or die ("Could not open '$macautofile' for writing");
+print MA "<key>CFBundleDocumentTypes</key>\n<array>\n\n";
+
+open(IA,">$i4jautofile") or die ("Could not open '$i4jautofile' for writing");
+
+open(IN, "<$fileformats") or die ("Could not open '$fileformats' for reading");
+my $id = 10000;
+my $file_associations = {};
+while(my $line = <IN>) {
+  $line =~ s/\s+/ /g;
+  $line =~ s/(^ | $)//g;
+  if ($line =~ m/^(\w+) ?\( ?"([^"]*)" ?, ?"([^"]*)" ?, ?(true|false) ?, ?(true|false) ?\)$/i) {
+    my $shortname = lc($1);
+    next if (grep($_ eq $shortname, @dontaddshortname));
+    my $name = $2;
+    my $extensions = $3;
+    $extensions =~ s/\s+//g;
+    my @possextensions = map(lc($_),split(m/,/,$extensions));
+    my @extensions;
+    my $addext = $add_extensions->{$shortname};
+    if (ref($addext) eq "ARRAY") {
+      push(@possextensions, @$addext);
+    }
+    for my $possext (@possextensions) {
+      next if grep($_ eq $possext, @extensions);
+      next if grep($_ eq $possext, @dontaddextension);
+      push(@extensions,$possext);
+    }
+    next unless scalar(@extensions);
+    $file_associations->{$shortname} = {
+      shortname => $shortname,
+      name => $name,
+      extensions => \@extensions
+    };
+    warn("Reading file association for $shortname (".join(",",@extensions).")\n");
+  }
+}
+close(IN);
+
+my %all_associations = (%$file_associations, %$add_associations);
+
+my @ordered = (@put_first, @non_primary);
+for my $key (sort keys %all_associations) {
+  next if grep($_ eq $key, @ordered);
+  push(@ordered, $key);
+}
+my $num = $#ordered + 1;
+
+warn("--\n");
+
+my $i4jcount = 0;
+for my $shortname (@ordered) {
+  my $a = $all_associations{$shortname};
+  next if (ref($a) ne "HASH");
+
+  my $name = $a->{name};
+  my $extensions = $a->{extensions};
+  my $mimetype = $mimetypes->{$shortname};
+  $mimetype = "application/x-$shortname+txt" unless $mimetype;
+
+  my $iconfile = $a->{iconfile};
+  $iconfile = "Jalview-File" unless $iconfile;
+
+  my $owner = grep($_ eq $shortname, @owner);
+  my $primary = (! grep($_ eq $shortname, @non_primary));
+  my $primarystring = $primary?"true":"false";
+  #my $role = $owner?"Owner":($primary?"Editor":"Viewer");
+  my $role = $primary?"Editor":"Viewer";
+  my $rank = $owner?"Owner":($primary?"Default":"Alternate");
+
+  my @extensions = @$extensions;
+
+  my $xname = xml_escape($name);
+  my $xmimetype = xml_escape($mimetype);
+  my $xshortname = xml_escape($shortname);
+  my $xiconfile = xml_escape($iconfile);
+  my $xrole = xml_escape($role);
+  my $xROLE = xml_escape(uc($role));
+  my $xrank = xml_escape($rank);
+  my $xprimarystring = xml_escape($primarystring);
+
+  my $macentry = $mactemplate;
+  $macentry =~ s/\$\$NAME\$\$/$xname/g;
+  $macentry =~ s/\$\$SHORTNAME\$\$/$xshortname/g;
+  $macentry =~ s/\$\$MIMETYPE\$\$/$xmimetype/g;
+  $macentry =~ s/\$\$ICONFILE\$\$/$xiconfile/g;
+  $macentry =~ s/\$\$ROLE\$\$/$xrole/g;
+  $macentry =~ s/\$\$RANK\$\$/$xrank/g;
+  $macentry =~ s/\$\$PRIMARY\$\$/$xprimarystring/g;
+  while ($macentry =~ m/\$\$([^\$]*)EXTENSIONS([^\$]*)\$\$/) {
+    my $pre = $1;
+    my $post = $2;
+    my $macextensions;
+    for my $ext (@extensions) {
+      my $xext = xml_escape($ext);
+      $macextensions .= $pre.$xext.$post;
+    }
+    $macentry =~ s/\$\$${pre}EXTENSIONS${post}\$\$/$macextensions/g;
+  }
+  print MA $macentry;
+
+  my $i4jentry = $i4jtemplate;
+  $i4jentry =~ s/\$\$NAME\$\$/$xname/g;
+  $i4jentry =~ s/\$\$SHORTNAME\$\$/$xshortname/g;
+  $i4jentry =~ s/\$\$MIMETYPE\$\$/$xmimetype/g;
+  $i4jentry =~ s/\$\$ICONFILE\$\$/$xiconfile/g;
+  $i4jentry =~ s/\$\$PRIMARY\$\$/$xprimarystring/g;
+  $i4jentry =~ s/\$\$MACASSOCIATIONROLE\$\$/$xROLE/g;
+
+  my $ext = join(",",sort(@extensions));
+  my $xdisplayext = xml_escape(join(", ", map(".$_",sort(@extensions))));
+  my $progresspercent = int(($i4jcount/$num)*100);
+  $progresspercent = 100 if $progresspercent > 100;
+  $i4jcount++;
+  my $xext = xml_escape($ext);
+  my $addunixextension = "true";
+
+  $i4jentry =~ s/\$\$ADDUNIXEXTENSION\$\$/$addunixextension/g;
+  $i4jentry =~ s/\$\$EXTENSION\$\$/$xext/g;
+  $i4jentry =~ s/\$\$DISPLAYEXTENSION\$\$/$xdisplayext/g;
+  $i4jentry =~ s/\$\$PROGRESSPERCENT\$\$/$progresspercent/g;
+  $i4jentry =~ s/\$\$ID\$\$/$id/g;
+  $id++;
+  $i4jentry =~ s/\$\$ID1\$\$/$id/g;
+  $id++;
+  $i4jentry =~ s/\$\$ID2\$\$/$id/g;
+  $id++;
+
+  print IA $i4jentry;
+
+  delete $all_associations{$shortname};
+  warn("Writing entry for $name (".join(",",@$extensions).": $mimetype)\n");
+}
+
+close(IA);
+print MA "</array>\n";
+close(MA);
+
+sub xml_escape {
+  my $x = shift;
+  # stolen from Pod::Simple::XMLOutStream in base distro
+  $x =~ s/([^-\n\t !\#\$\%\(\)\*\+,\.\~\/\:\;=\?\@\[\\\]\^_\`\{\|\}a-zA-Z0-9])/'&#'.(ord($1)).';'/eg;
+  return $x;
+}  
index 0b927a8..2e23321 100644 (file)
@@ -12,6 +12,8 @@
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Owner</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-jalview+xml+zip</string>
@@ -31,6 +33,8 @@
 <string>jvl_file.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Owner</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-jalview-jvl+text</string>
@@ -50,6 +54,8 @@
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Viewer</string>
+<key>LSHandlerRank</key>
+<string>Alternate</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>chemical/x-cif</string>
@@ -70,6 +76,8 @@
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Viewer</string>
+<key>LSHandlerRank</key>
+<string>Alternate</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>chemical/x-mmcif</string>
@@ -90,6 +98,8 @@
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Viewer</string>
+<key>LSHandlerRank</key>
+<string>Alternate</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>chemical/x-pdb</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-amsa+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-jalview-annotations+text</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-jalview-biojson+json</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-blc+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-clustal+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-embl+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-fasta+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-jalview-features+text</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-genbank+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-gff2+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-gff3+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-jalview-jnet+text</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-msf+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-pfam+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-phylip+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-pileup+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-pir+txt</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/rnaml+xml</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-jalview-scorematrix+text</string>
 <string>Jalview-File.icns</string>
 <key>CFBundleTypeRole</key>
 <string>Editor</string>
+<key>LSHandlerRank</key>
+<string>Default</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>application/x-stockholm+txt</string>
diff --git a/utils/install4j/file_associations_auto-install4j10.xml b/utils/install4j/file_associations_auto-install4j10.xml
new file mode 100644 (file)
index 0000000..ee70251
--- /dev/null
@@ -0,0 +1,1125 @@
+<!-- Jalview (.jvp) BEGIN -->
+                  <action name="Jalview (.jvp) message" id="10000" customizedId="Jalview-jvp-10000-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Jalview (.jvp)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview (.jvp) progress bar 0" id="10001" customizedId="Jalview-jvp-10001-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="0" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview (.jvp) file association" id="10002" customizedId="Jalview-jvp-10002-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .jvp file association">
+                    <serializedBean>
+                      <property name="description" type="string">Jalview File</property>
+                      <property name="extension" type="string">jvp</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-jalview+xml+zip</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Jalview Launch (.jvl) BEGIN -->
+                  <action name="Jalview Launch (.jvl) message" id="10003" customizedId="Jalview Launch-jvl-10003-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Jalview Launch (.jvl)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview Launch (.jvl) progress bar 4" id="10004" customizedId="Jalview Launch-jvl-10004-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="4" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview Launch (.jvl) file association" id="10005" customizedId="Jalview Launch-jvl-10005-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .jvl file association">
+                    <serializedBean>
+                      <property name="description" type="string">Jalview Launch File</property>
+                      <property name="extension" type="string">jvl</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>jvl_file.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>jvl_file.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-jalview-jvl+text</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>jvl_file.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- CIF (.cif) BEGIN -->
+                  <action name="CIF (.cif) message" id="10006" customizedId="CIF-cif-10006-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">CIF (.cif)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="CIF (.cif) progress bar 8" id="10007" customizedId="CIF-cif-10007-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="8" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="CIF (.cif) file association" id="10008" customizedId="CIF-cif-10008-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .cif file association">
+                    <serializedBean>
+                      <property name="description" type="string">CIF File</property>
+                      <property name="extension" type="string">cif</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="VIEWER" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="false" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">chemical/x-cif</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- mmCIF (.mcif, .mmcif) BEGIN -->
+                  <action name="mmCIF (.mcif, .mmcif) message" id="10009" customizedId="mmCIF-mcif,mmcif-10009-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">mmCIF (.mcif, .mmcif)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="mmCIF (.mcif, .mmcif) progress bar 12" id="10010" customizedId="mmCIF-mcif,mmcif-10010-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="12" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="mmCIF (.mcif, .mmcif) file association" id="10011" customizedId="mmCIF-mcif,mmcif-10011-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .mcif,mmcif file association">
+                    <serializedBean>
+                      <property name="description" type="string">mmCIF File</property>
+                      <property name="extension" type="string">mcif,mmcif</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="VIEWER" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="false" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">chemical/x-mmcif</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- PDB (.ent, .pdb) BEGIN -->
+                  <action name="PDB (.ent, .pdb) message" id="10012" customizedId="PDB-ent,pdb-10012-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">PDB (.ent, .pdb)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PDB (.ent, .pdb) progress bar 16" id="10013" customizedId="PDB-ent,pdb-10013-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="16" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PDB (.ent, .pdb) file association" id="10014" customizedId="PDB-ent,pdb-10014-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .ent,pdb file association">
+                    <serializedBean>
+                      <property name="description" type="string">PDB File</property>
+                      <property name="extension" type="string">ent,pdb</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="VIEWER" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="false" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">chemical/x-pdb</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- AMSA (.amsa) BEGIN -->
+                  <action name="AMSA (.amsa) message" id="10015" customizedId="AMSA-amsa-10015-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">AMSA (.amsa)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="AMSA (.amsa) progress bar 20" id="10016" customizedId="AMSA-amsa-10016-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="20" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="AMSA (.amsa) file association" id="10017" customizedId="AMSA-amsa-10017-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .amsa file association">
+                    <serializedBean>
+                      <property name="description" type="string">AMSA File</property>
+                      <property name="extension" type="string">amsa</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-amsa+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Jalview Annotations (.annotations, .jvannotations) BEGIN -->
+                  <action name="Jalview Annotations (.annotations, .jvannotations) message" id="10018" customizedId="Jalview Annotations-annotations,jvannotations-10018-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Jalview Annotations (.annotations, .jvannotations)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview Annotations (.annotations, .jvannotations) progress bar 24" id="10019" customizedId="Jalview Annotations-annotations,jvannotations-10019-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="24" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview Annotations (.annotations, .jvannotations) file association" id="10020" customizedId="Jalview Annotations-annotations,jvannotations-10020-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .annotations,jvannotations file association">
+                    <serializedBean>
+                      <property name="description" type="string">Jalview Annotations File</property>
+                      <property name="extension" type="string">annotations,jvannotations</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-jalview-annotations+text</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- BioJSON (.biojson) BEGIN -->
+                  <action name="BioJSON (.biojson) message" id="10021" customizedId="BioJSON-biojson-10021-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">BioJSON (.biojson)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="BioJSON (.biojson) progress bar 28" id="10022" customizedId="BioJSON-biojson-10022-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="28" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="BioJSON (.biojson) file association" id="10023" customizedId="BioJSON-biojson-10023-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .biojson file association">
+                    <serializedBean>
+                      <property name="description" type="string">BioJSON File</property>
+                      <property name="extension" type="string">biojson</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-jalview-biojson+json</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- BLC (.blc) BEGIN -->
+                  <action name="BLC (.blc) message" id="10024" customizedId="BLC-blc-10024-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">BLC (.blc)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="BLC (.blc) progress bar 32" id="10025" customizedId="BLC-blc-10025-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="32" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="BLC (.blc) file association" id="10026" customizedId="BLC-blc-10026-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .blc file association">
+                    <serializedBean>
+                      <property name="description" type="string">BLC File</property>
+                      <property name="extension" type="string">blc</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-blc+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Clustal (.aln) BEGIN -->
+                  <action name="Clustal (.aln) message" id="10027" customizedId="Clustal-aln-10027-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Clustal (.aln)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Clustal (.aln) progress bar 36" id="10028" customizedId="Clustal-aln-10028-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="36" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Clustal (.aln) file association" id="10029" customizedId="Clustal-aln-10029-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .aln file association">
+                    <serializedBean>
+                      <property name="description" type="string">Clustal File</property>
+                      <property name="extension" type="string">aln</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-clustal+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- ENA Flatfile (.txt) BEGIN -->
+                  <action name="ENA Flatfile (.txt) message" id="10030" customizedId="ENA Flatfile-txt-10030-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">ENA Flatfile (.txt)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="ENA Flatfile (.txt) progress bar 40" id="10031" customizedId="ENA Flatfile-txt-10031-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="40" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="ENA Flatfile (.txt) file association" id="10032" customizedId="ENA Flatfile-txt-10032-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .txt file association">
+                    <serializedBean>
+                      <property name="description" type="string">ENA Flatfile File</property>
+                      <property name="extension" type="string">txt</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-embl+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Fasta (.fa, .fasta) BEGIN -->
+                  <action name="Fasta (.fa, .fasta) message" id="10033" customizedId="Fasta-fa,fasta-10033-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Fasta (.fa, .fasta)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Fasta (.fa, .fasta) progress bar 44" id="10034" customizedId="Fasta-fa,fasta-10034-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="44" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Fasta (.fa, .fasta) file association" id="10035" customizedId="Fasta-fa,fasta-10035-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .fa,fasta file association">
+                    <serializedBean>
+                      <property name="description" type="string">Fasta File</property>
+                      <property name="extension" type="string">fa,fasta</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-fasta+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Jalview Features (.features, .jvfeatures) BEGIN -->
+                  <action name="Jalview Features (.features, .jvfeatures) message" id="10036" customizedId="Jalview Features-features,jvfeatures-10036-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Jalview Features (.features, .jvfeatures)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview Features (.features, .jvfeatures) progress bar 48" id="10037" customizedId="Jalview Features-features,jvfeatures-10037-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="48" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Jalview Features (.features, .jvfeatures) file association" id="10038" customizedId="Jalview Features-features,jvfeatures-10038-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .features,jvfeatures file association">
+                    <serializedBean>
+                      <property name="description" type="string">Jalview Features File</property>
+                      <property name="extension" type="string">features,jvfeatures</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-jalview-features+text</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- GenBank Flatfile (.gb, .gbk) BEGIN -->
+                  <action name="GenBank Flatfile (.gb, .gbk) message" id="10039" customizedId="GenBank Flatfile-gb,gbk-10039-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">GenBank Flatfile (.gb, .gbk)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="GenBank Flatfile (.gb, .gbk) progress bar 52" id="10040" customizedId="GenBank Flatfile-gb,gbk-10040-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="52" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="GenBank Flatfile (.gb, .gbk) file association" id="10041" customizedId="GenBank Flatfile-gb,gbk-10041-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .gb,gbk file association">
+                    <serializedBean>
+                      <property name="description" type="string">GenBank Flatfile File</property>
+                      <property name="extension" type="string">gb,gbk</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-genbank+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Generic Features Format v2 (.gff2) BEGIN -->
+                  <action name="Generic Features Format v2 (.gff2) message" id="10042" customizedId="Generic Features Format v2-gff2-10042-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Generic Features Format v2 (.gff2)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Generic Features Format v2 (.gff2) progress bar 56" id="10043" customizedId="Generic Features Format v2-gff2-10043-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="56" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Generic Features Format v2 (.gff2) file association" id="10044" customizedId="Generic Features Format v2-gff2-10044-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .gff2 file association">
+                    <serializedBean>
+                      <property name="description" type="string">Generic Features Format v2 File</property>
+                      <property name="extension" type="string">gff2</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-gff2+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Generic Features Format v3 (.gff3) BEGIN -->
+                  <action name="Generic Features Format v3 (.gff3) message" id="10045" customizedId="Generic Features Format v3-gff3-10045-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Generic Features Format v3 (.gff3)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Generic Features Format v3 (.gff3) progress bar 60" id="10046" customizedId="Generic Features Format v3-gff3-10046-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="60" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Generic Features Format v3 (.gff3) file association" id="10047" customizedId="Generic Features Format v3-gff3-10047-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .gff3 file association">
+                    <serializedBean>
+                      <property name="description" type="string">Generic Features Format v3 File</property>
+                      <property name="extension" type="string">gff3</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-gff3+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- JnetFile (.concise, .jnet) BEGIN -->
+                  <action name="JnetFile (.concise, .jnet) message" id="10048" customizedId="JnetFile-concise,jnet-10048-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">JnetFile (.concise, .jnet)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="JnetFile (.concise, .jnet) progress bar 64" id="10049" customizedId="JnetFile-concise,jnet-10049-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="64" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="JnetFile (.concise, .jnet) file association" id="10050" customizedId="JnetFile-concise,jnet-10050-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .concise,jnet file association">
+                    <serializedBean>
+                      <property name="description" type="string">JnetFile File</property>
+                      <property name="extension" type="string">concise,jnet</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-jalview-jnet+text</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- MSF (.msf) BEGIN -->
+                  <action name="MSF (.msf) message" id="10051" customizedId="MSF-msf-10051-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">MSF (.msf)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="MSF (.msf) progress bar 68" id="10052" customizedId="MSF-msf-10052-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="68" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="MSF (.msf) file association" id="10053" customizedId="MSF-msf-10053-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .msf file association">
+                    <serializedBean>
+                      <property name="description" type="string">MSF File</property>
+                      <property name="extension" type="string">msf</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-msf+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- PFAM (.pfam) BEGIN -->
+                  <action name="PFAM (.pfam) message" id="10054" customizedId="PFAM-pfam-10054-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">PFAM (.pfam)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PFAM (.pfam) progress bar 72" id="10055" customizedId="PFAM-pfam-10055-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="72" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PFAM (.pfam) file association" id="10056" customizedId="PFAM-pfam-10056-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .pfam file association">
+                    <serializedBean>
+                      <property name="description" type="string">PFAM File</property>
+                      <property name="extension" type="string">pfam</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-pfam+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- PHYLIP (.phy) BEGIN -->
+                  <action name="PHYLIP (.phy) message" id="10057" customizedId="PHYLIP-phy-10057-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">PHYLIP (.phy)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PHYLIP (.phy) progress bar 76" id="10058" customizedId="PHYLIP-phy-10058-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="76" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PHYLIP (.phy) file association" id="10059" customizedId="PHYLIP-phy-10059-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .phy file association">
+                    <serializedBean>
+                      <property name="description" type="string">PHYLIP File</property>
+                      <property name="extension" type="string">phy</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-phylip+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- PileUp (.pileup) BEGIN -->
+                  <action name="PileUp (.pileup) message" id="10060" customizedId="PileUp-pileup-10060-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">PileUp (.pileup)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PileUp (.pileup) progress bar 80" id="10061" customizedId="PileUp-pileup-10061-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="80" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PileUp (.pileup) file association" id="10062" customizedId="PileUp-pileup-10062-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .pileup file association">
+                    <serializedBean>
+                      <property name="description" type="string">PileUp File</property>
+                      <property name="extension" type="string">pileup</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-pileup+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- PIR (.pir) BEGIN -->
+                  <action name="PIR (.pir) message" id="10063" customizedId="PIR-pir-10063-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">PIR (.pir)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PIR (.pir) progress bar 84" id="10064" customizedId="PIR-pir-10064-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="84" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="PIR (.pir) file association" id="10065" customizedId="PIR-pir-10065-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .pir file association">
+                    <serializedBean>
+                      <property name="description" type="string">PIR File</property>
+                      <property name="extension" type="string">pir</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-pir+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- RNAML (.rnaml) BEGIN -->
+                  <action name="RNAML (.rnaml) message" id="10066" customizedId="RNAML-rnaml-10066-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">RNAML (.rnaml)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="RNAML (.rnaml) progress bar 88" id="10067" customizedId="RNAML-rnaml-10067-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="88" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="RNAML (.rnaml) file association" id="10068" customizedId="RNAML-rnaml-10068-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .rnaml file association">
+                    <serializedBean>
+                      <property name="description" type="string">RNAML File</property>
+                      <property name="extension" type="string">rnaml</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/rnaml+xml</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Substitution Matrix (.mat) BEGIN -->
+                  <action name="Substitution Matrix (.mat) message" id="10069" customizedId="Substitution Matrix-mat-10069-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Substitution Matrix (.mat)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Substitution Matrix (.mat) progress bar 92" id="10070" customizedId="Substitution Matrix-mat-10070-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="92" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Substitution Matrix (.mat) file association" id="10071" customizedId="Substitution Matrix-mat-10071-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .mat file association">
+                    <serializedBean>
+                      <property name="description" type="string">Substitution Matrix File</property>
+                      <property name="extension" type="string">mat</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-jalview-scorematrix+text</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
+<!-- Stockholm (.stk, .sto) BEGIN -->
+                  <action name="Stockholm (.stk, .sto) message" id="10072" customizedId="Stockholm-stk,sto-10072-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">Stockholm (.stk, .sto)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Stockholm (.stk, .sto) progress bar 96" id="10073" customizedId="Stockholm-stk,sto-10073-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="96" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="Stockholm (.stk, .sto) file association" id="10074" customizedId="Stockholm-stk,sto-10074-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .stk,sto file association">
+                    <serializedBean>
+                      <property name="description" type="string">Stockholm File</property>
+                      <property name="extension" type="string">stk,sto</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="EDITOR" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="true" />
+                      <property name="unix" type="boolean" value="true" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">application/x-stockholm+txt</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>Jalview-File.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
index a260658..afac20c 100644 (file)
@@ -9,6 +9,8 @@ $$</array>
 <string>$$ICONFILE$$.icns</string>
 <key>CFBundleTypeRole</key>
 <string>$$ROLE$$</string>
+<key>LSHandlerRank</key>
+<string>$$RANK$$</string>
 <key>CFBundleTypeMIMETypes</key>
 <array>
 <string>$$MIMETYPE$$</string>
diff --git a/utils/install4j/file_associations_template-install4j10.xml b/utils/install4j/file_associations_template-install4j10.xml
new file mode 100644 (file)
index 0000000..8663ed9
--- /dev/null
@@ -0,0 +1,45 @@
+<!-- $$NAME$$ ($$DISPLAYEXTENSION$$) BEGIN -->
+                  <action name="$$NAME$$ ($$DISPLAYEXTENSION$$) message" id="$$ID$$" customizedId="$$NAME$$-$$EXTENSION$$-$$ID$$-message" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="detailMessage" type="string">$$NAME$$ ($$DISPLAYEXTENSION$$)</property>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="$$NAME$$ ($$DISPLAYEXTENSION$$) progress bar $$PROGRESSPERCENT$$" id="$$ID1$$" customizedId="$$NAME$$-$$EXTENSION$$-$$ID1$$-progressbar" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="$$PROGRESSPERCENT$$" />
+                    </serializedBean>
+                  </action>
+
+                  <action name="$$NAME$$ ($$DISPLAYEXTENSION$$) file association" id="$$ID2$$" customizedId="$$NAME$$-$$EXTENSION$$-$$ID2$$-fileassociation" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make .$$EXTENSION$$ file association">
+                    <serializedBean>
+                      <property name="description" type="string">$$NAME$$ File</property>
+                      <property name="extension" type="string">$$EXTENSION$$</property>
+                      <property name="launcherId" type="string">JALVIEW</property>
+                      <!--<property name="macIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>$$ICONFILE$$.icns</string>
+                        </object>
+                      </property>
+                      <property name="macRole" type="enum" class="com.install4j.runtime.beans.actions.desktop.MacAssociationRole" value="$$MACASSOCIATIONROLE$$" />-->
+                      <property name="restartFinder" type="boolean" value="true" />
+                      <property name="selected" type="boolean" value="$$PRIMARY$$" />
+                      <property name="unix" type="boolean" value="$$ADDUNIXEXTENSION$$" />
+                      <property name="unixIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>$$ICONFILE$$.png</string>
+                        </object>
+                      </property>
+                      <property name="unixMimeType" type="string">$$MIMETYPE$$</property>
+                      <property name="windowsIconFile">
+                        <object class="com.install4j.api.beans.ExternalFile">
+                          <string>$$ICONFILE$$.ico</string>
+                        </object>
+                      </property>
+                    </serializedBean>
+                  </action>
+<!-- END -->
+
diff --git a/utils/install4j/install4j10_template.install4j b/utils/install4j/install4j10_template.install4j
new file mode 100644 (file)
index 0000000..ac2f1eb
--- /dev/null
@@ -0,0 +1,1496 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<install4j version="10.0.4" transformSequenceNumber="10">
+  <directoryPresets config="bin/jalview" />
+  <application name="${compiler:JALVIEW_APPLICATION_NAME}" applicationId="${compiler:WINDOWS_APPLICATION_ID}" mediaDir="${compiler:BUILD_DIR}" lzmaCompression="true" shortName="${compiler:INTERNAL_ID}" publisher="University of Dundee" publisherWeb="https://www.jalview.org/" version="${compiler:JALVIEW_VERSION}" allPathsRelative="true" macVolumeId="5aac4968c304f65" javaMinVersion="${compiler:JAVA_MIN_VERSION}" javaMaxVersion="${compiler:JAVA_MAX_VERSION}" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
+    <searchSequence>
+      <directory location="${compiler:JRE_DIR}" />
+      <registry />
+      <envVar name="JAVA_HOME" />
+    </searchSequence>
+    <variables>
+      <variable name="JALVIEW_NAME" value="Jalview" />
+      <variable name="JALVIEW_APPLICATION_NAME" value="Jalview" />
+      <variable name="JALVIEW_DIR" value="../.." />
+      <variable name="BUILD_DIR" value="${compiler:JALVIEW_DIR}/build/install4j" />
+      <variable name="OSX_KEYSTORE" />
+      <variable name="OSX_APPLEID" />
+      <variable name="JSIGN_SH" value="echo" />
+      <variable name="JRE_DIR" value="jre" description="The folder under the app folder that the JRE will be either copied or unpacked into" />
+      <variable name="INSTALLER_TEMPLATE_VERSION" value="DEVELOPMENT_default" />
+      <variable name="JALVIEW_VERSION" value="DEVELOPMENT" />
+      <variable name="JAVA_MIN_VERSION" value="11" />
+      <variable name="JAVA_MAX_VERSION" value="11" />
+      <variable name="JAVA_VERSION" value="11" />
+      <variable name="JAVA_INTEGER_VERSION" value="11" />
+      <variable name="VERSION" value="DEVELOPMENT" />
+      <variable name="MACOS_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-x64/jre" />
+      <variable name="MACOS_AARCH64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-aarch64/jre" />
+      <variable name="WINDOWS_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-windows-x64/jre" />
+      <variable name="LINUX_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-x64/jre" />
+      <variable name="LINUX_AARCH64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-aarch64/jre" />
+      <variable name="MACOS_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_mac_x64.tar.gz" />
+      <variable name="MACOS_AARCH64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_mac_aarch64.tar.gz" />
+      <variable name="WINDOWS_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_windows_x64.tar.gz" />
+      <variable name="LINUX_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_linux_x64.tar.gz" />
+      <variable name="LINUX_AARCH64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_linux_aarch64.tar.gz" />
+      <variable name="COPYRIGHT_MESSAGE" value="..." />
+      <variable name="BUNDLE_ID" value="org.jalview.jalview-desktop" />
+      <variable name="INTERNAL_ID" value="Jalview" />
+      <variable name="WINDOWS_APPLICATION_ID" value="6595-2347-1923-0725" />
+      <variable name="MACOS_DMG_DS_STORE" value="utils/channels/default/images/jalview_default_dmg_DS_Store" />
+      <variable name="MACOS_DMG_BG_IMAGE" value="utils/channels/default/images/jalview_default_dmg_background-72dpi.png" />
+      <variable name="WRAPPER_LINK" value="jalview" />
+      <variable name="BASH_WRAPPER_SCRIPT" value="jalview.sh" />
+      <variable name="WRAPPER_SCRIPT_BIN_DIR" value="bin" />
+      <variable name="INSTALLER_NAME" value="Jalview Installer" />
+      <variable name="INSTALL4J_UTILS_DIR" value="utils/install4j" />
+      <variable name="GETDOWN_CHANNEL_DIR" value="build/website/docroot/getdown/default" />
+      <variable name="GETDOWN_FILES_DIR" value="getdown/files" />
+      <variable name="GETDOWN_RESOURCE_DIR" value="resource" />
+      <variable name="GETDOWN_DIST_DIR" value="dist" />
+      <variable name="GETDOWN_ALT_DIR" value="alt" />
+      <variable name="GETDOWN_INSTALL_DIR" value="install" />
+      <variable name="INFO_PLIST_FILE_ASSOCIATIONS_FILE" value="file_associations_auto-Info_plist.xml" />
+      <variable name="APPLICATION_CATEGORIES" value="Science;Biology;Java;" />
+      <variable name="APPLICATION_FOLDER" value="Jalview" />
+      <variable name="UNIX_APPLICATION_FOLDER" value="jalview" />
+      <variable name="EXECUTABLE_NAME" value="jalview" />
+      <variable name="EXTRA_SCHEME" value="jalviewx" />
+      <variable name="MAC_ICONS_FILE" value="utils/channels/release/images/jalview_logo.icns" />
+      <variable name="WINDOWS_ICONS_FILE" value="utils/channels/release/images/jalview_logo.ico" />
+      <variable name="PNG_ICON_FILE" value="utils/channels/release/images/jalview_logo.png" />
+      <variable name="BACKGROUND" value="utils/channels/release/images/jalview_logo_background_fade-640x480.png" />
+    </variables>
+    <codeSigning macEnabled="true" macPkcs12File="${compiler:OSX_KEYSTORE}" macNotarize="true" appleId="${compiler:OSX_APPLEID}">
+      <macAdditionalBinaries>
+        <entry>*.dylib</entry>
+        <entry>*.so</entry>
+        <entry>*.jnilib</entry>
+        <entry>unpack200</entry>
+        <entry>tnameserv</entry>
+        <entry>servertool</entry>
+        <entry>rmiregistry</entry>
+        <entry>rmid</entry>
+        <entry>policytool</entry>
+        <entry>pack200</entry>
+        <entry>orbd</entry>
+        <entry>keytool</entry>
+        <entry>jjs</entry>
+        <entry>java</entry>
+        <entry>jspawnhelper</entry>
+        <entry>libfreetype.dylib.6</entry>
+        <entry>applet</entry>
+        <entry>jaotc</entry>
+        <entry>jfr</entry>
+        <entry>jrunscript</entry>
+        <entry>libjli.dylib</entry>
+      </macAdditionalBinaries>
+    </codeSigning>
+  </application>
+  <files defaultUninstallMode="2">
+    <filesets>
+      <fileset name="Full file set" id="734" customizedId="FULL_FILE_SET" />
+      <fileset name="macOS x64 JVM" id="2801" customizedId="MACOS_X64_JVM" />
+      <fileset name="macOS aarch64 JVM" id="2803" customizedId="MACOS_AARCH64_JVM" />
+    </filesets>
+    <roots>
+      <root id="735" fileset="734" />
+      <root id="2802" fileset="2801" />
+      <root id="2804" fileset="2803" />
+    </roots>
+    <mountPoints>
+      <mountPoint id="736" root="735" />
+      <mountPoint id="2805" root="2802" />
+      <mountPoint id="2806" root="2804" />
+    </mountPoints>
+    <entries>
+      <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_CHANNEL_DIR}/${compiler:JAVA_VERSION}" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files">
+        <exclude>
+          <entry location="${compiler:WRAPPER_SCRIPT_BIN_DIR}" />
+        </exclude>
+      </dirEntry>
+      <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/examples" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="examples" />
+      <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_CHANNEL_DIR}/${compiler:JAVA_VERSION}/${compiler:WRAPPER_SCRIPT_BIN_DIR}" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:WRAPPER_SCRIPT_BIN_DIR}" overrideDirMode="true" />
+      <dirEntry mountPoint="2805" file="${compiler:MACOS_X64_JAVA_VM_DIR}" overwriteMode="1" fileMode="755" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
+      <dirEntry mountPoint="2806" file="${compiler:MACOS_AARCH64_JAVA_VM_DIR}" overwriteMode="1" fileMode="755" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
+    </entries>
+    <components>
+      <component name="jalview_getdown" id="1031">
+        <include>
+          <entry filesetId="734" />
+        </include>
+      </component>
+    </components>
+  </files>
+  <launchers>
+    <launcher name="Jalview Launcher" id="737" customizedId="JALVIEW" menuName="${compiler:JALVIEW_APPLICATION_NAME}" icnsFile="${compiler:JALVIEW_DIR}/${compiler:MAC_ICONS_FILE}" customMacBundleIdentifier="true" macBundleIdentifier="${compiler:BUNDLE_ID}" fileset="734" useCustomMacosExecutableName="true" customMacosExecutableName="${compiler:JALVIEW_APPLICATION_NAME}">
+      <executable name="${compiler:EXECUTABLE_NAME}" iconSet="true" iconFile="${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}" redirectStdout="true" executableMode="gui" changeWorkingDirectory="false" singleInstance="true" checkConsoleParameter="true">
+        <versionInfo include="true" fileDescription="${compiler:sys.fullName}" legalCopyright="${compiler:COPYRIGHT_MESSAGE}" internalName="${compiler:INTERNAL_ID}" productName="${compiler:sys.fullName}" />
+      </executable>
+      <splashScreen width="640" height="480" bitmapFile="${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}" textOverlay="true">
+        <text>
+          <statusLine x="85" y="81" text="${compiler:sys.shortName}" fontSize="18" />
+          <versionLine x="85" y="109" text="version ${compiler:sys.version}" />
+        </text>
+      </splashScreen>
+      <java mainClass="com.threerings.getdown.launcher.GetdownApp" vmParameters="-Dinstaller_template_version=${compiler:INSTALLER_TEMPLATE_VERSION}" arguments="&quot;${launcher:sys.launcherDirectory}&quot; jalview">
+        <classPath>
+          <archive location="getdown-launcher.jar" />
+          <archive location="${compiler:GETDOWN_INSTALL_DIR}/getdown-launcher.jar" failOnError="false" />
+        </classPath>
+        <nativeLibraryDirectories>
+          <directory name="${compiler:JRE_DIR}/bin" />
+          <directory name="${compiler:GETDOWN_DIST_DIR}" />
+        </nativeLibraryDirectories>
+      </java>
+      <infoPlist>${compiler:file("${compiler:INFO_PLIST_FILE_ASSOCIATIONS_FILE}")}</infoPlist>
+      <iconImageFiles>
+        <file path="${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}" />
+      </iconImageFiles>
+      <macStaticAssociations>
+        <urlHandler scheme="jalview" />
+        <urlHandler scheme="jalviews" />
+        <urlHandler scheme="${compiler:EXTRA_SCHEME}" />
+      </macStaticAssociations>
+    </launcher>
+  </launchers>
+  <installerGui autoUpdateDescriptorUrl="https://www.jalview.org/install4j/updates.xml">
+    <applications>
+      <application id="installer" beanClass="com.install4j.runtime.beans.applications.InstallerApplication" styleId="35" customIcnsFile="${compiler:JALVIEW_DIR}/${compiler:MAC_ICONS_FILE}" customIcoFile="${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}">
+        <serializedBean>
+          <property name="useCustomIcon" type="boolean" value="true" />
+        </serializedBean>
+        <styleOverrides>
+          <styleOverride name="Customize banner image" enabled="true">
+            <group id="146" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
+              <serializedBean>
+                <property name="backgroundColor">
+                  <object class="com.install4j.runtime.beans.LightOrDarkColor">
+                    <object class="java.awt.Color">
+                      <int>255</int>
+                      <int>255</int>
+                      <int>255</int>
+                      <int>255</int>
+                    </object>
+                    <object class="java.awt.Color">
+                      <int>49</int>
+                      <int>52</int>
+                      <int>53</int>
+                      <int>255</int>
+                    </object>
+                  </object>
+                </property>
+                <property name="borderSides">
+                  <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
+                    <property name="bottom" type="boolean" value="true" />
+                  </object>
+                </property>
+                <property name="imageEdgeBackgroundColor">
+                  <object class="java.awt.Color">
+                    <int>255</int>
+                    <int>255</int>
+                    <int>255</int>
+                    <int>255</int>
+                  </object>
+                </property>
+                <property name="imageEdgeBorder" type="boolean" value="true" />
+                <property name="imageFile">
+                  <object class="com.install4j.api.beans.ExternalFile">
+                    <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
+                  </object>
+                </property>
+                <property name="insets">
+                  <object class="java.awt.Insets">
+                    <int>5</int>
+                    <int>10</int>
+                    <int>10</int>
+                    <int>10</int>
+                  </object>
+                </property>
+              </serializedBean>
+              <externalParametrizationPropertyNames>
+                <propertyName>imageAnchor</propertyName>
+                <propertyName>imageEdgeBackgroundColor</propertyName>
+                <propertyName>imageFile</propertyName>
+              </externalParametrizationPropertyNames>
+            </group>
+          </styleOverride>
+          <styleOverride name="Jalview" enabled="true">
+            <formComponent name="Watermark" id="352" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" insetTop="0" insetLeft="5" insetBottom="0" useExternalParametrization="true" externalParametrizationName="Jalview" externalParametrizationMode="include">
+              <serializedBean>
+                <property name="enabledTitleText" type="boolean" value="false" />
+              </serializedBean>
+              <externalParametrizationPropertyNames>
+                <propertyName>labelText</propertyName>
+              </externalParametrizationPropertyNames>
+            </formComponent>
+          </styleOverride>
+        </styleOverrides>
+        <startup>
+          <screen id="1" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
+            <actions>
+              <action id="22" beanClass="com.install4j.runtime.beans.actions.misc.RequestPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="obtainIfAdminWin" type="boolean" value="false" />
+                </serializedBean>
+              </action>
+              <action name="Set unixUserBinDir (Linux or Unix)" id="2738" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="script">
+                    <object class="com.install4j.api.beans.ScriptProperty">
+                      <property name="value" type="string">String userHome = (String)context.getVariable("sys.userHome");
+
+ArrayList&lt;String&gt; tryPaths = new ArrayList&lt;&gt; ();
+tryPaths.add(userHome + File.separator + "bin");
+tryPaths.add(userHome + File.separator + ".local" + File.separator + "bin");
+tryPaths.add(userHome + File.separator + "local" + File.separator + "bin");
+tryPaths.add(userHome + File.separator + "opt" + File.separator + "bin");
+
+if (Util.isMacOS()) { // &amp;&amp; root permission?
+    tryPaths.add(File.separator + "usr" + File.separator + "local" + File.separator + "bin"); 
+}
+
+for (int i = 0; i &lt; tryPaths.size(); i++) {
+    String tryPath = tryPaths.get(i);
+    File unixUserBinDir = new File(tryPath);
+    if (unixUserBinDir.exists()) {
+        return tryPath;
+    }
+}
+
+return null;
+</property>
+                    </object>
+                  </property>
+                  <property name="variableName" type="string">unixUserBinDir</property>
+                </serializedBean>
+                <condition>Util.isLinux() || Util.isUnixInstaller() || Util.isMacOS()</condition>
+              </action>
+              <action name="Set macWrapperLinkLocation (macOS)" id="2745" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="script">
+                    <object class="com.install4j.api.beans.ScriptProperty">
+                      <property name="value" type="string">String javaHome = System.getProperty("java.home");
+String appName = ((String)context.getCompilerVariable("JALVIEW_APPLICATION_NAME")) + ".app";
+int i = javaHome.indexOf(appName);
+String wrapperLink = null;
+if (i &gt; -1) {
+    wrapperLink = javaHome.substring(0, i) + appName + File.separator + "Contents" + File.separator + "MacOS" + File.separator + ((String)context.getCompilerVariable("WRAPPER_LINK"));
+}
+return wrapperLink;
+</property>
+                    </object>
+                  </property>
+                  <property name="variableName" type="string">macWrapperLinkLocation</property>
+                </serializedBean>
+                <condition>Util.isMacOS()</condition>
+              </action>
+            </actions>
+          </screen>
+        </startup>
+        <screens>
+          <screen id="2" beanClass="com.install4j.runtime.beans.screens.WelcomeScreen" rollbackBarrierExitCode="0">
+            <styleOverrides>
+              <styleOverride name="Customize banner image" enabled="true">
+                <group id="145" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
+                  <serializedBean>
+                    <property name="backgroundColor">
+                      <object class="com.install4j.runtime.beans.LightOrDarkColor">
+                        <object class="java.awt.Color">
+                          <int>255</int>
+                          <int>255</int>
+                          <int>255</int>
+                          <int>255</int>
+                        </object>
+                        <object class="java.awt.Color">
+                          <int>49</int>
+                          <int>52</int>
+                          <int>53</int>
+                          <int>255</int>
+                        </object>
+                      </object>
+                    </property>
+                    <property name="borderSides">
+                      <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
+                        <property name="bottom" type="boolean" value="true" />
+                      </object>
+                    </property>
+                    <property name="imageEdgeBackgroundColor">
+                      <object class="com.install4j.runtime.beans.LightOrDarkColor">
+                        <object class="java.awt.Color">
+                          <int>25</int>
+                          <int>143</int>
+                          <int>220</int>
+                          <int>255</int>
+                        </object>
+                        <object class="java.awt.Color">
+                          <int>0</int>
+                          <int>74</int>
+                          <int>151</int>
+                          <int>255</int>
+                        </object>
+                      </object>
+                    </property>
+                    <property name="imageEdgeBorder" type="boolean" value="true" />
+                    <property name="imageFile">
+                      <object class="com.install4j.api.beans.ExternalFile">
+                        <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
+                      </object>
+                    </property>
+                    <property name="insets">
+                      <object class="java.awt.Insets">
+                        <int>5</int>
+                        <int>10</int>
+                        <int>10</int>
+                        <int>10</int>
+                      </object>
+                    </property>
+                  </serializedBean>
+                  <externalParametrizationPropertyNames>
+                    <propertyName>imageAnchor</propertyName>
+                    <propertyName>imageEdgeBackgroundColor</propertyName>
+                    <propertyName>imageFile</propertyName>
+                  </externalParametrizationPropertyNames>
+                </group>
+              </styleOverride>
+            </styleOverrides>
+            <actions>
+              <action id="7" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" multiExec="true">
+                <serializedBean>
+                  <property name="excludedVariables" type="array" elementType="string" length="1">
+                    <element index="0">sys.installationDir</element>
+                  </property>
+                </serializedBean>
+                <condition>context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition>
+              </action>
+            </actions>
+            <formComponents>
+              <formComponent id="3" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
+                <serializedBean>
+                  <property name="labelText" type="string">${form:welcomeMessage}</property>
+                </serializedBean>
+                <visibilityScript>!context.isConsole()</visibilityScript>
+              </formComponent>
+              <formComponent id="4" beanClass="com.install4j.runtime.beans.formcomponents.ConsoleHandlerFormComponent">
+                <serializedBean>
+                  <property name="consoleScript">
+                    <object class="com.install4j.api.beans.ScriptProperty">
+                      <property name="value" type="string">String message = context.getMessage("ConsoleWelcomeLabel", context.getApplicationName());
+return console.askOkCancel(message, true);
+</property>
+                    </object>
+                  </property>
+                </serializedBean>
+              </formComponent>
+              <formComponent id="5" beanClass="com.install4j.runtime.beans.formcomponents.UpdateAlertComponent" useExternalParametrization="true" externalParametrizationName="Update Alert" externalParametrizationMode="include">
+                <externalParametrizationPropertyNames>
+                  <propertyName>updateCheck</propertyName>
+                </externalParametrizationPropertyNames>
+              </formComponent>
+              <formComponent id="6" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetTop="20">
+                <serializedBean>
+                  <property name="labelText" type="string">${i18n:ClickNext}</property>
+                </serializedBean>
+              </formComponent>
+            </formComponents>
+          </screen>
+          <screen id="8" beanClass="com.install4j.runtime.beans.screens.InstallationDirectoryScreen" rollbackBarrierExitCode="0">
+            <condition>!context.getBooleanVariable("sys.confirmedUpdateInstallation")</condition>
+            <actions>
+              <action id="11" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" multiExec="true">
+                <serializedBean>
+                  <property name="excludedVariables" type="array" elementType="string" length="1">
+                    <element index="0">sys.installationDir</element>
+                  </property>
+                </serializedBean>
+                <condition>context.getVariable("sys.responseFile") == null</condition>
+              </action>
+            </actions>
+            <formComponents>
+              <formComponent id="9" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="25">
+                <serializedBean>
+                  <property name="labelText" type="string">${i18n:SelectDirLabel(${compiler:sys.fullName})}</property>
+                </serializedBean>
+              </formComponent>
+              <formComponent id="10" beanClass="com.install4j.runtime.beans.formcomponents.InstallationDirectoryChooserComponent" useExternalParametrization="true" externalParametrizationName="Installation Directory Chooser" externalParametrizationMode="include">
+                <serializedBean>
+                  <property name="requestFocus" type="boolean" value="true" />
+                </serializedBean>
+                <externalParametrizationPropertyNames>
+                  <propertyName>allowSpacesOnUnix</propertyName>
+                  <propertyName>checkFreeSpace</propertyName>
+                  <propertyName>checkWritable</propertyName>
+                  <propertyName>existingDirWarning</propertyName>
+                  <propertyName>manualEntryAllowed</propertyName>
+                  <propertyName>showFreeDiskSpace</propertyName>
+                  <propertyName>showRequiredDiskSpace</propertyName>
+                  <propertyName>standardValidation</propertyName>
+                  <propertyName>suggestAppDir</propertyName>
+                  <propertyName>validateApplicationId</propertyName>
+                  <propertyName>validationScript</propertyName>
+                </externalParametrizationPropertyNames>
+              </formComponent>
+            </formComponents>
+          </screen>
+          <screen id="12" beanClass="com.install4j.runtime.beans.screens.ComponentsScreen" enabled="false" rollbackBarrierExitCode="0">
+            <formComponents>
+              <formComponent id="13" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
+                <serializedBean>
+                  <property name="labelText" type="string">${i18n:SelectComponentsLabel2}</property>
+                </serializedBean>
+                <visibilityScript>!context.isConsole()</visibilityScript>
+              </formComponent>
+              <formComponent id="14" beanClass="com.install4j.runtime.beans.formcomponents.ComponentSelectorComponent" useExternalParametrization="true" externalParametrizationName="Installation Components" externalParametrizationMode="include">
+                <serializedBean>
+                  <property name="fillVertical" type="boolean" value="true" />
+                </serializedBean>
+                <externalParametrizationPropertyNames>
+                  <propertyName>selectionChangedScript</propertyName>
+                </externalParametrizationPropertyNames>
+              </formComponent>
+            </formComponents>
+          </screen>
+          <screen id="1692" beanClass="com.install4j.runtime.beans.screens.FileAssociationsScreen" rollbackBarrierExitCode="0">
+            <formComponents>
+              <formComponent id="1693" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
+                <serializedBean>
+                  <property name="labelText" type="string">${i18n:SelectAssociationsLabel}</property>
+                </serializedBean>
+              </formComponent>
+              <formComponent id="1694" beanClass="com.install4j.runtime.beans.formcomponents.FileAssociationsComponent" useExternalParametrization="true" externalParametrizationName="File Associations" externalParametrizationMode="include">
+                <serializedBean>
+                  <property name="fillVertical" type="boolean" value="true" />
+                  <property name="selectionButtonPosition" type="enum" class="com.install4j.runtime.beans.formcomponents.VerticalDockingPosition" value="TOP" />
+                  <property name="showSelectionButtons" type="boolean" value="true" />
+                </serializedBean>
+                <externalParametrizationPropertyNames>
+                  <propertyName>showSelectionButtons</propertyName>
+                  <propertyName>selectionButtonPosition</propertyName>
+                </externalParametrizationPropertyNames>
+              </formComponent>
+            </formComponents>
+          </screen>
+          <screen id="15" beanClass="com.install4j.runtime.beans.screens.InstallationScreen" rollbackBarrier="true" rollbackBarrierExitCode="0">
+            <actions>
+              <action id="17" beanClass="com.install4j.runtime.beans.actions.InstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" failureStrategy="quit" errorMessage="${i18n:FileCorrupted}" />
+              <action name="Create program group (RELEASE)" id="18" customizedId="PROGRAM_GROUP_RELEASE" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="allUsers" type="boolean" value="false" />
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="programGroupEntryConfigs">
+                    <add>
+                      <object class="com.install4j.runtime.beans.screens.components.ProgramGroupFileConfig">
+                        <property name="name" type="string">Examples</property>
+                        <property name="target">
+                          <object class="java.io.File">
+                            <string>examples</string>
+                          </object>
+                        </property>
+                      </object>
+                    </add>
+                  </property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
+                  <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
+                </serializedBean>
+                <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
+              </action>
+              <action name="Create program group (NON-RELEASE)" id="2730" customizedId="PROGRAM_GROUP_NON_RELEASE" beanClass="com.install4j.runtime.beans.actions.desktop.CreateProgramGroupAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="allUsers" type="boolean" value="false" />
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
+                  <property name="uninstallerMenuName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
+                </serializedBean>
+                <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
+              </action>
+              <action id="19" beanClass="com.install4j.runtime.beans.actions.desktop.RegisterAddRemoveAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="itemName" type="string">${compiler:sys.fullName} ${compiler:sys.version}</property>
+                </serializedBean>
+              </action>
+              <action id="124" beanClass="com.install4j.runtime.beans.actions.control.SetVariableAction" enabled="false" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="script">
+                    <object class="com.install4j.api.beans.ScriptProperty">
+                      <property name="value" type="string" />
+                    </object>
+                  </property>
+                  <property name="variableName" type="string" />
+                </serializedBean>
+                <condition>true</condition>
+              </action>
+              <action id="134" beanClass="com.install4j.runtime.beans.actions.misc.AddVmOptionsAction" enabled="false" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="launcherId" type="string">121</property>
+                  <property name="vmOptions" type="array" elementType="string" length="0" />
+                </serializedBean>
+              </action>
+              <group name="File Associations" id="2251" beanClass="com.install4j.runtime.beans.groups.ActionGroup">
+                <beans>
+                  <action id="2253" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="statusMessage" type="string">Creating file associations...</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+                  <action id="2254" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_INDETERMINATE" />
+                    </serializedBean>
+                  </action>
+                  <group name="File Associations Replacement Group" id="2753" customizedId="EXTENSIONS_REPLACED_BY_GRADLE_PARENT_GROUP" beanClass="com.install4j.runtime.beans.groups.ActionGroup">
+                    <beans>
+                      <action name="EXTENSIONS_REPLACED_BY_GRADLE" id="1691" customizedId="EXTENSIONS" beanClass="com.install4j.runtime.beans.actions.desktop.CreateFileAssociationAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                        <serializedBean>
+                          <property name="description" type="string">This action, identified by its name "EXTENSIONS_REPLACED_BY_GRADLE", will be replaced by gradle with the contents of file 'file_associations_auto_install4j.xml'.</property>
+                          <property name="extension" type="string">extensions_to_be_replaced_by_gradle</property>
+                          <property name="launcherId" type="string">JALVIEW</property>
+                        </serializedBean>
+                      </action>
+                    </beans>
+                  </group>
+                  <action id="2542" beanClass="com.install4j.runtime.beans.actions.control.SetMessageAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="statusMessage" type="string">Finished creating file associations</property>
+                      <property name="useDetail" type="boolean" value="true" />
+                      <property name="useStatus" type="boolean" value="true" />
+                    </serializedBean>
+                  </action>
+                  <action id="2541" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                    <serializedBean>
+                      <property name="percentValue" type="int" value="100" />
+                    </serializedBean>
+                  </action>
+                </beans>
+              </group>
+              <action id="2350" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="launcherId" type="string">JALVIEW</property>
+                  <property name="scheme" type="string">jalview</property>
+                </serializedBean>
+              </action>
+              <action id="2450" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="launcherId" type="string">JALVIEW</property>
+                  <property name="scheme" type="string">jalviews</property>
+                </serializedBean>
+              </action>
+              <action id="2641" beanClass="com.install4j.runtime.beans.actions.desktop.UrlHandlerAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="launcherId" type="string">JALVIEW</property>
+                  <property name="scheme" type="string">${compiler:EXTRA_SCHEME}</property>
+                </serializedBean>
+              </action>
+            </actions>
+            <formComponents>
+              <formComponent id="16" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent">
+                <serializedBean>
+                  <property name="initialStatusMessage" type="string">${i18n:WizardPreparing}</property>
+                </serializedBean>
+              </formComponent>
+            </formComponents>
+          </screen>
+          <screen id="20" beanClass="com.install4j.runtime.beans.screens.FinishedScreen" rollbackBarrierExitCode="0" finishScreen="true">
+            <actions>
+              <action id="2012" beanClass="com.install4j.runtime.beans.actions.desktop.CreateStartMenuEntryAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="allUsers" type="boolean" value="false" />
+                  <property name="categories" type="string">${compiler:APPLICATION_CATEGORIES}</property>
+                  <property name="entryName" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
+                  <property name="file">
+                    <object class="java.io.File">
+                      <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
+                    </object>
+                  </property>
+                  <property name="icon">
+                    <object class="com.install4j.api.beans.ExternalFile">
+                      <string>${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}</string>
+                    </object>
+                  </property>
+                  <property name="programGroupName" type="string">${compiler:JALVIEW_NAME}</property>
+                  <property name="unixIconFile">
+                    <object class="com.install4j.api.beans.ExternalFile">
+                      <string>${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}</string>
+                    </object>
+                  </property>
+                </serializedBean>
+                <condition>!context.getBooleanVariable("sys.programGroupDisabled")</condition>
+              </action>
+              <action id="573" beanClass="com.install4j.runtime.beans.actions.desktop.CreateDesktopLinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make desktop link">
+                <serializedBean>
+                  <property name="allUsers" type="boolean" value="false" />
+                  <property name="description" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
+                  <property name="file">
+                    <object class="java.io.File">
+                      <string>${installer:sys.contentDir}/${compiler:EXECUTABLE_NAME}</string>
+                    </object>
+                  </property>
+                  <property name="name" type="string">${compiler:JALVIEW_APPLICATION_NAME}</property>
+                  <property name="unixIconFile">
+                    <object class="com.install4j.api.beans.ExternalFile">
+                      <string>${compiler:JALVIEW_DIR}/${compiler:PNG_ICON_FILE}</string>
+                    </object>
+                  </property>
+                  <property name="winIconFile">
+                    <object class="com.install4j.api.beans.ExternalFile">
+                      <string>${compiler:JALVIEW_DIR}/${compiler:WINDOWS_ICONS_FILE}</string>
+                    </object>
+                  </property>
+                </serializedBean>
+                <condition>context.getBooleanVariable("createDesktopLinkAction")</condition>
+              </action>
+              <action id="576" beanClass="com.install4j.runtime.beans.actions.desktop.AddToDockAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="executable">
+                    <object class="java.io.File">
+                      <string>${compiler:JALVIEW_APPLICATION_NAME}.app</string>
+                    </object>
+                  </property>
+                </serializedBean>
+                <condition>context.getBooleanVariable("addToDockAction")</condition>
+              </action>
+              <action name="Linux/Unix symlink" id="2733" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make symlink to wrapper script">
+                <serializedBean>
+                  <property name="file">
+                    <object class="java.io.File">
+                      <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}</string>
+                    </object>
+                  </property>
+                  <property name="linkFile">
+                    <object class="java.io.File">
+                      <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:WRAPPER_LINK}</string>
+                    </object>
+                  </property>
+                </serializedBean>
+                <condition>Util.isLinux() || Util.isUnixInstaller() || Util.isMacOS()</condition>
+              </action>
+              <action name="Add Jalview bin to the user's path (Windows)" id="2740" beanClass="com.install4j.runtime.beans.actions.misc.ModifyEnvironmentVariableAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not add &quot;${installer:sys.contentDir}\${compiler:WRAPPER_SCRIPT_BIN_DIR}&quot; to the Path environment variable">
+                <serializedBean>
+                  <property name="type" type="enum" class="com.install4j.runtime.beans.actions.misc.ModifyStringType" value="APPEND" />
+                  <property name="value" type="string">${installer:sys.contentDir}\${compiler:WRAPPER_SCRIPT_BIN_DIR}</property>
+                  <property name="variableName" type="string">Path</property>
+                </serializedBean>
+                <condition>context.getBooleanVariable("appendToPathAction")</condition>
+              </action>
+              <action name="Create Linux/Unix symbolic link to jalview.sh in user's local bin" id="2739" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make a ${compiler:WRAPPER_LINK} symbolic link in ~/${installer:unixUserBinDir}">
+                <serializedBean>
+                  <property name="file">
+                    <object class="java.io.File">
+                      <string>${installer:sys.contentDir}/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}</string>
+                    </object>
+                  </property>
+                  <property name="linkFile">
+                    <object class="java.io.File">
+                      <string>${installer:unixUserBinDir}/${compiler:WRAPPER_LINK}</string>
+                    </object>
+                  </property>
+                </serializedBean>
+                <condition>context.getBooleanVariable("makeSymbolicLinkAction") &amp;&amp; ( Util.isLinux() || Util.isUnixInstaller() ) &amp;&amp; ( context.getVariable("unixUserBinDir") != null )</condition>
+              </action>
+              <action name="Create macOS symbolic link to jalview in user's local bin" id="2743" beanClass="com.install4j.runtime.beans.actions.files.CreateSymlinkAction" actionElevationType="elevated" rollbackBarrierExitCode="0" errorMessage="Could not make a ${compiler:WRAPPER_LINK} symbolic link in ~/${installer:unixUserBinDir}">
+                <serializedBean>
+                  <property name="file">
+                    <object class="java.io.File">
+                      <string>${installer:macWrapperLinkLocation}</string>
+                    </object>
+                  </property>
+                  <property name="linkFile">
+                    <object class="java.io.File">
+                      <string>${installer:unixUserBinDir}/${compiler:WRAPPER_LINK}</string>
+                    </object>
+                  </property>
+                </serializedBean>
+                <condition>context.getBooleanVariable("makeSymbolicLinkAction") &amp;&amp; Util.isMacOS() &amp;&amp; ( context.getVariable("unixUserBinDir") != null ) &amp;&amp; ( context.getVariable("macWrapperLinkLocation") != null )</condition>
+              </action>
+            </actions>
+            <formComponents>
+              <formComponent id="21" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
+                <serializedBean>
+                  <property name="labelText" type="string">${form:finishedMessage}</property>
+                </serializedBean>
+              </formComponent>
+              <formComponent name="Add a desktop link" id="574" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
+                <serializedBean>
+                  <property name="checkboxText" type="string">${i18n:CreateDesktopIcon}</property>
+                  <property name="initiallySelected" type="boolean" value="true" />
+                  <property name="variableName" type="string">createDesktopLinkAction</property>
+                </serializedBean>
+                <visibilityScript>!Util.isMacOS()</visibilityScript>
+              </formComponent>
+              <formComponent name="Add an executable to the dock" id="577" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
+                <serializedBean>
+                  <property name="checkboxText" type="string">${i18n:AddToDock}</property>
+                  <property name="initiallySelected" type="boolean" value="true" />
+                  <property name="variableName" type="string">addToDockAction</property>
+                </serializedBean>
+                <visibilityScript>Util.isMacOS()</visibilityScript>
+              </formComponent>
+              <formComponent name="Add jalview bin to the user's Path environment variable (Windows)" id="2734" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
+                <serializedBean>
+                  <property name="checkboxText" type="string">Add ${compiler:JALVIEW_APPLICATION_NAME}'s bin folder to the Path environment variable</property>
+                  <property name="initiallySelected" type="boolean" value="true" />
+                  <property name="variableName" type="string">appendToPathAction</property>
+                </serializedBean>
+                <visibilityScript>Util.isWindows()</visibilityScript>
+              </formComponent>
+              <formComponent name="Make a symbolic link to jalview.sh bash script in the user's local bin (Linux or Unix)" id="2736" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
+                <serializedBean>
+                  <property name="checkboxText" type="string">Make a ${compiler:WRAPPER_LINK} symbolic link in ${installer:unixUserBinDir}</property>
+                  <property name="initiallySelected" type="boolean" value="true" />
+                  <property name="variableName" type="string">makeSymbolicLinkAction</property>
+                </serializedBean>
+                <visibilityScript>( Util.isLinux() || Util.isUnixInstaller() || ( Util.isMacOS() &amp;&amp; ( context.getVariable("macWrapperLinkLocation") != null ) ) ) &amp;&amp; ( context.getVariable("unixUserBinDir") != null )</visibilityScript>
+              </formComponent>
+            </formComponents>
+          </screen>
+        </screens>
+      </application>
+      <application id="uninstaller" beanClass="com.install4j.runtime.beans.applications.UninstallerApplication" styleId="35">
+        <serializedBean>
+          <property name="customMacosExecutableName" type="string">${i18n:UninstallerMenuEntry(${compiler:sys.fullName})}</property>
+          <property name="useCustomMacosExecutableName" type="boolean" value="true" />
+        </serializedBean>
+        <styleOverrides>
+          <styleOverride name="Customize banner image" enabled="true">
+            <group id="147" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
+              <serializedBean>
+                <property name="backgroundColor">
+                  <object class="com.install4j.runtime.beans.LightOrDarkColor">
+                    <object class="java.awt.Color">
+                      <int>255</int>
+                      <int>255</int>
+                      <int>255</int>
+                      <int>255</int>
+                    </object>
+                    <object class="java.awt.Color">
+                      <int>49</int>
+                      <int>52</int>
+                      <int>53</int>
+                      <int>255</int>
+                    </object>
+                  </object>
+                </property>
+                <property name="borderSides">
+                  <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
+                    <property name="bottom" type="boolean" value="true" />
+                  </object>
+                </property>
+                <property name="imageEdgeBackgroundColor">
+                  <object class="java.awt.Color">
+                    <int>192</int>
+                    <int>192</int>
+                    <int>192</int>
+                    <int>255</int>
+                  </object>
+                </property>
+                <property name="imageEdgeBorder" type="boolean" value="true" />
+                <property name="imageFile">
+                  <object class="com.install4j.api.beans.ExternalFile">
+                    <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
+                  </object>
+                </property>
+                <property name="insets">
+                  <object class="java.awt.Insets">
+                    <int>5</int>
+                    <int>10</int>
+                    <int>10</int>
+                    <int>10</int>
+                  </object>
+                </property>
+              </serializedBean>
+              <externalParametrizationPropertyNames>
+                <propertyName>imageAnchor</propertyName>
+                <propertyName>imageEdgeBackgroundColor</propertyName>
+                <propertyName>imageFile</propertyName>
+              </externalParametrizationPropertyNames>
+            </group>
+          </styleOverride>
+        </styleOverrides>
+        <startup>
+          <screen id="23" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
+            <actions>
+              <action id="33" beanClass="com.install4j.runtime.beans.actions.misc.LoadResponseFileAction" rollbackBarrierExitCode="0" />
+              <action id="34" beanClass="com.install4j.runtime.beans.actions.misc.RequireInstallerPrivilegesAction" actionElevationType="none" rollbackBarrierExitCode="0" />
+            </actions>
+          </screen>
+        </startup>
+        <screens>
+          <screen id="24" beanClass="com.install4j.runtime.beans.screens.UninstallWelcomeScreen" rollbackBarrierExitCode="0">
+            <formComponents>
+              <formComponent id="25" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
+                <serializedBean>
+                  <property name="labelText" type="string">${form:welcomeMessage}</property>
+                </serializedBean>
+                <visibilityScript>!context.isConsole()</visibilityScript>
+              </formComponent>
+              <formComponent id="26" beanClass="com.install4j.runtime.beans.formcomponents.ConsoleHandlerFormComponent">
+                <serializedBean>
+                  <property name="consoleScript">
+                    <object class="com.install4j.api.beans.ScriptProperty">
+                      <property name="value" type="string">String message = context.getMessage("ConfirmUninstall", context.getApplicationName());
+return console.askYesNo(message, true);
+</property>
+                    </object>
+                  </property>
+                </serializedBean>
+              </formComponent>
+            </formComponents>
+          </screen>
+          <screen id="27" beanClass="com.install4j.runtime.beans.screens.UninstallationScreen" rollbackBarrierExitCode="0">
+            <actions>
+              <action id="659" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="progressChangeType" type="enum" class="com.install4j.runtime.beans.actions.control.ProgressChangeType" value="SET_INDETERMINATE" />
+                </serializedBean>
+              </action>
+              <action id="29" beanClass="com.install4j.runtime.beans.actions.UninstallFilesAction" actionElevationType="elevated" rollbackBarrierExitCode="0" />
+              <action id="660" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" enabled="false" actionElevationType="none" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="percentValue" type="int" value="95" />
+                </serializedBean>
+              </action>
+              <action id="1525" beanClass="com.install4j.runtime.beans.actions.files.DeleteFileAction" actionElevationType="elevated" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="files" type="array" class="java.io.File" length="40">
+                    <element index="0">
+                      <object class="java.io.File">
+                        <string>jre</string>
+                      </object>
+                    </element>
+                    <element index="1">
+                      <object class="java.io.File">
+                        <string>jre.jar</string>
+                      </object>
+                    </element>
+                    <element index="2">
+                      <object class="java.io.File">
+                        <string>.install4j</string>
+                      </object>
+                    </element>
+                    <element index="3">
+                      <object class="java.io.File">
+                        <string>getdown-launcher.jar</string>
+                      </object>
+                    </element>
+                    <element index="4">
+                      <object class="java.io.File">
+                        <string>getdown-launcher-old.jar</string>
+                      </object>
+                    </element>
+                    <element index="5">
+                      <object class="java.io.File">
+                        <string>getdown-launcher-new.jar</string>
+                      </object>
+                    </element>
+                    <element index="6">
+                      <object class="java.io.File">
+                        <string>gettingdown.lock</string>
+                      </object>
+                    </element>
+                    <element index="7">
+                      <object class="java.io.File">
+                        <string>jre.zip</string>
+                      </object>
+                    </element>
+                    <element index="8">
+                      <object class="java.io.File">
+                        <string>digest.txt</string>
+                      </object>
+                    </element>
+                    <element index="9">
+                      <object class="java.io.File">
+                        <string>digest2.txt</string>
+                      </object>
+                    </element>
+                    <element index="10">
+                      <object class="java.io.File">
+                        <string>getdown-launcher.jarv</string>
+                      </object>
+                    </element>
+                    <element index="11">
+                      <object class="java.io.File">
+                        <string>getdown-launcher-new.jarv</string>
+                      </object>
+                    </element>
+                    <element index="12">
+                      <object class="java.io.File">
+                        <string>launcher.log</string>
+                      </object>
+                    </element>
+                    <element index="13">
+                      <object class="java.io.File">
+                        <string>proxy.txt</string>
+                      </object>
+                    </element>
+                    <element index="14">
+                      <object class="java.io.File">
+                        <string>build_properties</string>
+                      </object>
+                    </element>
+                    <element index="15">
+                      <object class="java.io.File">
+                        <string>channel_launch*.jvl</string>
+                      </object>
+                    </element>
+                    <element index="16">
+                      <object class="java.io.File">
+                        <string>jalview*.jvl</string>
+                      </object>
+                    </element>
+                    <element index="17">
+                      <object class="java.io.File">
+                        <string>*.jarv</string>
+                      </object>
+                    </element>
+                    <element index="18">
+                      <object class="java.io.File">
+                        <string>*.log</string>
+                      </object>
+                    </element>
+                    <element index="19">
+                      <object class="java.io.File">
+                        <string>*.txt</string>
+                      </object>
+                    </element>
+                    <element index="20">
+                      <object class="java.io.File">
+                        <string>*_new</string>
+                      </object>
+                    </element>
+                    <element index="21">
+                      <object class="java.io.File">
+                        <string>hs_err_*.*</string>
+                      </object>
+                    </element>
+                    <element index="22">
+                      <object class="java.io.File">
+                        <string>${compiler:GETDOWN_DIST_DIR}</string>
+                      </object>
+                    </element>
+                    <element index="23">
+                      <object class="java.io.File">
+                        <string>${compiler:GETDOWN_ALT_DIR}</string>
+                      </object>
+                    </element>
+                    <element index="24">
+                      <object class="java.io.File">
+                        <string>${compiler:GETDOWN_RESOURCE_DIR}</string>
+                      </object>
+                    </element>
+                    <element index="25">
+                      <object class="java.io.File">
+                        <string>META-INF</string>
+                      </object>
+                    </element>
+                    <element index="26">
+                      <object class="java.io.File">
+                        <string>install</string>
+                      </object>
+                    </element>
+                    <element index="27">
+                      <object class="java.io.File">
+                        <string>resource</string>
+                      </object>
+                    </element>
+                    <element index="28">
+                      <object class="java.io.File">
+                        <string>dist</string>
+                      </object>
+                    </element>
+                    <element index="29">
+                      <object class="java.io.File">
+                        <string>release</string>
+                      </object>
+                    </element>
+                    <element index="30">
+                      <object class="java.io.File">
+                        <string>alt</string>
+                      </object>
+                    </element>
+                    <element index="31">
+                      <object class="java.io.File">
+                        <string>dev</string>
+                      </object>
+                    </element>
+                    <element index="32">
+                      <object class="java.io.File">
+                        <string>build</string>
+                      </object>
+                    </element>
+                    <element index="33">
+                      <object class="java.io.File">
+                        <string>alt_*</string>
+                      </object>
+                    </element>
+                    <element index="34">
+                      <object class="java.io.File">
+                        <string>dev_*</string>
+                      </object>
+                    </element>
+                    <element index="35">
+                      <object class="java.io.File">
+                        <string>build_*</string>
+                      </object>
+                    </element>
+                    <element index="36">
+                      <object class="java.io.File">
+                        <string>${compiler:WRAPPER_SCRIPT_BIN_DIR}</string>
+                      </object>
+                    </element>
+                    <element index="37">
+                      <object class="java.io.File">
+                        <string>bin</string>
+                      </object>
+                    </element>
+                    <element index="38">
+                      <object class="java.io.File">
+                        <string>channel.props</string>
+                      </object>
+                    </element>
+                    <element index="39">
+                      <object class="java.io.File">
+                        <string>channel.propsv</string>
+                      </object>
+                    </element>
+                  </property>
+                  <property name="recursive" type="boolean" value="true" />
+                </serializedBean>
+              </action>
+              <action id="1791" beanClass="com.install4j.runtime.beans.actions.control.SetProgressAction" actionElevationType="none" rollbackBarrierExitCode="0">
+                <serializedBean>
+                  <property name="percentValue" type="int" value="100" />
+                </serializedBean>
+              </action>
+            </actions>
+            <formComponents>
+              <formComponent id="28" beanClass="com.install4j.runtime.beans.formcomponents.ProgressComponent">
+                <serializedBean>
+                  <property name="initialStatusMessage" type="string">${i18n:UninstallerPreparing}</property>
+                </serializedBean>
+              </formComponent>
+            </formComponents>
+          </screen>
+          <screen id="32" beanClass="com.install4j.runtime.beans.screens.UninstallFailureScreen" rollbackBarrierExitCode="0" finishScreen="true" />
+          <screen id="30" beanClass="com.install4j.runtime.beans.screens.UninstallSuccessScreen" styleId="41" rollbackBarrierExitCode="0" finishScreen="true">
+            <formComponents>
+              <formComponent id="31" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
+                <serializedBean>
+                  <property name="labelText" type="string">${form:successMessage}</property>
+                </serializedBean>
+              </formComponent>
+            </formComponents>
+          </screen>
+        </screens>
+      </application>
+      <application name="MacOS Setup" id="2746" beanClass="com.install4j.runtime.beans.applications.CustomApplication" fileset="734" macEntitlementsFile="${compiler:JALVIEW_DIR}/utils/osx_signing/entitlements.txt">
+        <serializedBean>
+          <property name="executableDirectory">
+            <object class="java.io.File">
+              <string>.</string>
+            </object>
+          </property>
+          <property name="executableName" type="string">${compiler:WRAPPER_LINK}_setup</property>
+          <property name="windowTitle" type="string">${compiler:sys.fullName}</property>
+        </serializedBean>
+        <startup>
+          <screen id="2747" beanClass="com.install4j.runtime.beans.screens.StartupScreen" rollbackBarrierExitCode="0">
+            <actions>
+              <link id="2749" targetId="22" />
+              <link id="2750" targetId="2738" />
+              <link id="2751" targetId="2745" />
+            </actions>
+          </screen>
+        </startup>
+        <screens>
+          <screen id="2772" beanClass="com.install4j.runtime.beans.screens.FormScreen" rollbackBarrierExitCode="0" backButton="hidden" finishScreen="true">
+            <serializedBean>
+              <property name="title" type="string">Running ${i18n:SetupAppTitle}</property>
+            </serializedBean>
+            <actions>
+              <link id="2778" targetId="576" />
+              <link id="2779" targetId="2743" />
+            </actions>
+            <formComponents>
+              <formComponent id="2773" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent" insetBottom="10">
+                <serializedBean>
+                  <property name="labelText" type="string">${i18n:FinishedLabel(${compiler:JALVIEW_APPLICATION_NAME})}</property>
+                </serializedBean>
+              </formComponent>
+              <formComponent name="Add an executable to the dock" id="2775" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
+                <serializedBean>
+                  <property name="checkboxText" type="string">${i18n:AddToDock}</property>
+                  <property name="initiallySelected" type="boolean" value="true" />
+                  <property name="variableName" type="string">addToDockAction</property>
+                </serializedBean>
+                <visibilityScript>Util.isMacOS()</visibilityScript>
+              </formComponent>
+              <formComponent name="Make a symbolic link to jalview.sh bash script in the user's local bin (Linux or Unix)" id="2777" beanClass="com.install4j.runtime.beans.formcomponents.CheckboxComponent">
+                <serializedBean>
+                  <property name="checkboxText" type="string">Make a ${compiler:WRAPPER_LINK} symbolic link in ${installer:unixUserBinDir}</property>
+                  <property name="initiallySelected" type="boolean" value="true" />
+                  <property name="variableName" type="string">makeSymbolicLinkAction</property>
+                </serializedBean>
+                <visibilityScript>( Util.isLinux() || Util.isUnixInstaller() || ( Util.isMacOS() &amp;&amp; ( context.getVariable("macWrapperLinkLocation") != null ) ) ) &amp;&amp; ( context.getVariable("unixUserBinDir") != null )</visibilityScript>
+              </formComponent>
+              <formComponent id="2780" beanClass="com.install4j.runtime.beans.formcomponents.MultilineLabelComponent">
+                <serializedBean>
+                  <property name="labelText" type="string">
+${i18n:ClickFinish}
+
+${compiler:JALVIEW_APPLICATION_NAME} will now launch.</property>
+                </serializedBean>
+              </formComponent>
+            </formComponents>
+          </screen>
+        </screens>
+      </application>
+    </applications>
+    <styles defaultStyleId="35">
+      <style name="Standard" id="35" beanClass="com.install4j.runtime.beans.styles.FormStyle">
+        <formComponents>
+          <formComponent name="Header" id="36" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetTop="0" insetBottom="0">
+            <serializedBean>
+              <property name="styleId" type="string">48</property>
+            </serializedBean>
+          </formComponent>
+          <group name="Main" id="37" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup">
+            <serializedBean>
+              <property name="imageEdgeAxisType" type="enum" class="com.install4j.runtime.beans.formcomponents.AxisType" value="HORIZONTAL" />
+              <property name="imageEdgeBackgroundColor">
+                <object class="java.awt.Color">
+                  <int>255</int>
+                  <int>255</int>
+                  <int>255</int>
+                  <int>255</int>
+                </object>
+              </property>
+              <property name="imageFile">
+                <object class="com.install4j.api.beans.ExternalFile">
+                  <string>${compiler:JALVIEW_DIR}/${compiler:BACKGROUND}</string>
+                </object>
+              </property>
+              <property name="imageOverlap" type="boolean" value="true" />
+            </serializedBean>
+            <beans>
+              <formComponent id="38" beanClass="com.install4j.runtime.beans.styles.ContentComponent" insetTop="10" insetLeft="20" insetBottom="10" insetRight="20" />
+              <formComponent name="Watermark" id="39" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" insetTop="0" insetLeft="5" insetBottom="0" useExternalParametrization="true" externalParametrizationName="${compiler:JALVIEW_APPLICATION_NAME}" externalParametrizationMode="include">
+                <serializedBean>
+                  <property name="enabledTitleText" type="boolean" value="false" />
+                </serializedBean>
+                <externalParametrizationPropertyNames>
+                  <propertyName>labelText</propertyName>
+                </externalParametrizationPropertyNames>
+              </formComponent>
+              <formComponent name="Footer" id="40" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetTop="0" insetBottom="0">
+                <serializedBean>
+                  <property name="styleId" type="string">52</property>
+                </serializedBean>
+              </formComponent>
+            </beans>
+          </group>
+        </formComponents>
+      </style>
+      <style name="Banner" id="41" beanClass="com.install4j.runtime.beans.styles.FormStyle">
+        <formComponents>
+          <group id="42" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize banner image" externalParametrizationMode="include">
+            <serializedBean>
+              <property name="backgroundColor">
+                <object class="com.install4j.runtime.beans.LightOrDarkColor">
+                  <object class="java.awt.Color">
+                    <int>255</int>
+                    <int>255</int>
+                    <int>255</int>
+                    <int>255</int>
+                  </object>
+                  <object class="java.awt.Color">
+                    <int>49</int>
+                    <int>52</int>
+                    <int>53</int>
+                    <int>255</int>
+                  </object>
+                </object>
+              </property>
+              <property name="borderSides">
+                <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
+                  <property name="bottom" type="boolean" value="true" />
+                </object>
+              </property>
+              <property name="imageEdgeBackgroundColor">
+                <object class="com.install4j.runtime.beans.LightOrDarkColor">
+                  <object class="java.awt.Color">
+                    <int>25</int>
+                    <int>143</int>
+                    <int>220</int>
+                    <int>255</int>
+                  </object>
+                  <object class="java.awt.Color">
+                    <int>0</int>
+                    <int>74</int>
+                    <int>151</int>
+                    <int>255</int>
+                  </object>
+                </object>
+              </property>
+              <property name="imageEdgeBorder" type="boolean" value="true" />
+              <property name="imageFile">
+                <object class="com.install4j.api.beans.ExternalFile">
+                  <string>${compiler:sys.install4jHome}/resource/styles/wizard.png</string>
+                </object>
+              </property>
+              <property name="insets">
+                <object class="java.awt.Insets">
+                  <int>5</int>
+                  <int>10</int>
+                  <int>10</int>
+                  <int>10</int>
+                </object>
+              </property>
+            </serializedBean>
+            <beans>
+              <formComponent id="43" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent" insetTop="0">
+                <serializedBean>
+                  <property name="labelFontSizePercent" type="int" value="130" />
+                  <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" />
+                  <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" />
+                </serializedBean>
+              </formComponent>
+              <formComponent id="44" beanClass="com.install4j.runtime.beans.formcomponents.SeparatorComponent" />
+              <formComponent id="45" beanClass="com.install4j.runtime.beans.styles.ContentComponent" insetTop="10" insetBottom="0" />
+            </beans>
+            <externalParametrizationPropertyNames>
+              <propertyName>imageAnchor</propertyName>
+              <propertyName>imageEdgeBackgroundColor</propertyName>
+              <propertyName>imageFile</propertyName>
+            </externalParametrizationPropertyNames>
+          </group>
+          <formComponent id="46" beanClass="com.install4j.runtime.beans.styles.NestedStyleComponent" insetBottom="0">
+            <serializedBean>
+              <property name="styleId" type="string">52</property>
+            </serializedBean>
+          </formComponent>
+        </formComponents>
+      </style>
+      <group name="Style components" id="47" beanClass="com.install4j.runtime.beans.groups.StyleGroup">
+        <beans>
+          <style name="Standard header" id="48" beanClass="com.install4j.runtime.beans.styles.FormStyle">
+            <serializedBean>
+              <property name="fillVertical" type="boolean" value="false" />
+              <property name="standalone" type="boolean" value="false" />
+              <property name="verticalAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTH" />
+            </serializedBean>
+            <formComponents>
+              <group id="49" beanClass="com.install4j.runtime.beans.groups.VerticalFormComponentGroup" useExternalParametrization="true" externalParametrizationName="Customize title bar" externalParametrizationMode="include">
+                <serializedBean>
+                  <property name="backgroundColor">
+                    <object class="com.install4j.runtime.beans.LightOrDarkColor">
+                      <object class="java.awt.Color">
+                        <int>255</int>
+                        <int>255</int>
+                        <int>255</int>
+                        <int>255</int>
+                      </object>
+                      <object class="java.awt.Color">
+                        <int>49</int>
+                        <int>52</int>
+                        <int>53</int>
+                        <int>255</int>
+                      </object>
+                    </object>
+                  </property>
+                  <property name="borderSides">
+                    <object class="com.install4j.runtime.beans.formcomponents.BorderSides">
+                      <property name="bottom" type="boolean" value="true" />
+                    </object>
+                  </property>
+                  <property name="imageAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="NORTHEAST" />
+                  <property name="imageEdgeBorderWidth" type="int" value="2" />
+                  <property name="imageFile">
+                    <object class="com.install4j.api.beans.ExternalFile">
+                      <string>icon:${installer:sys.installerApplicationMode}_header.png</string>
+                    </object>
+                  </property>
+                  <property name="imageInsets">
+                    <object class="java.awt.Insets">
+                      <int>0</int>
+                      <int>5</int>
+                      <int>1</int>
+                      <int>1</int>
+                    </object>
+                  </property>
+                  <property name="insets">
+                    <object class="java.awt.Insets">
+                      <int>0</int>
+                      <int>20</int>
+                      <int>0</int>
+                      <int>10</int>
+                    </object>
+                  </property>
+                </serializedBean>
+                <beans>
+                  <formComponent name="Title" id="50" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent">
+                    <serializedBean>
+                      <property name="labelFontStyle" type="enum" class="com.install4j.runtime.beans.formcomponents.FontStyle" value="BOLD" />
+                      <property name="labelFontType" type="enum" class="com.install4j.runtime.beans.formcomponents.FontType" value="DERIVED" />
+                    </serializedBean>
+                  </formComponent>
+                  <formComponent name="Subtitle" id="51" beanClass="com.install4j.runtime.beans.styles.ScreenTitleComponent" insetLeft="8">
+                    <serializedBean>
+                      <property name="titleType" type="enum" class="com.install4j.runtime.beans.styles.TitleType" value="SUB_TITLE" />
+                    </serializedBean>
+                  </formComponent>
+                </beans>
+                <externalParametrizationPropertyNames>
+                  <propertyName>backgroundColor</propertyName>
+                  <propertyName>foregroundColor</propertyName>
+                  <propertyName>imageAnchor</propertyName>
+                  <propertyName>imageFile</propertyName>
+                  <propertyName>imageOverlap</propertyName>
+                </externalParametrizationPropertyNames>
+              </group>
+            </formComponents>
+          </style>
+          <style name="Standard footer" id="52" beanClass="com.install4j.runtime.beans.styles.FormStyle">
+            <serializedBean>
+              <property name="fillVertical" type="boolean" value="false" />
+              <property name="standalone" type="boolean" value="false" />
+              <property name="verticalAnchor" type="enum" class="com.install4j.api.beans.Anchor" value="SOUTH" />
+            </serializedBean>
+            <formComponents>
+              <group id="53" beanClass="com.install4j.runtime.beans.groups.HorizontalFormComponentGroup">
+                <serializedBean>
+                  <property name="alignFirstLabel" type="boolean" value="false" />
+                  <property name="insets">
+                    <object class="java.awt.Insets">
+                      <int>3</int>
+                      <int>5</int>
+                      <int>8</int>
+                      <int>5</int>
+                    </object>
+                  </property>
+                </serializedBean>
+                <beans>
+                  <formComponent id="54" beanClass="com.install4j.runtime.beans.formcomponents.SpringComponent" />
+                  <formComponent name="Back button" id="55" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent">
+                    <serializedBean>
+                      <property name="buttonText" type="string">&lt; ${i18n:ButtonBack}</property>
+                      <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="PREVIOUS" />
+                    </serializedBean>
+                  </formComponent>
+                  <formComponent name="Next button" id="56" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent">
+                    <serializedBean>
+                      <property name="buttonText" type="string">${i18n:ButtonNext} &gt;</property>
+                      <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="NEXT" />
+                    </serializedBean>
+                  </formComponent>
+                  <formComponent name="Cancel button" id="57" beanClass="com.install4j.runtime.beans.styles.StandardControlButtonComponent" insetLeft="5">
+                    <serializedBean>
+                      <property name="buttonText" type="string">${i18n:ButtonCancel}</property>
+                      <property name="controlButtonType" type="enum" class="com.install4j.api.context.ControlButtonType" value="CANCEL" />
+                    </serializedBean>
+                  </formComponent>
+                </beans>
+              </group>
+            </formComponents>
+          </style>
+        </beans>
+      </group>
+    </styles>
+  </installerGui>
+  <mediaSets>
+    <windows name="Windows x64 EXE Installer" id="743" customizedId="WINDOWS-X64-EXE" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:APPLICATION_FOLDER}" runPostProcessor="true" postProcessor="${compiler:JSIGN_SH} $EXECUTABLE" customInstallBaseDir="~/AppData/Local" architecture="64">
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:WINDOWS_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
+    </windows>
+    <macosArchive name="macOS x64 Disk Image" id="878" customizedId="MACOS-X64-DMG" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-macOS-x64-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" volumeName="${compiler:INSTALLER_NAME}" launcherId="737" setupAppId="2746">
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="none" includedJre="${compiler:MACOS_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
+      <topLevelFiles>
+        <symlink name="&quot; &quot;" target="/Applications" />
+        <file name=".background/jalview_dmg_background.png" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_BG_IMAGE}" />
+        <file name=".DS_Store" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_DS_STORE}" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/jvl_file.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/jvl_file.icns" />
+        <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/MacOS/${compiler:WRAPPER_LINK}" target="../Resources/app/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}" />
+      </topLevelFiles>
+    </macosArchive>
+    <macosArchive name="macOS aarch64 Disk Image" id="2796" customizedId="MACOS-AARCH64-DMG" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-macOS-aarch64-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" volumeName="${compiler:INSTALLER_NAME}" architecture="aarch64" launcherId="737" setupAppId="2746">
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2801" />
+      </exclude>
+      <jreBundle jreBundleSource="none" />
+      <topLevelFiles>
+        <symlink name="&quot; &quot;" target="/Applications" />
+        <file name=".background/jalview_dmg_background.png" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_BG_IMAGE}" />
+        <file name=".DS_Store" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_DS_STORE}" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/jvl_file.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/jvl_file.icns" />
+        <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/MacOS/${compiler:WRAPPER_LINK}" target="../Resources/app/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}" />
+      </topLevelFiles>
+    </macosArchive>
+    <unixInstaller name="Linux x64 Shell Installer" id="1595" customizedId="LINUX-X64-SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux-x64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
+    </unixInstaller>
+    <unixInstaller name="Linux aarch64 Shell Installer" id="2782" customizedId="LINUX-AARCH64-SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux-aarch64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_AARCH64_JAVA_VM_TGZ}" manualJreEntry="true" />
+    </unixInstaller>
+    <unixArchive name="Unix .tar.gz Archive" id="1596" customizedId="UNIX--TGZ" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}">
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
+    </unixArchive>
+    <unixInstaller name="Unix Shell Installer" id="2639" customizedId="UNIX--SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
+    </unixInstaller>
+  </mediaSets>
+  <buildIds>
+    <mediaSet refId="743" />
+    <mediaSet refId="878" />
+    <mediaSet refId="2796" />
+    <mediaSet refId="1595" />
+    <mediaSet refId="2782" />
+    <mediaSet refId="1596" />
+    <mediaSet refId="2639" />
+  </buildIds>
+</install4j>
index 23ff9c9..979b1a9 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<install4j version="9.0.5" transformSequenceNumber="9">
+<install4j version="9.0.7" transformSequenceNumber="9">
   <directoryPresets config="bin/jalview" />
   <application name="${compiler:JALVIEW_APPLICATION_NAME}" applicationId="${compiler:WINDOWS_APPLICATION_ID}" mediaDir="${compiler:BUILD_DIR}" lzmaCompression="true" shortName="${compiler:INTERNAL_ID}" publisher="University of Dundee" publisherWeb="https://www.jalview.org/" version="${compiler:JALVIEW_VERSION}" allPathsRelative="true" macVolumeId="5aac4968c304f65" javaMinVersion="${compiler:JAVA_MIN_VERSION}" javaMaxVersion="${compiler:JAVA_MAX_VERSION}" allowBetaVM="true" jdkMode="jdk" jdkName="JDK 11.0">
     <searchSequence>
       <variable name="JAVA_VERSION" value="11" />
       <variable name="JAVA_INTEGER_VERSION" value="11" />
       <variable name="VERSION" value="DEVELOPMENT" />
-      <variable name="MACOS_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-x64/jre" />
-      <variable name="WINDOWS_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-windows-x64/jre" />
-      <variable name="LINUX_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-x64/jre" />
-      <variable name="MACOS_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_mac_x64.tar.gz" />
-      <variable name="WINDOWS_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_windows_x64.tar.gz" />
-      <variable name="LINUX_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_linux_x64.tar.gz" />
+      <variable name="MACOS_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-x64/jre" />
+      <variable name="MACOS_AARCH64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-mac-aarch64/jre" />
+      <variable name="WINDOWS_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-windows-x64/jre" />
+      <variable name="LINUX_X64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-x64/jre" />
+      <variable name="LINUX_AARCH64_JAVA_VM_DIR" value="${compiler:env.HOME}/buildtools/jre/jre-${compiler:JAVA_INTEGER_VERSION}-linux-aarch64/jre" />
+      <variable name="MACOS_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_mac_x64.tar.gz" />
+      <variable name="MACOS_AARCH64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_mac_aarch64.tar.gz" />
+      <variable name="WINDOWS_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_windows_x64.tar.gz" />
+      <variable name="LINUX_X64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_linux_x64.tar.gz" />
+      <variable name="LINUX_AARCH64_JAVA_VM_TGZ" value="${compiler:env.HOME}/buildtools/jre/tgz/jre_${compiler:JAVA_INTEGER_VERSION}_linux_aarch64.tar.gz" />
       <variable name="COPYRIGHT_MESSAGE" value="..." />
       <variable name="BUNDLE_ID" value="org.jalview.jalview-desktop" />
       <variable name="INTERNAL_ID" value="Jalview" />
       <variable name="WINDOWS_APPLICATION_ID" value="6595-2347-1923-0725" />
-      <variable name="MACOS_DMG_DS_STORE" value="jalview_dmg_DS_Store" />
-      <variable name="MACOS_DMG_BG_IMAGE" value="jalview_dmg_background-72dpi.png" />
+      <variable name="MACOS_DMG_DS_STORE" value="utils/channels/default/images/jalview_default_dmg_DS_Store" />
+      <variable name="MACOS_DMG_BG_IMAGE" value="utils/channels/default/images/jalview_default_dmg_background-72dpi.png" />
       <variable name="WRAPPER_LINK" value="jalview" />
       <variable name="BASH_WRAPPER_SCRIPT" value="jalview.sh" />
       <variable name="WRAPPER_SCRIPT_BIN_DIR" value="bin" />
   <files defaultUninstallMode="2" preserveSymlinks="false">
     <filesets>
       <fileset name="Full file set" id="734" customizedId="FULL_FILE_SET" />
-      <fileset name="Mac OS X JRE" id="880" />
-      <fileset name="Windows JRE" id="882" />
-      <fileset name="Jalview application" id="1873" />
+      <fileset name="macOS x64 JVM" id="2801" customizedId="MACOS_X64_JVM" />
+      <fileset name="macOS aarch64 JVM" id="2803" customizedId="MACOS_AARCH64_JVM" />
     </filesets>
     <roots>
       <root id="735" fileset="734" />
-      <root id="881" fileset="880" />
-      <root id="883" fileset="882" />
-      <root id="1874" fileset="1873" />
+      <root id="2802" fileset="2801" />
+      <root id="2804" fileset="2803" />
     </roots>
     <mountPoints>
-      <mountPoint id="454" />
       <mountPoint id="736" root="735" />
-      <mountPoint id="884" root="881" />
-      <mountPoint id="885" root="883" />
-      <mountPoint id="1875" root="1874" />
+      <mountPoint id="2805" root="2802" />
+      <mountPoint id="2806" root="2804" />
     </mountPoints>
     <entries>
-      <dirEntry mountPoint="454" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_FILES_DIR}/${compiler:JAVA_VERSION}" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files" />
       <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_CHANNEL_DIR}/${compiler:JAVA_VERSION}" uninstallMode="2" overrideOverwriteMode="true" overrideUninstallMode="true" subDirectory="files">
         <exclude>
           <entry location="${compiler:WRAPPER_SCRIPT_BIN_DIR}" />
       </dirEntry>
       <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/examples" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="examples" />
       <dirEntry mountPoint="736" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_CHANNEL_DIR}/${compiler:JAVA_VERSION}/${compiler:WRAPPER_SCRIPT_BIN_DIR}" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:WRAPPER_SCRIPT_BIN_DIR}" overrideDirMode="true" />
-      <dirEntry mountPoint="884" file="${compiler:MACOS_JAVA_VM_DIR}" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
-      <dirEntry mountPoint="885" file="${compiler:WINDOWS_JAVA_VM_DIR}" fileMode="755" overrideFileMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
-      <dirEntry mountPoint="1875" file="${compiler:JALVIEW_DIR}/${compiler:GETDOWN_CHANNEL_DIR}/${compiler:JAVA_VERSION}/${compiler:GETDOWN_DIST_DIR}" overwriteMode="1" uninstallMode="2" overrideFileMode="true" overrideOverwriteMode="true" overrideUninstallMode="true" entryMode="subdir" subDirectory="${compiler:GETDOWN_DIST_DIR}" overrideDirMode="true" />
+      <dirEntry mountPoint="2805" file="${compiler:MACOS_X64_JAVA_VM_DIR}" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
+      <dirEntry mountPoint="2806" file="${compiler:MACOS_AARCH64_JAVA_VM_DIR}" entryMode="subdir" subDirectory="${compiler:JRE_DIR}" />
     </entries>
     <components>
       <component name="jalview_getdown" id="1031">
           <entry filesetId="734" />
         </include>
       </component>
-      <component name="macos_java_vm" id="1155">
-        <include>
-          <entry filesetId="880" />
-        </include>
-      </component>
-      <component name="windows_java_vm" id="1156">
-        <include>
-          <entry filesetId="882" />
-        </include>
-      </component>
-      <component name="getdown" id="1276">
-        <include>
-          <entry defaultFileset="true" />
-        </include>
-      </component>
-      <component name="jalview" id="1881">
-        <include>
-          <entry filesetId="1873" />
-        </include>
-      </component>
     </components>
   </files>
   <launchers>
@@ -1421,31 +1399,35 @@ ${compiler:JALVIEW_APPLICATION_NAME} will now launch.</property>
   </installerGui>
   <mediaSets>
     <windows name="Windows x64 EXE Installer" id="743" customizedId="WINDOWS-X64-EXE" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:APPLICATION_FOLDER}" runPostProcessor="true" postProcessor="${compiler:JSIGN_SH} $EXECUTABLE" customInstallBaseDir="~/AppData/Local">
-      <excludedComponents>
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1276" />
-        <component id="1881" />
-      </excludedComponents>
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
       <exclude>
         <entry defaultFileset="true" />
-        <entry filesetId="880" />
-        <entry filesetId="882" />
-        <entry filesetId="1873" />
-        <entry filesetId="2105" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
       </exclude>
-      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:WINDOWS_JAVA_VM_TGZ}" manualJreEntry="true" />
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:WINDOWS_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
     </windows>
-    <macosArchive name="macOS Disk Image" id="878" customizedId="MACOS-X64-DMG" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" volumeName="${compiler:INSTALLER_NAME}" launcherId="737" executeSetupApp="true" setupAppId="2746">
-      <excludedComponents>
-        <component id="1156" />
-        <component id="1276" />
-        <component id="1881" />
-      </excludedComponents>
+    <macosArchive name="macOS x64 Disk Image" id="878" customizedId="MACOS-X64-DMG" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-macOS-x64-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" volumeName="${compiler:INSTALLER_NAME}" launcherId="737" setupAppId="2746">
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="none" includedJre="${compiler:MACOS_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
+      <topLevelFiles>
+        <symlink name="&quot; &quot;" target="/Applications" />
+        <file name=".background/jalview_dmg_background.png" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_BG_IMAGE}" />
+        <file name=".DS_Store" file="${compiler:JALVIEW_DIR}/${compiler:MACOS_DMG_DS_STORE}" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/Jalview-File.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/Jalview-File.icns" />
+        <file name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/Resources/jvl_file.icns" file="${compiler:JALVIEW_DIR}/${compiler:INSTALL4J_UTILS_DIR}/jvl_file.icns" />
+        <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/MacOS/${compiler:WRAPPER_LINK}" target="../Resources/app/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}" />
+      </topLevelFiles>
+    </macosArchive>
+    <macosArchive name="macOS aarch64 Disk Image" id="2796" customizedId="MACOS-AARCH64-DMG" mediaFileName="${compiler:APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-macOS-aarch64-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" volumeName="${compiler:INSTALLER_NAME}" architecture="aarch64" launcherId="737" setupAppId="2746">
       <exclude>
         <entry defaultFileset="true" />
-        <entry filesetId="882" />
-        <entry filesetId="1873" />
+        <entry filesetId="2801" />
       </exclude>
       <jreBundle jreBundleSource="none" />
       <topLevelFiles>
@@ -1457,59 +1439,57 @@ ${compiler:JALVIEW_APPLICATION_NAME} will now launch.</property>
         <symlink name="${compiler:JALVIEW_APPLICATION_NAME}.app/Contents/MacOS/${compiler:WRAPPER_LINK}" target="../Resources/app/${compiler:WRAPPER_SCRIPT_BIN_DIR}/${compiler:BASH_WRAPPER_SCRIPT}" />
       </topLevelFiles>
     </macosArchive>
-    <unixInstaller name="Linux x64 Shell Installer" id="1595" customizedId="LINUX-X64-SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux_x64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
-      <excludedComponents>
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1276" />
-        <component id="1881" />
-      </excludedComponents>
+    <unixInstaller name="Linux x64 Shell Installer" id="1595" customizedId="LINUX-X64-SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux-x64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
+      <exclude>
+        <entry defaultFileset="true" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
+      </exclude>
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
+    </unixInstaller>
+    <unixInstaller name="Linux aarch64 Shell Installer" id="2782" customizedId="LINUX-AARCH64-SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-linux-aarch64-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
       <exclude>
         <entry defaultFileset="true" />
-        <entry filesetId="880" />
-        <entry filesetId="882" />
-        <entry filesetId="1873" />
-        <entry filesetId="2105" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
       </exclude>
-      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_JAVA_VM_TGZ}" manualJreEntry="true" />
+      <jreBundle jreBundleSource="preCreated" includedJre="${compiler:LINUX_AARCH64_JAVA_VM_TGZ}" manualJreEntry="true" />
     </unixInstaller>
     <unixArchive name="Unix .tar.gz Archive" id="1596" customizedId="UNIX--TGZ" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}">
-      <excludedComponents>
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1276" />
-        <component id="1881" />
-      </excludedComponents>
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
       <exclude>
         <entry defaultFileset="true" />
-        <entry filesetId="880" />
-        <entry filesetId="882" />
-        <entry filesetId="1873" />
-        <entry filesetId="2105" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
       </exclude>
-      <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_JAVA_VM_TGZ}" manualJreEntry="true" />
+      <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
     </unixArchive>
     <unixInstaller name="Unix Shell Installer" id="2639" customizedId="UNIX--SH" mediaFileName="${compiler:UNIX_APPLICATION_FOLDER}-${compiler:JALVIEW_VERSION}-${compiler:sys.platform}-java_${compiler:JAVA_INTEGER_VERSION}" installDir="${compiler:UNIX_APPLICATION_FOLDER}" customInstallBaseDir="~/opt/">
-      <excludedComponents>
-        <component id="1155" />
-        <component id="1156" />
-        <component id="1276" />
-        <component id="1881" />
-      </excludedComponents>
+      <excludedBeans>
+        <bean refId="2746" />
+      </excludedBeans>
       <exclude>
         <entry defaultFileset="true" />
-        <entry filesetId="880" />
-        <entry filesetId="882" />
-        <entry filesetId="1873" />
-        <entry filesetId="2105" />
+        <entry filesetId="2801" />
+        <entry filesetId="2803" />
       </exclude>
-      <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_JAVA_VM_TGZ}" manualJreEntry="true" />
+      <jreBundle jreBundleSource="none" includedJre="${compiler:LINUX_X64_JAVA_VM_TGZ}" manualJreEntry="true" />
     </unixInstaller>
   </mediaSets>
   <buildIds>
     <mediaSet refId="743" />
     <mediaSet refId="878" />
+    <mediaSet refId="2796" />
     <mediaSet refId="1595" />
+    <mediaSet refId="2782" />
     <mediaSet refId="1596" />
     <mediaSet refId="2639" />
   </buildIds>