Merge branch 'develop' into releases/Release_2_11_3_Branch
authorJames Procter <j.procter@dundee.ac.uk>
Thu, 2 Nov 2023 23:34:39 +0000 (23:34 +0000)
committerJames Procter <j.procter@dundee.ac.uk>
Thu, 2 Nov 2023 23:34:39 +0000 (23:34 +0000)
211 files changed:
build.gradle
doc/building.md
examples/groovy/ComputePeptideVariants.groovy
examples/groovy/JvLoadTester.groovy
examples/groovy/PIDmatrix.groovy
examples/groovy/alignLoadedFile.groovy
examples/groovy/annotationForSelectedSequence.groovy
examples/groovy/parseproperties.groovy
examples/groovy/printtitle.groovy
examples/groovy/removeFeaturesByGroup.groovy
examples/groovy/selectColumnsByFeatureAndGroup.groovy
examples/groovy/sitesForSelectedColumns.groovy
examples/groovy/stripUniprotPrefixes.groovy
examples/groovy/visibleFeaturesCounter.groovy
getdown/lib/FJVL_VERSION
getdown/lib/JVL_VERSION
getdown/lib/getdown-core.jar
getdown/lib/getdown-launcher-local.jar
getdown/lib/getdown-launcher.jar
getdown/src/getdown/ant/pom.xml
getdown/src/getdown/core/pom.xml
getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java
getdown/src/getdown/launcher/pom.xml
getdown/src/getdown/mvn_cmd
getdown/src/getdown/pom.xml
gradle.properties
help/help/html/features/clarguments-reference.html
help/help/html/features/groovy.html
help/help/html/features/jmol.html
help/help/html/features/xsspannotation.html
help/help/html/groovy/featuresCounter.html
help/help/html/index.html
help/help/html/logging.html
help/markdown/releases/release-2_11_3_0.md
j11lib/getdown-core.jar
j11lib/groovy-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-all-2.4.21-indy.jar [deleted file]
j11lib/groovy-ant-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-astbuilder-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-cli-commons-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-cli-picocli-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-console-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-contracts-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-datetime-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-dateutil-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-docgenerator-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-ginq-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-groovydoc-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-groovysh-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-jmx-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-json-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-jsr223-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-macro-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-macro-library-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-nio-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-servlet-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-sql-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-swing-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-templates-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-test-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-test-junit5-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-testng-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-toml-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-typecheckers-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-xml-4.0.15.jar [new file with mode: 0644]
j11lib/groovy-yaml-4.0.15.jar [new file with mode: 0644]
j11lib/javaparser-core-3.25.5.jar [new file with mode: 0644]
j8lib/getdown-core.jar
j8lib/groovy-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-all-2.4.21-indy.jar [deleted file]
j8lib/groovy-ant-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-astbuilder-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-cli-commons-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-cli-picocli-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-console-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-contracts-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-datetime-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-dateutil-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-docgenerator-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-ginq-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-groovydoc-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-groovysh-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-jmx-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-json-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-jsr223-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-macro-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-macro-library-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-nio-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-servlet-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-sql-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-swing-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-templates-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-test-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-test-junit5-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-testng-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-toml-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-typecheckers-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-xml-4.0.15.jar [new file with mode: 0644]
j8lib/groovy-yaml-4.0.15.jar [new file with mode: 0644]
j8lib/javaparser-core-3.25.5.jar [new file with mode: 0644]
resources/lang/Messages.properties
schemas/jalview.xsd
schemas/vamsas.xsd
src/jalview/api/structures/JalviewStructureDisplayI.java
src/jalview/bin/Cache.java
src/jalview/bin/Commands.java
src/jalview/bin/Console.java
src/jalview/bin/Jalview.java
src/jalview/bin/argparser/Arg.java
src/jalview/bin/argparser/ArgParser.java
src/jalview/bin/argparser/BootstrapArgs.java
src/jalview/bin/groovy/JalviewObject.java [new file with mode: 0644]
src/jalview/bin/groovy/JalviewObjectI.java [new file with mode: 0644]
src/jalview/datamodel/Alignment.java
src/jalview/datamodel/AlignmentAnnotation.java
src/jalview/datamodel/ContactMapHolder.java
src/jalview/datamodel/ContactMatrix.java
src/jalview/datamodel/ContactMatrixI.java
src/jalview/datamodel/FloatContactMatrix.java [new file with mode: 0644]
src/jalview/datamodel/GroupSetHolder.java [new file with mode: 0644]
src/jalview/datamodel/SeqDistanceContactMatrix.java
src/jalview/ext/jmol/JalviewJmolBinding.java
src/jalview/ext/jmol/JmolCommands.java
src/jalview/fts/service/threedbeacons/TDB_FTSData.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/AnnotationLabels.java
src/jalview/gui/Console.java
src/jalview/gui/Desktop.java
src/jalview/gui/FeatureEditor.java
src/jalview/gui/FeatureSettings.java
src/jalview/gui/FeatureTypeSettings.java
src/jalview/gui/IdCanvas.java
src/jalview/gui/IdwidthAdjuster.java
src/jalview/gui/JvOptionPane.java
src/jalview/gui/QuitHandler.java
src/jalview/gui/ScalePanel.java
src/jalview/gui/SeqCanvas.java
src/jalview/gui/SeqPanel.java
src/jalview/gui/SplashScreen.java
src/jalview/gui/StructureChooser.java
src/jalview/gui/StructureViewerBase.java
src/jalview/gui/WsJobParameters.java
src/jalview/gui/structurechooser/TDBResultAnalyser.java
src/jalview/gui/structurechooser/ThreeDBStructureChooserQuerySource.java
src/jalview/io/DataSourceType.java
src/jalview/io/FileFormat.java
src/jalview/io/FileLoader.java
src/jalview/io/IdentifyFile.java
src/jalview/io/SequenceAnnotationReport.java
src/jalview/io/VamsasAppDatastore.java
src/jalview/jbgui/GStructureViewer.java
src/jalview/project/Jalview2XML.java
src/jalview/renderer/AnnotationRenderer.java
src/jalview/renderer/ContactMapRenderer.java
src/jalview/structure/StructureCommand.java
src/jalview/structure/StructureCommandI.java
src/jalview/structure/StructureCommandsI.java
src/jalview/structures/models/AAStructureBindingModel.java
src/jalview/workers/AlignCalcManager.java
src/jalview/workers/AlignmentAnnotationFactory.java
src/jalview/ws/datamodel/MappableContactMatrixI.java
src/jalview/ws/datamodel/alphafold/MappableContactMatrix.java
src/jalview/ws/datamodel/alphafold/PAEContactMatrix.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/JalviewUserColours.java
src/jalview/xml/binding/jalview/MapListType.java
src/jalview/xml/binding/jalview/MapOnAMatrixType.java [new file with mode: 0644]
src/jalview/xml/binding/jalview/Mapping.java
src/jalview/xml/binding/jalview/MatrixType.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/Property.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
test/jalview/bin/CommandsTest.java
test/jalview/bin/CommandsTest2.java
test/jalview/fts/service/pdb/PDBFTSRestClientTest.java
test/jalview/fts/threedbeacons/TDBeaconsFTSRestClientTest.java
test/jalview/fts/threedbeacons/q99814_tdb_fts_query.txt [new file with mode: 0644]
test/jalview/fts/threedbeacons/q99814_tdb_fts_query_resp.txt [new file with mode: 0644]
test/jalview/fts/threedbeacons/q99814_tdb_pdbfts_query_resp.txt [new file with mode: 0644]
test/jalview/gui/AlignmentPanelTest.java
test/jalview/gui/DesktopTests.java
test/jalview/gui/FeatureSettingsTest.java
test/jalview/gui/ScalePanelTest.java
test/jalview/gui/SeqPanelTest.java
test/jalview/gui/structurechooser/StructureChooserQuerySourceTest.java
test/jalview/io/CrossRef2xmlTests.java
test/jalview/io/SequenceAnnotationReportTest.java
test/jalview/io/cache/JvCacheableInputBoxTest.java
test/jalview/project/Jalview2xmlTests.java
test/jalview/renderer/seqfeatures/FeatureRendererTest.java

index 8ac2757..011be67 100644 (file)
@@ -52,7 +52,7 @@ plugins {
   id 'application'
   id 'eclipse'
   id "com.diffplug.gradle.spotless" version "3.28.0"
-  id 'com.github.johnrengelman.shadow' version '4.0.3'
+  id 'com.github.johnrengelman.shadow' version '6.0.0'
   id 'com.install4j.gradle' version '10.0.3'
   id 'com.dorongold.task-tree' version '2.1.1' // only needed to display task dependency tree with  gradle task1 [task2 ...] taskTree
   id 'com.palantir.git-version' version '0.13.0' apply false
@@ -1851,7 +1851,9 @@ tasks.withType(Test).matching {t -> t.getName().startsWith("testTask")}.all { te
     showExceptions true
     showCauses true
     showStackTraces true
-
+    if (test_output) {
+      showStandardStreams true
+    }
     info.events = [ TestLogEvent.FAILED ]
   }
 
@@ -2154,12 +2156,33 @@ shadowJar {
   if (buildDist) {
     dependsOn makeDist
   }
-  from ("${jalviewDir}/${libDistDir}") {
-    include("*.jar")
-  }
-  manifest {
-    attributes "Implementation-Version": JALVIEW_VERSION,
-    "Application-Name": applicationName
+
+  def jarFiles = fileTree(dir: "${jalviewDir}/${libDistDir}", include: "*.jar", exclude: "regex.jar").getFiles()
+  def groovyJars = jarFiles.findAll {it1 -> file(it1).getName().startsWith("groovy-swing")}
+  def otherJars = jarFiles.findAll {it2 -> !file(it2).getName().startsWith("groovy-swing")}
+  from groovyJars
+  from otherJars
+
+  // we need to include the groovy-swing Include-Package for it to run in the shadowJar
+  doFirst {
+    def jarFileManifests = []
+    groovyJars.each { jarFile ->
+      def mf = zipTree(jarFile).getFiles().find { it.getName().equals("MANIFEST.MF") }
+      if (mf != null) {
+        jarFileManifests += mf
+      }
+    }
+
+    manifest {
+      attributes "Implementation-Version": JALVIEW_VERSION, "Application-Name": applicationName
+      from (jarFileManifests) {
+        eachEntry { details ->
+          if (!details.key.equals("Import-Package")) {
+            details.exclude()
+          }
+        }
+      }
+    }
   }
 
   duplicatesStrategy "INCLUDE"
@@ -3021,6 +3044,7 @@ task sourceDist(type: Tar) {
   into project.name
 
   def EXCLUDE_FILES=[
+    "dist/*",
     "build/*",
     "bin/*",
     "test-output/",
index 34d5d67..bbcc011 100644 (file)
@@ -23,10 +23,10 @@ java -jar getdown-launcher.jar . jalview
 
 > To get set up using _only_ the Eclipse IDE (<https://www.eclipse.org/>) then please see the section [Setting up in Eclipse IDE](#setting-up-in-eclipse-ide) 
 
-The method here is described in terms of using a command line.  You can easily do this on linux or in a Terminal window in macOS.  You can do it in Windows.
+The method here is described assumes using a command line.  You can easily do this on linux or in a Terminal window in macOS.  You can do it in Windows.
 
 * Java 11 compliant JDK
-* gradle 5.2 or above *(NB gradle 6.6 and above currently produces NullPointerExceptions during the build. This is non-fatal and does not affect the build. Use gradle 6.5.1 to avoid this)*
+* gradle 7.6.3 or above, but not gradle 8 
 * git
 
 > The versions and installation methods here are just suggestions (which we have tested 
@@ -336,7 +336,7 @@ the `tests/` folder.  A summary of results should appear in your console.
 You can run different defined groups of tests with
 
 ```bash
-gradle test -PtestngGroups=Network
+gradle test -Ptestng_groups=Network
 ```
 
 Available groups include Functional (default), Network, External. 
@@ -348,9 +348,15 @@ Some of Jalview's Functional tests don't pass reliably in all environments. We t
 To exclude one or more groups of tests, add them as a comma separated list in testngExcludedGroups.
 
 ```bash
-gradle test -PtestngExcludedGroups=Not-bamboo
+gradle test -Ptestng_excluded_groups=Not-bamboo
 ```
+#### Viewing stdout and stderr for tests
 
+By default, gradle doesn't report any of the output or error streams produced by tests. You can enable output by setting the following:
+
+```bash
+gradle test -Ptest_output=1
+```
 
 ### Installer packaging with *install4j*
 
index 6caa69c..e5ece51 100644 (file)
@@ -1,6 +1,6 @@
 import jalview.datamodel.SequenceFeature
 import jalview.gui.Desktop
-def af = jalview.bin.Jalview.currentAlignFrame
+def af = Jalview.getCurrentAlignFrame()
 def av = af.viewport
 def fr = Desktop.getAlignFrameFor(av.codingComplement).getFeatureRenderer()
 def counts = 0
@@ -29,4 +29,4 @@ for (seq in av.alignment.sequences)
 }
 af.getFeatureRenderer().featuresAdded()
 af.alignPanel.paintAlignment(true, true)
-println "Added " + countm + " missense and " + counts + " synonymous variants"
\ No newline at end of file
+println "Added " + countm + " missense and " + counts + " synonymous variants"
index d844d62..cc92e40 100644 (file)
@@ -21,7 +21,7 @@
 import jalview.gui.*;
 import jalview.io.*;
 
-def class JvLoadTest {
+class JvLoadTest {
     FileLoader fl = null;
     def String safename = null;
     JvLoadTest(String sname) { 
@@ -155,4 +155,4 @@ def JvLoadTest newJvLoadTest(String tempFile) {
        System.gc();
        jalview.gui.Desktop.instance.desktop.showMemoryUsage(true);
        return new JvLoadTest(tempFile)
-}
\ No newline at end of file
+}
index b97abcc..76b9de7 100644 (file)
@@ -56,7 +56,7 @@ printSimilarityMatrix(true,true,SimilarityParams.Jalview)
 
 void printSimilarityMatrix(boolean selview=false, boolean includeids=true, SimilarityParams pidMethod) {
 
-  def currentAlignFrame = jalview.bin.Jalview.getCurrentAlignFrame()
+  def currentAlignFrame = Jalview.getCurrentAlignFrame()
 
   jalview.gui.AlignViewport av = currentAlignFrame.getCurrentView()
 
@@ -96,4 +96,4 @@ void printSimilarityMatrix(boolean selview=false, boolean includeids=true, Simil
 
     print "\n"
   }
-}
\ No newline at end of file
+}
index 764fdae..df68e2b 100644 (file)
@@ -20,6 +20,7 @@
  */
 // run an alignment on the current alignFrame
 import jalview.ws.jws2.*;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.datamodel.*;
 
 // First get the JABA service discoverer and see if there are any services.
@@ -33,7 +34,7 @@ if (!disc.isRunning() && !disc.hasServices())
   disc.run();
 }
 
-for (jalview.ws.jws2.Jws2Discoverer.Jws2Instance service: disc.getServices()) {
+for (jalview.ws.jws2.jabaws2.Jws2Instance service: disc.getServices()) {
 
 if (service.serviceType.indexOf("uscle")>-1) {
   // now - go through the services if any, and find a Muscle service
index abfad35..7cb3082 100644 (file)
@@ -31,7 +31,7 @@ import java.awt.datatransfer.StringSelection
 import static java.awt.Toolkit.*
 
 
-def curviewport = Jalview.getAlignFrames()[Jalview.getAlignFrames().length-1].getViewport();
+def curviewport = Jalview.getCurrentAlignFrame().getViewport();
 
 // TSV output by default.
 // change "\t" to "," to output CSV file
index 879bd49..ceec6d2 100644 (file)
@@ -1,19 +1,19 @@
 /*
  * 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 
+ * 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 
+ *
+ * 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.
@@ -23,10 +23,9 @@ import jalview.datamodel.*;
 import jalview.gui.AlignFrame;
 import jalview.gui.AlignViewport;
 
-def af = Jalview.getAlignFrames();
-def al = af[0].viewport.alignment;
+def al = Jalview.getCurrentAlignFrame().viewport.alignment;
 ParseProperties pp = new ParseProperties(al);
-pp.getScoresFromDescription("Score", "ScanPS Raw Score", "([-0-9.+]+)");
+pp.getScoresFromDescription("Score", "ScanPS Raw Score", "([-0-9.+]+)", true);
 def sqs = al.getSequenceAt(0);
 def annots = sqs.getAnnotation();
 
index b3387ea..a048d65 100644 (file)
@@ -1,35 +1,35 @@
 /*
  * 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 
+ * 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 
+ *
+ * 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.
  */
 // do something groovy in jalview
 println "Hello World.\n"
-println "First sequence is " + currentAlFrame.viewport.alignment.getSequenceAt(0).getDisplayId(true)
+println "First sequence is " + Jalview.getCurrentAlignFrame().viewport.alignment.getSequenceAt(0).getDisplayId(true)
 
 def alf = Jalview.getAlignFrames()
 for (ala in alf)
 {
-       // ala is an jalview.gui.AlignFrame object 
+       // ala is an jalview.gui.AlignFrame object
        println ala.getTitle()
        // get the parent jalview.datamodel.Alignment from the alignment viewport
        def alignment = ala.viewport.alignment
        // get the first sequence from the jalview.datamodel.Alignment object
-       def seq = alignment.getSequenceAt(0) 
+       def seq = alignment.getSequenceAt(0)
 }
 Jalview.quit()
index 341e06f..c947a5b 100644 (file)
@@ -46,6 +46,7 @@ for (ala in af)
                        }
                }
        }
+       ala.repaint();
 }
        
 
index b8edaa7..aaa3405 100644 (file)
@@ -23,7 +23,7 @@ import jalview.datamodel.*;
 import jalview.gui.AlignFrame;
 import jalview.gui.AlignViewport;
 import java.util.BitSet;
-import javax.swing.JOptionPane;
+import jalview.gui.JvOptionPane;
 import groovy.swing.SwingBuilder;
 def toselect = getFeatureInput(); // change this to select the desired feature type
 
@@ -81,7 +81,7 @@ for (ala in Jalview.getAlignFrames()) {
         cs.addElement(i);
         }
       ala.viewport.setColumnSelection(cs);
-      ala.alignPanel.paintAlignment(true);
+      ala.alignPanel.paintAlignment(true, true);
       ala.statusBar.setText("Marked "+bs.cardinality()+" columns containing features of type "+toselect)
       } else {
         ala.statusBar.setText("No features of type "+toselect+" found.");
@@ -96,4 +96,4 @@ String getFeatureInput(){
                    null, 'Select columns by feature by type','Enter type of feature', JvOptionPane.OK_OPTION)
 
         return response
-    }
\ No newline at end of file
+    }
index 8165373..f775f18 100644 (file)
@@ -29,7 +29,7 @@
 import java.awt.datatransfer.StringSelection
 import static java.awt.Toolkit.*
 
-def curviewport = Jalview.getAlignFrames()[Jalview.getAlignFrames().length-1].getViewport()
+def curviewport = Jalview.getCurrentAlignFrame().getViewport()
 
 def debug = false
 
index 71b3a9f..5a01da4 100644 (file)
@@ -29,7 +29,7 @@ def af = Jalview.getAlignFrames();
 
 for (ala in af)
 {
-       def al = ala.viewport.alignment;
+       def al = ala.getViewport().getAlignment();
        if (al!=null)
        {
                SequenceI[] seqs = al.getSequencesArray();
@@ -47,5 +47,6 @@ for (ala in af)
                        }
                }
        }
+       ala.repaint();
 }
-       
\ No newline at end of file
+       
index b3180f8..510f600 100644 (file)
@@ -1,38 +1,37 @@
 /*
  * 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 
+ * 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 
+ *
+ * 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.
  */
-import jalview.bin.Jalview
 import jalview.workers.FeatureSetCounterI
 import jalview.workers.AlignmentAnnotationFactory
 
 /*
  * Demonstration of FeatureSetCounterI
- * compute annotation tracks counting number of displayed 
+ * compute annotation tracks counting number of displayed
  * features of each type in each column
  */
 
 /*
  * discover features on the current view
  */
-def featuresDisp=Jalview.currentAlignFrame.currentView.featuresDisplayed
+
+def featuresDisp=Jalview.getCurrentAlignFrame().currentView.featuresDisplayed
 if (featuresDisp == null) {
     print 'Need at least one feature visible on alignment'
 }
@@ -40,12 +39,12 @@ def visibleFeatures=featuresDisp.visibleFeatures.toList()
 assert 'java.util.ArrayList' == visibleFeatures.class.name
 
 /*
- * A closure that returns an array of features present 
+ * A closure that returns an array of features present
  * for each feature type in visibleFeatures
- * Argument 'features' will be a list of SequenceFeature 
+ * Argument 'features' will be a list of SequenceFeature
  */
-def getCounts = 
-    { features -> 
+def getCounts =
+    { features ->
         int[] obs = new int[visibleFeatures.size]
         for (sf in features)
         {
@@ -56,9 +55,9 @@ def getCounts =
              * or sf.getValue(attributeName) for GFF 'column 9' properties
              */
             int pos = 0
-            for (type in visibleFeatures) 
+            for (type in visibleFeatures)
             {
-              if (type.equals(sf.type)) 
+              if (type.equals(sf.type))
               {
                   obs[pos]++
               }
@@ -67,19 +66,19 @@ def getCounts =
         }
         obs
 }
-  
+
 /*
  * Define something that counts each visible feature type
  */
 def columnSetCounter =
     [
-     getNames: { visibleFeatures as String[] }, 
+     getNames: { visibleFeatures as String[] },
      getDescriptions:  { visibleFeatures as String[] },
      getMinColour: { [0, 255, 255] as int[] }, // cyan
      getMaxColour: { [0, 0, 255] as int[] }, // blue
-     count: 
-         { res, feats -> 
-             getCounts.call(feats) 
+     count:
+         { res, feats ->
+             getCounts.call(feats)
          }
      ] as FeatureSetCounterI
 
index 25d39f4..2d83e61 100644 (file)
@@ -1 +1 @@
-1.8.3-1.3.0_FJVL
+1.8.3-1.3.1_FJVL
index 12110b2..7d618e2 100644 (file)
@@ -1 +1 @@
-1.8.3-1.3.0_JVL
+1.8.3-1.3.1_JVL
index fb8f1bc..3fc97b5 100644 (file)
Binary files a/getdown/lib/getdown-core.jar and b/getdown/lib/getdown-core.jar differ
index c74dcc5..6ba0a6d 100644 (file)
Binary files a/getdown/lib/getdown-launcher-local.jar and b/getdown/lib/getdown-launcher-local.jar differ
index e1f1726..7c75a34 100644 (file)
Binary files a/getdown/lib/getdown-launcher.jar and b/getdown/lib/getdown-launcher.jar differ
index d8bb7e9..4c91f74 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-1.3.0_FJVL</version>
+    <version>1.8.3-1.3.1_FJVL</version>
   </parent>
 
   <artifactId>getdown-ant</artifactId>
index 6126686..2e43522 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-1.3.0_FJVL</version>
+    <version>1.8.3-1.3.1_FJVL</version>
   </parent>
 
   <artifactId>getdown-core</artifactId>
index 9d9fe14..435ebbd 100644 (file)
@@ -1137,7 +1137,6 @@ public class Application
                 String query = jalviewUri.getQuery();
                 
                 _appargs.clear();
-                _appargs.add("-open");
                 if (host != null && host.length() > 0) {
                   URL newUrl = new URL(
                           (https?"https":"http")
@@ -1253,8 +1252,6 @@ public class Application
           }
           if (ext != null && LOCATOR_FILE_EXTENSION.equals(ext.toLowerCase(Locale.ROOT))) {
             // this file extension should have been dealt with in Getdown class
-          } else {
-            _appargs.add(0, "-open");
           }
         }
 
index 4374899..c6b9ff3 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-1.3.0_FJVL</version>
+    <version>1.8.3-1.3.1_FJVL</version>
   </parent>
 
   <artifactId>getdown-launcher</artifactId>
index ba092a7..10942f8 100755 (executable)
@@ -3,7 +3,7 @@
 if [ x$JVLVERSION != x ]; then
   export VERSION=$JVLVERSION
 else
-  export VERSION=1.8.3-1.3.0_JVL
+  export VERSION=1.8.3-1.3.1_JVL
 fi
 
 if [ x${VERSION%_JVL} = x$VERSION ]; then
index 51e9514..cf32333 100644 (file)
@@ -10,7 +10,7 @@
   <groupId>com.threerings.getdown</groupId>
   <artifactId>getdown</artifactId>
   <packaging>pom</packaging>
-  <version>1.8.3-1.3.0_FJVL</version>
+  <version>1.8.3-1.3.1_FJVL</version>
 
   <name>getdown</name>
   <description>An application installer and updater.</description>
index c2e217f..79fb11d 100644 (file)
@@ -28,6 +28,8 @@ jalview_keydig = SHA1
 
 testng_groups = Functional
 testng_excluded_groups = 
+test_output =
 
 j8libDir = j8lib
 j11libDir = j11lib
index b2e29e9..b1588e5 100644 (file)
     </tr>
 
     <tr valign="top">
+    <td><code>&#8209;&#8209;javaconsole / &#8209;&#8209;nojavaconsole</code></td>
+    <td>Show (/ or don't show) the Java Console.  Using one of these overrides any saved Preference.</td>
+    </tr>
+
+    <tr valign="top">
     <td><code>&#8209;&#8209;questionnaire / &#8209;&#8209;noquestionnaire</code></td>
     <td>Show (/ or don't show) the questionnaire if one is available.</td>
     </tr>
index cb0b10c..6b5c4c0 100644 (file)
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  -->
 <head>
-<title>Groovy Shell</title>
+<title>Groovy Console</title>
 </head>
 <body>
   <p>
-    <strong>The Groovy Shell</strong>
+    <strong>The Groovy Console</strong>
   </p>
   <p>
     Groovy (<a href="http://www.groovy-lang.org/">www.groovy-lang.org</a>)
@@ -41,8 +41,8 @@
     short pause, you should then see the <a
       href="https://groovy-lang.org/groovyconsole.html">Groovy
       Console</a> appear. This allows you to interactively execute Groovy
-    scripts whilst Jalview is running. We've also provided a <strong>Calculations&#8594;Execute
-      Groovy Script</strong> button so you can execute the currently loaded
+    scripts whilst Jalview is running. We've also provided a <strong>Calculations&#8594;Run
+      Groovy Console Script</strong> button so you can execute the currently loaded
     groovy script whilst viewing an alignment.
   </p>
   <p>
     we recommend you also take a look at Jalview's source, since all the
     public methods of the jalview class hierarchy can be called from
     Groovy scripts. In addition, the following objects are also defined:
+  </p>
 
-
-  
   <ul>
-    <li><strong>Jalview</strong> - this is bound to <code>jalview.bin.Jalview</code>.<br />Useful
-      methods include:
+    <li><strong>Jalview</strong> - this is bound to <code>jalview.bin.groovy.JalviewObject</code> providing access to the following useful
+      methods:
       <ul>
         <li>Jalview.getAlignFrames() - returns a list of
           jalview.gui.AlignFrame objects</li>
         <li>Jalview.getCurrentAlignFrame() - returns the alignment
-          window which is currently being looked at by the user</li>
+          window which has most recently been in focus.  If you change focus to another alignment window then re-running <code>Jalview.getCurrentAlignFrame()</code> will return the new <code>AlignFrame</code>.</li>
       </ul></li>
-    <li><strong>currentAlFrame</strong> - this is only defined when
-      running a Groovy script via the --groovy command line argument. It
-      returns the first alignment window created after acting on the
-      other arguments passed on the command line.</li>
+    <li><strong>currentAlFrame</strong> When used on the command line this refers to the current opened alignment.
+    <br/>
+    When used from the Groovy Console, it refers to the alignment that was in focus when the Groovy Console was opened.
+    <br/>
+    When a Groovy Console script is run from <em>Calculate</em>-&gt;<em>Run Groovy Console Script</em>, <code>currentAlFrame</code> us updated to that alignment.</li>
   </ul>
   <p>
+    If you specify a <code>--groovy</code> argument before an <code>--open</code> argument
+    then you should ensure your script doesn't refer to <code>currentAlFrame</code>.
+  <p>
+
+  <p>
     <em>A simple script</em><br />
   <ul>
     <li>Getting the title, alignment and first sequence from the
       current alignFrame<br> <pre>
-def alf = Jalview.getAlignFrames();
-print alf[0].getTitle();
-def alignment = alf[0].viewport.alignment;
+def al = Jalview.getCurrentAlignFrame();
+print al.getTitle();
+def alignment = al.viewport.alignment;
 def seq = alignment.getSequenceAt(0);
 </pre>
     </li>
index ac2489b..491a03f 100644 (file)
         <li><strong>Show Chains<br>
         </strong><em>Select which of the PDB file's chains are to be
             displayed.</em></li>
-        <li><strong>Colour by ..<br></strong><em>Submenu
+                               <li><strong>Ligands<br>
+                               </strong><em>When available, allows the display of all, none or specific
+                                               ligands (also known as HETATM groups) in the Jmol view, using CPK
+                                               spacefilling.</em></li>
+                               <li><strong>Colour by ..<br></strong><em>Submenu
             allowing specific alignment views to be selected for
             colouring associated chains in the structure display. This
             menu contains all the alignment views associated with the
index 870b005..5f33dfe 100644 (file)
@@ -29,8 +29,9 @@
   <p>
     Jalview can process PDB data associated with sequences to display
     values extracted from the <em>Temperature Factor</em> column for
-    corresponding sites, and secondary structure from DSSP or RNAView
-    (as appropriate).
+    corresponding sites, and secondary structure from DSSP. For computationally determined structures, jalview will show
+    model quality data encoded in the temperature factor column as <em>AlphaFold Reliability</em> (PLDDT) or <em>Model
+      Quality</em> as appropriate.
   </p>
   <p>
     <strong>Extracting data from PDB files<br /></strong>Annotation is
     the <strong>Add Reference Annotation</strong> in the <strong>Selection</strong>
     and <strong>Sequence ID</strong> sub-menus of the Sequence ID
     Panel's popup menu.<br /> <em>Please note:</em>Protein structures
-    are analysed <em>in situ</em>, but Jalview employs a web service to
-    process RNA structures which can cause long delays if your internet
-    connection is slow.
+    are analysed <em>in situ</em>. 
   </p>
   <p>
     The <a href="../menus/alwannotation.html"><em>Annotations</em>
       alignment menu</a> provides settings useful for controlling the
-    display of secondary structure annotation.
-  </p>
+    display of sequence-associated annotation. To compare several tracks from different structures for one or more
+    sequences, use 'sort by label' - which will also display PDB and Chain IDs for secondary structure and temperature
+    factor/quality annotation tracks for easier identification.
+    </p>
   <p>
     <strong>Shading sequences by associated structure
       annotation<br />
     </strong>The annotation colouring dialog (opened by the <strong>Colour&rarr;By
-      Annotation</strong> option) allows sequences with associated secondary
+      Annotation</strong> option) or by right-clicking a particular annotation tracks's label allows sequences with
+    associated secondary
     structure data to be shaded according to secondary structure type.
     Once the dialog is opened, select the <em>Per Sequence</em> option
     and then choose <em>Secondary structure</em> from the dropdown menu.<br />When
index bd7144e..494dd3e 100644 (file)
@@ -36,7 +36,7 @@
     <li>Copy and paste it into the groovy script console</li>
     <li>Load the example Feredoxin project (the one that opens by
       default when you first launched Jalview)</li>
-    <li>Select <strong>Calculations&#8594;Execute Groovy
+    <li>Select <strong>Calculations&#8594;Run Groovy Console
         Script</strong> from the alignment window's menu bar to run the script on
       the current view.
     </li>
index a6bb1b6..14cf630 100755 (executable)
@@ -45,7 +45,7 @@
   <p>
     For more information, you might also want to take a look at the
     documentation section of the Jalview website (<a
-      href="https://www.jalview.org/about/documentation">https://www.jalview.org/about/documentation</a>).
+      href="https://www.jalview.org/help">https://www.jalview.org/help</a>).
   </p>
   <p>
     If you are using the Jalview Desktop application and are looking for
index a7da021..547fff2 100644 (file)
   <p>
     If you come across a problem in Jalview where something is not
     working as described, or how you think it should, you should first
-    check the <a href="https://www.jalview.org/faq">Jalview FAQ</a> to
+    check the <a href="https://www.jalview.org/help/faq">Jalview FAQ</a> to
     see if this is a known problem and if there is a suggested
     workaround.
   </p>
index 8847eb2..cdd74eb 100644 (file)
@@ -1,6 +1,6 @@
 ---
 version: 2.11.3.0
-date: 2023-10-03
+date: 2023-11-03
 channel: "release"
 ---
 
@@ -18,12 +18,14 @@ channel: "release"
 - <!-- JAL-4221 --> sequence descriptions are updated from database reference sources if not already defined
 - <!-- JAL-4273 --> Visible adjuster marks to grab and adjust annotation panel height and id width
 - <!-- JAL-4260 --> Adjustable ID margin when alignment is wrapped
-- <!-- JAL-4274 --> Command line options and configurable bitmap export preferences for height, width and scale factor
+- <!-- JAL-4274 --> Command line options and configurable bitmap export (via preferences file) for height, width and scale factor
+- <!-- JAL-4307 --> Show or hide ligands in a Jmol structure view via View Ligands submenu
+- <!-- JAL-4252 --> Jmol's display is antialiased by default (smoother, less pixellated)
 
-### Improved support for working with computationally determined models
+### Improved support for working with structures and computationally determined models
 - <!-- 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-4027, JAL-3858, JAL-2292 --> Predicted Alignment Error annotation tracks for structures from AlphaFold DB
 - <!-- JAL-4033 --> Selections with visual feedback via contact matrix annotation
 - <!-- JAL-3855 --> Discover and import alphafold2 models and metadata from https://alphafold.ebi.ac.uk/
 - <!-- JAL-4091 --> Visual indication of relationship with associated sequence to distinguish different sequence associated annotation rows
@@ -32,7 +34,11 @@ channel: "release"
 - <!-- JAL-3858 --> Import and display alphafold alignment uncertainty matrices from JSON
 - <!-- JAL-4134,JAL-4158 --> Column-wise alignment groups and selections and interactive tree viewer for PAE matrices
 - <!-- JAL-4124 --> Store/Restore PAE data and visualisation settings from Jalview Project
+- <!-- JAL-4281 --> Store and restore adjustable ID margin and annotation panel height in Jalview projects
 - <!-- JAL-4083 --> Multiple residue sidechain highlighting in structure viewers from PAE mouseovers
+- <!-- JAL-4147 --> Per-structure and chain shown when annotation shown sorted by label enabling secondary structure and temperature factor scores from different chains and structures for the same sequence to be visually compared.
+- <!-- JAL-4216 --> PDB or mmCIF files with chains with negative RESNUMs for their whole sequence extent cannot be linked to alignments
+
 
 ### Jalview on the command line
 - <!-- JAL-4160,JAL-629,JAL-4262,JAL-4265, --> New command line argument framework allowing flexible batch processing, import of structures, pae matrices and other sequence associated data, and alignment and structure figure generation.
@@ -40,14 +46,14 @@ channel: "release"
 - <!-- JAL-4121 --> Assume --headless when jalview is run with a command line argument that generates output
 - <!-- JAL-244 --> Automatically adjust Left margin on import to avoid cropping of annotation labels & sequence IDs
 - <!-- JAL-901 --> Specify alignment title on import via --title argument
-- <!-- JAL-4195,JAL-4194,JAL-4193 --> sensible responses from the CLI when things go wrong during image export
-- Add a command line option to set Jalview properties for this session only
-- Add a command line option to suppress opening the startup file for this session
+- <!-- JAL-4195 --> Sensible responses from the CLI when things go wrong during image export
+- <!-- JAL-4194 --> Add a command line option to set Jalview properties for this session only
+- <!-- JAL-4193 --> Add a command line option to suppress opening the startup file for this session
 
 ### Other improvements
 - <!-- JAL-4250 --> Secondary structure annotation glyphs are rendered anti-aliasing when enabled
-- <!-- JAL-325 --> Helix and Sheet glyphs vertically centered with respect to grey coil secondary structure annotation track
-- <!-- JAL-4253 --> Lower line of the sequence group border does not align with vertical and background residue box
+- <!-- JAL-325,JAL-4250 --> Helix and Sheet glyphs vertically centred with respect to grey coil secondary structure annotation track
+- <!-- JAL-4317 --> feature should be displayed when its rendering and filtering settings are adjusted
 - <!-- JAL-4250 --> Updated JFreeSVG (https://www.jfree.org/jfreesvg) from 2.1 to 3.4.3
 - <!-- JAL-3119 --> Name of alignment and view included in overview window's title
 - <!-- JAL-4213 --> "add reference annotation" add all positions in reference annotation tracks, not just positions in the currently highlighted columns/selection range
@@ -55,18 +61,25 @@ channel: "release"
 - <!-- JAL-3820 --> In Linux desktops' task-managers, the grouped Jalview windows get a generic name
 - <!-- JAL-4206 --> Improved file chooser's 'recent files' view and added filter for 'All known alignment files'
 - <!-- JAL-4206 --> Relative files added to recent files list via import from command line are selected when Jalview opened from same location
-- <!-- JAL-3676 --> Allow log level configuration via Jalview's Java Console, and a Copy to Clipboard button
+- <!-- JAL-4308 --> Reduce number of database crossreferences shown in tooltip
+- <!-- JAL-4315 --> Drag and drop feature colours file on an alignment to quickly apply feature settings
+- <!-- JAL-3676 --> Improved startup info in console output: which properties file was being used and slight revisions to the formatting of platform information.
+- <!-- JAL-4304,JAL-4305 --> Upgrade bundled groovy to v4.0.15 and regularised interface for groovy scripts run from CLI, interactively and headlessly.
+- <!-- JAL-1713,JAL-2528 --> Overview display and hidden region visibility stored in Jalview projects
+- <!-- JAL-4169 --> Updated faq and documentation urls in splashscreen and help documentation
 
 ### Development and Deployment
 - <!-- JAL-4054 --> Installers built with install4j10
 - <!-- JAL-4167 --> Create separate gradle test task for some tests
 - <!-- JAL-4212 --> Prevent gradle test on macOS continuously grabbing focus
 - <!-- JAL-4111 --> Allow gradle build to create suffixed DEVELOP-... builds with channel appbase
+- <!-- JAL-4288 --> Update .jvl generation in build.gradle for jalview branch builds
 - <!-- JAL-4243 --> Jalview bio.tools description maintained under jalview's git repo and bundled with source release
+- <!-- JAL-4110 --> Output stderr and stdout when running tests via gradle
+- <!-- JAL-3599 --> New gradle task providing runtime acceptance test for JalviewJS  based on Chromium for Tests (still work in progress)
 
 ## Issues Resolved
 - <!-- JAL-2961 --> Jmol view not always centred on structures when multiple structures are viewed
-- <!-- 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
@@ -78,26 +91,40 @@ channel: "release"
 - <!-- JAL-4075 --> Don't add string label version of DSSP secondary structure codes in secondary structure annotation rows
 - <!-- JAL-4182 --> reference annotation not correctly transferred to alignment containing a sub-sequence when a selection is active
 - <!-- JAL-4177 --> Can press 'Add' or 'New View' multiple times when manually adding and viewing a 3D structure via structure chooser
+- <!-- JAL-4311 --> 3D beacons sources providing models scored with PLDDT and pTM not sorted against alphaFoldDB models
 - <!-- JAL-4133 --> Jalview project does not preserve font aspect ratio when Viewport is zoomed with mouse
+- <!-- JAL-4253,JAL-4293 --> Lower line of the sequence group border does not align with vertical and background residue box
 - <!-- JAL-4128 --> Resizing overview quickly with solid-drags enabled causes exception
 - <!-- JAL-4150 --> Sequences copied to clipboard from within Jalview cannot be pasted via the desktop's popup menu to a new alignment window
 - <!-- JAL-2528, JAL-1713 --> Overview window is saved in project file, and state of 'show hidden regions' is preserved.
 - <!-- JAL-4153 --> JvCacheableInputBoxTest flaky on build server
 - <!-- JAL-4255 --> SLF4J produces an error to STDERR at Jalview startup due to missing class
-- <!-- JAL-4189 --> macOS Dock and KDE taskbar names Jalview icon "java" when running
+- <!-- JAL-4189 --> macOS Dock and KDE taskbar names Jalview icon "java" when running jalview via the getdown app launcher
 - <!-- JAL-2910 --> HeadlessException in console in headless mode (actually fixed in 2.11.{0,1,2))
+- <!-- JAL-3783 --> Groovy console does not open when Jalview launched from jalview's Java 11 executable jar (available via conda) for recent versions of groovy
+- <!-- JAL-4310 --> Don't offer View model page for sources that do not have model pages
+- <!-- JAL-4298 --> Java Console opening at startup with the exampleFile_v2_7.jvp opening (nearly always) causes Jalview to hang
+- <!-- JAL-4282 --> automatic positioning of ID width for imported project can fail for certain font size configured in User preferences (affects most versions of Jalview prior to 2.11.3.0)
+- <!-- JAL-4223 --> RNAML import missing terminal residue
+- <!-- JAL-3088 --> RNA secondary structure annotation final-ending-solo-brace arrow points the wrong way
+- <!-- JAL-4218 --> Jalview source distribution unnecessarily includes dist directory with built jalview jar and dependencies
+- <!-- JAL-3921 --> Jmol sessions involving large molecules may not be fully saved in Jalview project files (known defect in 2.11.2.x)
 
 ## New Known defects
 - <!-- JAL-4303 --> EBI-AlphaFold PLDDT colours cannot be overlaid on alignment via 'Colour by annotation' unless the alignment's colourscheme has been set to 'None' via the Colours menu.
 - <!-- JAL-4302 --> Tree renderer doesn't show bottom-most leaves of tree when Fit-To-Window is enabled.
 - <!-- JAL-4178 --> Cannot cancel structure view open action once it has been started via the structure chooser dialog
 - <!-- JAL-4142 --> Example project's multiple views do not open in distinct locations when eXpand views is used to show them all separately
-- <!-- JAL-4127 --> 'Reload' for a jalview project results in all windows being duplicated
+- <!-- JAL-4127 --> 'Reload' for a jalview project results in all windows being duplicated (since 2.11.2.6, more severe in 2.11.3.0
+- <!-- JAL-4325 --> Overview shown and then closed when importing legacy jalview projects without overview store/restore information
 - <!-- JAL-4165 --> Missing last letter when copying consensus sequence from alignment if first column is hidden
 - <!-- JAL-4261 --> Last sequence ID in alignment not shown and annotation labels are misaligned in HTML export
 - <!-- JAL-3024 --> Files opened via command line with a relative path are added as relative paths to Recent files list (since 2.0.x)
 - <!-- JAL-4291 --> Test coverage for ID width adjustment disabled pending fix for new annotation label geometry and width calculation
-
-
-
+- <!-- JAL-4323 --> scripts adding new fileformats or colourschemes do not work when run via command line
+- <!-- JAL-4290 --> Headless alignment export with structure annotations doesn't include secondary structure and temperature factor
+- <!-- JAL-4151 --> Copy sequences from one alignment and Pasting as new window in another alignment doesn't propagate title from original alignment's window)
+- <!-- JAL-4157 --> Annotation colouring dialog box doesn't remember 'use original colours' settings when opened via the Colour menu
+- <!-- JAL-4327 --> When the Groovy console is open Jalview does not prompt to save before quitting  
+- <!-- JAL-4328 --> Jalview works with but is not fully compatible with latest Ensembl REST API (15.6)
 
index fb8f1bc..3fc97b5 100644 (file)
Binary files a/j11lib/getdown-core.jar and b/j11lib/getdown-core.jar differ
diff --git a/j11lib/groovy-4.0.15.jar b/j11lib/groovy-4.0.15.jar
new file mode 100644 (file)
index 0000000..8423d99
Binary files /dev/null and b/j11lib/groovy-4.0.15.jar differ
diff --git a/j11lib/groovy-all-2.4.21-indy.jar b/j11lib/groovy-all-2.4.21-indy.jar
deleted file mode 100644 (file)
index 15ee98d..0000000
Binary files a/j11lib/groovy-all-2.4.21-indy.jar and /dev/null differ
diff --git a/j11lib/groovy-ant-4.0.15.jar b/j11lib/groovy-ant-4.0.15.jar
new file mode 100644 (file)
index 0000000..b6a39ac
Binary files /dev/null and b/j11lib/groovy-ant-4.0.15.jar differ
diff --git a/j11lib/groovy-astbuilder-4.0.15.jar b/j11lib/groovy-astbuilder-4.0.15.jar
new file mode 100644 (file)
index 0000000..f341fac
Binary files /dev/null and b/j11lib/groovy-astbuilder-4.0.15.jar differ
diff --git a/j11lib/groovy-cli-commons-4.0.15.jar b/j11lib/groovy-cli-commons-4.0.15.jar
new file mode 100644 (file)
index 0000000..b482258
Binary files /dev/null and b/j11lib/groovy-cli-commons-4.0.15.jar differ
diff --git a/j11lib/groovy-cli-picocli-4.0.15.jar b/j11lib/groovy-cli-picocli-4.0.15.jar
new file mode 100644 (file)
index 0000000..3223ba9
Binary files /dev/null and b/j11lib/groovy-cli-picocli-4.0.15.jar differ
diff --git a/j11lib/groovy-console-4.0.15.jar b/j11lib/groovy-console-4.0.15.jar
new file mode 100644 (file)
index 0000000..04a402a
Binary files /dev/null and b/j11lib/groovy-console-4.0.15.jar differ
diff --git a/j11lib/groovy-contracts-4.0.15.jar b/j11lib/groovy-contracts-4.0.15.jar
new file mode 100644 (file)
index 0000000..6825657
Binary files /dev/null and b/j11lib/groovy-contracts-4.0.15.jar differ
diff --git a/j11lib/groovy-datetime-4.0.15.jar b/j11lib/groovy-datetime-4.0.15.jar
new file mode 100644 (file)
index 0000000..312575a
Binary files /dev/null and b/j11lib/groovy-datetime-4.0.15.jar differ
diff --git a/j11lib/groovy-dateutil-4.0.15.jar b/j11lib/groovy-dateutil-4.0.15.jar
new file mode 100644 (file)
index 0000000..5893f97
Binary files /dev/null and b/j11lib/groovy-dateutil-4.0.15.jar differ
diff --git a/j11lib/groovy-docgenerator-4.0.15.jar b/j11lib/groovy-docgenerator-4.0.15.jar
new file mode 100644 (file)
index 0000000..bf76564
Binary files /dev/null and b/j11lib/groovy-docgenerator-4.0.15.jar differ
diff --git a/j11lib/groovy-ginq-4.0.15.jar b/j11lib/groovy-ginq-4.0.15.jar
new file mode 100644 (file)
index 0000000..46f561e
Binary files /dev/null and b/j11lib/groovy-ginq-4.0.15.jar differ
diff --git a/j11lib/groovy-groovydoc-4.0.15.jar b/j11lib/groovy-groovydoc-4.0.15.jar
new file mode 100644 (file)
index 0000000..b818919
Binary files /dev/null and b/j11lib/groovy-groovydoc-4.0.15.jar differ
diff --git a/j11lib/groovy-groovysh-4.0.15.jar b/j11lib/groovy-groovysh-4.0.15.jar
new file mode 100644 (file)
index 0000000..253eff6
Binary files /dev/null and b/j11lib/groovy-groovysh-4.0.15.jar differ
diff --git a/j11lib/groovy-jmx-4.0.15.jar b/j11lib/groovy-jmx-4.0.15.jar
new file mode 100644 (file)
index 0000000..8667ac4
Binary files /dev/null and b/j11lib/groovy-jmx-4.0.15.jar differ
diff --git a/j11lib/groovy-json-4.0.15.jar b/j11lib/groovy-json-4.0.15.jar
new file mode 100644 (file)
index 0000000..76b486a
Binary files /dev/null and b/j11lib/groovy-json-4.0.15.jar differ
diff --git a/j11lib/groovy-jsr223-4.0.15.jar b/j11lib/groovy-jsr223-4.0.15.jar
new file mode 100644 (file)
index 0000000..5ae9f69
Binary files /dev/null and b/j11lib/groovy-jsr223-4.0.15.jar differ
diff --git a/j11lib/groovy-macro-4.0.15.jar b/j11lib/groovy-macro-4.0.15.jar
new file mode 100644 (file)
index 0000000..e5f7abb
Binary files /dev/null and b/j11lib/groovy-macro-4.0.15.jar differ
diff --git a/j11lib/groovy-macro-library-4.0.15.jar b/j11lib/groovy-macro-library-4.0.15.jar
new file mode 100644 (file)
index 0000000..92c208f
Binary files /dev/null and b/j11lib/groovy-macro-library-4.0.15.jar differ
diff --git a/j11lib/groovy-nio-4.0.15.jar b/j11lib/groovy-nio-4.0.15.jar
new file mode 100644 (file)
index 0000000..e6e2ad8
Binary files /dev/null and b/j11lib/groovy-nio-4.0.15.jar differ
diff --git a/j11lib/groovy-servlet-4.0.15.jar b/j11lib/groovy-servlet-4.0.15.jar
new file mode 100644 (file)
index 0000000..711a1e2
Binary files /dev/null and b/j11lib/groovy-servlet-4.0.15.jar differ
diff --git a/j11lib/groovy-sql-4.0.15.jar b/j11lib/groovy-sql-4.0.15.jar
new file mode 100644 (file)
index 0000000..058db44
Binary files /dev/null and b/j11lib/groovy-sql-4.0.15.jar differ
diff --git a/j11lib/groovy-swing-4.0.15.jar b/j11lib/groovy-swing-4.0.15.jar
new file mode 100644 (file)
index 0000000..848d074
Binary files /dev/null and b/j11lib/groovy-swing-4.0.15.jar differ
diff --git a/j11lib/groovy-templates-4.0.15.jar b/j11lib/groovy-templates-4.0.15.jar
new file mode 100644 (file)
index 0000000..3cd0245
Binary files /dev/null and b/j11lib/groovy-templates-4.0.15.jar differ
diff --git a/j11lib/groovy-test-4.0.15.jar b/j11lib/groovy-test-4.0.15.jar
new file mode 100644 (file)
index 0000000..e600dc7
Binary files /dev/null and b/j11lib/groovy-test-4.0.15.jar differ
diff --git a/j11lib/groovy-test-junit5-4.0.15.jar b/j11lib/groovy-test-junit5-4.0.15.jar
new file mode 100644 (file)
index 0000000..abcc69a
Binary files /dev/null and b/j11lib/groovy-test-junit5-4.0.15.jar differ
diff --git a/j11lib/groovy-testng-4.0.15.jar b/j11lib/groovy-testng-4.0.15.jar
new file mode 100644 (file)
index 0000000..60c1b58
Binary files /dev/null and b/j11lib/groovy-testng-4.0.15.jar differ
diff --git a/j11lib/groovy-toml-4.0.15.jar b/j11lib/groovy-toml-4.0.15.jar
new file mode 100644 (file)
index 0000000..ad49634
Binary files /dev/null and b/j11lib/groovy-toml-4.0.15.jar differ
diff --git a/j11lib/groovy-typecheckers-4.0.15.jar b/j11lib/groovy-typecheckers-4.0.15.jar
new file mode 100644 (file)
index 0000000..dc113c3
Binary files /dev/null and b/j11lib/groovy-typecheckers-4.0.15.jar differ
diff --git a/j11lib/groovy-xml-4.0.15.jar b/j11lib/groovy-xml-4.0.15.jar
new file mode 100644 (file)
index 0000000..21aeea0
Binary files /dev/null and b/j11lib/groovy-xml-4.0.15.jar differ
diff --git a/j11lib/groovy-yaml-4.0.15.jar b/j11lib/groovy-yaml-4.0.15.jar
new file mode 100644 (file)
index 0000000..207d47d
Binary files /dev/null and b/j11lib/groovy-yaml-4.0.15.jar differ
diff --git a/j11lib/javaparser-core-3.25.5.jar b/j11lib/javaparser-core-3.25.5.jar
new file mode 100644 (file)
index 0000000..92eed53
Binary files /dev/null and b/j11lib/javaparser-core-3.25.5.jar differ
index fb8f1bc..3fc97b5 100644 (file)
Binary files a/j8lib/getdown-core.jar and b/j8lib/getdown-core.jar differ
diff --git a/j8lib/groovy-4.0.15.jar b/j8lib/groovy-4.0.15.jar
new file mode 100644 (file)
index 0000000..8423d99
Binary files /dev/null and b/j8lib/groovy-4.0.15.jar differ
diff --git a/j8lib/groovy-all-2.4.21-indy.jar b/j8lib/groovy-all-2.4.21-indy.jar
deleted file mode 100644 (file)
index 15ee98d..0000000
Binary files a/j8lib/groovy-all-2.4.21-indy.jar and /dev/null differ
diff --git a/j8lib/groovy-ant-4.0.15.jar b/j8lib/groovy-ant-4.0.15.jar
new file mode 100644 (file)
index 0000000..b6a39ac
Binary files /dev/null and b/j8lib/groovy-ant-4.0.15.jar differ
diff --git a/j8lib/groovy-astbuilder-4.0.15.jar b/j8lib/groovy-astbuilder-4.0.15.jar
new file mode 100644 (file)
index 0000000..f341fac
Binary files /dev/null and b/j8lib/groovy-astbuilder-4.0.15.jar differ
diff --git a/j8lib/groovy-cli-commons-4.0.15.jar b/j8lib/groovy-cli-commons-4.0.15.jar
new file mode 100644 (file)
index 0000000..b482258
Binary files /dev/null and b/j8lib/groovy-cli-commons-4.0.15.jar differ
diff --git a/j8lib/groovy-cli-picocli-4.0.15.jar b/j8lib/groovy-cli-picocli-4.0.15.jar
new file mode 100644 (file)
index 0000000..3223ba9
Binary files /dev/null and b/j8lib/groovy-cli-picocli-4.0.15.jar differ
diff --git a/j8lib/groovy-console-4.0.15.jar b/j8lib/groovy-console-4.0.15.jar
new file mode 100644 (file)
index 0000000..04a402a
Binary files /dev/null and b/j8lib/groovy-console-4.0.15.jar differ
diff --git a/j8lib/groovy-contracts-4.0.15.jar b/j8lib/groovy-contracts-4.0.15.jar
new file mode 100644 (file)
index 0000000..6825657
Binary files /dev/null and b/j8lib/groovy-contracts-4.0.15.jar differ
diff --git a/j8lib/groovy-datetime-4.0.15.jar b/j8lib/groovy-datetime-4.0.15.jar
new file mode 100644 (file)
index 0000000..312575a
Binary files /dev/null and b/j8lib/groovy-datetime-4.0.15.jar differ
diff --git a/j8lib/groovy-dateutil-4.0.15.jar b/j8lib/groovy-dateutil-4.0.15.jar
new file mode 100644 (file)
index 0000000..5893f97
Binary files /dev/null and b/j8lib/groovy-dateutil-4.0.15.jar differ
diff --git a/j8lib/groovy-docgenerator-4.0.15.jar b/j8lib/groovy-docgenerator-4.0.15.jar
new file mode 100644 (file)
index 0000000..bf76564
Binary files /dev/null and b/j8lib/groovy-docgenerator-4.0.15.jar differ
diff --git a/j8lib/groovy-ginq-4.0.15.jar b/j8lib/groovy-ginq-4.0.15.jar
new file mode 100644 (file)
index 0000000..46f561e
Binary files /dev/null and b/j8lib/groovy-ginq-4.0.15.jar differ
diff --git a/j8lib/groovy-groovydoc-4.0.15.jar b/j8lib/groovy-groovydoc-4.0.15.jar
new file mode 100644 (file)
index 0000000..b818919
Binary files /dev/null and b/j8lib/groovy-groovydoc-4.0.15.jar differ
diff --git a/j8lib/groovy-groovysh-4.0.15.jar b/j8lib/groovy-groovysh-4.0.15.jar
new file mode 100644 (file)
index 0000000..253eff6
Binary files /dev/null and b/j8lib/groovy-groovysh-4.0.15.jar differ
diff --git a/j8lib/groovy-jmx-4.0.15.jar b/j8lib/groovy-jmx-4.0.15.jar
new file mode 100644 (file)
index 0000000..8667ac4
Binary files /dev/null and b/j8lib/groovy-jmx-4.0.15.jar differ
diff --git a/j8lib/groovy-json-4.0.15.jar b/j8lib/groovy-json-4.0.15.jar
new file mode 100644 (file)
index 0000000..76b486a
Binary files /dev/null and b/j8lib/groovy-json-4.0.15.jar differ
diff --git a/j8lib/groovy-jsr223-4.0.15.jar b/j8lib/groovy-jsr223-4.0.15.jar
new file mode 100644 (file)
index 0000000..5ae9f69
Binary files /dev/null and b/j8lib/groovy-jsr223-4.0.15.jar differ
diff --git a/j8lib/groovy-macro-4.0.15.jar b/j8lib/groovy-macro-4.0.15.jar
new file mode 100644 (file)
index 0000000..e5f7abb
Binary files /dev/null and b/j8lib/groovy-macro-4.0.15.jar differ
diff --git a/j8lib/groovy-macro-library-4.0.15.jar b/j8lib/groovy-macro-library-4.0.15.jar
new file mode 100644 (file)
index 0000000..92c208f
Binary files /dev/null and b/j8lib/groovy-macro-library-4.0.15.jar differ
diff --git a/j8lib/groovy-nio-4.0.15.jar b/j8lib/groovy-nio-4.0.15.jar
new file mode 100644 (file)
index 0000000..e6e2ad8
Binary files /dev/null and b/j8lib/groovy-nio-4.0.15.jar differ
diff --git a/j8lib/groovy-servlet-4.0.15.jar b/j8lib/groovy-servlet-4.0.15.jar
new file mode 100644 (file)
index 0000000..711a1e2
Binary files /dev/null and b/j8lib/groovy-servlet-4.0.15.jar differ
diff --git a/j8lib/groovy-sql-4.0.15.jar b/j8lib/groovy-sql-4.0.15.jar
new file mode 100644 (file)
index 0000000..058db44
Binary files /dev/null and b/j8lib/groovy-sql-4.0.15.jar differ
diff --git a/j8lib/groovy-swing-4.0.15.jar b/j8lib/groovy-swing-4.0.15.jar
new file mode 100644 (file)
index 0000000..848d074
Binary files /dev/null and b/j8lib/groovy-swing-4.0.15.jar differ
diff --git a/j8lib/groovy-templates-4.0.15.jar b/j8lib/groovy-templates-4.0.15.jar
new file mode 100644 (file)
index 0000000..3cd0245
Binary files /dev/null and b/j8lib/groovy-templates-4.0.15.jar differ
diff --git a/j8lib/groovy-test-4.0.15.jar b/j8lib/groovy-test-4.0.15.jar
new file mode 100644 (file)
index 0000000..e600dc7
Binary files /dev/null and b/j8lib/groovy-test-4.0.15.jar differ
diff --git a/j8lib/groovy-test-junit5-4.0.15.jar b/j8lib/groovy-test-junit5-4.0.15.jar
new file mode 100644 (file)
index 0000000..abcc69a
Binary files /dev/null and b/j8lib/groovy-test-junit5-4.0.15.jar differ
diff --git a/j8lib/groovy-testng-4.0.15.jar b/j8lib/groovy-testng-4.0.15.jar
new file mode 100644 (file)
index 0000000..60c1b58
Binary files /dev/null and b/j8lib/groovy-testng-4.0.15.jar differ
diff --git a/j8lib/groovy-toml-4.0.15.jar b/j8lib/groovy-toml-4.0.15.jar
new file mode 100644 (file)
index 0000000..ad49634
Binary files /dev/null and b/j8lib/groovy-toml-4.0.15.jar differ
diff --git a/j8lib/groovy-typecheckers-4.0.15.jar b/j8lib/groovy-typecheckers-4.0.15.jar
new file mode 100644 (file)
index 0000000..dc113c3
Binary files /dev/null and b/j8lib/groovy-typecheckers-4.0.15.jar differ
diff --git a/j8lib/groovy-xml-4.0.15.jar b/j8lib/groovy-xml-4.0.15.jar
new file mode 100644 (file)
index 0000000..21aeea0
Binary files /dev/null and b/j8lib/groovy-xml-4.0.15.jar differ
diff --git a/j8lib/groovy-yaml-4.0.15.jar b/j8lib/groovy-yaml-4.0.15.jar
new file mode 100644 (file)
index 0000000..207d47d
Binary files /dev/null and b/j8lib/groovy-yaml-4.0.15.jar differ
diff --git a/j8lib/javaparser-core-3.25.5.jar b/j8lib/javaparser-core-3.25.5.jar
new file mode 100644 (file)
index 0000000..92eed53
Binary files /dev/null and b/j8lib/javaparser-core-3.25.5.jar differ
index 70eeb95..c3c8589 100644 (file)
@@ -1246,8 +1246,8 @@ label.mapping_method = Sequence \u27f7 Structure mapping method
 status.cancelled_image_export_operation = Cancelled {0} export operation
 info.error_creating_file = Error creating {0} file
 exception.outofmemory_loading_mmcif_file = Out of memory loading mmCIF File
-label.run_groovy = Run Groovy console script
-label.run_groovy_tip = Run the script in the Groovy console over this alignment
+label.run_groovy = Run Groovy Console Script
+label.run_groovy_tip = Run the script in the Groovy Console over this alignment
 label.couldnt_run_groovy_script = Failed to run Groovy script
 label.uniprot_sequence_fetcher = UniProt Sequence Fetcher
 action.next_page= >> 
@@ -1468,3 +1468,4 @@ label.command_line_arguments = Command Line Arguments
 warning.using_old_command_line_arguments = It looks like you are using old command line arguments.  These are now deprecated and will be removed in a future release of Jalview.\nFind out about the new command line arguments at\n
 warning.using_mixed_command_line_arguments = Jalview cannot use both old (-arg) and new (--arg) command line arguments.  Please check your command line arguments.\ne.g. {0} and {1}
 warning.the_following_errors = The following errors and warnings occurred whilst processing files:
+action.show_hetatm = Show Ligands (HETATM)
index adaa3ee..c5d35fb 100755 (executable)
                                                <xs:attribute name="fontName" type="xs:string" />
                                                <xs:attribute name="fontSize" type="xs:int" />
                                                <xs:attribute name="fontStyle" type="xs:int" />
+                                               <xs:attribute name="idWidth" type="xs:int" />
+                                               <xs:attribute name="idWidthManuallyAdjusted" type="xs:boolean" />
                                                <xs:attribute name="scaleProteinAsCdna" type="xs:boolean" use="optional" default="true" />
                                                <xs:attribute name="viewName" type="xs:string" />
                                                <xs:attribute name="sequenceSetId" type="xs:string" />
index fedbae3..364bfbe 100755 (executable)
            xjc schemas/jalview.xsd -d src -p jalview.xml.binding.jalview
        Note this also generates code for included schemas
 -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vamsas="www.vamsas.ac.uk/jalview/version2" targetNamespace="www.vamsas.ac.uk/jalview/version2" elementFormDefault="qualified" attributeFormDefault="unqualified">
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+       xmlns:vamsas="www.vamsas.ac.uk/jalview/version2"
+       targetNamespace="www.vamsas.ac.uk/jalview/version2"
+       elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:complexType name="VAMSAS">
                <xs:sequence>
-                       <xs:element name="Tree" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
-                       <xs:element ref="vamsas:SequenceSet" minOccurs="0" maxOccurs="unbounded"/>
+                       <xs:element name="Tree" type="xs:string" minOccurs="0"
+                               maxOccurs="unbounded" />
+                       <xs:element ref="vamsas:SequenceSet" minOccurs="0"
+                               maxOccurs="unbounded" />
                </xs:sequence>
        </xs:complexType>
        <xs:complexType name="mapListType">
                <xs:annotation>
-                       <xs:documentation> 
-                               developed after mapRangeType from http://www.vamsas.ac.uk/schemas/1.0/vamsasTypes
+                       <xs:documentation>
+                               developed after mapRangeType from
+                               http://www.vamsas.ac.uk/schemas/1.0/vamsasTypes
                        </xs:documentation>
                        <xs:documentation>
-                               This effectively represents a java.util.MapList object
+                               This effectively represents a java.util.MapList
+                               object
                        </xs:documentation>
                </xs:annotation>
                <xs:sequence>
-                       <xs:element name="mapListFrom" minOccurs="0" maxOccurs="unbounded">
+                       <xs:element name="mapListFrom" minOccurs="0"
+                               maxOccurs="unbounded">
                                <xs:annotation>
-                                       <xs:documentation> a region from start to end inclusive</xs:documentation>
+                                       <xs:documentation> a region from start to end inclusive
+                                       </xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
-                                       <xs:attribute name="start" type="xs:int" use="required"/>
-                                       <xs:attribute name="end" type="xs:int" use="required"/>
+                                       <xs:attribute name="start" type="xs:int"
+                                               use="required" />
+                                       <xs:attribute name="end" type="xs:int" use="required" />
                                </xs:complexType>
-                       </xs:element>                                   
-                       <xs:element name="mapListTo" minOccurs="0" maxOccurs="unbounded">
+                       </xs:element>
+                       <xs:element name="mapListTo" minOccurs="0"
+                               maxOccurs="unbounded">
                                <xs:annotation>
-                                       <xs:documentation> a region from start to end inclusive</xs:documentation>
+                                       <xs:documentation> a region from start to end inclusive
+                                       </xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
-                                       <xs:attribute name="start" type="xs:int" use="required"/>
-                                       <xs:attribute name="end" type="xs:int" use="required"/>
+                                       <xs:attribute name="start" type="xs:int"
+                                               use="required" />
+                                       <xs:attribute name="end" type="xs:int" use="required" />
                                </xs:complexType>
-                       </xs:element>                                   
+                       </xs:element>
                </xs:sequence>
-               <xs:attribute name="mapFromUnit" type="xs:positiveInteger" use="required">
+               <xs:attribute name="mapFromUnit"
+                       type="xs:positiveInteger" use="required">
                        <xs:annotation>
-                               <xs:documentation>number of dictionary symbol widths involved in each
-                                       mapped position on this sequence (for example, 3 for a dna sequence exon
-                                       region that is being mapped to a protein sequence). This is optional,
-                                       since the unit can be usually be inferred from the dictionary type of
-                                       each sequence involved in the mapping. </xs:documentation>
+                               <xs:documentation>number of dictionary symbol widths involved in
+                                       each
+                                       mapped position on this sequence (for example, 3 for a dna
+                                       sequence exon
+                                       region that is being mapped to a protein sequence).
+                                       This is optional,
+                                       since the unit can be usually be inferred from the
+                                       dictionary type of
+                                       each sequence involved in the mapping.
+                               </xs:documentation>
                        </xs:annotation>
                </xs:attribute>
-               <xs:attribute name="mapToUnit" type="xs:positiveInteger" use="required">
+               <xs:attribute name="mapToUnit" type="xs:positiveInteger"
+                       use="required">
                        <xs:annotation>
-                               <xs:documentation>number of dictionary symbol widths involved in each
-                                       mapped position on this sequence (for example, 3 for a dna sequence exon
-                                       region that is being mapped to a protein sequence). This is optional,
-                                       since the unit can be usually be inferred from the dictionary type of
-                                       each sequence involved in the mapping. </xs:documentation>
+                               <xs:documentation>number of dictionary symbol widths involved in
+                                       each
+                                       mapped position on this sequence (for example, 3 for a dna
+                                       sequence exon
+                                       region that is being mapped to a protein sequence).
+                                       This is optional,
+                                       since the unit can be usually be inferred from the
+                                       dictionary type of
+                                       each sequence involved in the mapping.
+                               </xs:documentation>
                        </xs:annotation>
                </xs:attribute>
        </xs:complexType>
                <xs:complexType>
                        <xs:annotation>
                                <xs:documentation>
-                                       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).
                                </xs:documentation>
                        </xs:annotation>
                        <xs:complexContent>
                                <xs:extension base="vamsas:mapListType">
                                        <xs:sequence>
                                                <xs:choice minOccurs="0" maxOccurs="1">
-                                                       <xs:element ref="vamsas:Sequence"/>
+                                                       <xs:element ref="vamsas:Sequence" />
                                                        <xs:element name="dseqFor">
                                                                <xs:simpleType>
                                                                        <xs:restriction base="xs:string">
                                                                                <xs:annotation>
-                                                                                       <xs:documentation>The sequence whose dataset sequence is to be referenced here</xs:documentation>
+                                                                                       <xs:documentation>The sequence whose dataset sequence is to
+                                                                                               be referenced here
+                                                                                       </xs:documentation>
                                                                                </xs:annotation>
                                                                        </xs:restriction>
                                                                </xs:simpleType>
                                                        </xs:element>
                                                </xs:choice>
                                        </xs:sequence>
-                                       <xs:attribute name="mappingType" type="xs:string" use="optional">
+                                       <xs:attribute name="mappingType" type="xs:string"
+                                               use="optional">
                                                <xs:annotation>
-                                                       <xs:documentation>Biotype of the mapping e.g. CdsToPeptide</xs:documentation>
+                                                       <xs:documentation>Biotype of the mapping e.g. CdsToPeptide
+                                                       </xs:documentation>
                                                </xs:annotation>
                                        </xs:attribute>
                                </xs:extension>
-                       </xs:complexContent>    
+                       </xs:complexContent>
                </xs:complexType>
        </xs:element>
        <xs:element name="AlcodonFrame">
                <xs:complexType>
                        <xs:sequence>
-                               <xs:element name="alcodon" minOccurs="0" maxOccurs="unbounded">
+                               <xs:element name="alcodon" minOccurs="0"
+                                       maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:annotation>
                                                        <xs:documentation>
-                                                               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).
+                                                               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).
                                                        </xs:documentation>
                                                </xs:annotation>
-                                               <xs:attribute name="pos1" type="xs:integer" use="optional"/>
-                                               <xs:attribute name="pos2" type="xs:integer" use="optional"/>
-                                               <xs:attribute name="pos3" type="xs:integer" use="optional"/>
+                                               <xs:attribute name="pos1" type="xs:integer"
+                                                       use="optional" />
+                                               <xs:attribute name="pos2" type="xs:integer"
+                                                       use="optional" />
+                                               <xs:attribute name="pos3" type="xs:integer"
+                                                       use="optional" />
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="alcodMap" minOccurs="0" maxOccurs="unbounded">
+                               <xs:element name="alcodMap" minOccurs="0"
+                                       maxOccurs="unbounded">
                                        <xs:complexType>
                                                <xs:sequence>
-                                                       <xs:element ref="vamsas:Mapping" maxOccurs="1" minOccurs="1">
+                                                       <xs:element ref="vamsas:Mapping" maxOccurs="1"
+                                                               minOccurs="1">
                                                                <xs:annotation>
                                                                        <xs:documentation>
-                                                                               a Mapping entry and an associated protein sequence
+                                                                               a Mapping entry and an associated protein
+                                                                               sequence
                                                                        </xs:documentation>
                                                                </xs:annotation>
                                                        </xs:element>
                                                </xs:sequence>
-                                               <xs:attribute name="dnasq" type="xs:string" use="required">
+                                               <xs:attribute name="dnasq" type="xs:string"
+                                                       use="required">
                                                        <xs:annotation>
                                                                <xs:documentation>
-                                                                       internal jalview id for the dnasq for this mapping.
+                                                                       internal jalview id for the dnasq for this
+                                                                       mapping.
                                                                </xs:documentation>
                                                        </xs:annotation>
                                                </xs:attribute>
                                        </xs:complexType>
-                                       
+
                                </xs:element>
-                               
+
                        </xs:sequence>
                </xs:complexType>
        </xs:element>
                        <xs:complexContent>
                                <xs:extension base="vamsas:SequenceType">
                                        <xs:sequence>
-                                               <xs:element name="DBRef" minOccurs="0" maxOccurs="unbounded">
+                                               <xs:element name="DBRef" minOccurs="0"
+                                                       maxOccurs="unbounded">
                                                        <xs:complexType>
                                                                <xs:sequence>
-                                                                       <xs:element ref="vamsas:Mapping" minOccurs="0" maxOccurs="1"/>
-                                                               </xs:sequence>                                                                                                  
-                                                               <xs:attribute name="source" type="xs:string"/>
-                                                               <xs:attribute name="version" type="xs:string"/>
-                                                               <xs:attribute name="accessionId" type="xs:string"/>
-                                                               <xs:attribute name="locus" type="xs:boolean" default="false">
+                                                                       <xs:element ref="vamsas:Mapping" minOccurs="0"
+                                                                               maxOccurs="1" />
+                                                               </xs:sequence>
+                                                               <xs:attribute name="source" type="xs:string" />
+                                                               <xs:attribute name="version" type="xs:string" />
+                                                               <xs:attribute name="accessionId" type="xs:string" />
+                                                               <xs:attribute name="locus" type="xs:boolean"
+                                                                       default="false">
                                                                        <xs:annotation>
                                                                                <xs:documentation>
-                                                                                       true for gene locus mapping, source=species, version=assembly, accession=chromosome
+                                                                                       true for gene locus mapping, source=species,
+                                                                                       version=assembly, accession=chromosome
                                                                                </xs:documentation>
                                                                        </xs:annotation>
                                                                </xs:attribute>
-                                                               <xs:attribute name="canonical" type="xs:boolean" default="false">
+                                                               <xs:attribute name="canonical" type="xs:boolean"
+                                                                       default="false">
                                                                        <xs:annotation>
                                                                                <xs:documentation>
-                                                                                       true for the representative accession for databases where multiple accessions map to the same entry (eg. Uniprot)
+                                                                                       true for the representative accession for
+                                                                                       databases where multiple accessions map to the same entry
+                                                                                       (eg. Uniprot)
                                                                                </xs:documentation>
                                                                        </xs:annotation>
                                                                </xs:attribute>
                                                        </xs:complexType>
                                                </xs:element>
                                        </xs:sequence>
-                                       <xs:attribute name="dsseqid" type="xs:string" use="optional">
+                                       <xs:attribute name="dsseqid" type="xs:string"
+                                               use="optional">
                                                <xs:annotation>
                                                        <xs:documentation>
-                                                               dataset sequence id for this sequence. Will be created as union of sequences.
+                                                               dataset sequence id for this sequence. Will be
+                                                               created as union of sequences.
                                                        </xs:documentation>
                                                </xs:annotation>
                                        </xs:attribute>
-                                       <xs:attribute name="biotype" type="xs:string" use="optional">
+                                       <xs:attribute name="biotype" type="xs:string"
+                                               use="optional">
                                                <xs:annotation>
                                                        <xs:documentation>
                                                                Biotype of the sequence (if known)
                                                <xs:attribute name="colour" type="xs:int" />
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element name="contactmatrix" type="vamsas:MatrixType"
-                                       maxOccurs="unbounded" minOccurs="0">
+                               <xs:element name="contactmatrix"
+                                       type="vamsas:MapOnAMatrixType" maxOccurs="unbounded" minOccurs="0">
                                </xs:element>
-                               <xs:element name="property" type="vamsas:property" minOccurs="0" maxOccurs="unbounded"/>
+                               <xs:element name="property" type="vamsas:property"
+                                       minOccurs="0" maxOccurs="unbounded" />
                        </xs:sequence>
-                       <xs:attribute name="graph" type="xs:boolean" use="required" />
-                       <xs:attribute name="graphType" type="xs:int" use="optional" />
+                       <xs:attribute name="graph" type="xs:boolean"
+                               use="required" />
+                       <xs:attribute name="graphType" type="xs:int"
+                               use="optional" />
                        <xs:attribute name="sequenceRef" type="xs:string"
                                use="optional" />
                        <xs:attribute name="groupRef" type="xs:string"
                                use="optional" />
                        <xs:attribute name="graphGroup" type="xs:int"
                                use="optional" />
-                       <xs:attribute name="graphHeight" type="xs:int" use="optional">
-                       <xs:annotation><xs:documentation>height in pixels for the graph if this is a graph-type annotation.</xs:documentation></xs:annotation></xs:attribute>
+                       <xs:attribute name="graphHeight" type="xs:int"
+                               use="optional">
+                               <xs:annotation>
+                                       <xs:documentation>height in pixels for the graph if this is a
+                                               graph-type annotation.
+                                       </xs:documentation>
+                               </xs:annotation>
+                       </xs:attribute>
                        <xs:attribute name="id" type="xs:string" use="optional" />
                        <xs:attribute name="scoreOnly" type="xs:boolean"
                                use="optional" default="false" />
-                       <xs:attribute name="score" type="xs:double" use="optional" />
+                       <xs:attribute name="score" type="xs:double"
+                               use="optional" />
                        <xs:attribute name="visible" type="xs:boolean"
                                use="optional" />
                        <xs:attribute name="centreColLabels" type="xs:boolean"
                                use="optional" />
 
 
-                       <xs:attribute name="autoCalculated" type="xs:boolean" use="optional" default="false">
-                       <xs:annotation><xs:documentation>is an autocalculated annotation row</xs:documentation>
-                       </xs:annotation></xs:attribute>
-                       <xs:attribute name="belowAlignment" type="xs:boolean" use="optional" default="true">
-                       <xs:annotation><xs:documentation>is to be shown below the alignment - introduced in Jalview 2.8 for visualizing T-COFFEE alignment scores</xs:documentation></xs:annotation></xs:attribute>
-                       <xs:attribute name="calcId" type="xs:string" use="optional">
-                       <xs:annotation><xs:documentation>Optional string identifier used to group sets of annotation produced by a particular calculation. Values are opaque strings but have semantic meaning to Jalview's renderer, data importer and calculation system.</xs:documentation></xs:annotation>
+                       <xs:attribute name="autoCalculated" type="xs:boolean"
+                               use="optional" default="false">
+                               <xs:annotation>
+                                       <xs:documentation>is an autocalculated annotation row
+                                       </xs:documentation>
+                               </xs:annotation>
+                       </xs:attribute>
+                       <xs:attribute name="belowAlignment" type="xs:boolean"
+                               use="optional" default="true">
+                               <xs:annotation>
+                                       <xs:documentation>is to be shown below the alignment - introduced
+                                               in Jalview 2.8 for visualizing T-COFFEE alignment scores
+                                       </xs:documentation>
+                               </xs:annotation>
+                       </xs:attribute>
+                       <xs:attribute name="calcId" type="xs:string"
+                               use="optional">
+                               <xs:annotation>
+                                       <xs:documentation>Optional string identifier used to group sets of
+                                               annotation produced by a particular calculation. Values are opaque
+                                               strings but have semantic meaning to Jalview's renderer, data
+                                               importer and calculation system.
+                                       </xs:documentation>
+                               </xs:annotation>
                        </xs:attribute>
                </xs:complexType>
-       </xs:element>   
+       </xs:element>
        <xs:element name="SequenceSet">
                <xs:complexType>
                        <xs:sequence>
-                               <xs:element ref="vamsas:Sequence" minOccurs="0" maxOccurs="unbounded"/>
-                               <xs:element ref="vamsas:Annotation" minOccurs="0" maxOccurs="unbounded"/>
-                               <xs:element name="sequenceSetProperties" minOccurs="0" maxOccurs="unbounded">
+                               <xs:element ref="vamsas:Sequence" minOccurs="0"
+                                       maxOccurs="unbounded" />
+                               <xs:element ref="vamsas:Annotation" minOccurs="0"
+                                       maxOccurs="unbounded" />
+                               <xs:element name="sequenceSetProperties" minOccurs="0"
+                                       maxOccurs="unbounded">
                                        <xs:complexType>
-                                               <xs:attribute name="key" type="xs:string"/>
-                                               <xs:attribute name="value" type="xs:string"/>
+                                               <xs:attribute name="key" type="xs:string" />
+                                               <xs:attribute name="value" type="xs:string" />
                                        </xs:complexType>
                                </xs:element>
-                               <xs:element ref="vamsas:AlcodonFrame" minOccurs="0" maxOccurs="unbounded"/>
+                               <xs:element ref="vamsas:AlcodonFrame" minOccurs="0"
+                                       maxOccurs="unbounded" />
+                               <xs:element name="Matrix" type="vamsas:MatrixType"
+                                       minOccurs="0" maxOccurs="unbounded">
+                                       <xs:annotation>
+                                               <xs:documentation>Matrices referred to by this set of sequences.
+                                               </xs:documentation>
+                                       </xs:annotation>
+                               </xs:element>
                        </xs:sequence>
-                       <xs:attribute name="gapChar" type="xs:string" use="required"/>
-                       <xs:attribute name="datasetId" type="xs:string" use="optional">
+                       <xs:attribute name="gapChar" type="xs:string"
+                               use="required" />
+                       <xs:attribute name="datasetId" type="xs:string"
+                               use="optional">
                                <xs:annotation>
                                        <xs:documentation>
-                                               reference to set where jalview will gather the dataset sequences for all sequences in the set. 
+                                               reference to set where jalview will gather the
+                                               dataset sequences for all sequences in the set.
                                        </xs:documentation>
                                </xs:annotation>
                        </xs:attribute>
        <xs:element name="annotationElement">
                <xs:complexType>
                        <xs:sequence>
-                               <xs:element name="displayCharacter" type="xs:string" minOccurs="0"/>
-                               <xs:element name="description" type="xs:string" minOccurs="0"/>
+                               <xs:element name="displayCharacter" type="xs:string"
+                                       minOccurs="0" />
+                               <xs:element name="description" type="xs:string"
+                                       minOccurs="0" />
                                <xs:element name="secondaryStructure" minOccurs="0">
                                        <xs:simpleType>
                                                <xs:restriction base="xs:string">
-                                                       <xs:length value="1"/>
+                                                       <xs:length value="1" />
                                                </xs:restriction>
                                        </xs:simpleType>
                                </xs:element>
-                               <xs:element name="value" type="xs:float" minOccurs="0"/>
+                               <xs:element name="value" type="xs:float" minOccurs="0" />
                        </xs:sequence>
-                       <xs:attribute name="position" type="xs:int" use="required"/>
-                       <xs:attribute name="colour" type="xs:int" use="optional"/>
+                       <xs:attribute name="position" type="xs:int"
+                               use="required" />
+                       <xs:attribute name="colour" type="xs:int" use="optional" />
                </xs:complexType>
        </xs:element>
        <xs:complexType name="SequenceType">
                <xs:sequence>
-                       <xs:element name="sequence" type="xs:string" minOccurs="0"/>
-                       <xs:element name="name" type="xs:string" minOccurs="0"/>
+                       <xs:element name="sequence" type="xs:string" minOccurs="0" />
+                       <xs:element name="name" type="xs:string" minOccurs="0" />
                </xs:sequence>
-               <xs:attribute name="id" type="xs:string"/>
-               <xs:attribute name="description" type="xs:string"/>
+               <xs:attribute name="id" type="xs:string" />
+               <xs:attribute name="description" type="xs:string" />
        </xs:complexType>
        <xs:complexType name="MatrixType">
+               <xs:annotation>
+                       <xs:documentation>Represents matrix data imported to Jalview, and the
+                               results of any derived calculations (independent of a particular
+                               view
+                               on the matrix).
+                       </xs:documentation>
+               </xs:annotation>
                <xs:sequence>
                        <xs:element name="elements" type="xs:string" minOccurs="1"
                                maxOccurs="1">
                                <xs:annotation>
                                        <xs:documentation>serialised representation of matrix as one or
-                                               more sets of comma separated values</xs:documentation>
+                                               more sets of comma separated values
+                                       </xs:documentation>
                                </xs:annotation>
                        </xs:element>
                        <xs:element name="groups" type="xs:string" minOccurs="0"
                        </xs:element>
                        <xs:element name="property" type="vamsas:property"
                                minOccurs="0" maxOccurs="unbounded" />
-                       <xs:element name="mapping" type="vamsas:mapListType"
-                               minOccurs="0" maxOccurs="1">
-                       <xs:annotation>
-                               <xs:documentation>mapping from the matrix row and column positions to
-                                       associated reference frame</xs:documentation>
-                               </xs:annotation>
-                       </xs:element>
                </xs:sequence>
 
                <xs:attribute name="type" type="xs:string" use="required" />
                        use="optional" />
                <xs:attribute name="cutHeight" type="xs:double"
                        use="optional" />
-               <xs:attribute name="id" type="xs:string" use="optional" />
+               <xs:attribute name="id" type="xs:string" use="required" />
 
        </xs:complexType>
+       <xs:complexType name="MapOnAMatrixType">
+               <xs:annotation>
+                       <xs:documentation>Defines a mapping from the local frame to a matrix
+                               and its associated data specified by MatrixType
+                       </xs:documentation>
+               </xs:annotation>
+               <xs:sequence>
+                       <xs:element name="property" type="vamsas:property"
+                               minOccurs="0" maxOccurs="unbounded" />
+                       <xs:element name="mapping" type="vamsas:mapListType"
+                               minOccurs="0" maxOccurs="1">
+                               <xs:annotation>
+                                       <xs:documentation>mapping from the matrix row and column positions
+                                               to
+                                               associated reference frame
+                                       </xs:documentation>
+                               </xs:annotation>
+                       </xs:element>
+               </xs:sequence>
+
+               <xs:attribute name="matrix" type="xs:string"
+                       use="required">
+
+                       <xs:annotation>
+                               <xs:documentation>reference to the matrix type this Map refers to
+                               </xs:documentation>
+                       </xs:annotation>
+               </xs:attribute>
+               <xs:attribute name="id" type="xs:string" use="optional" />
+       </xs:complexType>
        <xs:complexType name="property">
                <xs:attribute name="name" type="xs:string" />
                <xs:attribute name="value" type="xs:string" />
        </xs:complexType>
-                               
-       
+
+
 </xs:schema>
index 532e545..77f2b6d 100644 (file)
@@ -21,6 +21,8 @@
 package jalview.api.structures;
 
 import java.io.File;
+import java.util.Collections;
+import java.util.List;
 
 import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.PDBEntry;
@@ -192,4 +194,12 @@ public interface JalviewStructureDisplayI
 
   File saveSession();
 
+  /**
+   * 
+   * @return heteroatoms in a form suitable for display and passing to command generator to display hetatms
+   */
+  default List<String> getHetatms() {
+    return Collections.EMPTY_LIST;
+  }
+
 }
index 1abb171..483b1fc 100755 (executable)
@@ -54,6 +54,8 @@ import javax.swing.LookAndFeel;
 import javax.swing.UIManager;
 
 import jalview.analytics.Plausible;
+import jalview.bin.argparser.Arg;
+import jalview.bin.argparser.ArgParser;
 import jalview.datamodel.PDBEntry;
 import jalview.gui.Preferences;
 import jalview.gui.UserDefinedColours;
@@ -1663,27 +1665,36 @@ public class Cache
     }
     if (file == null || !file.exists())
     {
+      if (file != null)
+      {
+        jalview.bin.Console
+                .errPrintln("Could not load bootstrap preferences file '"
+                        + file.getPath() + "'");
+      }
       String channelPrefsFilename = ChannelProperties
               .getProperty("preferences.filename");
       String propertiesFilename = System.getProperty("user.home")
               + File.separatorChar + channelPrefsFilename;
+      jalview.bin.Console.errPrintln(
+              "Using default properties file '" + propertiesFilename + "'");
       file = new File(propertiesFilename);
     }
     if (file == null || !file.exists())
+
     {
       String releasePrefsFilename = fallbackPropertiesFile;
       String releasePropertiesFilename = System.getProperty("user.home")
               + File.separatorChar + releasePrefsFilename;
+      jalview.bin.Console.errPrintln("Falling back to properties file '"
+              + releasePropertiesFilename + "'");
       file = new File(releasePropertiesFilename);
     }
 
-    if (filename == null)
-      return null;
     if (!file.exists())
     {
       jalview.bin.Console
               .errPrintln("Could not load bootstrap preferences file '"
-                      + filename + "'");
+                      + file.getPath() + "'");
       return null;
     }
 
@@ -1723,4 +1734,10 @@ public class Cache
   {
     return key == null ? null : sessionProperties.get(key);
   }
+
+  public static boolean getArgCacheDefault(Arg a, String pref, boolean def)
+  {
+    ArgParser ap = Jalview.getInstance().getArgParser();
+    return ap.isSet(a) ? ap.getBoolean(a) : getDefault(pref, def);
+  }
 }
index 5d3b50d..2794b02 100644 (file)
@@ -13,6 +13,8 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import javax.swing.SwingUtilities;
+
 import jalview.analysis.AlignmentUtils;
 import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Jalview.ExitCode;
@@ -194,7 +196,7 @@ public class Commands
     if (avm.containsArg(Arg.APPEND) || avm.containsArg(Arg.OPEN))
     {
       commandArgsProvided = true;
-      long progress = -1;
+      final long progress = System.currentTimeMillis();
 
       boolean first = true;
       boolean progressBarSet = false;
@@ -220,10 +222,18 @@ public class Commands
           first = false;
           if (!headless && desktop != null)
           {
-            desktop.setProgressBar(
-                    MessageManager.getString(
-                            "status.processing_commandline_args"),
-                    progress = System.currentTimeMillis());
+            SwingUtilities.invokeLater(new Runnable()
+            {
+              @Override
+              public void run()
+              {
+                desktop.setProgressBar(
+                        MessageManager.getString(
+                                "status.processing_commandline_args"),
+                        progress);
+
+              }
+            });
             progressBarSet = true;
           }
         }
@@ -365,24 +375,49 @@ public class Commands
           boolean showSSAnnotations = avm.getFromSubValArgOrPref(
                   Arg.SHOWSSANNOTATIONS, av.getSubVals(), null,
                   "STRUCT_FROM_PDB", true);
-          af.setAnnotationsVisibility(showSSAnnotations, true, false);
 
           // Show sequence annotations?
           boolean showAnnotations = avm.getFromSubValArgOrPref(
                   Arg.SHOWANNOTATIONS, av.getSubVals(), null,
                   "SHOW_ANNOTATIONS", true);
-          af.setAnnotationsVisibility(showAnnotations, false, true);
 
-          // show temperature factor annotations?
-          if (avm.getBoolean(Arg.NOTEMPFAC))
+          boolean hideTFrows = (avm.getBoolean(Arg.NOTEMPFAC));
+          final AlignFrame _af = af;
+          // many of jalview's format/layout methods are only thread safe on the
+          // swingworker thread.
+          // all these methods should be on the alignViewController so it can
+          // coordinate such details
+          try
           {
-            // do this better (annotation types?)
-            List<String> hideThese = new ArrayList<>();
-            hideThese.add("Temperature Factor");
-            hideThese.add(AlphaFoldAnnotationRowBuilder.LABEL);
-            AlignmentUtils.showOrHideSequenceAnnotations(
-                    af.getCurrentView().getAlignment(), hideThese, null,
-                    false, false);
+            SwingUtilities.invokeAndWait(new Runnable()
+            {
+
+              @Override
+              public void run()
+              {
+                _af.setAnnotationsVisibility(showSSAnnotations, true,
+                        false);
+
+                _af.setAnnotationsVisibility(showAnnotations, false, true);
+
+                // show temperature factor annotations?
+                if (hideTFrows)
+                {
+                  // do this better (annotation types?)
+                  List<String> hideThese = new ArrayList<>();
+                  hideThese.add("Temperature Factor");
+                  hideThese.add(AlphaFoldAnnotationRowBuilder.LABEL);
+                  AlignmentUtils.showOrHideSequenceAnnotations(
+                          _af.getCurrentView().getAlignment(), hideThese,
+                          null, false, false);
+                }
+              }
+            });
+          } catch (Exception x)
+          {
+            Console.warn(
+                    "Unexpected exception adjusting annotation row visibility.",
+                    x);
           }
 
           // wrap alignment? do this last for formatting reasons
@@ -408,9 +443,11 @@ public class Commands
         {
           Console.debug(
                   "Opening '" + openFile + "' in existing alignment frame");
+
           DataSourceType dst = HttpUtils.startsWithHttpOrHttps(openFile)
                   ? DataSourceType.URL
                   : DataSourceType.FILE;
+
           FileLoader fileLoader = new FileLoader(!headless);
           fileLoader.LoadFile(af.getCurrentView(), openFile, dst, null,
                   false);
@@ -439,11 +476,14 @@ public class Commands
     // open the structure (from same PDB file or given PDBfile)
     if (!avm.getBoolean(Arg.NOSTRUCTURE))
     {
+
       AlignFrame af = afMap.get(id);
       if (avm.containsArg(Arg.STRUCTURE))
       {
         commandArgsProvided = true;
-        for (ArgValue av : avm.getArgValueList(Arg.STRUCTURE))
+        for (
+
+        ArgValue av : avm.getArgValueList(Arg.STRUCTURE))
         {
           argParser.setStructureFilename(null);
           String val = av.getValue();
@@ -775,10 +815,11 @@ public class Commands
                   // RESTORE SESSION AFTER EXPORT IF NEED BE
                   if (sessionToRestore != null)
                   {
-                    Console.debug("Restoring session from "
-                            + sessionToRestore);
-                    
-                    sview.getBinding().restoreSession(sessionToRestore.getAbsolutePath());
+                    Console.debug(
+                            "Restoring session from " + sessionToRestore);
+
+                    sview.getBinding().restoreSession(
+                            sessionToRestore.getAbsolutePath());
 
                   }
                 } catch (ImageOutputException ioexec)
@@ -789,11 +830,14 @@ public class Commands
                   continue;
                 } finally
                 {
-                  try {
+                  try
+                  {
                     this.colourAlignFrame(af, originalColourScheme);
                   } catch (Exception t)
                   {
-                    addError("Unexpected error when restoring colourscheme to alignment after temporary change for export.",t);
+                    addError(
+                            "Unexpected error when restoring colourscheme to alignment after temporary change for export.",
+                            t);
                   }
                 }
               }
@@ -806,6 +850,7 @@ public class Commands
 
     if (wrap)
     {
+
       AlignFrame af = afMap.get(id);
       if (af != null)
       {
@@ -817,16 +862,16 @@ public class Commands
     boolean doShading = avm.getBoolean(Arg.TEMPFAC_SHADING);
     if (doShading)
     {
-      AlignFrame af = afMap.get(id);
-      for (AlignmentAnnotation aa : af.alignPanel.getAlignment()
-              .findAnnotation(PDBChain.class.getName().toString()))
-      {
-        AnnotationColourGradient acg = new AnnotationColourGradient(aa,
-                af.alignPanel.av.getGlobalColourScheme(), 0);
-        acg.setSeqAssociated(true);
-        af.changeColour(acg);
-        Console.info("Changed colour " + acg.toString());
-      }
+    AlignFrame af = afMap.get(id);
+    for (AlignmentAnnotation aa : af.alignPanel.getAlignment()
+            .findAnnotation(PDBChain.class.getName().toString()))
+    {
+      AnnotationColourGradient acg = new AnnotationColourGradient(aa,
+              af.alignPanel.av.getGlobalColourScheme(), 0);
+      acg.setSeqAssociated(true);
+      af.changeColour(acg);
+      Console.info("Changed colour " + acg.toString());
+    }
     }
     */
 
@@ -838,21 +883,29 @@ public class Commands
     ArgValuesMap avm = argParser.getLinkedArgs(id);
     AlignFrame af = afMap.get(id);
 
-    if (af == null)
+    if (avm != null && !avm.containsArg(Arg.GROOVY))
     {
-      addWarn("Did not have an alignment window for id=" + id);
+      // nothing to do
       return;
     }
 
+    if (af == null)
+    {
+      addWarn("Groovy script does not have an alignment window.  Proceeding with caution!");
+    }
+
     if (avm.containsArg(Arg.GROOVY))
     {
-      String groovyscript = avm.getValue(Arg.GROOVY);
-      if (groovyscript != null)
+      for (ArgValue groovyAv : avm.getArgValueList(Arg.GROOVY))
       {
-        // Execute the groovy script after we've done all the rendering stuff
-        // and before any images or figures are generated.
-        Console.info("Executing script " + groovyscript);
-        Jalview.getInstance().executeGroovyScript(groovyscript, af);
+        String groovyscript = groovyAv.getValue();
+        if (groovyscript != null)
+        {
+          // Execute the groovy script after we've done all the rendering stuff
+          // and before any images or figures are generated.
+          Console.info("Executing script " + groovyscript);
+          Jalview.getInstance().executeGroovyScript(groovyscript, af);
+        }
       }
     }
   }
@@ -862,9 +915,16 @@ public class Commands
     ArgValuesMap avm = argParser.getLinkedArgs(id);
     AlignFrame af = afMap.get(id);
 
+    if (avm != null && !avm.containsArg(Arg.IMAGE))
+    {
+      // nothing to do
+      return true;
+    }
+
     if (af == null)
     {
-      addWarn("Did not have an alignment window for id=" + id);
+      addWarn("Do not have an alignment window to create image from (id="
+              + id + ").  Not proceeding.");
       return false;
     }
 
@@ -991,9 +1051,16 @@ public class Commands
     ArgValuesMap avm = argParser.getLinkedArgs(id);
     AlignFrame af = afMap.get(id);
 
+    if (avm != null && !avm.containsArg(Arg.OUTPUT))
+    {
+      // nothing to do
+      return true;
+    }
+
     if (af == null)
     {
-      addWarn("Did not have an alignment window for id=" + id);
+      addWarn("Do not have an alignment window (id=" + id
+              + ").  Not proceeding.");
       return false;
     }
 
index 1b230ec..1bb8162 100644 (file)
 package jalview.bin;
 
 import java.io.PrintStream;
-import java.util.Locale;
 
 import jalview.log.JLogger;
-import jalview.log.JLoggerI;
 import jalview.log.JLoggerI.LogLevel;
 import jalview.log.JLoggerLog4j;
 import jalview.util.ChannelProperties;
@@ -241,7 +239,7 @@ public class Console
     {
       JLogger.LogLevel logLevel = JLogger.LogLevel.INFO;
 
-      if (JLogger.isLevel(providedLogLevel))
+      if (providedLogLevel != null && JLogger.isLevel(providedLogLevel))
       {
         logLevel = Console.getLogLevel(providedLogLevel);
       }
@@ -292,19 +290,23 @@ public class Console
 
   public static void setLogLevel(String logLevelString)
   {
-    for (LogLevel logLevel : JLoggerI.LogLevel.values())
+    LogLevel l = null;
+    try
+    {
+      l = LogLevel.valueOf(logLevelString);
+    } catch (IllegalArgumentException | NullPointerException e1)
+    {
+      Console.debug("Invalid log level '" + logLevelString + "'");
+      return;
+    }
+    if (l != null)
     {
-      if (logLevel.toString().toLowerCase(Locale.ROOT)
-              .equals(logLevelString.toLowerCase(Locale.ROOT)))
+      log.setLevel(l);
+      if (!Platform.isJS())
       {
-        log.setLevel(logLevel);
-        if (!Platform.isJS())
-        {
-          Log4j.init(logLevel);
-        }
-        JLoggerLog4j.getLogger("org.apache.axis", logLevel);
-        break;
+        Log4j.init(l);
       }
+      JLoggerLog4j.getLogger("org.apache.axis", l);
     }
   }
 
index b7d15e5..e343b0f 100755 (executable)
@@ -73,6 +73,8 @@ import jalview.bin.argparser.Arg.Opt;
 import jalview.bin.argparser.Arg.Type;
 import jalview.bin.argparser.ArgParser;
 import jalview.bin.argparser.BootstrapArgs;
+import jalview.bin.groovy.JalviewObject;
+import jalview.bin.groovy.JalviewObjectI;
 import jalview.ext.so.SequenceOntology;
 import jalview.gui.AlignFrame;
 import jalview.gui.Desktop;
@@ -118,7 +120,7 @@ import jalview.ws.jws2.Jws2Discoverer;
  * @author $author$
  * @version $Revision$
  */
-public class Jalview
+public class Jalview implements JalviewObjectI
 {
   static
   {
@@ -138,7 +140,7 @@ public class Jalview
 
   protected Commands cmds;
 
-  public static AlignFrame currentAlignFrame;
+  public AlignFrame currentAlignFrame = null;
 
   private ArgParser argparser = null;
 
@@ -447,7 +449,7 @@ public class Jalview
       }
       else if (bootstrapArgs.contains(Arg.DEBUG))
       {
-        logLevel = "DEBUG";
+        logLevel = bootstrapArgs.getBoolean(Arg.DEBUG) ? "DEBUG" : "INFO";
       }
       if (logLevel == null && !(bootstrapProperties == null))
       {
@@ -642,14 +644,12 @@ public class Jalview
     try
     {
       Console.initLogger();
-    } catch (
-
-    NoClassDefFoundError error)
+    } catch (NoClassDefFoundError error)
     {
       error.printStackTrace();
       String message = "\nEssential logging libraries not found."
               + "\nUse: java -classpath \"$PATH_TO_LIB$/*:$PATH_TO_CLASSES$\" jalview.bin.Jalview";
-      Jalview.exit(message, ExitCode.OK);
+      Jalview.exit(message, ExitCode.NO_LOGGING);
     }
     desktop = null;
 
@@ -1633,8 +1633,7 @@ public class Jalview
     PromptUserConfig prompter = new PromptUserConfig(Desktop.desktop,
             "USAGESTATS",
             MessageManager.getString("prompt.analytics_title"),
-            MessageManager.getString("prompt.analytics"),
-            new Runnable()
+            MessageManager.getString("prompt.analytics"), new Runnable()
             {
               @Override
               public void run()
@@ -1752,12 +1751,11 @@ public class Jalview
     }
     try
     {
+      JalviewObjectI j = new JalviewObject(this);
       Map<String, java.lang.Object> vbinding = new HashMap<>();
-      vbinding.put("Jalview", this);
-      if (af != null)
-      {
-        vbinding.put("currentAlFrame", af);
-      }
+      vbinding.put(JalviewObjectI.jalviewObjectName, j);
+      vbinding.put(JalviewObjectI.currentAlFrameName,
+              af != null ? af : getCurrentAlignFrame());
       Binding gbinding = new Binding(vbinding);
       GroovyScriptEngine gse = new GroovyScriptEngine(new URL[] { sfile });
       gse.run(sfile.toString(), gbinding);
@@ -1773,7 +1771,6 @@ public class Jalview
               .errPrintln("Exception Whilst trying to execute file " + sfile
                       + " as a groovy script.");
       e.printStackTrace(System.err);
-
     }
   }
 
@@ -1787,30 +1784,32 @@ public class Jalview
     return false;
   }
 
+  @Override
   public AlignFrame[] getAlignFrames()
   {
     return desktop == null ? new AlignFrame[] { getCurrentAlignFrame() }
-            : Desktop.getAlignFrames();
-
+            : Desktop.getDesktopAlignFrames();
   }
 
   /**
    * jalview.bin.Jalview.quit() will just run the non-GUI shutdownHook and exit
    */
+  @Override
   public void quit()
   {
     // System.exit will run the shutdownHook first
     Jalview.exit("Quitting now. Bye!", ExitCode.OK);
   }
 
-  public static AlignFrame getCurrentAlignFrame()
+  @Override
+  public AlignFrame getCurrentAlignFrame()
   {
-    return Jalview.currentAlignFrame;
+    return currentAlignFrame;
   }
 
-  public static void setCurrentAlignFrame(AlignFrame currentAlignFrame)
+  public void setCurrentAlignFrame(AlignFrame af)
   {
-    Jalview.currentAlignFrame = currentAlignFrame;
+    this.currentAlignFrame = af;
   }
 
   public Commands getCommands()
@@ -1862,7 +1861,7 @@ public class Jalview
     // only add new ones to the end of the list (to preserve ordinal values)
     OK, FILE_NOT_FOUND, FILE_NOT_READABLE, NO_FILES, INVALID_FORMAT,
     INVALID_ARGUMENT, INVALID_VALUE, MIXED_CLI_ARGUMENTS,
-    ERROR_RUNNING_COMMANDS;
+    ERROR_RUNNING_COMMANDS, NO_LOGGING, GROOVY_ERROR;
   }
 
   /******************************
@@ -2041,8 +2040,8 @@ public class Jalview
               j.getArgParser().getMixedExamples());
       String quit = MessageManager.getString("action.quit");
 
-      Desktop.instance.nonBlockingDialog(title, warning, quit,
-              JvOptionPane.WARNING_MESSAGE, false, true);
+      Desktop.instance.nonBlockingDialog(title, warning, null, quit,
+              JvOptionPane.WARNING_MESSAGE, false, false, true, 30000);
 
       Jalview.exit(
               "Exiting due to mixed old and new command line arguments.",
@@ -2066,8 +2065,8 @@ public class Jalview
       {
         String cont = MessageManager.getString("label.continue");
 
-        Desktop.instance.nonBlockingDialog(32, 2, title, warning, url, cont,
-                JvOptionPane.WARNING_MESSAGE, false, true, true);
+        Desktop.instance.nonBlockingDialog(title, warning, url, cont,
+                JvOptionPane.WARNING_MESSAGE, false, true, true, 30000);
       }
     }
     if (j.getCommands() != null && j.getCommands().getErrors().size() > 0)
@@ -2087,7 +2086,7 @@ public class Jalview
                 Math.max(message.length(), Math.min(60, shortest)),
                 Math.min(errors.size(), 20), title, message,
                 j.getCommands().errorsToString(), ok,
-                JvOptionPane.WARNING_MESSAGE, true, false, true);
+                JvOptionPane.WARNING_MESSAGE, true, false, true, -1);
       }
     }
   }
index 2a3a4a1..93156ac 100644 (file)
@@ -44,6 +44,8 @@ public enum Arg
   QUESTIONNAIRE(Type.CONFIG,
           "Show (or don't show) the questionnaire if one is available.",
           true, Opt.BOOLEAN, Opt.BOOTSTRAP),
+  JAVACONSOLE(Type.CONFIG, "Show (or don't show) the Java Console.", false,
+          Opt.BOOLEAN, Opt.BOOTSTRAP),
   NOUSAGESTATS(Type.CONFIG, "Don't send initial launch usage stats.",
           Opt.UNARY, Opt.BOOTSTRAP),
   NOSTARTUPFILE(Type.CONFIG, "Don't show the default startup file.",
index 1b8e6ad..155f69e 100644 (file)
@@ -318,9 +318,13 @@ public class ArgParser
     }
 
     if (bsa != null)
+    {
       this.bootstrapArgs = bsa;
+    }
     else
+    {
       this.bootstrapArgs = BootstrapArgs.getBootstrapArgs(args);
+    }
     parse(args, initsubstitutions, allowPrivate);
   }
 
index d32a5b2..5c21d03 100644 (file)
@@ -214,6 +214,13 @@ public class BootstrapArgs
         }
       }
     }
+
+    // if in an argfile, remove it from the hashset so it can be re-used in
+    // another argfile
+    if (inArgFile != null)
+    {
+      argFiles.remove(inArgFile);
+    }
   }
 
   public boolean contains(Arg a)
diff --git a/src/jalview/bin/groovy/JalviewObject.java b/src/jalview/bin/groovy/JalviewObject.java
new file mode 100644 (file)
index 0000000..e271c3c
--- /dev/null
@@ -0,0 +1,42 @@
+package jalview.bin.groovy;
+
+import jalview.bin.Jalview.ExitCode;
+import jalview.gui.AlignFrame;
+
+public class JalviewObject implements JalviewObjectI
+{
+  private JalviewObjectI object = null;
+
+  public JalviewObject(JalviewObjectI j)
+  {
+    this.object = j;
+  }
+
+  @Override
+  public AlignFrame[] getAlignFrames()
+  {
+    return object == null ? null : object.getAlignFrames();
+  }
+
+  @Override
+  public AlignFrame getCurrentAlignFrame()
+  {
+    return object == null ? null : object.getCurrentAlignFrame();
+  }
+
+  @Override
+  public void quit()
+  {
+    if (object != null)
+    {
+      object.quit();
+    }
+    else
+    {
+      jalview.bin.Jalview.exit(
+              "Groovy console quit without Jalview object.",
+              ExitCode.GROOVY_ERROR);
+    }
+  }
+
+}
diff --git a/src/jalview/bin/groovy/JalviewObjectI.java b/src/jalview/bin/groovy/JalviewObjectI.java
new file mode 100644 (file)
index 0000000..f365d30
--- /dev/null
@@ -0,0 +1,16 @@
+package jalview.bin.groovy;
+
+import jalview.gui.AlignFrame;
+
+public interface JalviewObjectI
+{
+  public AlignFrame[] getAlignFrames();
+
+  public AlignFrame getCurrentAlignFrame();
+
+  public final static String currentAlFrameName = "currentAlFrame";
+
+  public final static String jalviewObjectName = "Jalview";
+
+  public void quit();
+}
index aef2038..375e6b4 100755 (executable)
@@ -2057,7 +2057,7 @@ public class Alignment implements AlignmentI, AutoCloseable
     if (cm == null && _aa.sequenceRef != null)
     {
       cm = _aa.sequenceRef.getContactMatrixFor(_aa);
-      if (cm == null)
+      if (cm == null && _aa.sequenceRef.getDatasetSequence()!=null)
       {
         // TODO fix up this logic and unify with getContactListFor
         cm = _aa.sequenceRef.getDatasetSequence().getContactMatrixFor(_aa);
index 7e6b904..d85c3d8 100755 (executable)
@@ -142,7 +142,8 @@ public class AlignmentAnnotation
       scaleColLabel = true;
       _markRnaHelices();
     }
-    // jalview.bin.Console.outPrintln("featuregroup " + _rnasecstr[0].getFeatureGroup());
+    // jalview.bin.Console.outPrintln("featuregroup " +
+    // _rnasecstr[0].getFeatureGroup());
 
   }
 
@@ -309,7 +310,8 @@ public class AlignmentAnnotation
   public static final int CONTACT_MAP = 4;
 
   /**
-   * property that when set to non-empty string disables display of column groups defined on the contact matrix
+   * property that when set to non-empty string disables display of column
+   * groups defined on the contact matrix
    */
   public static final String CONTACT_MAP_NOGROUPS = "CMNOGRPS";
 
@@ -446,7 +448,8 @@ public class AlignmentAnnotation
         }
       }
 
-      // jalview.bin.Console.outPrintln("displaychar " + annotations[i].displayCharacter);
+      // jalview.bin.Console.outPrintln("displaychar " +
+      // annotations[i].displayCharacter);
 
       if (annotations[i].displayCharacter == null
               || annotations[i].displayCharacter.length() == 0)
@@ -1750,23 +1753,30 @@ public class AlignmentAnnotation
     }
     return aa;
   }
-  
+
   /**
-   * convenience method to check for the 'CONTACT_MAP_NOGROUPS' property for this alignment annotation row
-   * @return true if no CONTACT_MAP_NOGROUPS property is found, or it is set to ""
+   * convenience method to check for the 'CONTACT_MAP_NOGROUPS' property for
+   * this alignment annotation row
+   * 
+   * @return true if no CONTACT_MAP_NOGROUPS property is found, or it is set to
+   *         ""
    */
   public boolean isShowGroupsForContactMatrix()
   {
-    return getProperty(AlignmentAnnotation.CONTACT_MAP_NOGROUPS)==null || "".equals(getProperty(AlignmentAnnotation.CONTACT_MAP_NOGROUPS));
+    return getProperty(AlignmentAnnotation.CONTACT_MAP_NOGROUPS) == null
+            || "".equals(
+                    getProperty(AlignmentAnnotation.CONTACT_MAP_NOGROUPS));
   }
+
   /**
    * set the 'CONTACT_MAP_NOGROUPS' property for this alignment annotation row
+   * 
    * @see isShowGroupsForContactMatrix
    */
   public void setShowGroupsForContactMatrix(boolean showGroups)
   {
-    setProperty(AlignmentAnnotation.CONTACT_MAP_NOGROUPS, showGroups ? "" : "nogroups");
+    setProperty(AlignmentAnnotation.CONTACT_MAP_NOGROUPS,
+            showGroups ? "" : "nogroups");
   }
 
-
 }
index af083dd..3a64917 100644 (file)
@@ -3,6 +3,7 @@ package jalview.datamodel;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 
 import jalview.ws.datamodel.MappableContactMatrixI;
@@ -17,7 +18,8 @@ public class ContactMapHolder implements ContactMapHolderI
   {
     if (contactmaps != null && contactmaps.size() > 0)
     {
-      return contactmaps.values();
+      // defensive copy, and return non redundant set of ContactMatrixI instances
+      return new HashSet<ContactMatrixI>(contactmaps.values());
     }
     return Collections.EMPTY_LIST;
   }
index 48b6e6b..2e12a91 100644 (file)
@@ -1,17 +1,12 @@
 package jalview.datamodel;
 
-import java.awt.Color;
-import java.math.BigInteger;
 import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Spliterator;
 import java.util.StringTokenizer;
 
 import jalview.bin.Console;
 
-public abstract class ContactMatrix implements ContactMatrixI
+public abstract class ContactMatrix extends GroupSetHolder implements ContactMatrixI
 {
   /**
    * are contacts reflexive ?
@@ -107,26 +102,7 @@ public abstract class ContactMatrix implements ContactMatrixI
       @Override
       public double getContactAt(int column)
       {
-        List<Float> clist;
-        Float cl = null;
-        if (symmetric)
-        {
-          if (p < column)
-          {
-            clist = contacts.get(p);
-            cl = clist.get(column);
-          }
-          else
-          {
-            clist = contacts.get(column);
-            cl = clist.get(p);
-          }
-        }
-        else
-        {
-          clist = contacts.get(p);
-          cl = clist.get(column);
-        }
+        Float cl = getFloatElementAt(column, p);
         if (cl == null)
         {
           // return 0 not NaN ?
@@ -136,7 +112,41 @@ public abstract class ContactMatrix implements ContactMatrixI
       }
     });
   }
-
+  private Float getFloatElementAt(int column, int p)
+  {
+    
+    List<Float> clist;
+    Float cl = null;
+    if (symmetric)
+    {
+      if (p < column)
+      {
+        clist = contacts.get(p);
+        cl = clist.get(column);
+      }
+      else
+      {
+        clist = contacts.get(column);
+        cl = clist.get(p);
+      }
+    }
+    else
+    {
+      clist = contacts.get(p);
+      cl = clist.get(column);
+    }
+    return cl;
+  }
+  @Override
+  public double getElementAt(int column, int row)
+  {
+    Float cl = getFloatElementAt(column, row);
+    if (cl!=null)
+    {
+      return cl;
+    }
+    throw(new RuntimeException("Out of Bounds "+column+","+row));
+  }
   @Override
   public float getMin()
   {
@@ -160,30 +170,27 @@ public abstract class ContactMatrix implements ContactMatrixI
   {
     return "Contact Matrix";
   }
-  GroupSet grps = new GroupSet();
-  @Override
-  public GroupSetI getGroupSet()
-  {
-    return grps;
-  }
-  @Override
-  public void setGroupSet(GroupSet makeGroups)
-  {
-    grps = makeGroups;
-  }
   public static String contactToFloatString(ContactMatrixI cm)
   {
     StringBuilder sb = new StringBuilder();
     for (int c = 0; c < cm.getWidth(); c++)
     {
       ContactListI cl = cm.getContactList(c);
+      long lastsb=-1;
       if (cl != null)
       {
         for (int h = 0; h <= cl.getContactHeight(); h++)
         {
           if (sb.length() > 0)
           {
-            sb.append('\t');
+            if (sb.length()-lastsb>320)
+            {
+              // newline
+              sb.append('\n');
+              lastsb=sb.length();
+            } else {
+              sb.append('\t');
+            }
           }
           sb.append(cl.getContactAt(h));
         }
@@ -196,7 +203,7 @@ public abstract class ContactMatrix implements ContactMatrixI
           int rows)
   {
     float[][] vals = new float[cols][rows];
-    StringTokenizer tabsep = new StringTokenizer(values, "" + '\t');
+    StringTokenizer tabsep = new StringTokenizer(values, "" + '\t'+'\n');
     int c = 0, r = 0;
     while (tabsep.hasMoreTokens())
     {
index 925025f..4261519 100644 (file)
@@ -199,5 +199,17 @@ public interface ContactMatrixI
     }
     return Color.white;
   }
+
+  /**
+   * direct access to column and row position of matrix
+   
+   * Implementations are allowed to throw
+   * RunTimeExceptions if _column/i are out of bounds
+   * 
+   * @param column
+   * @param row
+   * @return
+   */
+  double getElementAt(int column, int row);
   
 }
diff --git a/src/jalview/datamodel/FloatContactMatrix.java b/src/jalview/datamodel/FloatContactMatrix.java
new file mode 100644 (file)
index 0000000..5fb156f
--- /dev/null
@@ -0,0 +1,133 @@
+package jalview.datamodel;
+
+public class FloatContactMatrix extends GroupSetHolder implements ContactMatrixI
+{
+
+  int maxrow = 0, maxcol = 0;
+
+
+  float[][] elements;
+
+  float maxscore;
+
+
+  public FloatContactMatrix(float[][] matrix)
+  {
+    maxcol = 0;
+    for (float[] row : matrix)
+    {
+      if (row.length > maxcol)
+      {
+        maxcol = row.length;
+      }
+      maxscore = row[0];
+      for (float f : row)
+      {
+        if (maxscore < f)
+        {
+          maxscore = f;
+        }
+      }
+    }
+    maxrow = matrix.length;
+    elements = matrix;
+  }
+
+  public FloatContactMatrix(float[][] elements2, GroupSet grps2)
+  {
+    this(elements2);
+    setGroupSet(grps2);
+  }
+
+  /**
+   * getContactList(column) @returns the vector of predicted alignment errors
+   * for reference position given by column
+   */
+  @Override
+  public ContactListI getContactList(final int column)
+  {
+    if (column < 0 || column >= elements.length)
+    {
+      return null;
+    }
+
+    return new ContactListImpl(new ContactListProviderI()
+    {
+      @Override
+      public int getPosition()
+      {
+        return column;
+      }
+
+      @Override
+      public int getContactHeight()
+      {
+        return maxcol - 1;
+      }
+
+      @Override
+      public double getContactAt(int mcolumn)
+      {
+        if (mcolumn < 0 || mcolumn >= elements[column].length)
+        {
+          return -1;
+        }
+        return elements[column][mcolumn];
+      }
+    });
+  }
+
+  /**
+   * getElementAt(column, i) @returns the predicted superposition error for the
+   * ith position when column is used as reference
+   */
+  @Override
+  public double getElementAt(int _column, int i)
+  {
+    return elements[_column][i];
+  }
+
+  @Override
+  public float getMin()
+  {
+    return 0;
+  }
+
+  @Override
+  public float getMax()
+  {
+    return maxscore;
+  }
+
+  @Override
+  public String getAnnotDescr()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public String getAnnotLabel()
+  {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public String getType()
+  {
+    return null;
+  }
+
+  @Override
+  public int getWidth()
+  {
+    return maxcol;
+  }
+
+  @Override
+  public int getHeight()
+  {
+    return maxrow;
+  }
+}
diff --git a/src/jalview/datamodel/GroupSetHolder.java b/src/jalview/datamodel/GroupSetHolder.java
new file mode 100644 (file)
index 0000000..faeb7c0
--- /dev/null
@@ -0,0 +1,24 @@
+package jalview.datamodel;
+
+/**
+ * holds a group set and provides getters and setters for ContactMatrixI
+ * implementations
+ * 
+ * @author jprocter
+ */
+public class GroupSetHolder
+{
+
+  GroupSet grps = new GroupSet();
+
+  public GroupSetI getGroupSet()
+  {
+    return grps;
+  }
+
+  public void setGroupSet(GroupSet makeGroups)
+  {
+    grps = makeGroups;
+  }
+
+}
index f8fd750..b04ac13 100644 (file)
@@ -114,7 +114,7 @@ public class SeqDistanceContactMatrix
     return width;
   }
   @Override
-  protected double getElementAt(int _column, int i)
+  public double getElementAt(int _column, int i)
   {
     return Math.abs(_column - i);
   }
index dc18369..f51252c 100644 (file)
@@ -26,6 +26,8 @@ import java.awt.event.ComponentListener;
 import java.io.File;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.StringTokenizer;
@@ -154,7 +156,7 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel
     jmolHistory(false);
     if (lastCommand == null || !lastCommand.equals(cmd))
     {
-      jmolScript(cmd + "\n");
+      jmolScript(cmd + "\n",command.isWaitNeeded());
     }
     jmolHistory(true);
     lastCommand = cmd;
@@ -184,7 +186,28 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel
 
   // End StructureListener
   // //////////////////////////
-
+  
+  ////////////////////////////
+  // HETATM get
+  //
+  
+  @Override
+  public Map<String,String> getHetatmNames()
+  {
+    HashMap<String,String> hetlist=new HashMap();
+    for (int mc=0;mc<jmolViewer.ms.mc; mc++)
+    {
+      Map<String,String> hets = jmolViewer.ms.getHeteroList(mc);
+      if (hets!=null)
+      {
+        hetlist.putAll(hets);
+      }
+    }
+    return hetlist;
+  }
+  //
+  ////////////////////////////
+  
   @Override
   public float[][] functionXY(String functionName, int x, int y)
   {
index f9ba1e4..1fb8761 100644 (file)
@@ -241,7 +241,9 @@ public class JmolCommands extends StructureCommandsBase
     /*
      * https://chemapps.stolaf.edu/jmol/docs/#writemodel
      */
-    return new StructureCommand("write STATE \"" + filepath + "\"");
+    StructureCommand sc = new StructureCommand("write STATE \"" + filepath + "\"");
+    sc.setWaitNeeded(true);
+    return sc;
   }
 
   @Override
@@ -323,6 +325,31 @@ public class JmolCommands extends StructureCommandsBase
             "restore STATE \"" + Platform.escapeBackslashes(filePath) + "\"");
   }
 
+  @Override
+  public List<StructureCommandI> showHetatms(List<String> toShow)
+  {
+    // always clear the current hetero cpk display
+    
+    StringBuilder sb = new StringBuilder();
+    sb.append("select hetero; cpk off;");
+    
+    if (toShow != null && !toShow.isEmpty())
+    {
+      // select what was requested
+      sb.append("select ");
+      boolean or = false;
+      for (String k : toShow)
+      {
+        sb.append(or ? " or " : " ");
+        sb.append(k);
+        or = true;
+      }
+      // and show as
+      sb.append("; cpk;");
+    }
+    
+    return Arrays.asList(new StructureCommand(sb.toString()));
+  }
   /**
    * Obsolete method, only referenced from
    * jalview.javascript.MouseOverStructureListener
index 3045d3d..4e1b2b0 100644 (file)
@@ -154,5 +154,14 @@ public class TDB_FTSData implements FTSData
   {
     return (String) getField(Model_id);
   }
+  
+  public String getConfidenceScoreType()
+  {
+    return (String) getField(Confidence_Score_Type);
+  }
+  public String getConfidenceScoreVersion()
+  {
+    return (String) getField(Confidence_Score_Version);
+  }
 
 }
index f3cb012..4f13a78 100644 (file)
@@ -95,6 +95,7 @@ import jalview.api.analysis.SimilarityParamsI;
 import jalview.bin.Cache;
 import jalview.bin.Console;
 import jalview.bin.Jalview;
+import jalview.bin.groovy.JalviewObjectI;
 import jalview.commands.CommandI;
 import jalview.commands.EditCommand;
 import jalview.commands.EditCommand.Action;
@@ -503,7 +504,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       @Override
       public void focusGained(FocusEvent e)
       {
-        Jalview.setCurrentAlignFrame(AlignFrame.this);
+        Jalview.getInstance().setCurrentAlignFrame(AlignFrame.this);
       }
     });
 
@@ -4817,7 +4818,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
              * Object[] { String,SequenceI}
              */
             ArrayList<Object[]> filesmatched = new ArrayList<>();
-            ArrayList<Object> filesnotmatched = new ArrayList<>();
+            ArrayList<Object[]> filesnotmatched = new ArrayList<>();
             for (int i = 0; i < files.size(); i++)
             {
               // BH 2018
@@ -4863,9 +4864,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   }
                   mtch = idm.findAllIdMatches(pdbfn);
                 }
+                FileFormatI type=null;
                 if (mtch != null)
                 {
-                  FileFormatI type;
                   try
                   {
                     type = new IdentifyFile().identify(file, protocol);
@@ -4881,7 +4882,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                 }
                 // File wasn't named like one of the sequences or wasn't a PDB
                 // file.
-                filesnotmatched.add(file);
+                filesnotmatched.add(new Object[] { file, protocol, type});
               }
             }
             int assocfiles = 0;
@@ -4935,7 +4936,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                  */
                 for (Object[] o : filesmatched)
                 {
-                  filesnotmatched.add(o[0]);
+                  filesnotmatched.add(new Object[] { o[0], o[1]});
                 }
               }
             }
@@ -4957,9 +4958,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
               {
                 return;
               }
-              for (Object fn : filesnotmatched)
+              for (Object[] fn : filesnotmatched)
               {
-                loadJalviewDataFile(fn, null, null, null);
+                loadJalviewDataFile(fn[0], (DataSourceType) fn[1], (FileFormatI)fn[2], null);
               }
 
             }
@@ -5055,7 +5056,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           {
             format = new IdentifyFile().identify(file, sourceType);
           }
-          if (FileFormat.ScoreMatrix == format)
+          if (FileFormat.FeatureSettings == format)
+          {
+            if (featureSettings != null)
+            {
+              featureSettings.load(file, sourceType);
+            }
+            else
+            {
+              FeatureSettings.loadFeatureSettingsFile(getFeatureRenderer(),
+                      fileObject, sourceType);
+            }
+          }
+          else if (FileFormat.ScoreMatrix == format)
           {
             ScoreMatrixFile sm = new ScoreMatrixFile(
                     new FileParse(file, sourceType));
@@ -5841,6 +5854,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       }
     }
     alignPanel.validateAnnotationDimensions(true);
+    // TODO this triggers relayout of annotation panel - otherwise annotation label height is different to panel height
+    alignPanel.fontChanged();
     alignPanel.alignmentChanged();
   }
 
@@ -5963,12 +5978,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   protected void runGroovy_actionPerformed()
   {
-    Jalview.setCurrentAlignFrame(this);
-    groovy.ui.Console console = Desktop.getGroovyConsole();
+    Jalview.getInstance().setCurrentAlignFrame(this);
+    groovy.console.ui.Console console = Desktop.getGroovyConsole();
     if (console != null)
     {
       try
       {
+        console.setVariable(JalviewObjectI.currentAlFrameName, this);
         console.runScript();
       } catch (Exception ex)
       {
index ef9e575..a8bc815 100644 (file)
@@ -997,7 +997,7 @@ public class AlignViewport extends AlignmentViewport
    */
   protected boolean noReferencesTo(AlignedCodonFrame acf)
   {
-    AlignFrame[] frames = Desktop.getAlignFrames();
+    AlignFrame[] frames = Desktop.getDesktopAlignFrames();
     if (frames == null)
     {
       return true;
index 3127731..fe6477e 100644 (file)
@@ -256,8 +256,10 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
   /**
    * Calculates the width of the alignment labels based on the displayed names
-   * and any bounds on label width set in preferences. The calculated width is
-   * also set as a property of the viewport.
+   * and any bounds on label width set in preferences.
+   * 
+   * The calculated width is set as a property of the viewport and the layout is
+   * updated.
    * 
    * @return Dimension giving the maximum width of the alignment label panel
    *         that should be used.
@@ -294,10 +296,19 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
   public Dimension calculateDefaultAlignmentIdWidth()
   {
+    return calculateIdWidth(-1, false, false);
+  }
+  /**
+   * pre 2.11.3 Id width calculation - used when importing old projects only
+   * @return
+   */
+  public int getLegacyIdWidth()
+  {
     int afwidth = (alignFrame != null ? alignFrame.getWidth() : 300);
     int idWidth = Math.min(afwidth - 200, 2 * afwidth / 3);
     int maxwidth = Math.max(IdwidthAdjuster.MIN_ID_WIDTH, idWidth);
-    return calculateIdWidth(-1, false, false);
+    Dimension w = calculateIdWidthOrLegacy(true, maxwidth, false, false);
+    return w.width;
   }
 
   /**
@@ -324,13 +335,27 @@ public class AlignmentPanel extends GAlignmentPanel implements
    * @param maxwidth
    *          -1 or maximum width allowed for IdWidth
    * @param includeAnnotations - when true includes width of any additional marks in annotation id panel 
-   * @param visibleOnly -  
+   * @param visibleOnly - when true, ignore label widths for hidden annotation rows 
    * @return Dimension giving the maximum width of the alignment label panel
    *         that should be used.
    */
   public Dimension calculateIdWidth(int maxwidth,
           boolean includeAnnotations, boolean visibleOnly)
   {
+    return calculateIdWidthOrLegacy(false, maxwidth, includeAnnotations, visibleOnly);
+  }
+  
+  /**
+   * legacy mode or post 2.11.3 ID width calculation
+   * @param legacy - uses annotation labels, not rendered label width (excludes additional decorators)
+   * @param maxwidth
+   * @param includeAnnotations
+   * @param visibleOnly
+   * @return
+   */
+  private Dimension calculateIdWidthOrLegacy(boolean legacy, int maxwidth,
+          boolean includeAnnotations, boolean visibleOnly)
+  {
     Container c = new Container();
 
     FontMetrics fm = c.getFontMetrics(
@@ -352,10 +377,29 @@ public class AlignmentPanel extends GAlignmentPanel implements
     // Also check annotation label widths
     if (includeAnnotations && al.getAlignmentAnnotation() != null)
     {
-      AnnotationLabels aal = getAlabels();
-      int stringWidth = aal.drawLabels(null, false, idWidth, false, false,
-              fm, !visibleOnly);
-      idWidth = Math.max(idWidth, stringWidth);
+      fm = c.getFontMetrics(getAlabels().getFont());
+
+      if (!legacy || Jalview.isHeadlessMode())
+      {
+        AnnotationLabels aal = getAlabels();
+        int stringWidth = aal.drawLabels(null, false, idWidth, false, false,
+                fm, !visibleOnly);
+        idWidth = Math.max(idWidth, stringWidth);
+      }
+      else
+      {
+        for (i = 0; i < al.getAlignmentAnnotation().length; i++)
+        {
+          AlignmentAnnotation aa = al.getAlignmentAnnotation()[i];
+          if (visibleOnly && !aa.visible)
+          {
+            continue;
+          }
+          String label = aa.label;
+          int stringWidth = fm.stringWidth(label);
+          idWidth = Math.max(idWidth, stringWidth);
+        }
+      }
     }
 
     int w = maxwidth < 0 ? idWidth : Math.min(maxwidth, idWidth);
@@ -562,7 +606,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     // this is called after loading new annotation onto alignment
     if (alignFrame.getHeight() == 0)
     {
-      jalview.bin.Console.outPrintln("NEEDS FIXING");
+      jalview.bin.Console.error("adjustAnnotationHeight called with zero height alignment window");
     }
     validateAnnotationDimensions(true);
     addNotify();
@@ -595,7 +639,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     Dimension e = idPanel.getSize();
     int idWidth = e.width;
     boolean manuallyAdjusted = this.getIdPanel().getIdCanvas()
-            .manuallyAdjusted();
+            .isManuallyAdjusted();
     annotationScroller.setPreferredSize(new Dimension(
             manuallyAdjusted ? idWidth : annotationScroller.getWidth(),
             annotationHeight));
@@ -1229,7 +1273,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     }
 
     int w = getIdPanel().getWidth();
-    w = this.calculateIdWidth(-1, true, true).width;
+    w = calculateIdWidth(-1, true, true).width;
     return (w > 0 ? w : calculateIdWidth().width);
   }
 
@@ -1857,5 +1901,4 @@ public class AlignmentPanel extends GAlignmentPanel implements
       overviewPanel = null;
     }
   }
-
 }
index a3f7e00..08a25ba 100755 (executable)
@@ -1246,7 +1246,7 @@ public class AnnotationLabels extends JPanel
     else
     {
       int newAnnotationIdWidth = drawLabels(g, clip, width, false, forGUI, null, false);
-      width = Math.max(newAnnotationIdWidth, givenWidth);
+      width = newAnnotationIdWidth<givenWidth ? givenWidth: Math.min(newAnnotationIdWidth, givenWidth);
     }
     drawLabels(g, clip, width, true, forGUI, null, false);
   }
@@ -1554,7 +1554,7 @@ public class AnnotationLabels extends JPanel
       }
     }
 
-    if (!resizePanel && dragEvent != null && aa != null)
+    if (!resizePanel && dragEvent != null && aa != null && selectedRow>-1 && selectedRow<aa.length)
     {
       if (actuallyDraw && g != null)
       {
index 6a6cb56..921a418 100644 (file)
@@ -50,6 +50,7 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
+import javax.swing.SwingUtilities;
 import javax.swing.border.Border;
 import javax.swing.text.DefaultCaret;
 
@@ -106,7 +107,7 @@ public class Console extends WindowAdapter
 
   private JComboBox<LogLevel> logLevelCombo = new JComboBox<LogLevel>();
 
-  protected LogLevel startingLogLevel = LogLevel.INFO;
+  protected LogLevel startingLogLevel = null;
 
   public Console()
   {
@@ -147,6 +148,7 @@ public class Console extends WindowAdapter
     scrollPane.setBorder(noBorder);
     textArea.addMouseListener(new MouseAdapter()
     {
+      @Override
       public void mouseClicked(MouseEvent e)
       {
         if (e.getButton() == MouseEvent.BUTTON1)
@@ -172,6 +174,7 @@ public class Console extends WindowAdapter
             MessageManager.getString("label.copy_to_clipboard"));
     copyToClipboardButton.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         copyConsoleTextToClipboard();
@@ -183,12 +186,14 @@ public class Console extends WindowAdapter
 
       private Color fg = textArea.getForeground();
 
+      @Override
       public void mousePressed(MouseEvent e)
       {
         textArea.setBackground(textArea.getSelectionColor());
         textArea.setForeground(textArea.getSelectedTextColor());
       }
 
+      @Override
       public void mouseReleased(MouseEvent e)
       {
         textArea.setBackground(bg);
@@ -212,11 +217,19 @@ public class Console extends WindowAdapter
     // logLevelCombo.addItem(LogLevel.ERROR);
     // logLevelCombo.addItem(LogLevel.OFF);
     // set startingLogLevel
-    startingLogLevel = jalview.bin.Console.log == null ? LogLevel.INFO
-            : jalview.bin.Console.log.getLevel();
+    
+    if (jalview.bin.Console.getLogger() == null)
+    {
+      startingLogLevel = jalview.bin.Console.getCachedLogLevel();
+    }
+    else
+    {
+      startingLogLevel = jalview.bin.Console.getLogger().getLevel();
+    }
     setChosenLogLevelCombo();
     logLevelCombo.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         if (jalview.bin.Console.log != null)
@@ -313,7 +326,7 @@ public class Console extends WindowAdapter
         boolean added = false;
         for (int i = 0; i < logLevelCombo.getItemCount(); i++)
         {
-          LogLevel l = (LogLevel) logLevelCombo.getItemAt(i);
+          LogLevel l = logLevelCombo.getItemAt(i);
           if (l.compareTo(setLogLevel) >= 0)
           {
             logLevelCombo.insertItemAt(setLogLevel, i);
@@ -475,36 +488,32 @@ public class Console extends WindowAdapter
    */
   public Console(Desktop desktop)
   {
-    this(desktop, true);
-  }
-
-  /**
-   * attach a console to the desktop - the desktop will open it if requested.
-   * 
-   * @param desktop
-   * @param showjconsole
-   *          - if true, then redirect stdout immediately
-   */
-  public Console(Desktop desktop, boolean showjconsole)
-  {
     parent = desktop;
     // window name - get x,y,width, height possibly scaled
-    Rectangle bounds = desktop.getLastKnownDimensions("JAVA_CONSOLE_");
-    if (bounds == null)
+    Rectangle bounds = parent == null ? null
+            : parent.getLastKnownDimensions("JAVA_CONSOLE_");
+    if (bounds != null)
     {
       frame = initFrame(
               ChannelProperties.getProperty("app_name") + " Java Console",
-              desktop.getWidth() / 2, desktop.getHeight() / 4,
-              desktop.getX(), desktop.getY());
+              bounds.width, bounds.height, bounds.x, bounds.y);
+    }
+    else if (parent != null && parent.getWidth() > 0
+            && parent.getHeight() > 0)
+    {
+      frame = initFrame(
+              ChannelProperties.getProperty("app_name") + " Java Console",
+              parent.getWidth() / 2, parent.getHeight() / 4, parent.getX(),
+              parent.getY());
     }
     else
     {
       frame = initFrame(
               ChannelProperties.getProperty("app_name") + " Java Console",
-              bounds.width, bounds.height, bounds.x, bounds.y);
+              MIN_WIDTH, MIN_HEIGHT, 10, 10);
     }
     frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
-    // desktop.add(frame);
+    // parent.add(frame);
     initConsole(false);
     LogLevel level = (LogLevel) logLevelCombo.getSelectedItem();
     if (!Platform.isJS())
@@ -537,6 +546,7 @@ public class Console extends WindowAdapter
         pin.close();
       } catch (Exception e)
       {
+        jalview.bin.Console.debug("pin.close() error", e);
       }
       try
       {
@@ -544,12 +554,14 @@ public class Console extends WindowAdapter
         pin2.close();
       } catch (Exception e)
       {
+        jalview.bin.Console.debug("pin2.close() error", e);
       }
       try
       {
         textAppender.join(10);
       } catch (Exception e)
       {
+        jalview.bin.Console.debug("textAppender.join(10) error", e);
       }
     }
     /*
@@ -610,12 +622,9 @@ public class Console extends WindowAdapter
           try
           {
             this.wait(100);
-            if (pin.available() == 0)
-            {
-              trimBuffer(false);
-            }
           } catch (InterruptedException ie)
           {
+            jalview.bin.Console.debug("pin.available() error", ie);
           }
         }
 
@@ -641,13 +650,14 @@ public class Console extends WindowAdapter
         {
           try
           {
-            this.wait(100);
+            this.wait(100); // ##### implicated BLOCKED
             if (pin2.available() == 0)
             {
               trimBuffer(false);
             }
           } catch (InterruptedException ie)
           {
+            jalview.bin.Console.debug("pin.available() error", ie);
           }
         }
         while (pin2.available() != 0)
@@ -672,23 +682,23 @@ public class Console extends WindowAdapter
           // check string buffer - if greater than console, clear console and
           // replace with last segment of content, otherwise, append all to
           // content.
-          long count;
           while (displayPipe.length() > 0)
           {
-            count = 0;
             StringBuffer tmp = new StringBuffer(), replace;
             synchronized (displayPipe)
             {
               replace = displayPipe;
               displayPipe = tmp;
             }
-            // simply append whole buffer
-            textArea.append(replace.toString());
-            count += replace.length();
-            if (count > byteslim)
+            // Append formatted message to textarea using the Swing Thread.
+            SwingUtilities.invokeLater(new Runnable()
             {
-              trimBuffer(false);
-            }
+              public void run()
+              {
+                textArea.append(replace.toString());
+                trimBuffer(false);
+              }
+            });
           }
           if (displayPipe.length() == 0)
           {
@@ -697,10 +707,18 @@ public class Console extends WindowAdapter
               this.wait(100);
               if (displayPipe.length() == 0)
               {
-                trimBuffer(false);
+                // post a trim on Swing Thread.
+                SwingUtilities.invokeLater(new Runnable()
+                {
+                  public void run()
+                  {
+                    trimBuffer(false);
+                  }
+                });
               }
             } catch (InterruptedException e)
             {
+              jalview.bin.Console.debug("displayPipe.length() error", e);
             }
           }
         }
@@ -711,7 +729,7 @@ public class Console extends WindowAdapter
             this.wait(100);
           } catch (InterruptedException e)
           {
-
+            jalview.bin.Console.debug("this.wait(100) error", e);
           }
         }
         if (quit)
@@ -738,6 +756,7 @@ public class Console extends WindowAdapter
         this.wait(1000);
       } catch (InterruptedException ie)
       {
+        jalview.bin.Console.debug("this.wait(1000) error", ie);
       }
       throw new NullPointerException(
               MessageManager.getString("exception.application_test_npe"));
@@ -757,9 +776,7 @@ public class Console extends WindowAdapter
       @Override
       public void run()
       {
-        displayPipe.append(input); // change to stringBuffer
-        // displayPipe.flush();
-
+        displayPipe.append(input); 
       }
     });
     // stderr.println("Time taken to Spawnappend:\t" + (System.nanoTime() -
@@ -781,7 +798,7 @@ public class Console extends WindowAdapter
                 + "\nTruncated...\n";
       } catch (Exception e)
       {
-        e.printStackTrace();
+        jalview.bin.Console.warn("textArea Exception", e);
       }
     }
     // trim the buffer
@@ -805,7 +822,7 @@ public class Console extends WindowAdapter
           }
         } catch (Exception e)
         {
-          e.printStackTrace();
+          jalview.bin.Console.warn("textArea Exception", e);
         }
         // lines = textArea.getLineCount();
       }
index e785431..a2a344c 100644 (file)
@@ -113,6 +113,9 @@ import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.bin.Jalview;
 import jalview.bin.Jalview.ExitCode;
+import jalview.bin.argparser.Arg;
+import jalview.bin.groovy.JalviewObject;
+import jalview.bin.groovy.JalviewObjectI;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.Sequence;
@@ -157,7 +160,7 @@ import jalview.ws.utils.UrlDownloadClient;
  */
 public class Desktop extends jalview.jbgui.GDesktop
         implements DropTargetListener, ClipboardOwner, IProgressIndicator,
-        jalview.api.StructureSelectionManagerProvider
+        jalview.api.StructureSelectionManagerProvider, JalviewObjectI
 {
   private static final String CITATION;
   static
@@ -181,7 +184,7 @@ public class Desktop extends jalview.jbgui.GDesktop
             : "&nbsp;<img alt=\"University of Dundee shield\" src=\""
                     + uod_logo_url.toString() + "\">");
     sb.append(
-            "<br><br>For help, see <a href=\"https://www.jalview.org/faq\">www.jalview.org/faq</a> and join <a href=\"https://discourse.jalview.org\">discourse.jalview.org</a>");
+            "<br><br>For help, see <a href=\"https://www.jalview.org/help/faq\">www.jalview.org/faq</a> and join <a href=\"https://discourse.jalview.org\">discourse.jalview.org</a>");
     sb.append("<br><br>If  you use Jalview, please cite:"
             + "<br>Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)"
             + "<br>Jalview Version 2 - a multiple sequence alignment editor and analysis workbench"
@@ -498,7 +501,28 @@ public class Desktop extends jalview.jbgui.GDesktop
 
     boolean selmemusage = Cache.getDefault("SHOW_MEMUSAGE", false);
 
-    boolean showjconsole = Cache.getDefault("SHOW_JAVA_CONSOLE", false);
+    boolean showjconsole = Cache.getArgCacheDefault(Arg.JAVACONSOLE,
+            "SHOW_JAVA_CONSOLE", false);
+
+    // start dialogue queue for single dialogues
+    startDialogQueue();
+
+    if (!Platform.isJS())
+    /**
+     * Java only
+     * 
+     * @j2sIgnore
+     */
+    {
+      Desktop.instance.acquireDialogQueue();
+
+      jconsole = new Console(this);
+      jconsole.setHeader(Cache.getVersionDetailsForConsole());
+      showConsole(showjconsole);
+
+      Desktop.instance.releaseDialogQueue();
+    }
+
     desktop = new MyDesktopPane(selmemusage);
 
     showMemusage.setSelected(selmemusage);
@@ -545,9 +569,6 @@ public class Desktop extends jalview.jbgui.GDesktop
       setBounds(xPos, yPos, 900, 650);
     }
 
-    // start dialogue queue for single dialogues
-    startDialogQueue();
-
     if (!Platform.isJS())
     /**
      * Java only
@@ -555,10 +576,6 @@ public class Desktop extends jalview.jbgui.GDesktop
      * @j2sIgnore
      */
     {
-      jconsole = new Console(this, showjconsole);
-      jconsole.setHeader(Cache.getVersionDetailsForConsole());
-      showConsole(showjconsole);
-
       showNews.setVisible(false);
 
       experimentalFeatures.setSelected(showExperimental());
@@ -787,17 +804,17 @@ public class Desktop extends jalview.jbgui.GDesktop
         iw = (int) (iw * sw);
         iy = (int) (iy * sh);
         ih = (int) (ih * sh);
-        while (ix >= screenSize.width)
+        if (ix >= screenSize.width)
         {
           jalview.bin.Console.debug(
                   "Window geometry location recall error: shifting horizontal to within screenbounds.");
-          ix -= screenSize.width;
+          ix = ix % screenSize.width;
         }
-        while (iy >= screenSize.height)
+        if (iy >= screenSize.height)
         {
           jalview.bin.Console.debug(
                   "Window geometry location recall error: shifting vertical to within screenbounds.");
-          iy -= screenSize.height;
+          iy = iy % screenSize.height;
         }
         jalview.bin.Console.debug(
                 "Got last known dimensions for " + windowName + ": x:" + ix
@@ -1041,7 +1058,7 @@ public class Desktop extends jalview.jbgui.GDesktop
         {
           if (itf instanceof AlignFrame)
           {
-            Jalview.setCurrentAlignFrame((AlignFrame) itf);
+            Jalview.getInstance().setCurrentAlignFrame((AlignFrame) itf);
           }
           itf.requestFocus();
         }
@@ -1460,62 +1477,81 @@ public class Desktop extends jalview.jbgui.GDesktop
     desktopQuit(true, false);
   }
 
-  public QuitHandler.QResponse desktopQuit(boolean ui, boolean disposeFlag)
+  /**
+   * close everything, stash window geometries, and shut down all associated
+   * threads/workers
+   * 
+   * @param dispose
+   *          - sets the dispose on close flag - JVM may terminate when set
+   * @param terminateJvm
+   *          - quit with prejudice - stops the JVM.
+   */
+  public void quitTheDesktop(boolean dispose, boolean terminateJvm)
   {
-    final Runnable 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()));
+    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 (jconsole != null)
-      {
-        storeLastKnownDimensions("JAVA_CONSOLE_", jconsole.getBounds());
-        jconsole.stopConsole();
-      }
+    if (jconsole != null)
+    {
+      storeLastKnownDimensions("JAVA_CONSOLE_", jconsole.getBounds());
+      jconsole.stopConsole();
+    }
 
-      if (jvnews != null)
-      {
-        storeLastKnownDimensions("JALVIEW_RSS_WINDOW_", jvnews.getBounds());
-      }
+    if (jvnews != null)
+    {
+      storeLastKnownDimensions("JALVIEW_RSS_WINDOW_", jvnews.getBounds());
+    }
 
-      // Frames should all close automatically. Keeping external
-      // viewers open should already be decided by user.
-      closeAll_actionPerformed(null);
+    // Frames should all close automatically. Keeping external
+    // viewers open should already be decided by user.
+    closeAll_actionPerformed(null);
 
-      // check for aborted quit
-      if (QuitHandler.quitCancelled())
-      {
-        jalview.bin.Console.debug("Desktop aborting quit");
-        return;
-      }
+    if (dialogExecutor != null)
+    {
+      dialogExecutor.shutdownNow();
+    }
 
-      if (dialogExecutor != null)
-      {
-        dialogExecutor.shutdownNow();
-      }
+    if (groovyConsole != null)
+    {
+      // suppress a possible repeat prompt to save script
+      groovyConsole.setDirty(false);
+      groovyConsole.exit();
+    }
 
-      if (groovyConsole != null)
-      {
-        // suppress a possible repeat prompt to save script
-        groovyConsole.setDirty(false);
-        groovyConsole.exit();
-      }
+    if (terminateJvm)
+    {
+      // note that shutdown hook will not be run
+      jalview.bin.Console.debug("Force Quit selected by user");
+      Runtime.getRuntime().halt(0);
+    }
 
-      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 (dispose)
+    {
+      instance.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+      // instance.dispose();
+    }
+  }
 
-      jalview.bin.Console.debug("Quit selected by user");
-      if (disposeFlag)
+  public QuitHandler.QResponse desktopQuit(boolean ui, boolean disposeFlag)
+  {
+    final Runnable doDesktopQuit = () -> {
+
+      // FIRST !! check for aborted quit
+      if (QuitHandler.quitCancelled())
       {
-        instance.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-        // instance.dispose();
+        jalview.bin.Console
+                .debug("Quit was cancelled - Desktop aborting quit");
+        return;
       }
+
+      // Proceed with quitting
+      quitTheDesktop(disposeFlag,
+              QuitHandler.gotQuitResponse() == QResponse.FORCE_QUIT);
+      // and exit the JVM
       instance.quit();
     };
 
@@ -1524,7 +1560,14 @@ public class Desktop extends jalview.jbgui.GDesktop
   }
 
   /**
-   * Don't call this directly, use desktopQuit() above. Exits the program.
+   * Exits the program and the JVM.
+   * 
+   * Don't call this directly
+   * 
+   * - use desktopQuit() above to tidy up first.
+   * 
+   * - use closeDesktop() to shutdown Jalview without shutting down the JVM
+   * 
    */
   @Override
   public void quit()
@@ -1664,7 +1707,7 @@ public class Desktop extends jalview.jbgui.GDesktop
       {
       }
     }
-    Jalview.setCurrentAlignFrame(null);
+    Jalview.getInstance().setCurrentAlignFrame(null);
     jalview.bin.Console.info("ALL CLOSED");
 
     /*
@@ -2123,7 +2166,7 @@ public class Desktop extends jalview.jbgui.GDesktop
       return null;
     }
     List<AlignmentPanel> aps = new ArrayList<>();
-    AlignFrame[] frames = getAlignFrames();
+    AlignFrame[] frames = Desktop.getDesktopAlignFrames();
     if (frames == null)
     {
       return null;
@@ -2160,7 +2203,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     List<AlignmentViewport> viewp = new ArrayList<>();
     if (desktop != null)
     {
-      AlignFrame[] frames = Desktop.getAlignFrames();
+      AlignFrame[] frames = Desktop.getDesktopAlignFrames();
 
       for (AlignFrame afr : frames)
       {
@@ -2521,12 +2564,12 @@ public class Desktop extends jalview.jbgui.GDesktop
    * 
    * @return an array of AlignFrame, or null if none found
    */
-  public static AlignFrame[] getAlignFrames()
+  @Override
+  public AlignFrame[] getAlignFrames()
   {
-    if (Jalview.isHeadlessMode())
+    if (desktop == null)
     {
-      // Desktop.desktop is null in headless mode
-      return new AlignFrame[] { Jalview.currentAlignFrame };
+      return null;
     }
 
     JInternalFrame[] frames = Desktop.desktop.getAllFrames();
@@ -2568,6 +2611,25 @@ public class Desktop extends jalview.jbgui.GDesktop
   }
 
   /**
+   * static version
+   */
+  public static AlignFrame[] getDesktopAlignFrames()
+  {
+    if (Jalview.isHeadlessMode())
+    {
+      // Desktop.desktop is null in headless mode
+      return Jalview.getInstance().getAlignFrames();
+    }
+
+    if (instance != null && desktop != null)
+    {
+      return instance.getAlignFrames();
+    }
+
+    return null;
+  }
+
+  /**
    * Returns an array of any AppJmol frames in the Desktop (or null if none).
    * 
    * @return
@@ -2609,7 +2671,7 @@ public class Desktop extends jalview.jbgui.GDesktop
       openGroovyConsole();
     } catch (Exception ex)
     {
-      jalview.bin.Console.error("Groovy Shell Creation failed.", ex);
+      jalview.bin.Console.error("Groovy Console creation failed.", ex);
       JvOptionPane.showInternalMessageDialog(Desktop.desktop,
 
               MessageManager.getString("label.couldnt_create_groovy_shell"),
@@ -2625,8 +2687,11 @@ public class Desktop extends jalview.jbgui.GDesktop
   {
     if (groovyConsole == null)
     {
-      groovyConsole = new groovy.ui.Console();
-      groovyConsole.setVariable("Jalview", this);
+      JalviewObjectI j = new JalviewObject(this);
+      groovyConsole = new groovy.console.ui.Console();
+      groovyConsole.setVariable(JalviewObjectI.jalviewObjectName, j);
+      groovyConsole.setVariable(JalviewObjectI.currentAlFrameName,
+              getCurrentAlignFrame());
       groovyConsole.run();
 
       /*
@@ -2699,7 +2764,7 @@ public class Desktop extends jalview.jbgui.GDesktop
      */
     groovyShell.setEnabled(!enabled);
 
-    AlignFrame[] alignFrames = getAlignFrames();
+    AlignFrame[] alignFrames = getDesktopAlignFrames();
     if (alignFrames != null)
     {
       for (AlignFrame af : alignFrames)
@@ -3010,7 +3075,16 @@ public class Desktop extends jalview.jbgui.GDesktop
    */
   public static void showUrl(final String url)
   {
-    showUrl(url, Desktop.instance);
+    if (url != null && !url.trim().equals(""))
+    {
+      jalview.bin.Console.info("Opening URL: " + url);
+      showUrl(url, Desktop.instance);
+    }
+    else
+    {
+      jalview.bin.Console.warn("Ignoring attempt to show an empty URL.");
+    }
+
   }
 
   /**
@@ -3108,7 +3182,7 @@ public class Desktop extends jalview.jbgui.GDesktop
    */
   private Semaphore block = new Semaphore(0);
 
-  private static groovy.ui.Console groovyConsole;
+  private static groovy.console.ui.Console groovyConsole;
 
   /**
    * add another dialog thread to the queue
@@ -3370,7 +3444,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     myTopFrame.setDisplayedView(myTopFrame.alignPanel);
   }
 
-  public static groovy.ui.Console getGroovyConsole()
+  public static groovy.console.ui.Console getGroovyConsole()
   {
     return groovyConsole;
   }
@@ -3661,32 +3735,35 @@ public class Desktop extends jalview.jbgui.GDesktop
   }
 
   /**
-   * closes the current instance window, disposes and forgets about it.
+   * closes the current instance window, but leaves the JVM running. Bypasses
+   * any shutdown prompts, but does not set window dispose on close in case JVM
+   * terminates.
    */
   public static void closeDesktop()
   {
     if (Desktop.instance != null)
     {
-      Desktop.instance.closeAll_actionPerformed(null);
-      Desktop.instance.setVisible(false);
       Desktop us = Desktop.instance;
-      Desktop.instance = null;
+      Desktop.instance.quitTheDesktop(false, false);
       // call dispose in a separate thread - try to avoid indirect deadlocks
-      new Thread(new Runnable()
+      if (us != null)
       {
-        @Override
-        public void run()
+        new Thread(new Runnable()
         {
-          ExecutorService dex = us.dialogExecutor;
-          if (dex != null)
+          @Override
+          public void run()
           {
-            dex.shutdownNow();
-            us.dialogExecutor = null;
-            us.block.drainPermits();
+            ExecutorService dex = us.dialogExecutor;
+            if (dex != null)
+            {
+              dex.shutdownNow();
+              us.dialogExecutor = null;
+              us.block.drainPermits();
+            }
+            us.dispose();
           }
-          us.dispose();
-        }
-      }).start();
+        }).start();
+      }
     }
   }
 
@@ -3747,13 +3824,21 @@ public class Desktop extends jalview.jbgui.GDesktop
   public void nonBlockingDialog(String title, String message, String button,
           int type, boolean scrollable, boolean modal)
   {
-    nonBlockingDialog(32, 2, title, message, null, button, type, scrollable,
-            false, modal);
+    nonBlockingDialog(title, message, null, button, type, scrollable, false,
+            modal, -1);
+  }
+
+  public void nonBlockingDialog(String title, String message,
+          String boxtext, String button, int type, boolean scrollable,
+          boolean html, boolean modal, int timeout)
+  {
+    nonBlockingDialog(32, 2, title, message, boxtext, button, type,
+            scrollable, html, modal, timeout);
   }
 
   public void nonBlockingDialog(int width, int height, String title,
           String message, String boxtext, String button, int type,
-          boolean scrollable, boolean html, boolean modal)
+          boolean scrollable, boolean html, boolean modal, int timeout)
   {
     if (type < 0)
     {
@@ -3815,9 +3900,16 @@ public class Desktop extends jalview.jbgui.GDesktop
 
     jvp.setResponseHandler(JOptionPane.YES_OPTION, () -> {
     });
+    jvp.setTimeout(timeout);
+    JButton jb = new JButton(button);
     jvp.showDialogOnTopAsync(this, jp, title, JOptionPane.YES_OPTION, type,
             null, new Object[]
-            { button }, button, modal, null, false);
+            { button }, button, modal, new JButton[] { jb }, false);
   }
 
+  @Override
+  public AlignFrame getCurrentAlignFrame()
+  {
+    return Jalview.getInstance().getCurrentAlignFrame();
+  }
 }
index 7117508..606d843 100644 (file)
@@ -253,7 +253,7 @@ public class FeatureEditor
            */
           final String ft = features.get(featureIndex).getType();
           final String type = ft == null ? lastFeatureAdded : ft;
-          FeatureTypeSettings fcc = new FeatureTypeSettings(fr, type);
+          FeatureTypeSettings fcc = new FeatureTypeSettings(fr, type,true);
           fcc.setRequestFocusEnabled(true);
           fcc.requestFocus();
           fcc.addActionListener(new ActionListener()
index 184fdc5..57e5943 100644 (file)
@@ -45,6 +45,7 @@ import java.io.FileOutputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
+import java.io.Reader;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -103,6 +104,8 @@ import jalview.datamodel.features.FeatureMatcherSet;
 import jalview.datamodel.features.FeatureMatcherSetI;
 import jalview.gui.Help.HelpId;
 import jalview.gui.JalviewColourChooser.ColourChooserListener;
+import jalview.io.DataSourceType;
+import jalview.io.FileParse;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.schemes.FeatureColour;
@@ -955,6 +958,65 @@ public class FeatureSettings extends JPanel
     chooser.showOpenDialog(this);
   }
 
+  public static boolean loadFeatureSettingsFile(FeatureRenderer fr,
+          File file) throws Exception
+  {
+    InputStreamReader in = new InputStreamReader(new FileInputStream(file),
+            "UTF-8");
+    return loadFeatureSettingsFile(fr, in);
+  }
+
+  public static void loadFeatureSettingsFile(
+          FeatureRenderer featureRenderer, Object fileObject,
+          DataSourceType sourceType) throws Exception
+  {
+    FileParse fp = new FileParse(fileObject, sourceType);
+    loadFeatureSettingsFile(featureRenderer, fp.getReader());
+  }
+
+  private static boolean loadFeatureSettingsFile(FeatureRenderer fr,
+          Reader in) throws Exception
+  {
+    JAXBContext jc = JAXBContext.newInstance("jalview.xml.binding.jalview");
+    javax.xml.bind.Unmarshaller um = jc.createUnmarshaller();
+    XMLStreamReader streamReader = XMLInputFactory.newInstance()
+            .createXMLStreamReader(in);
+    JAXBElement<JalviewUserColours> jbe = um.unmarshal(streamReader,
+            JalviewUserColours.class);
+    JalviewUserColours jucs = jbe.getValue();
+
+    // JalviewUserColours jucs = JalviewUserColours.unmarshal(in);
+
+    /*
+     * load feature colours
+     */
+    for (int i = jucs.getColour().size() - 1; i >= 0; i--)
+    {
+      Colour newcol = jucs.getColour().get(i);
+      FeatureColourI colour = jalview.project.Jalview2XML
+              .parseColour(newcol);
+      fr.setColour(newcol.getName(), colour);
+      fr.setOrder(newcol.getName(), i / (float) jucs.getColour().size());
+    }
+
+    /*
+     * load feature filters; loaded filters will replace any that are
+     * currently defined, other defined filters are left unchanged 
+     */
+    for (int i = 0; i < jucs.getFilter().size(); i++)
+    {
+      Filter filterModel = jucs.getFilter().get(i);
+      String featureType = filterModel.getFeatureType();
+      FeatureMatcherSetI filter = jalview.project.Jalview2XML
+              .parseFilter(featureType, filterModel.getMatcherSet());
+      if (!filter.isEmpty())
+      {
+        fr.setFeatureFilter(featureType, filter);
+      }
+    }
+    return true;
+  }
+
   /**
    * Loads feature colours and filters from XML stored in the given file
    * 
@@ -962,50 +1024,21 @@ public class FeatureSettings extends JPanel
    */
   void load(File file)
   {
+    load(file, DataSourceType.FILE);
+  }
+
+  /**
+   * Loads feature colours and filters from XML at a specified source
+   * 
+   * @param file
+   *          - string or file or other object that allows FileParse to be
+   *          created
+   */
+  void load(Object file, DataSourceType sourceType)
+  {
     try
     {
-      InputStreamReader in = new InputStreamReader(
-              new FileInputStream(file), "UTF-8");
-
-      JAXBContext jc = JAXBContext
-              .newInstance("jalview.xml.binding.jalview");
-      javax.xml.bind.Unmarshaller um = jc.createUnmarshaller();
-      XMLStreamReader streamReader = XMLInputFactory.newInstance()
-              .createXMLStreamReader(in);
-      JAXBElement<JalviewUserColours> jbe = um.unmarshal(streamReader,
-              JalviewUserColours.class);
-      JalviewUserColours jucs = jbe.getValue();
-
-      // JalviewUserColours jucs = JalviewUserColours.unmarshal(in);
-
-      /*
-       * load feature colours
-       */
-      for (int i = jucs.getColour().size() - 1; i >= 0; i--)
-      {
-        Colour newcol = jucs.getColour().get(i);
-        FeatureColourI colour = jalview.project.Jalview2XML
-                .parseColour(newcol);
-        fr.setColour(newcol.getName(), colour);
-        fr.setOrder(newcol.getName(), i / (float) jucs.getColour().size());
-      }
-
-      /*
-       * load feature filters; loaded filters will replace any that are
-       * currently defined, other defined filters are left unchanged 
-       */
-      for (int i = 0; i < jucs.getFilter().size(); i++)
-      {
-        Filter filterModel = jucs.getFilter().get(i);
-        String featureType = filterModel.getFeatureType();
-        FeatureMatcherSetI filter = jalview.project.Jalview2XML
-                .parseFilter(featureType, filterModel.getMatcherSet());
-        if (!filter.isEmpty())
-        {
-          fr.setFeatureFilter(featureType, filter);
-        }
-      }
-
+      loadFeatureSettingsFile(fr, file, sourceType);
       /*
        * update feature settings table
        */
@@ -1019,7 +1052,8 @@ public class FeatureSettings extends JPanel
       }
     } catch (Exception ex)
     {
-      jalview.bin.Console.outPrintln("Error loading User Colour File\n" + ex);
+      jalview.bin.Console
+              .outPrintln("Error loading User Colour File\n" + ex);
     }
   }
 
@@ -1787,11 +1821,15 @@ public class FeatureSettings extends JPanel
     {
       FeatureMatcherSetI theFilter = (FeatureMatcherSetI) filter;
       setOpaque(true);
-      String asText = theFilter.toString();
       setBackground(tbl.getBackground());
-      this.setText(asText);
       this.setIcon(null);
 
+      if (theFilter != null)
+      {
+        String asText = theFilter.toString();
+        this.setText(asText);
+      }
+
       if (isSelected)
       {
         if (selectedBorder == null)
@@ -1881,6 +1919,8 @@ public class FeatureSettings extends JPanel
            */
           String ttl = MessageManager
                   .formatMessage("label.select_colour_for", type);
+          Object last=(Boolean)table.getValueAt(selectedRow, SHOW_COLUMN);
+          table.setValueAt(Boolean.TRUE, selectedRow, SHOW_COLUMN);
           ColourChooserListener listener = new ColourChooserListener()
           {
             @Override
@@ -1888,12 +1928,14 @@ public class FeatureSettings extends JPanel
             {
               currentColor = new FeatureColour(c);
               table.setValueAt(currentColor, rowSelected, COLOUR_COLUMN);
+              table.setValueAt(Boolean.TRUE, selectedRow, SHOW_COLUMN);
               fireEditingStopped();
             }
 
             @Override
             public void cancel()
             {
+              table.setValueAt(last, selectedRow, SHOW_COLUMN);
               fireEditingStopped();
             }
           };
@@ -1905,7 +1947,9 @@ public class FeatureSettings extends JPanel
           /*
            * variable colour and filters dialog
            */
-          chooser = new FeatureTypeSettings(fr, type);
+          boolean last=(Boolean)table.getValueAt(selectedRow, SHOW_COLUMN);
+          table.setValueAt(Boolean.TRUE, selectedRow, SHOW_COLUMN);
+          chooser = new FeatureTypeSettings(fr, type,last);
           if (!Platform.isJS())
           /**
            * Java only
@@ -2031,7 +2075,9 @@ public class FeatureSettings extends JPanel
     {
       if (button == e.getSource())
       {
-        FeatureTypeSettings chooser = new FeatureTypeSettings(fr, type);
+        boolean last = fr.getFeaturesDisplayed().isVisible(type);
+        ((FeatureTableModel) table.getModel()).setValueAt(Boolean.TRUE, rowSelected, SHOW_COLUMN);
+        FeatureTypeSettings chooser = new FeatureTypeSettings(fr, type,last);
         chooser.addActionListener(this);
         chooser.setRequestFocusEnabled(true);
         chooser.requestFocus();
@@ -2063,6 +2109,8 @@ public class FeatureSettings extends JPanel
                 .getData()[rowSelected];
         data[COLOUR_COLUMN] = currentColor;
         data[FILTER_COLUMN] = currentFilter;
+        data[SHOW_COLUMN] = fr.getFeaturesDisplayed().isVisible(type);
+                
         fireEditingStopped();
         // SwingJS needs an explicit repaint() here,
         // rather than relying upon no validation having
@@ -2115,7 +2163,6 @@ public class FeatureSettings extends JPanel
     refreshDisplay();
   }
 }
-
 class FeatureIcon implements Icon
 {
   FeatureColourI gcol;
index 327f6ca..79f4c88 100644 (file)
@@ -204,20 +204,23 @@ public class FeatureTypeSettings extends JalviewDialog
 
   private JPanel chooseFiltersPanel;
 
+  public boolean originalDisplay;
+
   /**
    * Constructor
    * 
    * @param frender
    * @param theType
+   * @param last - visibility of feature prior to adjustment
    */
-  public FeatureTypeSettings(FeatureRenderer frender, String theType)
+  public FeatureTypeSettings(FeatureRenderer frender, String theType, boolean last)
   {
     this.fr = frender;
     this.featureType = theType;
     ap = fr.ap;
     originalFilter = fr.getFeatureFilter(theType);
     originalColour = fr.getFeatureColours().get(theType);
-
+    originalDisplay = last;
     adjusting = true;
 
     try
@@ -1032,6 +1035,9 @@ public class FeatureTypeSettings extends JalviewDialog
   {
     fr.setColour(featureType, originalColour);
     fr.setFeatureFilter(featureType, originalFilter);
+    if (!originalDisplay) { 
+      fr.getFeaturesDisplayed().setHidden(featureType);
+    }
     refreshDisplay(true);
   }
 
index 2df84a9..dbffc72 100755 (executable)
@@ -307,7 +307,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
 
     if (alignViewport.getWrapAlignment())
     {
-      drawIdsWrapped(g, alignViewport, startSeq, getHeight());
+      drawIdsWrapped(g, alignViewport, startSeq, getHeight(), manuallyAdjusted ? panelWidth : -1,forGUI);
       return;
     }
 
@@ -401,7 +401,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
     drawIdsWrapped(g, av2, totalHeight, totalHeight, i,false);
   }
 
-  void drawIdsWrapped(Graphics2D g, AlignViewport alignViewport,
+  public void drawIdsWrapped(Graphics2D g, AlignViewport alignViewport,
           int startSeq, int pageHeight, int idWidth, boolean forGUI)
   {
     int alignmentWidth = alignViewport.getAlignment().getWidth();
@@ -418,6 +418,8 @@ public class IdCanvas extends JPanel implements ViewportListenerI
     AnnotationLabels labels = null;
     if (alignViewport.isShowAnnotation())
     {
+      // in wrapped mode, no alignPanel reference is available
+      // FIXME: make the renderer not create a new object in wrapped mode everytime!
       labels = new AnnotationLabels(alignViewport);
     }
 
@@ -453,7 +455,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
         int getWidth = getWidth();
         int thisIdWidth = getWidth;
         g.translate(0, ypos + (alheight * charHeight));
-        if (!manuallyAdjusted())
+        if (!isManuallyAdjusted())
         {
           int getAnnotationsIdWidth = labels.drawLabels(g, false, -1, false,forGUI,
                   null, false);
@@ -625,7 +627,7 @@ public class IdCanvas extends JPanel implements ViewportListenerI
 
   private boolean manuallyAdjusted = false;
 
-  public boolean manuallyAdjusted()
+  public boolean isManuallyAdjusted()
   {
     return manuallyAdjusted;
   }
index 762612e..f1c4c83 100755 (executable)
@@ -179,7 +179,7 @@ public class IdwidthAdjuster extends JPanel
   public void setWidth(int newWidth)
   {
     if (newWidth < MIN_ID_WIDTH
-            || ap.getIdPanel().getIdCanvas().manuallyAdjusted())
+            || ap.getIdPanel().getIdCanvas().isManuallyAdjusted())
     {
       return;
     }
@@ -190,7 +190,7 @@ public class IdwidthAdjuster extends JPanel
 
   public boolean manuallyAdjusted()
   {
-    return ap.getIdPanel().getIdCanvas().manuallyAdjusted();
+    return ap.getIdPanel().getIdCanvas().isManuallyAdjusted();
   }
 
   @Override
index 3f5de0a..7a5daf7 100644 (file)
@@ -88,6 +88,13 @@ public class JvOptionPane extends JOptionPane
 
   private Map<Object, Runnable> callbacks = new HashMap<>();
 
+  private int timeout = -1;
+
+  public void setTimeout(int i)
+  {
+    timeout = i;
+  }
+
   /*
    * JalviewJS reports user choice in the dialog as the selected option (text);
    * this list allows conversion to index (int)
@@ -851,6 +858,42 @@ public class JvOptionPane extends JOptionPane
                   "Supplied buttons array not the same length as supplied options array.");
           break NOTNULL;
         }
+
+        // run through buttons for initialValue first so we can set (and start)
+        // a final timeoutThreadF to include (and interrupt) in the button
+        // actions
+        Thread timeoutThread = null;
+        for (int i = 0; i < options.length; i++)
+        {
+          Object o = options[i];
+          JButton jb = buttons[i];
+          if (o.equals(initialValue))
+          {
+            if (timeout > 0 && jb != null && jb instanceof JButton)
+            {
+              // after timeout ms click the default button
+              timeoutThread = new Thread(() -> {
+                try
+                {
+                  Thread.sleep(timeout);
+                } catch (InterruptedException e)
+                {
+                  Console.debug(
+                          "Dialog timeout interrupted.  Probably a button pressed.");
+                }
+                jb.doClick();
+              });
+            }
+            initialValueButton = jb;
+            break;
+          }
+        }
+        final Thread timeoutThreadF = timeoutThread;
+        if (timeoutThreadF != null)
+        {
+          timeoutThreadF.start();
+        }
+
         int[] buttonActions = { JOptionPane.YES_OPTION,
             JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION };
         for (int i = 0; i < options.length; i++)
@@ -860,9 +903,6 @@ public class JvOptionPane extends JOptionPane
                   "Setting button " + i + " to '" + o.toString() + "'");
           JButton jb = buttons[i];
 
-          if (o.equals(initialValue))
-            initialValueButton = jb;
-
           int buttonAction = buttonActions[i];
           Runnable action = callbacks.get(buttonAction);
           jb.setText((String) o);
@@ -871,6 +911,10 @@ public class JvOptionPane extends JOptionPane
             @Override
             public void actionPerformed(ActionEvent e)
             {
+              if (timeoutThreadF != null)
+              {
+                timeoutThreadF.interrupt();
+              }
 
               Object obj = e.getSource();
               if (obj == null || !(obj instanceof Component))
@@ -1290,6 +1334,7 @@ public class JvOptionPane extends JOptionPane
 
     // A better hack which works is to create a new JFrame parent with
     // setAlwaysOnTop(true)
+    boolean parentOnTop = dialogParent.isAlwaysOnTop();
     dialogParent.setAlwaysOnTop(true);
     parentComponent = dialogParent;
 
@@ -1297,6 +1342,8 @@ public class JvOptionPane extends JOptionPane
             JOPTIONPANE_MESSAGETYPE, icon, options, initialValue, modal,
             buttons);
 
+    dialogParent.setAlwaysOnTop(parentOnTop);
+
     if (dispose)
     {
       dialogParent.setAlwaysOnTop(false);
index ad7684e..6020135 100644 (file)
@@ -294,7 +294,7 @@ public class QuitHandler
       return QResponse.QUIT;
 
     int size = 0;
-    AlignFrame[] afArray = Desktop.getAlignFrames();
+    AlignFrame[] afArray = Desktop.getDesktopAlignFrames();
     if (!(afArray == null || afArray.length == 0))
     {
       for (int i = 0; i < afArray.length; i++)
index 422601d..a186ce6 100755 (executable)
@@ -107,14 +107,7 @@ public class ScalePanel extends JPanel
   @Override
   public void mousePressed(MouseEvent evt)
   {
-    int x = (evt.getX() / av.getCharWidth()) + av.getRanges().getStartRes();
-    final int res;
-
-    if (av.hasHiddenColumns())
-    {
-      x = av.getAlignment().getHiddenColumns().visibleToAbsoluteColumn(x);
-    }
-    res = Math.min(x, av.getAlignment().getWidth() - 1);
+    int res = ap.getSeqPanel().findAlignmentColumn(evt);
 
     min = res;
     max = res;
@@ -286,18 +279,8 @@ public class ScalePanel extends JPanel
     mouseDragging = false;
     ap.getSeqPanel().stopScrolling();
 
-    // todo res calculation should be a method on AlignViewport
-    int xCords = Math.max(0, evt.getX()); // prevent negative X coordinates
-    ViewportRanges ranges = av.getRanges();
-    int res = (xCords / av.getCharWidth()) + ranges.getStartRes();
-    res = Math.min(res, ranges.getEndRes());
-    if (av.hasHiddenColumns())
-    {
-      res = av.getAlignment().getHiddenColumns()
-              .visibleToAbsoluteColumn(res);
-    }
-    res = Math.max(0, res);
-
+    int res = ap.getSeqPanel().findAlignmentColumn(evt);
+    
     if (!stretchingGroup)
     {
       if (evt.isPopupTrigger()) // Windows: mouseReleased
@@ -350,16 +333,12 @@ public class ScalePanel extends JPanel
   @Override
   public void mouseDragged(MouseEvent evt)
   {
-    mouseDragging = true;
+    mouseDragging = true;  
+    int res = ap.getSeqPanel().findAlignmentColumn(evt);
+    
     ColumnSelection cs = av.getColumnSelection();
-    HiddenColumns hidden = av.getAlignment().getHiddenColumns();
-
-    int res = (evt.getX() / av.getCharWidth())
-            + av.getRanges().getStartRes();
-    res = Math.max(0, res);
-    res = hidden.visibleToAbsoluteColumn(res);
-    res = Math.min(res, av.getAlignment().getWidth() - 1);
-    min = Math.min(res, min);
+    
+    min = Math.min(res,min);
     max = Math.max(res, max);
 
     SequenceGroup sg = av.getSelectionGroup();
@@ -410,22 +389,18 @@ public class ScalePanel extends JPanel
   {
     this.setToolTipText(null);
     reveal = null;
-    if (!av.hasHiddenColumns())
-    {
-      int res = (evt.getX() / av.getCharWidth())
-              + av.getRanges().getStartRes();
-      highlightAllStructPos(res);
+    final int res = ap.getSeqPanel().findAlignmentColumn(evt);
+    
+    highlightAllStructPos(res);
+    if (!av.hasHiddenColumns()) {
       return;
     }
-
-    int res = (evt.getX() / av.getCharWidth())
-            + av.getRanges().getStartRes();
-
     reveal = av.getAlignment().getHiddenColumns()
-            .getRegionWithEdgeAtRes(res);
-
-    res = av.getAlignment().getHiddenColumns().visibleToAbsoluteColumn(res);
-    highlightAllStructPos(res);
+            .getRegionWithEdgeAtRes(av.getAlignment().getHiddenColumns().absoluteToVisibleColumn(res));
+    if (reveal==null)
+    {
+      return;
+    }
     ToolTipManager.sharedInstance().registerComponent(this);
     this.setToolTipText(
             MessageManager.getString("label.reveal_hidden_columns"));
index 537af58..e42acf3 100755 (executable)
@@ -323,7 +323,7 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
 
       if (vertical > 0) // scroll down
       {
-        startSeq = endSeq - vertical;
+        startSeq = endSeq - vertical + 1;
 
         if (startSeq < ranges.getStartSeq())
         { // ie scrolling too fast, more than a page at a time
@@ -331,12 +331,12 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
         }
         else
         {
-          transY = img.getHeight() - ((vertical + 1) * charHeight);
+          transY = img.getHeight() - (vertical * charHeight);
         }
       }
-      else if (vertical < 0)
+      else if (vertical < 0) // scroll up
       {
-        endSeq = startSeq - vertical;
+        endSeq = startSeq - vertical - 1;
 
         if (endSeq > ranges.getEndSeq())
         {
@@ -344,7 +344,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
         }
       }
 
-      // jalview.bin.Console.errPrintln(">>> FastPaint to " + transX + " " + transY + " "
+      // jalview.bin.Console.errPrintln(">>> FastPaint to " + transX + " " +
+      // transY + " "
       // + horizontal + " " + vertical + " " + startRes + " " + endRes
       // + " " + startSeq + " " + endSeq);
 
@@ -363,7 +364,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
       // Call repaint on alignment panel so that repaints from other alignment
       // panel components can be aggregated. Otherwise performance of the
       // overview window and others may be adversely affected.
-      // jalview.bin.Console.outPrintln("SeqCanvas fastPaint() repaint() request...");
+      // jalview.bin.Console.outPrintln("SeqCanvas fastPaint() repaint()
+      // request...");
       av.getAlignPanel().repaint();
     } finally
     {
@@ -456,11 +458,12 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
 
       if (av.getWrapAlignment())
       {
-        drawWrappedPanel(seqRdr, gg, getWidth(), getHeight(), ranges.getStartRes());
+        drawWrappedPanel(seqRdr, gg, getWidth(), getHeight(),
+                ranges.getStartRes());
       }
       else
       {
-        drawPanel(seqRdr,gg, startRes, endRes, startSeq, endSeq, 0);
+        drawPanel(seqRdr, gg, startRes, endRes, startSeq, endSeq, 0);
       }
 
       drawSelectionGroup(gg, startRes, endRes, startSeq, endSeq);
@@ -493,7 +496,7 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
           int startSeq, int endSeq)
   {
     SequenceRenderer localSeqR = new jalview.gui.SequenceRenderer(av);
-    drawPanel(localSeqR,g1, startRes, endRes, startSeq, endSeq, 0);
+    drawPanel(localSeqR, g1, startRes, endRes, startSeq, endSeq, 0);
 
     drawSelectionGroup((Graphics2D) g1, startRes, endRes, startSeq, endSeq);
   }
@@ -611,8 +614,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
    * @param startColumn
    *          the first column (0...) of the alignment to draw
    */
-  public void drawWrappedPanel(SequenceRenderer seqRdr, Graphics g, int canvasWidth,
-          int canvasHeight, final int startColumn)
+  public void drawWrappedPanel(SequenceRenderer seqRdr, Graphics g,
+          int canvasWidth, int canvasHeight, final int startColumn)
   {
     int wrappedWidthInResidues = calculateWrappedGeometry(canvasWidth,
             canvasHeight);
@@ -733,8 +736,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
    * @param endColumn
    * @param canvasHeight
    */
-  protected void drawWrappedWidth(SequenceRenderer seqRdr, Graphics g, final int ypos,
-          final int startColumn, final int endColumn,
+  protected void drawWrappedWidth(SequenceRenderer seqRdr, Graphics g,
+          final int ypos, final int startColumn, final int endColumn,
           final int canvasHeight)
   {
     ViewportRanges ranges = av.getRanges();
@@ -762,8 +765,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
     g.fillRect(0, ypos, (endx - startColumn + 1) * charWidth,
             wrappedRepeatHeightPx);
 
-    drawPanel(seqRdr, g, startColumn, endx, 0, av.getAlignment().getHeight() - 1,
-            ypos);
+    drawPanel(seqRdr, g, startColumn, endx, 0,
+            av.getAlignment().getHeight() - 1, ypos);
 
     int cHeight = av.getAlignment().getHeight() * av.getCharHeight();
 
@@ -966,7 +969,10 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
    * are hidden column markers in the visible region, then each sub-region
    * between the markers is drawn separately, followed by the hidden column
    * marker.
-   * @param localSeqR - sequence renderer implementation - when null, uses the one used for rendering interactive GUI
+   * 
+   * @param localSeqR
+   *          - sequence renderer implementation - when null, uses the one used
+   *          for rendering interactive GUI
    * 
    * @param g1
    *          the graphics context, positioned at the first residue to be drawn
@@ -981,13 +987,14 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
    * @param yOffset
    *          vertical offset at which to draw (for wrapped alignments)
    */
-  public void drawPanel(SequenceRenderer localSeqR, Graphics g1, final int startRes, final int endRes,
-          final int startSeq, final int endSeq, final int yOffset)
+  public void drawPanel(SequenceRenderer localSeqR, Graphics g1,
+          final int startRes, final int endRes, final int startSeq,
+          final int endSeq, final int yOffset)
   {
     int charHeight = av.getCharHeight();
     int charWidth = av.getCharWidth();
 
-    if (localSeqR==null)
+    if (localSeqR == null)
     {
       localSeqR = seqRdr;
     }
@@ -1017,7 +1024,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
          */
         g1.translate(screenY * charWidth, 0);
 
-        draw(localSeqR, g1, blockStart, blockEnd, startSeq, endSeq, yOffset);
+        draw(localSeqR, g1, blockStart, blockEnd, startSeq, endSeq,
+                yOffset);
 
         /*
          * draw the downline of the hidden column marker (ScalePanel draws the
@@ -1042,7 +1050,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
 
   /**
    * Draws a region of the visible alignment
-   * @param seqRdr 
+   * 
+   * @param seqRdr
    * 
    * @param g1
    * @param startRes
@@ -1056,8 +1065,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
    * @param yOffset
    *          vertical offset at which to draw (for wrapped alignments)
    */
-  private void draw(SequenceRenderer seqRdr, Graphics g, int startRes, int endRes, int startSeq,
-          int endSeq, int offset)
+  private void draw(SequenceRenderer seqRdr, Graphics g, int startRes,
+          int endRes, int startSeq, int endSeq, int offset)
   {
     int charHeight = av.getCharHeight();
     int charWidth = av.getCharWidth();
@@ -1399,7 +1408,7 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
         else if (inGroup)
         {
           drawVerticals(g, sx, xwidth, visWidth, oldY, bottom);
-          drawHorizontals(g, sx, xwidth, visWidth, top, bottom+1);
+          drawHorizontals(g, sx, xwidth, visWidth, top, bottom);
 
           // reset top and bottom
           top = -1;
@@ -1410,8 +1419,9 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
       if (inGroup)
       {
         sy = verticalOffset + ((i - startSeq) * charHeight);
-        drawVerticals(g, sx, xwidth, visWidth, oldY, bottom);
-        drawHorizontals(g, sx, xwidth, visWidth, top, bottom+1);
+        drawVerticals(g, sx, xwidth, visWidth, oldY,
+                bottom == -1 ? sy : bottom);
+        drawHorizontals(g, sx, xwidth, visWidth, top, bottom);
       }
     }
   }
@@ -1485,14 +1495,14 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
     // group
     if (sx >= 0 && sx < visWidth)
     {
-      g.drawLine(sx, oldY, sx, sy);
+      g.drawLine(sx, oldY, sx, sy-1);
     }
 
     // if end position is visible, draw vertical line to right of
     // group
     if (sx + xwidth < visWidth)
     {
-      g.drawLine(sx + xwidth, oldY, sx + xwidth, sy);
+      g.drawLine(sx + xwidth, oldY, sx + xwidth, sy-1);
     }
   }
 
@@ -1688,7 +1698,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
   public void propertyChange(PropertyChangeEvent evt)
   {
     String eventName = evt.getPropertyName();
-    // jalview.bin.Console.errPrintln(">>SeqCanvas propertyChange " + eventName);
+    // jalview.bin.Console.errPrintln(">>SeqCanvas propertyChange " +
+    // eventName);
     if (eventName.equals(SequenceGroup.SEQ_GROUP_CHANGED))
     {
       fastPaint = true;
@@ -1698,7 +1709,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
     else if (eventName.equals(ViewportRanges.MOVE_VIEWPORT))
     {
       fastPaint = false;
-      // jalview.bin.Console.errPrintln("!!!! fastPaint false from MOVE_VIEWPORT");
+      // jalview.bin.Console.errPrintln("!!!! fastPaint false from
+      // MOVE_VIEWPORT");
       repaint();
       return;
     }
@@ -1828,7 +1840,7 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
       if (scrollX < 0)
       {
         int startRes = ranges.getStartRes();
-        drawWrappedWidth(seqRdr,gg, wrappedSpaceAboveAlignment, startRes,
+        drawWrappedWidth(seqRdr, gg, wrappedSpaceAboveAlignment, startRes,
                 startRes - scrollX - 1, getHeight());
       }
       else
@@ -2156,8 +2168,8 @@ public class SeqCanvas extends JPanel implements ViewportListenerI
               {
                 matchFound = true;
                 gg.translate(transX, transY);
-                drawPanel(seqRdr,gg, displayColumn, displayColumn, seqNo, seqNo,
-                        yOffset);
+                drawPanel(seqRdr, gg, displayColumn, displayColumn, seqNo,
+                        seqNo, yOffset);
                 gg.translate(-transX, -transY);
               }
             }
index ce60be6..d39f937 100644 (file)
@@ -343,6 +343,14 @@ public class SeqPanel extends JPanel
   }
 
   /**
+   * @param evt
+   * @return absolute column in alignment nearest to the mouse pointer
+   */
+  int findAlignmentColumn(MouseEvent evt)
+  {
+    return findNearestColumn(evt,true);
+  }
+  /**
    * Returns the aligned sequence position (base 0) at the mouse position, or
    * the closest visible one
    * <p>
@@ -354,6 +362,15 @@ public class SeqPanel extends JPanel
    */
   int findColumn(MouseEvent evt)
   {
+    return findNearestColumn(evt, false);
+  }
+  
+  /**
+   * @param nearestColumn when false returns negative values for out of bound positions - -1 for scale left/right, <-1 if far to right
+   * @return nearest absolute column to mouse pointer
+   */
+  private int findNearestColumn(MouseEvent evt, boolean nearestColumn)
+  {
     int res = 0;
     int x = evt.getX();
 
@@ -377,7 +394,11 @@ public class SeqPanel extends JPanel
       if (x < 0)
       {
         // mouse is over left scale
-        return -1;
+        if (!nearestColumn) {
+          return -1;
+        } else {
+          x = 0;
+        }
       }
 
       int cwidth = seqCanvas.getWrappedCanvasWidth(this.getWidth());
@@ -387,8 +408,12 @@ public class SeqPanel extends JPanel
       }
       if (x >= cwidth * charWidth)
       {
-        // mouse is over right scale
-        return -1;
+        if (!nearestColumn) {
+          // mouse is over right scale
+          return -1;
+        } else {
+          x = cwidth*charWidth -1;
+        }
       }
 
       wrappedBlock = y / cHeight;
@@ -405,9 +430,16 @@ public class SeqPanel extends JPanel
        * rather than right-hand gutter
        */
       x = Math.min(x, seqCanvas.getX() + seqCanvas.getWidth());
+      if (nearestColumn)
+      {
+        x = Math.max(x, 0);
+      }
+
       res = (x / charWidth) + startRes;
       res = Math.min(res, av.getRanges().getEndRes());
+
     }
+    
 
     if (av.hasHiddenColumns())
     {
index 52c1d18..1060d8a 100755 (executable)
@@ -342,7 +342,7 @@ public class SplashScreen extends JPanel
     try
     {
 
-      iframe.setClosed(true);
+      iframe.setClosed(true); // ##### implicated BLOCKED
     } catch (Exception ex)
     {
     }
index a72e221..8135019 100644 (file)
@@ -1008,8 +1008,13 @@ public class StructureChooser extends GStructureChooser
               .getFTSDataFor(getResultTable(), selectedRow,
                       discoveredStructuresSet);
       String pageUrl = row.getModelViewUrl();
+      
       JPopupMenu popup = new JPopupMenu("3D Beacons");
       JMenuItem viewUrl = new JMenuItem("View model web page");
+      if (pageUrl == null || "".equals(pageUrl.trim())) {
+        viewUrl.setEnabled(false);
+        viewUrl.setText("No model page available.");
+      }
       viewUrl.addActionListener(new ActionListener()
       {
         @Override
index ed42ffa..085be71 100644 (file)
@@ -35,6 +35,7 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Random;
 import java.util.Vector;
 
@@ -141,6 +142,8 @@ public abstract class StructureViewerBase extends GStructureViewer
 
   protected boolean allChainsSelected = false;
 
+  protected boolean allHetatmBeingSelected = false;
+
   protected JMenu viewSelectionMenu;
 
   /**
@@ -604,6 +607,81 @@ public abstract class StructureViewerBase extends GStructureViewer
       chainMenu.add(menuItem);
     }
   }
+  void setHetatmMenuItems(Map<String,String> hetatmNames)
+  {
+    hetatmMenu.removeAll();
+    if (hetatmNames == null || hetatmNames.isEmpty())
+    {
+      hetatmMenu.setVisible(false);
+      return;
+    }
+    hetatmMenu.setVisible(true);
+    allHetatmBeingSelected=false;
+    JMenuItem allMenuItem = new JMenuItem(
+            MessageManager.getString("label.all"));
+    JMenuItem noneMenuItem = new JMenuItem(
+            MessageManager.getString("label.none"));
+    allMenuItem.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e) {
+      {
+        allHetatmBeingSelected=true;
+        // Toggle state of everything - on
+        for (int i = 0; i < hetatmMenu.getItemCount(); i++)
+        {
+          if (hetatmMenu.getItem(i) instanceof JCheckBoxMenuItem)
+          {
+            ((JCheckBoxMenuItem) hetatmMenu.getItem(i)).setSelected(true);
+          }
+        }
+        allHetatmBeingSelected=false;
+        showSelectedHetatms();
+      }
+      }});
+
+    noneMenuItem.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e) {
+      {
+        allHetatmBeingSelected=true;
+        // Toggle state of everything off
+        for (int i = 0; i < hetatmMenu.getItemCount(); i++)
+        {
+          if (hetatmMenu.getItem(i) instanceof JCheckBoxMenuItem)
+          {
+            ((JCheckBoxMenuItem) hetatmMenu.getItem(i)).setSelected(false);
+          }
+        }
+        allHetatmBeingSelected=false;
+        showSelectedHetatms();
+      }
+      }});
+    hetatmMenu.add(noneMenuItem);
+    hetatmMenu.add(allMenuItem);
+
+    for (Map.Entry<String, String> chain : hetatmNames.entrySet())
+    {
+      JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(chain.getKey(), false);
+      menuItem.setToolTipText(chain.getValue());
+      menuItem.addItemListener(new ItemListener()
+      {
+        @Override
+        public void itemStateChanged(ItemEvent evt)
+        {
+          if (!allHetatmBeingSelected)
+          { 
+            // update viewer only when we were clicked, not programmatically
+            // checked/unchecked
+            showSelectedHetatms();
+          }
+        }
+      });
+
+      hetatmMenu.add(menuItem);
+    }
+  }
 
   /**
    * Action on selecting one of Jalview's registered colour schemes
@@ -1009,6 +1087,7 @@ public abstract class StructureViewerBase extends GStructureViewer
       return;
     }
     setChainMenuItems(binding.getChainNames());
+    setHetatmMenuItems(binding.getHetatmNames());
 
     this.setTitle(binding.getViewerTitle(getViewerName(), true));
 
@@ -1158,7 +1237,25 @@ public abstract class StructureViewerBase extends GStructureViewer
     }
     getBinding().showChains(toshow);
   }
-
+  /**
+   * Display selected hetatms in viewer
+   */
+  protected void showSelectedHetatms()
+  {
+    List<String> toshow = new ArrayList<>();
+    for (int i = 0; i < hetatmMenu.getItemCount(); i++)
+    {
+      if (hetatmMenu.getItem(i) instanceof JCheckBoxMenuItem)
+      {
+        JCheckBoxMenuItem item = (JCheckBoxMenuItem) hetatmMenu.getItem(i);
+        if (item.isSelected())
+        {
+          toshow.add(item.getText());
+        }
+      }
+    }
+    getBinding().showHetatms(toshow);
+  }
   /**
    * Tries to fetch a PDB file and save to a temporary local file. Returns the
    * saved file path if successful, or null if not.
index 196eb32..d8259f9 100644 (file)
@@ -1325,7 +1325,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
    */
   protected void updateWebServiceMenus()
   {
-    for (AlignFrame alignFrame : Desktop.getAlignFrames())
+    for (AlignFrame alignFrame : Desktop.getDesktopAlignFrames())
     {
       alignFrame.BuildWebServiceMenu();
     }
index 1cc7be4..28861d9 100644 (file)
@@ -223,8 +223,8 @@ public class TDBResultAnalyser
                 if (!o1_qualtype.equals(o2_qualtype))
                 {
                   // prefer LDDT measure over others
-                  return "pLDDT".equals(o1_prov) ? -1
-                          : "pLDDT".equals(o2_prov) ? 1 : 0;
+                  return "pLDDT".equals(o1_qualtype) ? -1
+                          : "pLDDT".equals(o2_qualtype) ? 1 : 0;
                 }
                 // OR NO VALUE FOR THE QUALITY
                 if (eitherNull(idx_mqual, o1data, o2data))
@@ -234,7 +234,8 @@ public class TDBResultAnalyser
                 // models, so rank on qmean - b
                 double o1_mq = (Double) o1data[idx_mqual];
                 double o2_mq = (Double) o2data[idx_mqual];
-                return (o2_mq < o1_mq) ? 1 : (o2_mq == o1_mq) ? 0 : -1;
+                int res = (o2_mq < o1_mq) ? 1 : (o2_mq == o1_mq) ? 0 : -1;
+                return ("pLDDT".equals(o1_qualtype)) ? -res : res;
               }
             }
             else
index e32ba50..76ef85f 100644 (file)
@@ -310,7 +310,7 @@ public class ThreeDBStructureChooserQuerySource
             && tdBeaconsFilters.contains(fieldToFilterBy);
   }
 
-  private String remove_prefix(String fieldToFilterBy)
+  protected String remove_prefix(String fieldToFilterBy)
   {
     if (tdBeaconsFilters != null
             && tdBeaconsFilters.contains(fieldToFilterBy)
index 6d00a7d..c983dfe 100644 (file)
@@ -28,4 +28,9 @@ public enum DataSourceType
   {
     return this != FILE;
   }
+
+  public boolean isUrl()
+  {
+    return this == URL || this == RELATIVE_URL;
+  }
 }
index 43c6dcf..91ce527 100644 (file)
@@ -308,6 +308,21 @@ public enum FileFormat implements FileFormatI
       return new FeaturesFile();
     }
   },
+  FeatureSettings("Jalview Feature Settings File","fc",false,false)
+  {
+    @Override
+    public AlignmentFileReaderI getReader(FileParse source)
+            throws IOException
+    {
+      return null;
+    }
+
+    @Override
+    public AlignmentFileWriterI getWriter(AlignmentI al)
+    {
+      return null;
+    }    
+  },
   ScoreMatrix("Substitution matrix", "", false, false)
   {
     @Override
index dc7adac..b16c37f 100755 (executable)
@@ -361,8 +361,9 @@ public class FileLoader implements Runnable
           // We read the data anyway - it might make sense.
         }
         // BH 2018 switch to File object here instead of filename
-        alignFrame = new Jalview2XML(raiseGUI && !Jalview.isBatchMode()).loadJalviewAlign(
-                selectedFile == null ? file : selectedFile);
+        alignFrame = new Jalview2XML(raiseGUI && !Jalview.isBatchMode())
+                .loadJalviewAlign(
+                        selectedFile == null ? file : selectedFile);
       }
       else
       {
@@ -563,7 +564,8 @@ public class FileLoader implements Runnable
 
     } catch (Exception er)
     {
-      jalview.bin.Console.errPrintln("Exception whilst opening file '" + file);
+      jalview.bin.Console
+              .errPrintln("Exception whilst opening file '" + file);
       er.printStackTrace();
       if (raiseGUI && !Jalview.isBatchMode())
       {
@@ -603,7 +605,8 @@ public class FileLoader implements Runnable
           }
         });
       }
-      jalview.bin.Console.errPrintln("Out of memory loading file " + file + "!!");
+      jalview.bin.Console
+              .errPrintln("Out of memory loading file " + file + "!!");
 
     }
     loadtime += System.currentTimeMillis();
@@ -684,10 +687,18 @@ public class FileLoader implements Runnable
     AlignViewport avp = af.getViewport();
     if (avp == null)
       return;
-    avp.setSavedUpToDate(!protocol.isDynamic(),
-            QuitHandler.Message.UNSAVED_ALIGNMENTS);
+    boolean upToDate = !protocol.isDynamic();
+    if (protocol.isUrl() && !Cache
+            .getDefault(PROMPT_SAVE_UNCHANGED_URL_ALIGNMENTS, true))
+    {
+      upToDate = true;
+    }
+    avp.setSavedUpToDate(upToDate,
+            upToDate ? null : QuitHandler.Message.UNSAVED_ALIGNMENTS);
   }
 
+  public static final String PROMPT_SAVE_UNCHANGED_URL_ALIGNMENTS = "PROMPT_SAVE_UNCHANGED_URL_ALIGNMENTS";
+
   public static boolean getUseDefaultFileFormat()
   {
     return useDefaultFileFormat;
index ea87058..11d96a3 100755 (executable)
@@ -35,6 +35,8 @@ import jalview.bin.Console;
 public class IdentifyFile
 {
 
+  private static final String XMLHEADER = "<?XML VERSION=\"1.0\" ENCODING=\"UTF-8\" STANDALONE=\"YES\"?>";
+
   public FileFormatI identify(Object file, DataSourceType protocol)
           throws FileFormatException
   {
@@ -134,6 +136,7 @@ public class IdentifyFile
     String data;
     int bytesRead = 0;
     int trimmedLength = 0;
+    boolean isXml = false; // set true if first line is XMLHEADER
     boolean lineswereskipped = false;
     boolean isBinary = false; // true if length is non-zero and non-printable
     // characters are encountered
@@ -188,6 +191,10 @@ public class IdentifyFile
           reply = FileFormat.ScoreMatrix;
           break;
         }
+        if (data.startsWith(XMLHEADER) && !lineswereskipped)
+        {
+          isXml = true;
+        }
         if (data.startsWith("LOCUS"))
         {
           reply = FileFormat.GenBank;
@@ -346,6 +353,11 @@ public class IdentifyFile
             reply = FileFormat.Rnaml;
             break;
           }
+          if (isXml && data.contains("<NS2:JALVIEWUSERCOLOURS SCHEMENAME=\"SEQUENCE FEATURES\" XMLNS:NS2=\"WWW.JALVIEW.ORG/COLOURS\">"))
+          {
+            reply = FileFormat.FeatureSettings;
+            break;
+          }
         }
 
         if ((data.length() < 1) || (data.indexOf("#") == 0))
index 721cd47..0a1172c 100644 (file)
@@ -55,7 +55,7 @@ public class SequenceAnnotationReport
 
   private static final int MAX_REFS_PER_SOURCE = 4;
 
-  private static final int MAX_SOURCES = 40;
+  private static final int MAX_SOURCES = 5;
 
   private static String linkImageURL;
 
@@ -79,10 +79,19 @@ public class SequenceAnnotationReport
       {
         return 1;
       }
+      
       String s1 = ref1.getSource();
       String s2 = ref2.getSource();
       boolean s1Primary = DBRefSource.isPrimarySource(s1);
       boolean s2Primary = DBRefSource.isPrimarySource(s2);
+      if (ref1.isCanonical() && !ref2.isCanonical())
+      {
+        return -1;
+      }
+      if (!ref1.isCanonical() && ref2.isCanonical())
+      {
+        return 1;
+      }
       if (s1Primary && !s2Primary)
       {
         return -1;
index c3776d3..46b75c8 100644 (file)
@@ -151,7 +151,7 @@ public class VamsasAppDatastore
   private void buildSkipList()
   {
     skipList = new Hashtable();
-    AlignFrame[] al = Desktop.getAlignFrames();
+    AlignFrame[] al = Desktop.getDesktopAlignFrames();
     for (int f = 0; al != null && f < al.length; f++)
     {
       skipList.put(al[f].getViewport().getSequenceSetId(), al[f]);
index 18e4c9f..fceb50c 100644 (file)
@@ -52,6 +52,8 @@ public abstract class GStructureViewer extends JInternalFrame
 
   protected JMenu chainMenu;
 
+  protected JMenu hetatmMenu;
+
   protected JMenu viewerActionMenu;
 
   protected JMenuItem alignStructs;
@@ -152,6 +154,9 @@ public abstract class GStructureViewer extends JInternalFrame
     chainMenu = new JMenu();
     chainMenu.setText(MessageManager.getString("action.show_chain"));
 
+    hetatmMenu = new JMenu();
+    hetatmMenu.setText(MessageManager.getString("action.show_hetatm"));
+
     fitToWindow = new JMenuItem();
     fitToWindow.setText(MessageManager.getString("label.fit_to_window"));
     fitToWindow.addActionListener(new ActionListener()
@@ -197,6 +202,7 @@ public abstract class GStructureViewer extends JInternalFrame
     savemenu.add(png);
     savemenu.add(eps);
     viewMenu.add(chainMenu);
+    viewMenu.add(hetatmMenu);
     helpMenu.add(helpItem);
 
     menuBar.add(fileMenu);
index af3b2c8..d5b3808 100644 (file)
@@ -91,12 +91,15 @@ import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ContactListI;
 import jalview.datamodel.ContactMatrix;
 import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.FloatContactMatrix;
 import jalview.datamodel.GeneLocus;
 import jalview.datamodel.GraphLine;
 import jalview.datamodel.GroupSet;
+import jalview.datamodel.GroupSetI;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.Point;
 import jalview.datamodel.RnaViewerModel;
@@ -199,6 +202,7 @@ import jalview.xml.binding.jalview.JalviewUserColours.Colour;
 import jalview.xml.binding.jalview.MapListType;
 import jalview.xml.binding.jalview.MapListType.MapListFrom;
 import jalview.xml.binding.jalview.MapListType.MapListTo;
+import jalview.xml.binding.jalview.MapOnAMatrixType;
 import jalview.xml.binding.jalview.Mapping;
 import jalview.xml.binding.jalview.MatrixType;
 import jalview.xml.binding.jalview.NoValueColour;
@@ -268,7 +272,7 @@ public class Jalview2XML
 
   Map<String, SequenceI> incompleteSeqs = null;
 
-  List<SeqFref> frefedSequence = null;
+  List<forwardRef> frefedSequence = null;
 
   boolean raiseGUI = true; // whether errors are raised in dialog boxes or not
 
@@ -283,6 +287,13 @@ public class Jalview2XML
    * entry names
    */
   private Map<RnaModel, String> rnaSessions = new HashMap<>();
+  
+  /**
+   * map from contact matrices to their XML ids
+   */
+  private Map<ContactMatrixI,String> contactMatrices = new HashMap<>();
+  private Map<String, ContactMatrixI> contactMatrixRefs = new HashMap<>();
+  private List<jalview.xml.binding.jalview.MatrixType> xmlMatrices= new ArrayList<>();
 
   /**
    * A helper method for safely using the value of an optional attribute that
@@ -380,18 +391,17 @@ public class Jalview2XML
   }
 
   /**
-   * base class for resolving forward references to sequences by their ID
+   * base class for resolving forward references to an as-yet unmarshalled object referenced by already unmarshalled objects
    * 
    * @author jprocter
    *
    */
-  abstract class SeqFref
-  {
+  abstract class forwardRef {
     String sref;
 
     String type;
 
-    public SeqFref(String _sref, String type)
+    public forwardRef(String _sref, String type)
     {
       sref = _sref;
       this.type = type;
@@ -402,6 +412,28 @@ public class Jalview2XML
       return sref;
     }
 
+    public abstract boolean isResolvable();
+    /**
+     * @return true if the forward reference was fully resolved
+     */
+    abstract boolean resolve();
+
+    @Override
+    public String toString()
+    {
+      return type + " reference to " + sref;
+    }
+  }
+  /**
+   * resolve forward references to sequences by their ID
+   * @author jprocter
+   */
+  abstract class SeqFref extends forwardRef
+  {
+    public SeqFref(String _sref, String type)
+    {
+      super(_sref, type);
+    }
     public SequenceI getSrefSeq()
     {
       return seqRefIds.get(sref);
@@ -424,17 +456,6 @@ public class Jalview2XML
       }
       return sq;
     }
-
-    /**
-     * @return true if the forward reference was fully resolved
-     */
-    abstract boolean resolve();
-
-    @Override
-    public String toString()
-    {
-      return type + " reference to " + sref;
-    }
   }
 
   /**
@@ -497,15 +518,42 @@ public class Jalview2XML
     };
     return fref;
   }
+  
+  public forwardRef newMatrixFref(final String matRef,
+          final jalview.util.MapList mapping, final AlignmentAnnotation jaa)
+  {
+    forwardRef fref = new forwardRef(matRef,
+            "Matrix Reference for sequence and annotation")
+    {
+
+      @Override
+      boolean resolve()
+      {
+        ContactMatrixI cm = contactMatrixRefs.get(matRef);
+        PAEContactMatrix newpae = new PAEContactMatrix(jaa.sequenceRef,
+                mapping, cm);
+
+        jaa.sequenceRef.addContactListFor(jaa, newpae);
+        return true;
+      }
+
+      @Override
+      public boolean isResolvable()
+      {
+        return (contactMatrixRefs.get(matRef) != null);
+      }
+    };
+    return fref;
+  }
 
   public void resolveFrefedSequences()
   {
-    Iterator<SeqFref> nextFref = frefedSequence.iterator();
+    Iterator<forwardRef> nextFref = frefedSequence.iterator();
     int toresolve = frefedSequence.size();
     int unresolved = 0, failedtoresolve = 0;
     while (nextFref.hasNext())
     {
-      SeqFref ref = nextFref.next();
+      forwardRef ref = nextFref.next();
       if (ref.isResolvable())
       {
         try
@@ -631,7 +679,7 @@ public class Jalview2XML
    */
   public void saveState(JarOutputStream jout)
   {
-    AlignFrame[] frames = Desktop.getAlignFrames();
+    AlignFrame[] frames = Desktop.getDesktopAlignFrames();
 
     setStateSavedUpToDate(true);
 
@@ -1598,6 +1646,9 @@ public class Jalview2XML
       view.setShowColourText(av.getColourText());
       view.setShowFullId(av.getShowJVSuffix());
       view.setRightAlignIds(av.isRightAlignIds());
+      view.setIdWidth(av.getIdWidth());
+      view.setIdWidthManuallyAdjusted(ap.getIdPanel().getIdCanvas().isManuallyAdjusted());
+      
       view.setShowSequenceFeatures(av.isShowSequenceFeatures());
       view.setShowText(av.getShowText());
       view.setShowUnconserved(av.getShowUnconserved());
@@ -1769,6 +1820,20 @@ public class Jalview2XML
       // jms.addViewport(view);
       object.getViewport().add(view);
     }
+    
+    
+    if (storeDS)
+    {
+      // store matrices referenced by any views or annotation in this dataset
+      if (xmlMatrices!=null && xmlMatrices.size()>0)
+      {
+        Console.debug("Adding "+xmlMatrices.size()+" matrices to dataset.");
+        vamsasSet.getMatrix().addAll(xmlMatrices);
+        xmlMatrices.clear();
+      }
+    }
+
+    
     // object.setJalviewModelSequence(jms);
     // object.getVamsasModel().addSequenceSet(vamsasSet);
     object.getVamsasModel().getSequenceSet().add(vamsasSet);
@@ -2333,64 +2398,7 @@ public class Jalview2XML
                     .getContactMatrixFor(annotation);
             if (cm != null)
             {
-              MatrixType xmlmat = new MatrixType();
-              xmlmat.setType(cm.getType());
-              xmlmat.setRows(BigInteger.valueOf(cm.getWidth()));
-              xmlmat.setCols(BigInteger.valueOf(cm.getHeight()));
-              // consider using an opaque to/from -> allow instance to control
-              // its representation ?
-              xmlmat.setElements(ContactMatrix.contactToFloatString(cm));
-              if (cm.hasGroups())
-              {
-                for (BitSet gp : cm.getGroups())
-                {
-                  xmlmat.getGroups().add(stringifyBitset(gp));
-                }
-              }
-              if (cm.hasTree())
-              {
-                // provenance object for tree ?
-                xmlmat.getNewick().add(cm.getNewick());
-                xmlmat.setTreeMethod(cm.getTreeMethod());
-              }
-              if (cm.hasCutHeight())
-              {
-                xmlmat.setCutHeight(cm.getCutHeight());
-              }
-              // set/get properties
-              if (cm instanceof MappableContactMatrixI)
-              {
-                jalview.util.MapList mlst = ((MappableContactMatrixI) cm)
-                        .getMapFor(annotation.sequenceRef);
-                if (mlst != null)
-                {
-                  MapListType mp = new MapListType();
-                  List<int[]> r = mlst.getFromRanges();
-                  for (int[] range : r)
-                  {
-                    MapListFrom mfrom = new MapListFrom();
-                    mfrom.setStart(range[0]);
-                    mfrom.setEnd(range[1]);
-                    // mp.addMapListFrom(mfrom);
-                    mp.getMapListFrom().add(mfrom);
-                  }
-                  r = mlst.getToRanges();
-                  for (int[] range : r)
-                  {
-                    MapListTo mto = new MapListTo();
-                    mto.setStart(range[0]);
-                    mto.setEnd(range[1]);
-                    // mp.addMapListTo(mto);
-                    mp.getMapListTo().add(mto);
-                  }
-                  mp.setMapFromUnit(
-                          BigInteger.valueOf(mlst.getFromRatio()));
-                  mp.setMapToUnit(BigInteger.valueOf(mlst.getToRatio()));
-                  xmlmat.setMapping(mp);
-                }
-              }
-              // and add to model
-              an.getContactmatrix().add(xmlmat);
+              storeMatrixFor(vamsasSet, an,annotation, cm);
             }
           }
         }
@@ -2497,6 +2505,88 @@ public class Jalview2XML
 
   }
 
+  private void storeMatrixFor(SequenceSet root, Annotation an, AlignmentAnnotation annotation, ContactMatrixI cm)
+  {
+    String cmId = contactMatrices.get(cm);
+    MatrixType xmlmat=null;
+    
+    // first create an xml ref for the matrix data, if none exist
+    if (cmId == null)
+    {
+      xmlmat = new MatrixType();
+      xmlmat.setType(cm.getType());
+      xmlmat.setRows(BigInteger.valueOf(cm.getWidth()));
+      xmlmat.setCols(BigInteger.valueOf(cm.getHeight()));
+      // consider using an opaque to/from -> allow instance to control
+      // its representation ?
+      xmlmat.setElements(ContactMatrix.contactToFloatString(cm));
+      if (cm.hasGroups())
+      {
+        for (BitSet gp : cm.getGroups())
+        {
+          xmlmat.getGroups().add(stringifyBitset(gp));
+        }
+      }
+      if (cm.hasTree())
+      {
+        // provenance object for tree ?
+        xmlmat.getNewick().add(cm.getNewick());
+        xmlmat.setTreeMethod(cm.getTreeMethod());
+      }
+      if (cm.hasCutHeight())
+      {
+        xmlmat.setCutHeight(cm.getCutHeight());
+      }
+      xmlmat.setId(cmId = "m"+contactMatrices.size()+System.currentTimeMillis());
+      Console.trace("Matrix data stored :"+cmId);
+      contactMatrices.put(cm, cmId);
+      contactMatrixRefs.put(cmId, cm);
+      xmlMatrices.add(xmlmat);
+    } else {
+      Console.trace("Existing Matrix stored :"+cmId);
+    }
+
+    // now store mapping
+
+    MapOnAMatrixType xmlmatmapping = new MapOnAMatrixType();
+    xmlmatmapping.setMatrix(cmId);
+    
+    // Pretty much all matrices currently managed in this way are
+    // mappableContactMatrixI implementations - but check anyway
+    if (cm instanceof MappableContactMatrixI)
+    {
+      jalview.util.MapList mlst = ((MappableContactMatrixI) cm)
+              .getMapFor(annotation.sequenceRef);
+      if (mlst != null)
+      {
+        MapListType mp = new MapListType();
+        List<int[]> r = mlst.getFromRanges();
+        for (int[] range : r)
+        {
+          MapListFrom mfrom = new MapListFrom();
+          mfrom.setStart(range[0]);
+          mfrom.setEnd(range[1]);
+          // mp.addMapListFrom(mfrom);
+          mp.getMapListFrom().add(mfrom);
+        }
+        r = mlst.getToRanges();
+        for (int[] range : r)
+        {
+          MapListTo mto = new MapListTo();
+          mto.setStart(range[0]);
+          mto.setEnd(range[1]);
+          // mp.addMapListTo(mto);
+          mp.getMapListTo().add(mto);
+        }
+        mp.setMapFromUnit(BigInteger.valueOf(mlst.getFromRatio()));
+        mp.setMapToUnit(BigInteger.valueOf(mlst.getToRatio()));
+        xmlmatmapping.setMapping(mp);
+      }
+    }
+    // and add to model
+    an.getContactmatrix().add(xmlmatmapping);
+  }
+
   private String stringifyBitset(BitSet gp)
   {
     StringBuilder sb = new StringBuilder();
@@ -3073,6 +3163,7 @@ public class Jalview2XML
       initSeqRefs();
     }
     AlignFrame af = null, _af = null;
+    List<AlignFrame> toRepaint=new ArrayList<AlignFrame>();
     IdentityHashMap<AlignmentI, AlignmentI> importedDatasets = new IdentityHashMap<>();
     Map<String, AlignFrame> gatherToThisFrame = new HashMap<>();
     final String file = jprovider.getFilename();
@@ -3107,6 +3198,7 @@ public class Jalview2XML
             if (_af != null && object.getViewport().size() > 0)
             // getJalviewModelSequence().getViewportCount() > 0)
             {
+              toRepaint.add(_af);
               if (af == null)
               {
                 // store a reference to the first view
@@ -3136,6 +3228,10 @@ public class Jalview2XML
       } while (jarentry != null);
       jin.close();
       resolveFrefedSequences();
+      for (AlignFrame alignFrame:toRepaint)
+      {
+        alignFrame.repaint();
+      }
     } catch (IOException ex)
     {
       ex.printStackTrace();
@@ -3526,6 +3622,14 @@ public class Jalview2XML
     }
 
     // ////////////////////////////////
+    // LOAD MATRICES (IF ANY)
+    
+    if (vamsasSet.getMatrix()!=null && vamsasSet.getMatrix().size()>0)
+    {
+      importMatrixData(vamsasSet.getMatrix());
+    }
+    
+    // ////////////////////////////////
     // LOAD SEQUENCES
 
     List<SequenceI> hiddenSeqs = null;
@@ -4057,80 +4161,10 @@ public class Jalview2XML
           if (annotation.getContactmatrix() != null
                   && annotation.getContactmatrix().size() > 0)
           {
-            for (MatrixType xmlmat : annotation.getContactmatrix())
+            for (MapOnAMatrixType xmlmat : annotation.getContactmatrix())
             {
-              if (PAEContactMatrix.PAEMATRIX.equals(xmlmat.getType()))
-              {
-                if (!xmlmat.getRows().equals(xmlmat.getCols()))
-                {
-                  Console.error("Can't handle non square PAE Matrices");
-                }
-                else
-                {
-                  float[][] elements = ContactMatrix
-                          .fromFloatStringToContacts(xmlmat.getElements(),
-                                  xmlmat.getCols().intValue(),
-                                  xmlmat.getRows().intValue());
-                  jalview.util.MapList mapping = null;
-                  if (xmlmat.getMapping() != null)
-                  {
-                    MapListType m = xmlmat.getMapping();
-                    // Mapping m = dr.getMapping();
-                    int fr[] = new int[m.getMapListFrom().size() * 2];
-                    Iterator<MapListFrom> from = m.getMapListFrom()
-                            .iterator();// enumerateMapListFrom();
-                    for (int _i = 0; from.hasNext(); _i += 2)
-                    {
-                      MapListFrom mf = from.next();
-                      fr[_i] = mf.getStart();
-                      fr[_i + 1] = mf.getEnd();
-                    }
-                    int fto[] = new int[m.getMapListTo().size() * 2];
-                    Iterator<MapListTo> to = m.getMapListTo().iterator();// enumerateMapListTo();
-                    for (int _i = 0; to.hasNext(); _i += 2)
-                    {
-                      MapListTo mf = to.next();
-                      fto[_i] = mf.getStart();
-                      fto[_i + 1] = mf.getEnd();
-                    }
-
-                    mapping = new jalview.util.MapList(fr, fto,
-                            m.getMapFromUnit().intValue(),
-                            m.getMapToUnit().intValue());
-                  }
-                  List<BitSet> newgroups = new ArrayList<BitSet>();
-                  if (xmlmat.getGroups().size() > 0)
-                  {
-                    for (String sgroup : xmlmat.getGroups())
-                    {
-                      newgroups.add(deStringifyBitset(sgroup));
-                    }
-                  }
-                  String nwk = xmlmat.getNewick().size() > 0
-                          ? xmlmat.getNewick().get(0)
-                          : null;
-                  if (xmlmat.getNewick().size() > 1)
-                  {
-                    Console.log.info(
-                            "Ignoring additional clusterings for contact matrix");
-                  }
-                  String treeMethod = xmlmat.getTreeMethod();
-                  double thresh = xmlmat.getCutHeight() != null
-                          ? xmlmat.getCutHeight()
-                          : 0;
-                  GroupSet grpset = new GroupSet();
-                  grpset.restoreGroups(newgroups, treeMethod, nwk, thresh);
-                  PAEContactMatrix newpae = new PAEContactMatrix(
-                          jaa.sequenceRef, mapping, elements, grpset);
-                  jaa.sequenceRef.addContactListFor(jaa, newpae);
-                }
-              }
-              else
-              {
-                Console.error("Ignoring CONTACT_MAP annotation with type "
-                        + xmlmat.getType());
-              }
-            }
+              restoreMatrixFor(jaa.sequenceRef, jaa, xmlmat);
+            } 
           }
         }
 
@@ -4360,6 +4394,105 @@ public class Jalview2XML
     return af;
   }
 
+  private void importMatrixData(List<MatrixType> xmlmatrices)
+  {
+    for (MatrixType xmlmat:xmlmatrices)
+    {
+      if (!PAEContactMatrix.PAEMATRIX.equals(xmlmat.getType()))
+      {
+        Console.error("Ignoring matrix '"+xmlmat.getId()+"' of type '"+xmlmat.getType());
+        continue;
+      }
+
+      if (!xmlmat.getRows().equals(xmlmat.getCols()))
+      {
+        Console.error("Can't handle non square matrices");
+        continue;
+      }
+
+      float[][] elements = ContactMatrix
+              .fromFloatStringToContacts(xmlmat.getElements(),
+                      xmlmat.getCols().intValue(),
+                      xmlmat.getRows().intValue());
+      
+      List<BitSet> newgroups = new ArrayList<BitSet>();
+      if (xmlmat.getGroups().size() > 0)
+      {
+        for (String sgroup : xmlmat.getGroups())
+        {
+          newgroups.add(deStringifyBitset(sgroup));
+        }
+      }
+      String nwk = xmlmat.getNewick().size() > 0
+              ? xmlmat.getNewick().get(0)
+              : null;
+      if (xmlmat.getNewick().size() > 1)
+      {
+        Console.log.info(
+                "Ignoring additional clusterings for contact matrix");
+      }
+      String treeMethod = xmlmat.getTreeMethod();
+      double thresh = xmlmat.getCutHeight() != null
+              ? xmlmat.getCutHeight()
+              : 0;
+      GroupSet grpset = new GroupSet();
+      grpset.restoreGroups(newgroups, treeMethod, nwk, thresh);
+      
+      FloatContactMatrix newcm = new FloatContactMatrix(elements, grpset);
+      contactMatrixRefs.put(xmlmat.getId(), newcm);
+      Console.trace("Restored base contact matrix "+xmlmat.getId());
+    }
+  }
+
+  private void restoreMatrixFor(SequenceI sequenceRef,
+          AlignmentAnnotation jaa, MapOnAMatrixType xmlmatmapping)
+  {    
+    // restore mapping data to matrix data
+    jalview.util.MapList mapping = null;
+    if (xmlmatmapping.getMapping() != null)
+    {
+      MapListType m = xmlmatmapping.getMapping();
+      // Mapping m = dr.getMapping();
+      int fr[] = new int[m.getMapListFrom().size() * 2];
+      Iterator<MapListFrom> from = m.getMapListFrom().iterator();// enumerateMapListFrom();
+      for (int _i = 0; from.hasNext(); _i += 2)
+      {
+        MapListFrom mf = from.next();
+        fr[_i] = mf.getStart();
+        fr[_i + 1] = mf.getEnd();
+      }
+      int fto[] = new int[m.getMapListTo().size() * 2];
+      Iterator<MapListTo> to = m.getMapListTo().iterator();// enumerateMapListTo();
+      for (int _i = 0; to.hasNext(); _i += 2)
+      {
+        MapListTo mf = to.next();
+        fto[_i] = mf.getStart();
+        fto[_i + 1] = mf.getEnd();
+      }
+
+      mapping = new jalview.util.MapList(fr, fto,
+              m.getMapFromUnit().intValue(), m.getMapToUnit().intValue());
+    }
+    
+    // locate matrix data in project XML and import
+    ContactMatrixI cm = contactMatrixRefs.get(xmlmatmapping.getMatrix());
+    if (cm == null)
+    {
+      frefedSequence
+              .add(newMatrixFref(xmlmatmapping.getMatrix(), mapping, jaa));
+    }
+    else
+    {
+      // create the PAEMatrix now
+      PAEContactMatrix newpae = new PAEContactMatrix(jaa.sequenceRef,
+              mapping, cm);
+
+      jaa.sequenceRef.addContactListFor(jaa, newpae);
+    }
+
+    return;
+  }
+
   /**
    * Load Overview window, restoring colours, 'show hidden regions' flag, title
    * and geometry as saved
@@ -5111,6 +5244,21 @@ public class Jalview2XML
     }
     af.setBounds(safeInt(view.getXpos()), safeInt(view.getYpos()),
             safeInt(view.getWidth()), safeInt(view.getHeight()));
+    
+    af.alignPanel.fontChanged(); // make sure font is updated *before* we set ID width
+    if (view.getIdWidth()==null)
+    {
+      if (!isVersionStringLaterThan("2.11.3", jm.getVersion())) {
+        // Pre 2.11.3 jalview projects do not store the id width
+        // idWidth was also calculated in a different way.
+        viewport.setIdWidth(af.alignPanel.getLegacyIdWidth());
+        af.alignPanel.getIdPanel().getIdCanvas().setManuallyAdjusted(true);
+      }
+    } else {
+      viewport.setIdWidth(view.getIdWidth());
+      af.alignPanel.getIdPanel().getIdCanvas().setManuallyAdjusted(view.isIdWidthManuallyAdjusted());
+    }
+    
     // startSeq set in af.alignPanel.updateLayout below
     af.alignPanel.updateLayout();
     ColourSchemeI cs = null;
@@ -6919,7 +7067,7 @@ public class Jalview2XML
     if (stateSavedUpToDate()) // nothing happened since last project save
       return true;
 
-    AlignFrame[] frames = Desktop.getAlignFrames();
+    AlignFrame[] frames = Desktop.getDesktopAlignFrames();
     if (frames != null)
     {
       for (int i = 0; i < frames.length; i++)
index be65eb7..9438e9a 100644 (file)
@@ -95,7 +95,7 @@ public class AnnotationRenderer
 
   private boolean av_ignoreGapsConsensus;
 
-  private boolean vectorRendition = false;
+  private boolean renderingVectors = false;
 
   private boolean glyphLineDrawn = false;
 
@@ -184,7 +184,7 @@ public class AnnotationRenderer
             : row_annotations[column - 1].secondaryStructure;
 
     boolean diffupstream = sCol == 0 || row_annotations[sCol - 1] == null
-            || dc != row_annotations[sCol - 1].secondaryStructure;
+            || dc != row_annotations[sCol - 1].secondaryStructure || !validEnd;
     boolean diffdownstream = !validRes || !validEnd
             || row_annotations[column] == null
             || dc != row_annotations[column].secondaryStructure;
@@ -260,7 +260,7 @@ public class AnnotationRenderer
             : row_annotations[column - 1].displayCharacter;
 
     boolean diffupstream = sCol == 0 || row_annotations[sCol - 1] == null
-            || !dc.equals(row_annotations[sCol - 1].displayCharacter);
+            || !dc.equals(row_annotations[sCol - 1].displayCharacter) || !validEnd;
     boolean diffdownstream = !validRes || !validEnd
             || row_annotations[column] == null
             || !dc.equals(row_annotations[column].displayCharacter);
@@ -478,7 +478,7 @@ public class AnnotationRenderer
   {
     if (g instanceof EpsGraphics2D || g instanceof SVGGraphics2D)
     {
-      this.setVectorRendition(true);
+      this.setVectorRendering(true);
     }
     Graphics2D g2d = (Graphics2D) g;
 
@@ -920,7 +920,7 @@ public class AnnotationRenderer
                   // temp = x;
                   break;
                 default:
-                  if (isVectorRendition())
+                  if (isVectorRendering())
                   {
                     // draw single full width glyphline
                     drawGlyphLine(g, lastSSX, endRes - x, y, iconOffset);
@@ -1061,7 +1061,7 @@ public class AnnotationRenderer
                     x, y, iconOffset, startRes, column, validRes, validEnd);
             break;
           default:
-            if (isVectorRendition())
+            if (isVectorRendering())
             {
               // draw single full width glyphline
               drawGlyphLine(g, lastSSX, endRes - x, y, iconOffset);
@@ -1259,7 +1259,7 @@ public class AnnotationRenderer
     int x1 = lastSSX;
     int x2 = (x * charWidth);
 
-    if (USE_FILL_ROUND_RECT || isVectorRendition())
+    if (USE_FILL_ROUND_RECT || isVectorRendering())
     {
       // draw glyph line behind helix (visible in EPS or SVG output)
       drawGlyphLine(g, lastSSX, x, y, iconOffset);
@@ -1884,7 +1884,7 @@ public class AnnotationRenderer
 
   private void setAntialias(Graphics g)
   {
-    if (isVectorRendition())
+    if (isVectorRendering())
     {
       // no need to antialias vector drawings
       return;
@@ -1899,7 +1899,7 @@ public class AnnotationRenderer
 
   private void unsetAntialias(Graphics g)
   {
-    if (isVectorRendition())
+    if (isVectorRendering())
     {
       // no need to antialias vector drawings
       return;
@@ -1909,13 +1909,13 @@ public class AnnotationRenderer
             RenderingHints.VALUE_ANTIALIAS_OFF);
   }
 
-  public void setVectorRendition(boolean b)
+  public void setVectorRendering(boolean b)
   {
-    vectorRendition = b;
+    renderingVectors = b;
   }
 
-  public boolean isVectorRendition()
+  public boolean isVectorRendering()
   {
-    return vectorRendition;
+    return renderingVectors;
   }
 }
index af8838c..edf3ca2 100644 (file)
@@ -128,6 +128,10 @@ public abstract class ContactMapRenderer implements AnnotationRowRendererI
     int column;
     int aaMax = aa_annotations.length - 1;
     ContactMatrixI cm = viewport.getContactMatrix(_aa);
+    if (cm==null)
+    {
+      return;
+    }
     while (x < eRes - sRes)
     {
       column = sRes + x;
index 5dab059..6e4c4e1 100644 (file)
@@ -29,6 +29,7 @@ public class StructureCommand implements StructureCommandI
 
   private List<String> parameters;
 
+  private boolean waitNeeded=false;
   public StructureCommand(String cmd, String... params)
   {
     command = cmd;
@@ -40,7 +41,18 @@ public class StructureCommand implements StructureCommandI
       }
     }
   }
-
+  
+  public void setWaitNeeded(boolean wait)
+  {
+    waitNeeded=wait;
+  }
+  
+  @Override
+  public boolean isWaitNeeded()
+  {
+    return waitNeeded;
+  }
+  
   @Override
   public void addParameter(String param)
   {
index ba557a8..03b15fb 100644 (file)
@@ -31,4 +31,6 @@ public interface StructureCommandI
   void addParameter(String param);
 
   boolean hasParameters();
+
+  default boolean isWaitNeeded() { return false; };
 }
index b1e1486..8ba94b0 100644 (file)
@@ -21,6 +21,7 @@
 package jalview.structure;
 
 import java.awt.Color;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -254,4 +255,8 @@ public interface StructureCommandsI
   StructureCommandI getResidueAttributes(String attName);
 
   List<StructureCommandI> centerViewOn(List<AtomSpecModel> residues);
+
+  default List<StructureCommandI> showHetatms(List<String> toShow) {
+    return Collections.EMPTY_LIST;
+  }
 }
index dcedafa..9c8afdf 100644 (file)
@@ -26,6 +26,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.BitSet;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -2006,4 +2007,22 @@ public abstract class AAStructureBindingModel
   {
     return 0;
   }
+
+  /**
+   * list the ligands available for display/hiding in the current view
+   * @return HETATM CODE:Molecule name
+   */
+  public Map<String, String> getHetatmNames() {
+    return Collections.EMPTY_MAP;
+  }
+  /**
+   * Generates and executes a command to show the given hetatm types as CPK
+   * 
+   * @param toShow - one or more of strings from getHetatmNames
+   */
+  public void showHetatms(List<String> toShow)
+  {
+    executeCommands(commandGenerator.showHetatms(toShow), false, "Adjusting hetatm visibility");
+  }
+
 }
index 435d40c..508a069 100644 (file)
@@ -305,14 +305,16 @@ public class AlignCalcManager implements AlignCalcManagerI
           Class<? extends AlignCalcWorkerI> workerClass)
   {
     List<AlignCalcWorkerI> workingClass = new ArrayList<AlignCalcWorkerI>();
+    AlignCalcWorkerI[] workers;
     synchronized (canUpdate)
     {
-      for (AlignCalcWorkerI worker : canUpdate)
+      workers = canUpdate.toArray(new AlignCalcWorkerI[0]);
+    }
+    for (AlignCalcWorkerI worker : workers)
+    {
+      if (workerClass.equals(worker.getClass()))
       {
-        if (workerClass.equals(worker.getClass()))
-        {
-          workingClass.add(worker);
-        }
+        workingClass.add(worker);
       }
     }
     return (workingClass.size() == 0) ? null : workingClass;
index c4e4b04..8b5240c 100644 (file)
@@ -20,6 +20,8 @@
  */
 package jalview.workers;
 
+import java.awt.Color;
+
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.bin.Jalview;
@@ -27,8 +29,6 @@ import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.Annotation;
 import jalview.gui.AlignFrame;
 
-import java.awt.Color;
-
 /**
  * Factory class with methods which allow clients (including external scripts
  * such as Groovy) to 'register and forget' an alignment annotation calculator.
@@ -52,7 +52,7 @@ public class AlignmentAnnotationFactory
    */
   public static void newCalculator(FeatureSetCounterI counter)
   {
-    AlignmentViewPanel currentAlignFrame = Jalview
+    AlignmentViewPanel currentAlignFrame = Jalview.getInstance()
             .getCurrentAlignFrame().alignPanel;
     if (currentAlignFrame == null)
     {
@@ -74,7 +74,8 @@ public class AlignmentAnnotationFactory
   {
     // TODO need an interface for AlignFrame by which to access
     // its AlignViewportI and AlignmentViewPanel
-    AlignFrame currentAlignFrame = Jalview.getCurrentAlignFrame();
+    AlignFrame currentAlignFrame = Jalview.getInstance()
+            .getCurrentAlignFrame();
     if (currentAlignFrame != null)
     {
       new AnnotationWorker(currentAlignFrame.getViewport(),
index 9762428..3f294d0 100644 (file)
@@ -73,4 +73,6 @@ public interface MappableContactMatrixI extends ContactMatrixI
    * @return sequence position(s) corresponding to column in contact matrix
    */
   int[] getMappedPositionsFor(SequenceI localFrame, int from, int to);
+
+  ContactMatrixI getMappedMatrix();
 }
index d545741..5f27a2c 100644 (file)
@@ -7,6 +7,7 @@ import java.util.BitSet;
 import jalview.datamodel.ContactListI;
 import jalview.datamodel.ContactListImpl;
 import jalview.datamodel.ContactListProviderI;
+import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.GroupSet;
 import jalview.datamodel.GroupSetI;
 import jalview.datamodel.Mapping;
@@ -17,42 +18,77 @@ import jalview.ws.datamodel.MappableContactMatrixI;
 public abstract class MappableContactMatrix<T extends MappableContactMatrix<T>>
         implements MappableContactMatrixI
 {
-  SequenceI refSeq = null;
-
-  MapList toSeq = null;
-
   /**
-   * the length that refSeq is expected to be (excluding gaps, of course)
+   * the matrix that is being mapped to
    */
-  int length;
+  protected ContactMatrixI mappedMatrix=null;
+  
+  public ContactListI getContactList(int column)
+  {
+    return mappedMatrix.getContactList(column);
+  }
+
+  public float getMin()
+  {
+    return mappedMatrix.getMin();
+  }
+
+  public float getMax()
+  {
+    return mappedMatrix.getMax();
+  }
+
+  public int getWidth()
+  {
+    return mappedMatrix.getWidth();
+  }
+
+  public int getHeight()
+  {
+    return mappedMatrix.getHeight();
+  }
 
   @Override
-  public boolean hasReferenceSeq()
+  public ContactMatrixI getMappedMatrix()
   {
-    return (refSeq != null);
+    return mappedMatrix;
   }
+  
+  @Override
+  public GroupSetI getGroupSet()
+  {
+    return mappedMatrix.getGroupSet();
+  };
 
   @Override
-  public SequenceI getReferenceSeq()
+  public void setGroupSet(GroupSet makeGroups)
   {
-    return refSeq;
+    mappedMatrix.setGroupSet(makeGroups);
   }
+  
+  /**
+   * the sequence and how it is mapped to the matrix
+   */
+
+  SequenceI refSeq = null;
+
+  MapList toSeq = null;
 
   /**
-   * container for groups - defined on matrix columns
+   * the length that refSeq is expected to be (excluding gaps, of course)
    */
-  GroupSet grps = new GroupSet();
+  int length;
 
   @Override
-  public GroupSetI getGroupSet()
+  public boolean hasReferenceSeq()
   {
-    return grps;
-  };
+    return (refSeq != null);
+  }
 
   @Override
-  public void setGroupSet(GroupSet makeGroups)
+  public SequenceI getReferenceSeq()
   {
-    grps = makeGroups;
+    return refSeq;
   }
 
   @Override
@@ -439,7 +475,7 @@ public abstract class MappableContactMatrix<T extends MappableContactMatrix<T>>
   }
 
   /**
-   * get a specific element of the contact matrix in its data-local coordinates
+   * get a specific element of the underlying contact matrix in its data-local coordinates
    * rather than the mapped frame. Implementations are allowed to throw
    * RunTimeExceptions if _column/i are out of bounds
    * 
@@ -447,6 +483,29 @@ public abstract class MappableContactMatrix<T extends MappableContactMatrix<T>>
    * @param i
    * @return
    */
-  protected abstract double getElementAt(int _column, int i);
+  public double getElementAt(int _column, int i) {
+    return mappedMatrix.getElementAt(_column, i);
+  }
+
+  @Override
+  public int hashCode()
+  {
+    return 7 * (refSeq != null ? refSeq.hashCode() : 0)
+            + 11 * (toSeq != null ? toSeq.hashCode() : 0)
+            + 13 * (mappedMatrix != null ? mappedMatrix.hashCode() : 0)
+            + length * 3;
+  }
 
+  @Override
+  public boolean equals(Object obj)
+  {
+    if (obj == null || !(obj.getClass().equals(getClass())))
+    {
+      return false;
+    }
+    T them = (T) obj;
+    return mappedMatrix == them.mappedMatrix && length == them.length
+            && refSeq == them.refSeq && toSeq.equals(them.toSeq);
+
+  }
 }
index 22884f1..dcd2022 100644 (file)
@@ -13,6 +13,7 @@ import jalview.datamodel.ContactListI;
 import jalview.datamodel.ContactListImpl;
 import jalview.datamodel.ContactListProviderI;
 import jalview.datamodel.ContactMatrixI;
+import jalview.datamodel.FloatContactMatrix;
 import jalview.datamodel.GroupSet;
 import jalview.datamodel.SequenceDummy;
 import jalview.datamodel.SequenceI;
@@ -41,14 +42,6 @@ public class PAEContactMatrix extends
 {
 
 
-  int maxrow = 0, maxcol = 0;
-
-
-  float[][] elements;
-
-  float maxscore;
-
-
   @SuppressWarnings("unchecked")
   public PAEContactMatrix(SequenceI _refSeq, Map<String, Object> pae_obj)
           throws FileFormatException
@@ -75,26 +68,8 @@ public class PAEContactMatrix extends
    */
   public PAEContactMatrix(SequenceI _refSeq, float[][] matrix)
   {
+    mappedMatrix=new FloatContactMatrix(matrix);
     setRefSeq(_refSeq);
-    maxcol = 0;
-    for (float[] row : matrix)
-    {
-      if (row.length > maxcol)
-      {
-        maxcol = row.length;
-      }
-      maxscore = row[0];
-      for (float f : row)
-      {
-        if (maxscore < f)
-        {
-          maxscore = f;
-        }
-      }
-    }
-    maxrow = matrix.length;
-    elements = matrix;
-
   }
 
   /**
@@ -108,20 +83,40 @@ public class PAEContactMatrix extends
   public PAEContactMatrix(SequenceI newRefSeq, MapList newFromMapList,
           float[][] elements2, GroupSet grps2)
   {
-    this(newRefSeq, elements2);
+    this(newRefSeq, new FloatContactMatrix(elements2,grps2));
+    toSeq = newFromMapList;
+  }
+
+  public PAEContactMatrix(SequenceI _refSeq,
+          ContactMatrixI floatContactMatrix)
+  {
+    mappedMatrix = floatContactMatrix;
+    setRefSeq(_refSeq);
+  }
+  public PAEContactMatrix(SequenceI _refSeq, MapList newFromMapList,
+          ContactMatrixI floatContactMatrix)
+  {
+    mappedMatrix = floatContactMatrix;
+    setRefSeq(_refSeq);
     toSeq = newFromMapList;
-    grps = grps2;
+  }
+  
+  @Override
+  protected PAEContactMatrix newMappableContactMatrix(SequenceI newRefSeq,
+          MapList newFromMapList)
+  {
+    return new PAEContactMatrix(newRefSeq, newFromMapList, mappedMatrix);
   }
 
   /**
-   * parse a sane JSON representation of the pAE
+   * parse a sane JSON representation of the pAE and update the mappedMatrix
    * 
    * @param pae_obj
    */
   @SuppressWarnings("unchecked")
   private void parse_version_2_pAE(Map<String, Object> pae_obj)
   {
-    maxscore = -1;
+    float maxscore = -1;
     // look for a maxscore element - if there is one...
     try
     {
@@ -134,7 +129,7 @@ public class PAEContactMatrix extends
     }
     List<List<Long>> scoreRows = ((List<List<Long>>) MapUtils
             .getFirst(pae_obj, "predicted_aligned_error", "pae"));
-    elements = new float[scoreRows.size()][scoreRows.size()];
+    float[][] elements = new float[scoreRows.size()][scoreRows.size()];
     int row = 0, col = 0;
     for (List<Long> scoreRow : scoreRows)
     {
@@ -160,8 +155,7 @@ public class PAEContactMatrix extends
       row++;
       col = 0;
     }
-    maxcol = length;
-    maxrow = length;
+    mappedMatrix=new FloatContactMatrix(elements);
   }
 
   /**
@@ -178,6 +172,8 @@ public class PAEContactMatrix extends
     Iterator<Long> rows = ((List<Long>) pae_obj.get("residue1")).iterator();
     Iterator<Long> cols = ((List<Long>) pae_obj.get("residue2")).iterator();
     // two pass - to allocate the elements array
+    
+    int maxrow=-1,maxcol=-1;
     while (rows.hasNext())
     {
       int row = rows.next().intValue();
@@ -196,7 +192,7 @@ public class PAEContactMatrix extends
     cols = ((List<Long>) pae_obj.get("residue2")).iterator();
     Iterator<Double> scores = ((List<Double>) pae_obj.get("distance"))
             .iterator();
-    elements = new float[maxcol][maxrow];
+    float[][] elements = new float[maxcol][maxrow];
     while (scores.hasNext())
     {
       float escore = scores.next().floatValue();
@@ -213,68 +209,7 @@ public class PAEContactMatrix extends
       elements[col - 1][row-1] = escore;
     }
 
-    maxscore = ((Double) MapUtils.getFirst(pae_obj,
-            "max_predicted_aligned_error", "max_pae")).floatValue();
-  }
-
-  /**
-   * getContactList(column) @returns the vector of predicted alignment errors
-   * for reference position given by column
-   */
-  @Override
-  public ContactListI getContactList(final int column)
-  {
-    if (column < 0 || column >= elements.length)
-    {
-      return null;
-    }
-
-    return new ContactListImpl(new ContactListProviderI()
-    {
-      @Override
-      public int getPosition()
-      {
-        return column;
-      }
-
-      @Override
-      public int getContactHeight()
-      {
-        return maxcol - 1;
-      }
-
-      @Override
-      public double getContactAt(int mcolumn)
-      {
-        if (mcolumn < 0 || mcolumn >= elements[column].length)
-        {
-          return -1;
-        }
-        return elements[column][mcolumn];
-      }
-    });
-  }
-
-  /**
-   * getElementAt(column, i) @returns the predicted superposition error for the
-   * ith position when column is used as reference
-   */
-  @Override
-  protected double getElementAt(int _column, int i)
-  {
-    return elements[_column][i];
-  }
-
-  @Override
-  public float getMin()
-  {
-    return 0;
-  }
-
-  @Override
-  public float getMax()
-  {
-    return maxscore;
+    mappedMatrix=new FloatContactMatrix(elements);
   }
 
   @Override
@@ -303,17 +238,7 @@ public class PAEContactMatrix extends
     return PAEMATRIX;
   }
 
-  @Override
-  public int getWidth()
-  {
-    return maxcol;
-  }
 
-  @Override
-  public int getHeight()
-  {
-    return maxrow;
-  }
   public static void validateContactMatrixFile(String fileName)
           throws FileFormatException, IOException
   {
@@ -344,11 +269,13 @@ public class PAEContactMatrix extends
     }
   }
   @Override
-  protected PAEContactMatrix newMappableContactMatrix(SequenceI newRefSeq,
-          MapList newFromMapList)
+  public boolean equals(Object obj)
+  {
+    return super.equals(obj);
+  }
+  @Override
+  public int hashCode()
   {
-    PAEContactMatrix pae = new PAEContactMatrix(newRefSeq, newFromMapList,
-            elements, new GroupSet(grps));
-    return pae;
+    return super.hashCode();
   }
 }
index 6b98b6a..c412c36 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.math.BigInteger;
@@ -17,320 +18,314 @@ 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.
+ * &lt;p&gt;Java class for anonymous 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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>
-   * 
-   * 
-   * <p>
-   * 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.
-   * 
-   * <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 }
-   * 
-   * 
-   */
-  public List<AlcodonFrame.AlcodMap> getAlcodMap()
-  {
-    if (alcodMap == null)
-    {
-      alcodMap = new ArrayList<AlcodonFrame.AlcodMap>();
-    }
-    return this.alcodMap;
-  }
-
-  /**
-   * <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>
-   * 
-   * 
-   */
-  @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
+     * &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;
      * 
-     * @return possible object is {@link Mapping }
      * 
-     */
-    public Mapping getMapping()
-    {
-      return mapping;
-    }
-
-    /**
-     * Sets the value of the mapping property.
+     * &lt;p&gt;
+     * 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.
+     * 
+     * &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 }
      * 
-     * @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.
+     * &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;
      * 
-     * @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).
-   * 
-   * 
-   * <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="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>
-   * 
-   * 
-   */
-  @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.
+     * &lt;p&gt;Java class for anonymous complex type.
      * 
-     * @param value
-     *          allowed object is {@link BigInteger }
+     * &lt;p&gt;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.
+     * &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;
      * 
-     * @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 2feda64..261e0ed 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -16,810 +17,786 @@ 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.
+ * &lt;p&gt;Java class for anonymous 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.
  * 
- * <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="contactmatrix" type="{www.vamsas.ac.uk/jalview/version2}MatrixType" maxOccurs="unbounded" minOccurs="0"/>
- *         &lt;element name="property" type="{www.vamsas.ac.uk/jalview/version2}property" maxOccurs="unbounded" minOccurs="0"/>
- *       &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>
+ * &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="contactmatrix" type="{www.vamsas.ac.uk/jalview/version2}MapOnAMatrixType" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
+ *         &amp;lt;element name="property" type="{www.vamsas.ac.uk/jalview/version2}property" maxOccurs="unbounded" minOccurs="0"/&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;
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "",
-  propOrder =
-  { "annotationElement", "label", "description", "thresholdLine",
-      "contactmatrix", "property" })
+@XmlType(name = "", propOrder = {
+    "annotationElement",
+    "label",
+    "description",
+    "thresholdLine",
+    "contactmatrix",
+    "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<MapOnAMatrixType> contactmatrix;
+    protected List<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;
+    /**
+     * 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;
+    }
 
-  protected Annotation.ThresholdLine thresholdLine;
-
-  protected List<MatrixType> contactmatrix;
-
-  protected List<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.
-   * 
-   * <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 }
-   * 
-   */
-  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 contactmatrix 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 contactmatrix property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getContactmatrix().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link MatrixType
-   * }
-   * 
-   * 
-   */
-  public List<MatrixType> getContactmatrix()
-  {
-    if (contactmatrix == null)
-    {
-      contactmatrix = new ArrayList<MatrixType>();
-    }
-    return this.contactmatrix;
-  }
-
-  /**
-   * 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 Property }
-   * 
-   * 
-   */
-  public List<Property> getProperty()
-  {
-    if (property == null)
-    {
-      property = new ArrayList<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;
-  }
-
-  /**
-   * <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;
+    /**
+     * 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;
+    }
 
-    @XmlAttribute(name = "value")
-    protected Float value;
+    /**
+     * Sets the value of the description property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setDescription(String value) {
+        this.description = value;
+    }
 
-    @XmlAttribute(name = "colour")
-    protected Integer colour;
+    /**
+     * Gets the value of the thresholdLine property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Annotation.ThresholdLine }
+     *     
+     */
+    public Annotation.ThresholdLine getThresholdLine() {
+        return thresholdLine;
+    }
 
     /**
-     * Gets the value of the label property.
+     * 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 contactmatrix 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 contactmatrix property.
+     * 
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getContactmatrix().add(newItem);
+     * &lt;/pre&gt;
+     * 
+     * 
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link MapOnAMatrixType }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getLabel()
-    {
-      return label;
+    public List<MapOnAMatrixType> getContactmatrix() {
+        if (contactmatrix == null) {
+            contactmatrix = new ArrayList<MapOnAMatrixType>();
+        }
+        return this.contactmatrix;
     }
 
     /**
-     * Sets the value of the label property.
+     * 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 Property }
+     * 
+     * 
+     */
+    public List<Property> getProperty() {
+        if (property == null) {
+            property = new ArrayList<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 }
+     *     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 void setLabel(String value)
-    {
-      this.label = value;
+    public String getGroupRef() {
+        return groupRef;
     }
 
     /**
-     * Gets the value of the value property.
+     * Sets the value of the groupRef property.
      * 
-     * @return possible object is {@link Float }
+     * @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 Float getValue()
-    {
-      return value;
+    public Integer getGraphColour() {
+        return graphColour;
     }
 
     /**
-     * Sets the value of the value property.
+     * Sets the value of the graphColour property.
      * 
      * @param value
-     *          allowed object is {@link Float }
+     *     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 void setValue(Float value)
-    {
-      this.value = value;
+    public Integer getGraphGroup() {
+        return graphGroup;
     }
 
     /**
-     * Gets the value of the colour property.
+     * Sets the value of the graphGroup property.
      * 
-     * @return possible object is {@link Integer }
+     * @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 getColour()
-    {
-      return colour;
+    public Integer getGraphHeight() {
+        return graphHeight;
     }
 
     /**
-     * Sets the value of the colour property.
+     * Sets the value of the graphHeight property.
      * 
      * @param value
-     *          allowed object is {@link Integer }
+     *     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 void setColour(Integer value)
-    {
-      this.colour = 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;
+    }
+
+    /**
+     * 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="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;
+        @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 c820076..f7e974b 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,244 +13,242 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for AnnotationColourScheme complex type.
+ * &lt;p&gt;Java class for AnnotationColourScheme 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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 087667a..a57101a 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -13,193 +14,190 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for anonymous complex type.
+ * &lt;p&gt;Java class for anonymous 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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 b42a170..4ef5abc 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,177 +16,171 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for DoubleMatrix complex type.
+ * &lt;p&gt;Java class for DoubleMatrix 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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>();
+@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>();
+        }
+        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 3b449fe..19a0d24 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -14,69 +15,62 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for DoubleVector complex type.
+ * &lt;p&gt;Java class for DoubleVector 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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>();
+    /**
+     * 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>();
+        }
+        return this.v;
     }
-    return this.v;
-  }
 
 }
index afedb4c..97bedae 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -14,365 +15,349 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for feature complex type.
+ * &lt;p&gt;Java class for feature 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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>();
+@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>();
+        }
+        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;
-  }
-
-  /**
-   * <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.
+     * 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;
+    }
+
+
+    /**
+     * &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.
+         * 
+         * @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 fa80569..9913337 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,150 +16,145 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for FeatureMatcher complex type.
+ * &lt;p&gt;Java class for FeatureMatcher 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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>();
+    /**
+     * 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;
     }
-    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 45077af..a51e7d5 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,187 +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
  * 
- * <p>
- * Java class for FeatureMatcherSet complex type.
+ * &lt;p&gt;Java class for FeatureMatcherSet 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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;
-  }
-
-  /**
-   * <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;
+@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.
-     * 
-     * <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 }
+     * 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;
     }
 
-  }
+
+    /**
+     * &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;
+
+        /**
+         * 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 }
+         * 
+         * 
+         */
+        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 76fc6cd..5723e3d 100644 (file)
@@ -1,68 +1,60 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 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;
 
+
 /**
- * <p>
- * Java class for FilterBy.
+ * &lt;p&gt;Java class for FilterBy.
  * 
- * <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>
+ * &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;
  * 
  */
 @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 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 String value() {
+        return value;
+    }
 
-  public static FilterBy fromValue(String v)
-  {
-    for (FilterBy c : FilterBy.values())
-    {
-      if (c.value.equals(v))
-      {
-        return c;
-      }
+    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 94f9373..360c074 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -21,6968 +22,6849 @@ import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import javax.xml.datatype.XMLGregorianCalendar;
 
+
 /**
- * <p>
- * Java class for JalviewModel complex type.
+ * &lt;p&gt;Java class for JalviewModel 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.
  * 
- * <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="charWidth" type="{http://www.w3.org/2001/XMLSchema}int" />
- *                   &lt;attribute name="charHeight" 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="columnWise" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
- *                   &lt;attribute name="columnReference" type="{http://www.w3.org/2001/XMLSchema}string" />
- *                   &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>
+ * &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;element name="overview" 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;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt;
+ *                             &amp;lt;attribute name="showHidden" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
+ *                             &amp;lt;attribute name="residueColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+ *                             &amp;lt;attribute name="gapColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+ *                             &amp;lt;attribute name="hiddenColour" 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;/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="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="charWidth" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+ *                   &amp;lt;attribute name="charHeight" 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="idWidth" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+ *                   &amp;lt;attribute name="idWidthManuallyAdjusted" type="{http://www.w3.org/2001/XMLSchema}boolean" /&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="columnWise" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
+ *                   &amp;lt;attribute name="columnReference" type="{http://www.w3.org/2001/XMLSchema}string" /&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}SimilarityParams"/&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="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;
  * 
  * 
  */
 @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.
-   * 
-   * <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 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.
-   * 
-   * <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 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.
-   * 
-   * <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 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.
-   * 
-   * <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 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.
-   * 
-   * <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 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.
-   * 
-   * <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.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getPcaViewer().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * 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;
-  }
-
-  /**
-   * <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<JalviewModel.FeatureSettings.Setting> setting;
-
-    @XmlElement(namespace = "www.jalview.org")
-    protected List<JalviewModel.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 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.
-     * 
-     * <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;
-    }
-
-    /**
-     * <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 }
-     * 
+@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 List<String> getSeq()
-    {
-      if (seq == null)
-      {
-        seq = new ArrayList<String>();
-      }
-      return this.seq;
+    public void setCreationDate(XMLGregorianCalendar value) {
+        this.creationDate = value;
     }
 
     /**
-     * Gets the value of the annotationColours property.
-     * 
-     * @return possible object is {@link AnnotationColourScheme }
+     * Gets the value of the version property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public AnnotationColourScheme getAnnotationColours()
-    {
-      return annotationColours;
+    public String getVersion() {
+        return version;
     }
 
     /**
-     * Sets the value of the annotationColours property.
+     * Sets the value of the version property.
      * 
      * @param value
-     *          allowed object is {@link AnnotationColourScheme }
-     * 
+     *     allowed object is
+     *     {@link String }
+     *     
      */
-    public void setAnnotationColours(AnnotationColourScheme value)
-    {
-      this.annotationColours = value;
+    public void setVersion(String value) {
+        this.version = value;
     }
 
     /**
-     * Gets the value of the start property.
-     * 
-     * @return possible object is {@link Integer }
+     * Gets the value of the vamsasModel property.
      * 
+     * @return
+     *     possible object is
+     *     {@link VAMSAS }
+     *     
      */
-    public Integer getStart()
-    {
-      return start;
+    public VAMSAS getVamsasModel() {
+        return vamsasModel;
     }
 
     /**
-     * Sets the value of the start property.
+     * Sets the value of the vamsasModel property.
      * 
      * @param value
-     *          allowed object is {@link Integer }
-     * 
+     *     allowed object is
+     *     {@link VAMSAS }
+     *     
      */
-    public void setStart(Integer value)
-    {
-      this.start = value;
+    public void setVamsasModel(VAMSAS value) {
+        this.vamsasModel = value;
     }
 
     /**
-     * Gets the value of the end property.
+     * Gets the value of the jSeq property.
      * 
-     * @return possible object is {@link Integer }
+     * &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.
      * 
-     */
-    public Integer getEnd()
-    {
-      return end;
-    }
-
-    /**
-     * Sets the value of the end property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getJSeq().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
-     */
-    public void setEnd(Integer value)
-    {
-      this.end = value;
-    }
-
-    /**
-     * Gets the value of the name property.
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.JSeq }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getName()
-    {
-      return name;
+    public List<JalviewModel.JSeq> getJSeq() {
+        if (jSeq == null) {
+            jSeq = new ArrayList<JalviewModel.JSeq>();
+        }
+        return this.jSeq;
     }
 
     /**
-     * Sets the value of the name property.
+     * Gets the value of the jGroup property.
      * 
-     * @param value
-     *          allowed object is {@link String }
+     * &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.
      * 
-     */
-    public void setName(String value)
-    {
-      this.name = value;
-    }
-
-    /**
-     * Gets the value of the colour property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getJGroup().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @return possible object is {@link String }
      * 
-     */
-    public String getColour()
-    {
-      return colour;
-    }
-
-    /**
-     * Sets the value of the colour property.
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.JGroup }
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setColour(String value)
-    {
-      this.colour = value;
+    public List<JalviewModel.JGroup> getJGroup() {
+        if (jGroup == null) {
+            jGroup = new ArrayList<JalviewModel.JGroup>();
+        }
+        return this.jGroup;
     }
 
     /**
-     * Gets the value of the consThreshold property.
+     * Gets the value of the viewport property.
      * 
-     * @return possible object is {@link Integer }
+     * &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.
      * 
-     */
-    public Integer getConsThreshold()
-    {
-      return consThreshold;
-    }
-
-    /**
-     * Sets the value of the consThreshold property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getViewport().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
-     */
-    public void setConsThreshold(Integer value)
-    {
-      this.consThreshold = value;
-    }
-
-    /**
-     * Gets the value of the pidThreshold property.
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.Viewport }
      * 
-     * @return possible object is {@link Integer }
      * 
      */
-    public Integer getPidThreshold()
-    {
-      return pidThreshold;
+    public List<JalviewModel.Viewport> getViewport() {
+        if (viewport == null) {
+            viewport = new ArrayList<JalviewModel.Viewport>();
+        }
+        return this.viewport;
     }
 
     /**
-     * Sets the value of the pidThreshold property.
+     * Gets the value of the userColours property.
      * 
-     * @param value
-     *          allowed object is {@link Integer }
+     * &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.
      * 
-     */
-    public void setPidThreshold(Integer value)
-    {
-      this.pidThreshold = value;
-    }
-
-    /**
-     * Gets the value of the outlineColour property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getUserColours().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @return possible object is {@link Integer }
      * 
-     */
-    public Integer getOutlineColour()
-    {
-      return outlineColour;
-    }
-
-    /**
-     * Sets the value of the outlineColour property.
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.UserColours }
      * 
-     * @param value
-     *          allowed object is {@link Integer }
      * 
      */
-    public void setOutlineColour(Integer value)
-    {
-      this.outlineColour = value;
+    public List<JalviewModel.UserColours> getUserColours() {
+        if (userColours == null) {
+            userColours = new ArrayList<JalviewModel.UserColours>();
+        }
+        return this.userColours;
     }
 
     /**
-     * Gets the value of the displayBoxes property.
+     * Gets the value of the tree property.
      * 
-     * @return possible object is {@link Boolean }
+     * &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.
      * 
-     */
-    public Boolean isDisplayBoxes()
-    {
-      return displayBoxes;
-    }
-
-    /**
-     * Sets the value of the displayBoxes property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getTree().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
      * 
-     */
-    public void setDisplayBoxes(Boolean value)
-    {
-      this.displayBoxes = value;
-    }
-
-    /**
-     * Gets the value of the displayText property.
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.Tree }
      * 
-     * @return possible object is {@link Boolean }
      * 
      */
-    public Boolean isDisplayText()
-    {
-      return displayText;
+    public List<JalviewModel.Tree> getTree() {
+        if (tree == null) {
+            tree = new ArrayList<JalviewModel.Tree>();
+        }
+        return this.tree;
     }
 
     /**
-     * Sets the value of the displayText property.
+     * Gets the value of the pcaViewer property.
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
+     * &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.
      * 
-     */
-    public void setDisplayText(Boolean value)
-    {
-      this.displayText = value;
-    }
-
-    /**
-     * Gets the value of the colourText property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getPcaViewer().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @return possible object is {@link Boolean }
      * 
-     */
-    public Boolean isColourText()
-    {
-      return colourText;
-    }
-
-    /**
-     * Sets the value of the colourText property.
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link JalviewModel.PcaViewer }
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
      * 
      */
-    public void setColourText(Boolean value)
-    {
-      this.colourText = value;
+    public List<JalviewModel.PcaViewer> getPcaViewer() {
+        if (pcaViewer == null) {
+            pcaViewer = new ArrayList<JalviewModel.PcaViewer>();
+        }
+        return this.pcaViewer;
     }
 
     /**
-     * Gets the value of the textCol1 property.
-     * 
-     * @return possible object is {@link Integer }
+     * Gets the value of the featureSettings property.
      * 
+     * @return
+     *     possible object is
+     *     {@link JalviewModel.FeatureSettings }
+     *     
      */
-    public Integer getTextCol1()
-    {
-      return textCol1;
+    public JalviewModel.FeatureSettings getFeatureSettings() {
+        return featureSettings;
     }
 
     /**
-     * Sets the value of the textCol1 property.
+     * Sets the value of the featureSettings property.
      * 
      * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol1(Integer value)
-    {
-      this.textCol1 = value;
-    }
-
-    /**
-     * Gets the value of the textCol2 property.
+     *     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;
      * 
-     * @return possible object is {@link Integer }
      * 
      */
-    public Integer getTextCol2()
-    {
-      return textCol2;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "setting",
+        "group"
+    })
+    public static class FeatureSettings {
 
-    /**
-     * Sets the value of the textCol2 property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setTextCol2(Integer value)
-    {
-      this.textCol2 = 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 textColThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getTextColThreshold()
-    {
-      return textColThreshold;
-    }
+        /**
+         * 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;
+        }
 
-    /**
-     * 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 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;
+        }
 
-    /**
-     * 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;
-    }
+        /**
+         * &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;
+            }
 
-    /**
-     * 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;
-      }
-    }
+        /**
+         * &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;
+            }
 
-    /**
-     * 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.
+     * &lt;p&gt;Java class for anonymous complex type.
      * 
-     * @return possible object is {@link Boolean }
+     * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public boolean isNormaliseSequenceLogo()
-    {
-      if (normaliseSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return normaliseSequenceLogo;
-      }
-    }
-
-    /**
-     * Sets the value of the normaliseSequenceLogo property.
+     * &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;
      * 
-     * @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<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.
-     * 
-     * <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 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.
-     * 
-     * <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 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;
-    }
-
-    /**
-     * <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<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;
+    @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 value property.
+         * 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 }
          * 
-         * @return possible object is {@link String }
          * 
          */
-        public String getValue()
-        {
-          return value;
+        public List<String> getSeq() {
+            if (seq == null) {
+                seq = new ArrayList<String>();
+            }
+            return this.seq;
         }
 
         /**
-         * Sets the value of the value property.
-         * 
-         * @param value
-         *          allowed object is {@link String }
+         * Gets the value of the annotationColours property.
          * 
+         * @return
+         *     possible object is
+         *     {@link AnnotationColourScheme }
+         *     
          */
-        public void setValue(String value)
-        {
-          this.value = value;
+        public AnnotationColourScheme getAnnotationColours() {
+            return annotationColours;
         }
 
         /**
-         * Gets the value of the visible property.
+         * Sets the value of the annotationColours property.
          * 
-         * @return possible object is {@link Boolean }
+         * @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 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;
         }
 
-      }
-
-    }
-
-    /**
-     * <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 }
+         * Gets the value of the textCol1 property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public String getTitle()
-        {
-          return title;
+        public Integer getTextCol1() {
+            return textCol1;
         }
 
         /**
-         * Sets the value of the title property.
+         * Sets the value of the textCol1 property.
          * 
          * @param value
-         *          allowed object is {@link String }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setTitle(String value)
-        {
-          this.title = value;
+        public void setTextCol1(Integer value) {
+            this.textCol1 = value;
         }
 
         /**
-         * Gets the value of the annotationId property.
-         * 
-         * @return possible object is {@link String }
+         * Gets the value of the textCol2 property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public String getAnnotationId()
-        {
-          return annotationId;
+        public Integer getTextCol2() {
+            return textCol2;
         }
 
         /**
-         * Sets the value of the annotationId property.
+         * Sets the value of the textCol2 property.
          * 
          * @param value
-         *          allowed object is {@link String }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setAnnotationId(String value)
-        {
-          this.annotationId = value;
+        public void setTextCol2(Integer value) {
+            this.textCol2 = value;
         }
 
         /**
-         * Gets the value of the gapped property.
-         * 
-         * @return possible object is {@link Boolean }
+         * Gets the value of the textColThreshold property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
          */
-        public Boolean isGapped()
-        {
-          return gapped;
+        public Integer getTextColThreshold() {
+            return textColThreshold;
         }
 
         /**
-         * Sets the value of the gapped property.
+         * Sets the value of the textColThreshold property.
          * 
          * @param value
-         *          allowed object is {@link Boolean }
-         * 
+         *     allowed object is
+         *     {@link Integer }
+         *     
          */
-        public void setGapped(Boolean value)
-        {
-          this.gapped = value;
+        public void setTextColThreshold(Integer value) {
+            this.textColThreshold = value;
         }
 
         /**
-         * Gets the value of the viewerState property.
-         * 
-         * @return possible object is {@link String }
+         * Gets the value of the showUnconserved property.
          * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
          */
-        public String getViewerState()
-        {
-          return viewerState;
+        public Boolean isShowUnconserved() {
+            return showUnconserved;
         }
 
         /**
-         * Sets the value of the viewerState property.
+         * Sets the value of the showUnconserved property.
          * 
          * @param value
-         *          allowed object is {@link String }
-         * 
+         *     allowed object is
+         *     {@link Boolean }
+         *     
          */
-        public void setViewerState(String value)
-        {
-          this.viewerState = value;
+        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;
+        }
 
-  }
-
-  /**
-   * <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>
-   * 
-   * 
-   */
-  @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 showConsensusHistogram property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowConsensusHistogram() {
+            if (showConsensusHistogram == null) {
+                return true;
+            } else {
+                return showConsensusHistogram;
+            }
+        }
 
-    /**
-     * 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 showConsensusHistogram property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowConsensusHistogram(Boolean value) {
+            this.showConsensusHistogram = 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 showSequenceLogo property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowSequenceLogo() {
+            if (showSequenceLogo == null) {
+                return false;
+            } else {
+                return showSequenceLogo;
+            }
+        }
 
-    /**
-     * 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 showSequenceLogo property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowSequenceLogo(Boolean value) {
+            this.showSequenceLogo = 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 normaliseSequenceLogo property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isNormaliseSequenceLogo() {
+            if (normaliseSequenceLogo == null) {
+                return false;
+            } else {
+                return normaliseSequenceLogo;
+            }
+        }
 
-    /**
-     * 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 normaliseSequenceLogo property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setNormaliseSequenceLogo(Boolean value) {
+            this.normaliseSequenceLogo = 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 id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
 
-    /**
-     * Gets the value of the pcaData property.
-     * 
-     * @return possible object is {@link PcaDataType }
-     * 
-     */
-    public PcaDataType getPcaData()
-    {
-      return pcaData;
-    }
+        /**
+         * 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 pcaData property.
-     * 
-     * @param value
-     *          allowed object is {@link PcaDataType }
-     * 
-     */
-    public void setPcaData(PcaDataType value)
-    {
-      this.pcaData = 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.
+     * &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;
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
+    @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 scoreModelName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getScoreModelName()
-    {
-      return scoreModelName;
-    }
+        /**
+         * 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;
+        }
 
-    /**
-     * 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 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 xDim property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getXDim()
-    {
-      return xDim;
-    }
+        /**
+         * 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;
+        }
 
-    /**
-     * Sets the value of the xDim property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setXDim(Integer value)
-    {
-      this.xDim = value;
-    }
+        /**
+         * 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 yDim property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getYDim()
-    {
-      return yDim;
-    }
+        /**
+         * Gets the value of the colour property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getColour() {
+            return colour;
+        }
 
-    /**
-     * 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 colour property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setColour(Integer value) {
+            this.colour = value;
+        }
 
-    /**
-     * Gets the value of the zDim property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getZDim()
-    {
-      return zDim;
-    }
+        /**
+         * Gets the value of the start property.
+         * 
+         */
+        public int getStart() {
+            return start;
+        }
 
-    /**
-     * 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 start property.
+         * 
+         */
+        public void setStart(int value) {
+            this.start = value;
+        }
 
-    /**
-     * Gets the value of the bgColour property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getBgColour()
-    {
-      return bgColour;
-    }
+        /**
+         * Gets the value of the end property.
+         * 
+         */
+        public int getEnd() {
+            return end;
+        }
 
-    /**
-     * Sets the value of the bgColour property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setBgColour(Integer value)
-    {
-      this.bgColour = value;
-    }
+        /**
+         * Sets the value of the end property.
+         * 
+         */
+        public void setEnd(int value) {
+            this.end = value;
+        }
 
-    /**
-     * Gets the value of the scaleFactor property.
-     * 
-     * @return possible object is {@link Float }
-     * 
-     */
-    public Float getScaleFactor()
-    {
-      return scaleFactor;
-    }
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
 
-    /**
-     * Sets the value of the scaleFactor property.
-     * 
-     * @param value
-     *          allowed object is {@link Float }
-     * 
-     */
-    public void setScaleFactor(Float value)
-    {
-      this.scaleFactor = 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 showLabels property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowLabels()
-    {
-      return showLabels;
-    }
+        /**
+         * Gets the value of the hidden property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isHidden() {
+            return hidden;
+        }
 
-    /**
-     * 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 hidden property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setHidden(Boolean value) {
+            this.hidden = value;
+        }
 
-    /**
-     * Gets the value of the linkToAllViews property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isLinkToAllViews()
-    {
-      return linkToAllViews;
-    }
+        /**
+         * Gets the value of the viewreference property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isViewreference() {
+            return viewreference;
+        }
 
-    /**
-     * 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 viewreference property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setViewreference(Boolean value) {
+            this.viewreference = value;
+        }
 
-    /**
-     * Gets the value of the includeGaps property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isIncludeGaps()
-    {
-      return includeGaps;
-    }
 
-    /**
-     * Sets the value of the includeGaps property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIncludeGaps(Boolean value)
-    {
-      this.includeGaps = 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
+        {
 
-    /**
-     * Gets the value of the matchGaps property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isMatchGaps()
-    {
-      return matchGaps;
-    }
+            @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 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 matchGaps property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setMatchGaps(Boolean value)
-    {
-      this.matchGaps = value;
-    }
+        }
 
-    /**
-     * Gets the value of the includeGappedColumns property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isIncludeGappedColumns()
-    {
-      return includeGappedColumns;
-    }
 
-    /**
-     * Sets the value of the includeGappedColumns property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIncludeGappedColumns(Boolean value)
-    {
-      this.includeGappedColumns = 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 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 denominateByShortestLength property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isDenominateByShortestLength()
-    {
-      return denominateByShortestLength;
-    }
+        }
 
-    /**
-     * Sets the value of the denominateByShortestLength property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setDenominateByShortestLength(Boolean value)
-    {
-      this.denominateByShortestLength = 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.
+     * &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}SimilarityParams"/&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="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;
      * 
-     * @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.
+         * 
+         * &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;
+        }
 
-    /**
-     * 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.
+         * 
+         * &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 }
+         * 
+         * 
+         */
+        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;
+        }
 
-    /**
-     * <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;
-      }
+        /**
+         * Gets the value of the pcaData property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link PcaDataType }
+         *     
+         */
+        public PcaDataType getPcaData() {
+            return pcaData;
+        }
 
-    }
+        /**
+         * Sets the value of the pcaData property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link PcaDataType }
+         *     
+         */
+        public void setPcaData(PcaDataType value) {
+            this.pcaData = 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 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;
+        }
 
-    /**
-     * <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;
-      }
+        /**
+         * Gets the value of the scoreModelName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getScoreModelName() {
+            return scoreModelName;
+        }
 
-    }
+        /**
+         * Sets the value of the scoreModelName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setScoreModelName(String value) {
+            this.scoreModelName = 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;
-      }
+        /**
+         * Gets the value of the xDim property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getXDim() {
+            return xDim;
+        }
 
-    }
+        /**
+         * Sets the value of the xDim property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setXDim(Integer value) {
+            this.xDim = 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="columnWise" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
-   *       &lt;attribute name="columnReference" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *       &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>
-   * 
-   * 
-   */
-  @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 = "columnWise")
-    protected Boolean columnWise;
-
-    @XmlAttribute(name = "columnReference")
-    protected String columnReference;
-
-    @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 yDim property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getYDim() {
+            return yDim;
+        }
 
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
-    }
+        /**
+         * 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 title property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setTitle(String value)
-    {
-      this.title = value;
-    }
+        /**
+         * Gets the value of the zDim property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getZDim() {
+            return zDim;
+        }
 
-    /**
-     * Gets the value of the newick property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getNewick()
-    {
-      return newick;
-    }
+        /**
+         * 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 newick property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setNewick(String value)
-    {
-      this.newick = value;
-    }
+        /**
+         * Gets the value of the bgColour property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getBgColour() {
+            return bgColour;
+        }
 
-    /**
-     * Gets the value of the fontName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFontName()
-    {
-      return fontName;
-    }
+        /**
+         * Sets the value of the bgColour property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setBgColour(Integer value) {
+            this.bgColour = 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 scaleFactor property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getScaleFactor() {
+            return scaleFactor;
+        }
 
-    /**
-     * Gets the value of the fontSize property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontSize()
-    {
-      return fontSize;
-    }
+        /**
+         * Sets the value of the scaleFactor property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setScaleFactor(Float value) {
+            this.scaleFactor = 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 showLabels property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowLabels() {
+            return showLabels;
+        }
 
-    /**
-     * Gets the value of the fontStyle property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontStyle()
-    {
-      return fontStyle;
-    }
+        /**
+         * 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 fontStyle property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setFontStyle(Integer value)
-    {
-      this.fontStyle = value;
-    }
+        /**
+         * Gets the value of the linkToAllViews property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isLinkToAllViews() {
+            return linkToAllViews;
+        }
 
-    /**
-     * Gets the value of the threshold property.
-     * 
-     * @return possible object is {@link Float }
-     * 
-     */
-    public Float getThreshold()
-    {
-      return threshold;
-    }
+        /**
+         * 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 threshold property.
-     * 
-     * @param value
-     *          allowed object is {@link Float }
-     * 
-     */
-    public void setThreshold(Float value)
-    {
-      this.threshold = value;
-    }
+        /**
+         * Gets the value of the includeGaps property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isIncludeGaps() {
+            return includeGaps;
+        }
 
-    /**
-     * Gets the value of the showBootstrap property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowBootstrap()
-    {
-      return showBootstrap;
-    }
+        /**
+         * 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 showBootstrap property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowBootstrap(Boolean value)
-    {
-      this.showBootstrap = value;
-    }
+        /**
+         * Gets the value of the matchGaps property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isMatchGaps() {
+            return matchGaps;
+        }
 
-    /**
-     * Gets the value of the showDistances property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowDistances()
-    {
-      return showDistances;
-    }
+        /**
+         * 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 showDistances property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowDistances(Boolean value)
-    {
-      this.showDistances = value;
-    }
+        /**
+         * Gets the value of the includeGappedColumns property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isIncludeGappedColumns() {
+            return includeGappedColumns;
+        }
 
-    /**
-     * Gets the value of the markUnlinked property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isMarkUnlinked()
-    {
-      return markUnlinked;
-    }
+        /**
+         * 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 markUnlinked property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setMarkUnlinked(Boolean value)
-    {
-      this.markUnlinked = value;
-    }
+        /**
+         * Gets the value of the denominateByShortestLength property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isDenominateByShortestLength() {
+            return denominateByShortestLength;
+        }
 
-    /**
-     * Gets the value of the fitToWindow property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isFitToWindow()
-    {
-      return fitToWindow;
-    }
+        /**
+         * 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 fitToWindow property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFitToWindow(Boolean value)
-    {
-      this.fitToWindow = value;
-    }
+        /**
+         * Gets the value of the width property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getWidth() {
+            return width;
+        }
 
-    /**
-     * Gets the value of the currentTree property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isCurrentTree()
-    {
-      return currentTree;
-    }
+        /**
+         * 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 currentTree property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setCurrentTree(Boolean value)
-    {
-      this.currentTree = value;
-    }
+        /**
+         * Gets the value of the height property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getHeight() {
+            return height;
+        }
 
-    /**
-     * Gets the value of the columnWise property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isColumnWise()
-    {
-      if (columnWise == null)
-      {
-        return false;
-      }
-      else
-      {
-        return columnWise;
-      }
-    }
+        /**
+         * 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 columnWise property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setColumnWise(Boolean value)
-    {
-      this.columnWise = value;
-    }
+        /**
+         * Gets the value of the xpos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getXpos() {
+            return xpos;
+        }
 
-    /**
-     * Gets the value of the columnReference property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getColumnReference()
-    {
-      return columnReference;
-    }
+        /**
+         * 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 columnReference property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setColumnReference(String value)
-    {
-      this.columnReference = value;
-    }
+        /**
+         * Gets the value of the ypos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getYpos() {
+            return ypos;
+        }
 
-    /**
-     * Gets the value of the id property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getId()
-    {
-      return id;
-    }
+        /**
+         * 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 id property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setId(String value)
-    {
-      this.id = 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;
-      }
-    }
+        /**
+         * &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;
+            }
 
-    /**
-     * 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.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setWidth(Integer value)
-    {
-      this.width = 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 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;
-    }
+        /**
+         * &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;
+            }
 
-    /**
-     * 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;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;
+            }
 
-  }
-
-  /**
-   * <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.
+     * &lt;p&gt;Java class for anonymous complex type.
      * 
-     * @return possible object is {@link String }
+     * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public String getId()
-    {
-      return id;
-    }
-
-    /**
-     * Sets the value of the id property.
+     * &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="columnWise" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" /&amp;gt;
+     *       &amp;lt;attribute name="columnReference" type="{http://www.w3.org/2001/XMLSchema}string" /&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;
      * 
-     * @param value
-     *          allowed object is {@link String }
      * 
      */
-    public void setId(String value)
-    {
-      this.id = value;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "title",
+        "newick"
+    })
+    public static class Tree {
 
-  }
-
-  /**
-   * <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="charWidth" type="{http://www.w3.org/2001/XMLSchema}int" />
-   *       &lt;attribute name="charHeight" 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>
-   * 
-   * 
-   */
-  @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;
+        @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 = "columnWise")
+        protected Boolean columnWise;
+        @XmlAttribute(name = "columnReference")
+        protected String columnReference;
+        @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 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;
+        }
 
-    @XmlAttribute(name = "renderGaps")
-    protected Boolean renderGaps;
+        /**
+         * Gets the value of the newick property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getNewick() {
+            return newick;
+        }
 
-    @XmlAttribute(name = "showSequenceFeatures")
-    protected Boolean showSequenceFeatures;
+        /**
+         * Sets the value of the newick property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setNewick(String value) {
+            this.newick = value;
+        }
 
-    @XmlAttribute(name = "showNPfeatureTooltip")
-    protected Boolean showNPfeatureTooltip;
+        /**
+         * Gets the value of the fontName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFontName() {
+            return fontName;
+        }
 
-    @XmlAttribute(name = "showDbRefTooltip")
-    protected Boolean showDbRefTooltip;
+        /**
+         * Sets the value of the fontName property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setFontName(String value) {
+            this.fontName = value;
+        }
 
-    @XmlAttribute(name = "followHighlight")
-    protected Boolean followHighlight;
+        /**
+         * Gets the value of the fontSize property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontSize() {
+            return fontSize;
+        }
 
-    @XmlAttribute(name = "followSelection")
-    protected Boolean followSelection;
+        /**
+         * Sets the value of the fontSize property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setFontSize(Integer value) {
+            this.fontSize = value;
+        }
 
-    @XmlAttribute(name = "showAnnotation")
-    protected Boolean showAnnotation;
+        /**
+         * Gets the value of the fontStyle property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontStyle() {
+            return fontStyle;
+        }
 
-    @XmlAttribute(name = "centreColumnLabels")
-    protected Boolean centreColumnLabels;
+        /**
+         * Sets the value of the fontStyle property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setFontStyle(Integer value) {
+            this.fontStyle = value;
+        }
 
-    @XmlAttribute(name = "showGroupConservation")
-    protected Boolean showGroupConservation;
+        /**
+         * Gets the value of the threshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Float }
+         *     
+         */
+        public Float getThreshold() {
+            return threshold;
+        }
 
-    @XmlAttribute(name = "showGroupConsensus")
-    protected Boolean showGroupConsensus;
+        /**
+         * Sets the value of the threshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Float }
+         *     
+         */
+        public void setThreshold(Float value) {
+            this.threshold = value;
+        }
 
-    @XmlAttribute(name = "showConsensusHistogram")
-    protected Boolean showConsensusHistogram;
+        /**
+         * Gets the value of the showBootstrap property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowBootstrap() {
+            return showBootstrap;
+        }
 
-    @XmlAttribute(name = "showSequenceLogo")
-    protected Boolean showSequenceLogo;
+        /**
+         * Sets the value of the showBootstrap property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowBootstrap(Boolean value) {
+            this.showBootstrap = value;
+        }
 
-    @XmlAttribute(name = "normaliseSequenceLogo")
-    protected Boolean normaliseSequenceLogo;
+        /**
+         * Gets the value of the showDistances property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowDistances() {
+            return showDistances;
+        }
 
-    @XmlAttribute(name = "ignoreGapsinConsensus")
-    protected Boolean ignoreGapsinConsensus;
+        /**
+         * Sets the value of the showDistances property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowDistances(Boolean value) {
+            this.showDistances = value;
+        }
 
-    @XmlAttribute(name = "startRes")
-    protected Integer startRes;
+        /**
+         * Gets the value of the markUnlinked property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isMarkUnlinked() {
+            return markUnlinked;
+        }
 
-    @XmlAttribute(name = "startSeq")
-    protected Integer startSeq;
+        /**
+         * Sets the value of the markUnlinked property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setMarkUnlinked(Boolean value) {
+            this.markUnlinked = value;
+        }
 
-    @XmlAttribute(name = "charWidth")
-    protected Integer charWidth;
+        /**
+         * Gets the value of the fitToWindow property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isFitToWindow() {
+            return fitToWindow;
+        }
 
-    @XmlAttribute(name = "charHeight")
-    protected Integer charHeight;
+        /**
+         * Sets the value of the fitToWindow property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setFitToWindow(Boolean value) {
+            this.fitToWindow = value;
+        }
 
-    @XmlAttribute(name = "fontName")
-    protected String fontName;
+        /**
+         * Gets the value of the currentTree property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isCurrentTree() {
+            return currentTree;
+        }
 
-    @XmlAttribute(name = "fontSize")
-    protected Integer fontSize;
+        /**
+         * Sets the value of the currentTree property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setCurrentTree(Boolean value) {
+            this.currentTree = value;
+        }
 
-    @XmlAttribute(name = "fontStyle")
-    protected Integer fontStyle;
+        /**
+         * Gets the value of the columnWise property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isColumnWise() {
+            if (columnWise == null) {
+                return false;
+            } else {
+                return columnWise;
+            }
+        }
 
-    @XmlAttribute(name = "scaleProteinAsCdna")
-    protected Boolean scaleProteinAsCdna;
+        /**
+         * Sets the value of the columnWise property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setColumnWise(Boolean value) {
+            this.columnWise = value;
+        }
 
-    @XmlAttribute(name = "viewName")
-    protected String viewName;
+        /**
+         * Gets the value of the columnReference property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getColumnReference() {
+            return columnReference;
+        }
 
-    @XmlAttribute(name = "sequenceSetId")
-    protected String sequenceSetId;
+        /**
+         * Sets the value of the columnReference property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setColumnReference(String value) {
+            this.columnReference = value;
+        }
 
-    @XmlAttribute(name = "gatheredViews")
-    protected Boolean gatheredViews;
+        /**
+         * Gets the value of the id property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getId() {
+            return id;
+        }
 
-    @XmlAttribute(name = "textCol1")
-    protected Integer textCol1;
+        /**
+         * Sets the value of the id property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setId(String value) {
+            this.id = value;
+        }
 
-    @XmlAttribute(name = "textCol2")
-    protected Integer textCol2;
+        /**
+         * 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 = "textColThreshold")
-    protected Integer textColThreshold;
+        /**
+         * Sets the value of the linkToAllViews property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setLinkToAllViews(Boolean value) {
+            this.linkToAllViews = value;
+        }
 
-    @XmlAttribute(name = "id")
-    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
-    @XmlID
-    @XmlSchemaType(name = "ID")
-    protected String id;
+        /**
+         * Gets the value of the width property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getWidth() {
+            return width;
+        }
 
-    @XmlAttribute(name = "complementId")
-    protected String complementId;
+        /**
+         * Sets the value of the width property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setWidth(Integer value) {
+            this.width = value;
+        }
 
-    @XmlAttribute(name = "showComplementFeatures")
-    protected Boolean showComplementFeatures;
+        /**
+         * Gets the value of the height property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getHeight() {
+            return height;
+        }
 
-    @XmlAttribute(name = "showComplementFeaturesOnTop")
-    protected Boolean showComplementFeaturesOnTop;
+        /**
+         * Sets the value of the height property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setHeight(Integer value) {
+            this.height = value;
+        }
 
-    @XmlAttribute(name = "width")
-    protected Integer width;
+        /**
+         * Gets the value of the xpos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getXpos() {
+            return xpos;
+        }
 
-    @XmlAttribute(name = "height")
-    protected Integer height;
+        /**
+         * Sets the value of the xpos property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setXpos(Integer value) {
+            this.xpos = value;
+        }
 
-    @XmlAttribute(name = "xpos")
-    protected Integer xpos;
+        /**
+         * Gets the value of the ypos property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getYpos() {
+            return ypos;
+        }
 
-    @XmlAttribute(name = "ypos")
-    protected Integer ypos;
+        /**
+         * 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 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:
+     * &lt;p&gt;Java class for anonymous complex type.
      * 
-     * <pre>
-     * getHiddenColumns().add(newItem);
-     * </pre>
+     * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
      * 
-     * 
-     * <p>
-     * Objects of the following type(s) are allowed in the list
-     * {@link JalviewModel.Viewport.HiddenColumns }
+     * &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;
      * 
      * 
      */
-    public List<JalviewModel.Viewport.HiddenColumns> getHiddenColumns()
-    {
-      if (hiddenColumns == null)
-      {
-        hiddenColumns = new ArrayList<JalviewModel.Viewport.HiddenColumns>();
-      }
-      return this.hiddenColumns;
-    }
+    @XmlAccessorType(XmlAccessType.FIELD)
+    @XmlType(name = "", propOrder = {
+        "userColourScheme"
+    })
+    public static class UserColours {
 
-    /**
-     * 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;
-    }
+        @XmlElement(name = "UserColourScheme", namespace = "www.jalview.org", required = true)
+        protected JalviewUserColours userColourScheme;
+        @XmlAttribute(name = "id")
+        protected String id;
 
-    /**
-     * 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 userColourScheme property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link JalviewUserColours }
+         *     
+         */
+        public JalviewUserColours getUserColourScheme() {
+            return userColourScheme;
+        }
 
-    /**
-     * 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 userColourScheme property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link JalviewUserColours }
+         *     
+         */
+        public void setUserColourScheme(JalviewUserColours value) {
+            this.userColourScheme = value;
+        }
 
-    /**
-     * Gets the value of the conservationSelected property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isConservationSelected()
-    {
-      return conservationSelected;
-    }
+        /**
+         * 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 conservationSelected property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setConservationSelected(Boolean value)
-    {
-      this.conservationSelected = value;
     }
 
+
     /**
-     * Gets the value of the pidSelected property.
+     * &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;element name="overview" 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;attGroup ref="{www.jalview.org}swingwindow"/&amp;gt;
+     *                 &amp;lt;attribute name="showHidden" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
+     *                 &amp;lt;attribute name="residueColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+     *                 &amp;lt;attribute name="gapColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+     *                 &amp;lt;attribute name="hiddenColour" 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;/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="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="charWidth" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+     *       &amp;lt;attribute name="charHeight" 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="idWidth" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+     *       &amp;lt;attribute name="idWidthManuallyAdjusted" type="{http://www.w3.org/2001/XMLSchema}boolean" /&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;
      * 
-     * @return possible object is {@link Boolean }
      * 
      */
-    public Boolean isPidSelected()
-    {
-      return pidSelected;
-    }
+    @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 = "charWidth")
+        protected Integer charWidth;
+        @XmlAttribute(name = "charHeight")
+        protected Integer charHeight;
+        @XmlAttribute(name = "fontName")
+        protected String fontName;
+        @XmlAttribute(name = "fontSize")
+        protected Integer fontSize;
+        @XmlAttribute(name = "fontStyle")
+        protected Integer fontStyle;
+        @XmlAttribute(name = "idWidth")
+        protected Integer idWidth;
+        @XmlAttribute(name = "idWidthManuallyAdjusted")
+        protected Boolean idWidthManuallyAdjusted;
+        @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;
+
+        /**
+         * 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.
+         * 
+         * &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;
+        }
+
+        /**
+         * 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 overview property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link JalviewModel.Viewport.Overview }
+         *     
+         */
+        public JalviewModel.Viewport.Overview getOverview() {
+            return overview;
+        }
+
+        /**
+         * 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;
+        }
+
+        /**
+         * 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 pidSelected property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setPidSelected(Boolean value)
-    {
-      this.pidSelected = 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 bgColour property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getBgColour()
-    {
-      return bgColour;
-    }
+        /**
+         * Gets the value of the consThreshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getConsThreshold() {
+            return consThreshold;
+        }
 
-    /**
-     * 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 consThreshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setConsThreshold(Integer value) {
+            this.consThreshold = value;
+        }
 
-    /**
-     * Gets the value of the consThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getConsThreshold()
-    {
-      return consThreshold;
-    }
+        /**
+         * Gets the value of the pidThreshold property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getPidThreshold() {
+            return pidThreshold;
+        }
 
-    /**
-     * 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 pidThreshold property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setPidThreshold(Integer value) {
+            this.pidThreshold = value;
+        }
 
-    /**
-     * Gets the value of the pidThreshold property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getPidThreshold()
-    {
-      return pidThreshold;
-    }
+        /**
+         * Gets the value of the title property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getTitle() {
+            return title;
+        }
 
-    /**
-     * 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 title property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link String }
+         *     
+         */
+        public void setTitle(String value) {
+            this.title = value;
+        }
 
-    /**
-     * Gets the value of the title property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getTitle()
-    {
-      return title;
-    }
+        /**
+         * Gets the value of the showFullId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowFullId() {
+            return showFullId;
+        }
 
-    /**
-     * 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 showFullId property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowFullId(Boolean value) {
+            this.showFullId = value;
+        }
 
-    /**
-     * Gets the value of the showFullId property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowFullId()
-    {
-      return showFullId;
-    }
+        /**
+         * Gets the value of the rightAlignIds property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isRightAlignIds() {
+            return rightAlignIds;
+        }
 
-    /**
-     * 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 rightAlignIds property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setRightAlignIds(Boolean value) {
+            this.rightAlignIds = value;
+        }
 
-    /**
-     * Gets the value of the rightAlignIds property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isRightAlignIds()
-    {
-      return rightAlignIds;
-    }
+        /**
+         * Gets the value of the showText property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowText() {
+            return showText;
+        }
 
-    /**
-     * 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 showText property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowText(Boolean value) {
+            this.showText = value;
+        }
 
-    /**
-     * Gets the value of the showText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowText()
-    {
-      return showText;
-    }
+        /**
+         * Gets the value of the showColourText property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowColourText() {
+            return showColourText;
+        }
 
-    /**
-     * Sets the value of the showText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowText(Boolean value)
-    {
-      this.showText = 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 showColourText property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowColourText()
-    {
-      return showColourText;
-    }
+        /**
+         * 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 showColourText property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowColourText(Boolean value)
-    {
-      this.showColourText = 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 showUnconserved property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowUnconserved()
-    {
-      if (showUnconserved == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showUnconserved;
-      }
-    }
+        /**
+         * Gets the value of the showBoxes property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowBoxes() {
+            return showBoxes;
+        }
 
-    /**
-     * Sets the value of the showUnconserved property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowUnconserved(Boolean value)
-    {
-      this.showUnconserved = 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 showBoxes property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowBoxes()
-    {
-      return showBoxes;
-    }
+        /**
+         * Gets the value of the wrapAlignment property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isWrapAlignment() {
+            return wrapAlignment;
+        }
 
-    /**
-     * Sets the value of the showBoxes property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowBoxes(Boolean value)
-    {
-      this.showBoxes = 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 wrapAlignment property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isWrapAlignment()
-    {
-      return wrapAlignment;
-    }
+        /**
+         * Gets the value of the renderGaps property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isRenderGaps() {
+            return renderGaps;
+        }
 
-    /**
-     * 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 renderGaps property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setRenderGaps(Boolean value) {
+            this.renderGaps = value;
+        }
 
-    /**
-     * Gets the value of the renderGaps property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isRenderGaps()
-    {
-      return renderGaps;
-    }
+        /**
+         * Gets the value of the showSequenceFeatures property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowSequenceFeatures() {
+            return showSequenceFeatures;
+        }
 
-    /**
-     * 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 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;
+        }
 
-    /**
-     * Gets the value of the showSequenceFeatures property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowSequenceFeatures()
-    {
-      return showSequenceFeatures;
-    }
+        /**
+         * 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 showSequenceFeatures property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceFeatures(Boolean value)
-    {
-      this.showSequenceFeatures = value;
-    }
+        /**
+         * Gets the value of the showDbRefTooltip property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowDbRefTooltip() {
+            return showDbRefTooltip;
+        }
 
-    /**
-     * Gets the value of the showNPfeatureTooltip property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowNPfeatureTooltip()
-    {
-      return showNPfeatureTooltip;
-    }
+        /**
+         * 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 showNPfeatureTooltip property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowNPfeatureTooltip(Boolean value)
-    {
-      this.showNPfeatureTooltip = 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 showDbRefTooltip property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowDbRefTooltip()
-    {
-      return showDbRefTooltip;
-    }
+        /**
+         * 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 showDbRefTooltip property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowDbRefTooltip(Boolean value)
-    {
-      this.showDbRefTooltip = 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 followHighlight property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isFollowHighlight()
-    {
-      if (followHighlight == null)
-      {
-        return true;
-      }
-      else
-      {
-        return followHighlight;
-      }
-    }
+        /**
+         * 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 followHighlight property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setFollowHighlight(Boolean value)
-    {
-      this.followHighlight = value;
-    }
+        /**
+         * Gets the value of the showAnnotation property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isShowAnnotation() {
+            return showAnnotation;
+        }
 
-    /**
-     * 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 showAnnotation property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowAnnotation(Boolean value) {
+            this.showAnnotation = 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 centreColumnLabels property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isCentreColumnLabels() {
+            if (centreColumnLabels == null) {
+                return false;
+            } else {
+                return centreColumnLabels;
+            }
+        }
 
-    /**
-     * Gets the value of the showAnnotation property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public Boolean isShowAnnotation()
-    {
-      return showAnnotation;
-    }
+        /**
+         * 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 showAnnotation property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowAnnotation(Boolean value)
-    {
-      this.showAnnotation = 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 centreColumnLabels property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isCentreColumnLabels()
-    {
-      if (centreColumnLabels == null)
-      {
-        return false;
-      }
-      else
-      {
-        return centreColumnLabels;
-      }
-    }
+        /**
+         * 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 centreColumnLabels property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setCentreColumnLabels(Boolean value)
-    {
-      this.centreColumnLabels = 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 showGroupConservation property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowGroupConservation()
-    {
-      if (showGroupConservation == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showGroupConservation;
-      }
-    }
+        /**
+         * 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 showGroupConservation property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowGroupConservation(Boolean value)
-    {
-      this.showGroupConservation = 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 showGroupConsensus property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowGroupConsensus()
-    {
-      if (showGroupConsensus == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showGroupConsensus;
-      }
-    }
+        /**
+         * 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 showGroupConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowGroupConsensus(Boolean value)
-    {
-      this.showGroupConsensus = 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 showConsensusHistogram property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowConsensusHistogram()
-    {
-      if (showConsensusHistogram == null)
-      {
-        return true;
-      }
-      else
-      {
-        return showConsensusHistogram;
-      }
-    }
+        /**
+         * 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 showConsensusHistogram property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowConsensusHistogram(Boolean value)
-    {
-      this.showConsensusHistogram = 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 showSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isShowSequenceLogo()
-    {
-      if (showSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return showSequenceLogo;
-      }
-    }
+        /**
+         * 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 showSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setShowSequenceLogo(Boolean value)
-    {
-      this.showSequenceLogo = 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 normaliseSequenceLogo property.
-     * 
-     * @return possible object is {@link Boolean }
-     * 
-     */
-    public boolean isNormaliseSequenceLogo()
-    {
-      if (normaliseSequenceLogo == null)
-      {
-        return false;
-      }
-      else
-      {
-        return normaliseSequenceLogo;
-      }
-    }
+        /**
+         * 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 normaliseSequenceLogo property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setNormaliseSequenceLogo(Boolean value)
-    {
-      this.normaliseSequenceLogo = value;
-    }
+        /**
+         * Gets the value of the startRes property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getStartRes() {
+            return startRes;
+        }
 
-    /**
-     * 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 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 ignoreGapsinConsensus property.
-     * 
-     * @param value
-     *          allowed object is {@link Boolean }
-     * 
-     */
-    public void setIgnoreGapsinConsensus(Boolean value)
-    {
-      this.ignoreGapsinConsensus = 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 startRes property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getStartRes()
-    {
-      return startRes;
-    }
+        /**
+         * Gets the value of the charWidth property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getCharWidth() {
+            return charWidth;
+        }
 
-    /**
-     * 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 charWidth property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setCharWidth(Integer value) {
+            this.charWidth = value;
+        }
 
-    /**
-     * Gets the value of the startSeq property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getStartSeq()
-    {
-      return startSeq;
-    }
+        /**
+         * Gets the value of the charHeight property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getCharHeight() {
+            return charHeight;
+        }
 
-    /**
-     * 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 charHeight property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setCharHeight(Integer value) {
+            this.charHeight = value;
+        }
 
-    /**
-     * Gets the value of the charWidth property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getCharWidth()
-    {
-      return charWidth;
-    }
+        /**
+         * Gets the value of the fontName property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getFontName() {
+            return fontName;
+        }
 
-    /**
-     * Sets the value of the charWidth property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setCharWidth(Integer value)
-    {
-      this.charWidth = 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 charHeight property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getCharHeight()
-    {
-      return charHeight;
-    }
+        /**
+         * Gets the value of the fontSize property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontSize() {
+            return fontSize;
+        }
 
-    /**
-     * Sets the value of the charHeight property.
-     * 
-     * @param value
-     *          allowed object is {@link Integer }
-     * 
-     */
-    public void setCharHeight(Integer value)
-    {
-      this.charHeight = 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 fontName property.
-     * 
-     * @return possible object is {@link String }
-     * 
-     */
-    public String getFontName()
-    {
-      return fontName;
-    }
+        /**
+         * Gets the value of the fontStyle property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getFontStyle() {
+            return fontStyle;
+        }
 
-    /**
-     * 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 fontStyle property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setFontStyle(Integer value) {
+            this.fontStyle = value;
+        }
 
-    /**
-     * Gets the value of the fontSize property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontSize()
-    {
-      return fontSize;
-    }
+        /**
+         * Gets the value of the idWidth property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getIdWidth() {
+            return idWidth;
+        }
 
-    /**
-     * 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 idWidth property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Integer }
+         *     
+         */
+        public void setIdWidth(Integer value) {
+            this.idWidth = value;
+        }
 
-    /**
-     * Gets the value of the fontStyle property.
-     * 
-     * @return possible object is {@link Integer }
-     * 
-     */
-    public Integer getFontStyle()
-    {
-      return fontStyle;
-    }
+        /**
+         * Gets the value of the idWidthManuallyAdjusted property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public Boolean isIdWidthManuallyAdjusted() {
+            return idWidthManuallyAdjusted;
+        }
 
-    /**
-     * 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 idWidthManuallyAdjusted property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setIdWidthManuallyAdjusted(Boolean value) {
+            this.idWidthManuallyAdjusted = 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 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
-    }
+        /**
+         * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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 complementId property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link String }
+         *     
+         */
+        public String getComplementId() {
+            return complementId;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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 showComplementFeatures property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowComplementFeatures() {
+            if (showComplementFeatures == null) {
+                return false;
+            } else {
+                return showComplementFeatures;
+            }
+        }
 
-    /**
-     * 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 showComplementFeatures property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowComplementFeatures(Boolean value) {
+            this.showComplementFeatures = 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 showComplementFeaturesOnTop property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Boolean }
+         *     
+         */
+        public boolean isShowComplementFeaturesOnTop() {
+            if (showComplementFeaturesOnTop == null) {
+                return false;
+            } else {
+                return showComplementFeaturesOnTop;
+            }
+        }
 
-    /**
-     * 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 showComplementFeaturesOnTop property.
+         * 
+         * @param value
+         *     allowed object is
+         *     {@link Boolean }
+         *     
+         */
+        public void setShowComplementFeaturesOnTop(Boolean value) {
+            this.showComplementFeaturesOnTop = 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 width property.
+         * 
+         * @return
+         *     possible object is
+         *     {@link Integer }
+         *     
+         */
+        public Integer getWidth() {
+            return width;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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;
+        }
 
-    /**
-     * 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 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)
+        /**
+         * &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
         {
-          return false;
+
+            @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;
+            }
+
         }
-        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;
-      }
+        /**
+         * &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;
-      }
 
-    }
+        /**
+         * &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}swingwindow"/&amp;gt;
+         *       &amp;lt;attribute name="showHidden" type="{http://www.w3.org/2001/XMLSchema}boolean" /&amp;gt;
+         *       &amp;lt;attribute name="residueColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+         *       &amp;lt;attribute name="gapColour" type="{http://www.w3.org/2001/XMLSchema}int" /&amp;gt;
+         *       &amp;lt;attribute name="hiddenColour" 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;/restriction&amp;gt;
+         *   &amp;lt;/complexContent&amp;gt;
+         * &amp;lt;/complexType&amp;gt;
+         * &lt;/pre&gt;
+         * 
+         * 
+         */
+        @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;
+            }
+
+        }
 
-  }
+    }
 
 }
index e4b160f..592ef1b 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,613 +16,597 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for JalviewUserColours complex type.
+ * &lt;p&gt;Java class for JalviewUserColours 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getColour().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * 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.
-   * 
-   * <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.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getFilter().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * 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;
-  }
-
-  /**
-   * <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>
-   * 
-   * 
-   */
-  @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.
-     * 
-     * <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;
-    }
+    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 }
+     * &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.
      * 
-     */
-    public ThresholdType getThreshType()
-    {
-      return threshType;
-    }
-
-    /**
-     * Sets the value of the threshType property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getColour().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @param value
-     *          allowed object is {@link ThresholdType }
      * 
-     */
-    public void setThreshType(ThresholdType value)
-    {
-      this.threshType = value;
-    }
-
-    /**
-     * Gets the value of the threshold property.
+     * &lt;p&gt;
+     * 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 }
+     * &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.
      * 
-     */
-    public void setThreshold(Float value)
-    {
-      this.threshold = value;
-    }
-
-    /**
-     * Gets the value of the max property.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getFilter().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @return possible object is {@link Float }
      * 
-     */
-    public Float getMax()
-    {
-      return max;
-    }
-
-    /**
-     * Sets the value of the max property.
+     * &lt;p&gt;
+     * 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.
+     * &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;
      * 
-     * @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.
+         * 
+         * &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;
+        }
+
+        /**
+         * 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;
     }
 
-  }
-
-  /**
-   * <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"/>
-   *       &lt;/sequence>
-   *       &lt;attribute name="featureType" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
-   *     &lt;/restriction>
-   *   &lt;/complexContent>
-   * &lt;/complexType>
-   * </pre>
-   * 
-   * 
-   */
-  @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.
+     * &lt;p&gt;Java class for anonymous complex type.
      * 
-     * @param value
-     *          allowed object is {@link FeatureMatcherSet }
+     * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
      * 
-     */
-    public void setMatcherSet(FeatureMatcherSet value)
-    {
-      this.matcherSet = value;
-    }
-
-    /**
-     * Gets the value of the featureType property.
+     * &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;
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getFeatureType()
-    {
-      return featureType;
-    }
+    @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;
+        }
 
-    /**
-     * Sets the value of the featureType property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
-     * 
-     */
-    public void setFeatureType(String value)
-    {
-      this.featureType = value;
     }
 
-  }
-
 }
index 1f16680..d5cd7a8 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.math.BigInteger;
@@ -17,319 +18,299 @@ 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
+ *                     
  * 
+ * &lt;p&gt;Java class for mapListType complex type.
  * 
- * <p>
- * Java class for mapListType 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.
- * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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 List<MapListType.MapListFrom> getMapListFrom()
-  {
-    if (mapListFrom == null)
-    {
-      mapListFrom = new ArrayList<MapListType.MapListFrom>();
-    }
-    return this.mapListFrom;
-  }
-
-  /**
-   * 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 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;
-  }
-
-  /**
-   * <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>
-   * 
-   * 
-   */
-  @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.
+     * 
+     * &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 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.
+     * 
+     * &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 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;
     }
 
-  }
-
-  /**
-   * <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>
-   * 
-   * 
-   */
-  @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.
+     * &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;
+     * 
      * 
      */
-    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.
+     * &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;
+     * 
      * 
      */
-    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;
+        }
+
+    }
 
 }
diff --git a/src/jalview/xml/binding/jalview/MapOnAMatrixType.java b/src/jalview/xml/binding/jalview/MapOnAMatrixType.java
new file mode 100644 (file)
index 0000000..d48a315
--- /dev/null
@@ -0,0 +1,160 @@
+//
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
+// Any modifications to this file will be lost upon recompilation of the source schema. 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
+//
+
+
+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.XmlType;
+
+
+/**
+ * Defines a mapping from the local frame to a matrix
+ *                             and its associated data specified by MatrixType
+ *                     
+ * 
+ * &lt;p&gt;Java class for MapOnAMatrixType complex type.
+ * 
+ * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
+ * 
+ * &lt;pre&gt;
+ * &amp;lt;complexType name="MapOnAMatrixType"&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="property" type="{www.vamsas.ac.uk/jalview/version2}property" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
+ *         &amp;lt;element name="mapping" type="{www.vamsas.ac.uk/jalview/version2}mapListType" minOccurs="0"/&amp;gt;
+ *       &amp;lt;/sequence&amp;gt;
+ *       &amp;lt;attribute name="matrix" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&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 = "MapOnAMatrixType", propOrder = {
+    "property",
+    "mapping"
+})
+public class MapOnAMatrixType {
+
+    protected List<Property> property;
+    protected MapListType mapping;
+    @XmlAttribute(name = "matrix", required = true)
+    protected String matrix;
+    @XmlAttribute(name = "id")
+    protected String id;
+
+    /**
+     * 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 Property }
+     * 
+     * 
+     */
+    public List<Property> getProperty() {
+        if (property == null) {
+            property = new ArrayList<Property>();
+        }
+        return this.property;
+    }
+
+    /**
+     * Gets the value of the mapping property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link MapListType }
+     *     
+     */
+    public MapListType getMapping() {
+        return mapping;
+    }
+
+    /**
+     * Sets the value of the mapping property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link MapListType }
+     *     
+     */
+    public void setMapping(MapListType value) {
+        this.mapping = value;
+    }
+
+    /**
+     * Gets the value of the matrix property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getMatrix() {
+        return matrix;
+    }
+
+    /**
+     * Sets the value of the matrix property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setMatrix(String value) {
+        this.matrix = 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;
+    }
+
+}
index 69bf01d..9c98af8 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -14,124 +15,130 @@ 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).
+ *                             
  * 
- * <p>
- * Java class for anonymous complex type.
+ * &lt;p&gt;Java class for anonymous 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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 c405597..34d1158 100644 (file)
@@ -1,8 +1,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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
 
@@ -19,349 +19,319 @@ import javax.xml.bind.annotation.XmlType;
 
 
 /**
- * <p>
- * Java class for MatrixType complex type.
+ * Represents matrix data imported to Jalview, and the
+ *                             results of any derived calculations (independent of a particular
+ *                             view
+ *                             on the matrix).
+ *                     
  * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
+ * &lt;p&gt;Java class for MatrixType complex type.
  * 
- * <pre>
- * &lt;complexType name="MatrixType">
- *   &lt;complexContent>
- *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       &lt;sequence>
- *         &lt;element name="elements" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *         &lt;element name="groups" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
- *         &lt;element name="newick" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
- *         &lt;element name="property" type="{www.vamsas.ac.uk/jalview/version2}property" maxOccurs="unbounded" minOccurs="0"/>
- *         &lt;element name="mapping" type="{www.vamsas.ac.uk/jalview/version2}mapListType" minOccurs="0"/>
- *       &lt;/sequence>
- *       &lt;attribute name="type" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="rows" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
- *       &lt;attribute name="cols" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
- *       &lt;attribute name="treeMethod" type="{http://www.w3.org/2001/XMLSchema}string" />
- *       &lt;attribute name="cutHeight" type="{http://www.w3.org/2001/XMLSchema}double" />
- *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
- *     &lt;/restriction>
- *   &lt;/complexContent>
- * &lt;/complexType>
- * </pre>
+ * &lt;p&gt;The following schema fragment specifies the expected content contained within this class.
+ * 
+ * &lt;pre&gt;
+ * &amp;lt;complexType name="MatrixType"&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="elements" type="{http://www.w3.org/2001/XMLSchema}string"/&amp;gt;
+ *         &amp;lt;element name="groups" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
+ *         &amp;lt;element name="newick" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/&amp;gt;
+ *         &amp;lt;element name="property" type="{www.vamsas.ac.uk/jalview/version2}property" maxOccurs="unbounded" 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="rows" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt;
+ *       &amp;lt;attribute name="cols" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" /&amp;gt;
+ *       &amp;lt;attribute name="treeMethod" type="{http://www.w3.org/2001/XMLSchema}string" /&amp;gt;
+ *       &amp;lt;attribute name="cutHeight" type="{http://www.w3.org/2001/XMLSchema}double" /&amp;gt;
+ *       &amp;lt;attribute name="id" 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 = "MatrixType",
-  propOrder =
-  { "elements", "groups", "newick", "property", "mapping" })
-public class MatrixType
-{
-
-  @XmlElement(required = true)
-  protected String elements;
-
-  protected List<String> groups;
-
-  protected List<String> newick;
-
-  protected List<Property> property;
-
-  protected MapListType mapping;
-
-  @XmlAttribute(name = "type", required = true)
-  protected String type;
-
-  @XmlAttribute(name = "rows", required = true)
-  protected BigInteger rows;
-
-  @XmlAttribute(name = "cols", required = true)
-  protected BigInteger cols;
-
-  @XmlAttribute(name = "treeMethod")
-  protected String treeMethod;
-
-  @XmlAttribute(name = "cutHeight")
-  protected Double cutHeight;
-
-  @XmlAttribute(name = "id")
-  protected String id;
-
-  /**
-   * Gets the value of the elements property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getElements()
-  {
-    return elements;
-  }
-
-  /**
-   * Sets the value of the elements property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setElements(String value)
-  {
-    this.elements = value;
-  }
-
-  /**
-   * Gets the value of the groups 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 groups property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getGroups().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getGroups()
-  {
-    if (groups == null)
-    {
-      groups = new ArrayList<String>();
+@XmlType(name = "MatrixType", propOrder = {
+    "elements",
+    "groups",
+    "newick",
+    "property"
+})
+public class MatrixType {
+
+    @XmlElement(required = true)
+    protected String elements;
+    protected List<String> groups;
+    protected List<String> newick;
+    protected List<Property> property;
+    @XmlAttribute(name = "type", required = true)
+    protected String type;
+    @XmlAttribute(name = "rows", required = true)
+    protected BigInteger rows;
+    @XmlAttribute(name = "cols", required = true)
+    protected BigInteger cols;
+    @XmlAttribute(name = "treeMethod")
+    protected String treeMethod;
+    @XmlAttribute(name = "cutHeight")
+    protected Double cutHeight;
+    @XmlAttribute(name = "id", required = true)
+    protected String id;
+
+    /**
+     * Gets the value of the elements property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getElements() {
+        return elements;
     }
-    return this.groups;
-  }
 
-  /**
-   * Gets the value of the newick 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 newick property.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getNewick().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * Objects of the following type(s) are allowed in the list {@link String }
-   * 
-   * 
-   */
-  public List<String> getNewick()
-  {
-    if (newick == null)
-    {
-      newick = new ArrayList<String>();
+    /**
+     * Sets the value of the elements property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setElements(String value) {
+        this.elements = value;
     }
-    return this.newick;
-  }
 
-  /**
-   * 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 Property }
-   * 
-   * 
-   */
-  public List<Property> getProperty()
-  {
-    if (property == null)
-    {
-      property = new ArrayList<Property>();
+    /**
+     * Gets the value of the groups 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 groups property.
+     * 
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getGroups().add(newItem);
+     * &lt;/pre&gt;
+     * 
+     * 
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getGroups() {
+        if (groups == null) {
+            groups = new ArrayList<String>();
+        }
+        return this.groups;
     }
-    return this.property;
-  }
 
-  /**
-   * Gets the value of the mapping property.
-   * 
-   * @return possible object is {@link MapListType }
-   * 
-   */
-  public MapListType getMapping()
-  {
-    return mapping;
-  }
+    /**
+     * Gets the value of the newick 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 newick property.
+     * 
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getNewick().add(newItem);
+     * &lt;/pre&gt;
+     * 
+     * 
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link String }
+     * 
+     * 
+     */
+    public List<String> getNewick() {
+        if (newick == null) {
+            newick = new ArrayList<String>();
+        }
+        return this.newick;
+    }
 
-  /**
-   * Sets the value of the mapping property.
-   * 
-   * @param value
-   *          allowed object is {@link MapListType }
-   * 
-   */
-  public void setMapping(MapListType value)
-  {
-    this.mapping = 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 Property }
+     * 
+     * 
+     */
+    public List<Property> getProperty() {
+        if (property == null) {
+            property = new ArrayList<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 rows property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getRows()
-  {
-    return rows;
-  }
+    /**
+     * Gets the value of the rows property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getRows() {
+        return rows;
+    }
 
-  /**
-   * Sets the value of the rows property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setRows(BigInteger value)
-  {
-    this.rows = value;
-  }
+    /**
+     * Sets the value of the rows property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setRows(BigInteger value) {
+        this.rows = value;
+    }
 
-  /**
-   * Gets the value of the cols property.
-   * 
-   * @return possible object is {@link BigInteger }
-   * 
-   */
-  public BigInteger getCols()
-  {
-    return cols;
-  }
+    /**
+     * Gets the value of the cols property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link BigInteger }
+     *     
+     */
+    public BigInteger getCols() {
+        return cols;
+    }
 
-  /**
-   * Sets the value of the cols property.
-   * 
-   * @param value
-   *          allowed object is {@link BigInteger }
-   * 
-   */
-  public void setCols(BigInteger value)
-  {
-    this.cols = value;
-  }
+    /**
+     * Sets the value of the cols property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link BigInteger }
+     *     
+     */
+    public void setCols(BigInteger value) {
+        this.cols = value;
+    }
 
-  /**
-   * Gets the value of the treeMethod property.
-   * 
-   * @return possible object is {@link String }
-   * 
-   */
-  public String getTreeMethod()
-  {
-    return treeMethod;
-  }
+    /**
+     * Gets the value of the treeMethod property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getTreeMethod() {
+        return treeMethod;
+    }
 
-  /**
-   * Sets the value of the treeMethod property.
-   * 
-   * @param value
-   *          allowed object is {@link String }
-   * 
-   */
-  public void setTreeMethod(String value)
-  {
-    this.treeMethod = value;
-  }
+    /**
+     * Sets the value of the treeMethod property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setTreeMethod(String value) {
+        this.treeMethod = value;
+    }
 
-  /**
-   * Gets the value of the cutHeight property.
-   * 
-   * @return possible object is {@link Double }
-   * 
-   */
-  public Double getCutHeight()
-  {
-    return cutHeight;
-  }
+    /**
+     * Gets the value of the cutHeight property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Double }
+     *     
+     */
+    public Double getCutHeight() {
+        return cutHeight;
+    }
 
-  /**
-   * Sets the value of the cutHeight property.
-   * 
-   * @param value
-   *          allowed object is {@link Double }
-   * 
-   */
-  public void setCutHeight(Double value)
-  {
-    this.cutHeight = value;
-  }
+    /**
+     * Sets the value of the cutHeight property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Double }
+     *     
+     */
+    public void setCutHeight(Double value) {
+        this.cutHeight = 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 eeeed22..8d22ad8 100644 (file)
@@ -1,68 +1,60 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 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;
 
+
 /**
- * <p>
- * Java class for NoValueColour.
+ * &lt;p&gt;Java class for NoValueColour.
  * 
- * <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>
+ * &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;
  * 
  */
 @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 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 String value() {
+        return value;
+    }
 
-  public static NoValueColour fromValue(String v)
-  {
-    for (NoValueColour c : NoValueColour.values())
-    {
-      if (c.value.equals(v))
-      {
-        return c;
-      }
+    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 993adae..90ce3fa 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.JAXBElement;
@@ -12,567 +13,512 @@ 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.
- * <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.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.
  * 
  */
 @XmlRegistry
-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 MatrixType }
-   * 
-   */
-  public MatrixType createMatrixType()
-  {
-    return new MatrixType();
-  }
-
-  /**
-   * Create an instance of {@link jalview.xml.binding.jalview.Property }
-   * 
-   */
-  public jalview.xml.binding.jalview.Property createProperty()
-  {
-    return new jalview.xml.binding.jalview.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);
-  }
+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 MapOnAMatrixType }
+     * 
+     */
+    public MapOnAMatrixType createMapOnAMatrixType() {
+        return new MapOnAMatrixType();
+    }
+
+    /**
+     * Create an instance of {@link jalview.xml.binding.jalview.Property }
+     * 
+     */
+    public jalview.xml.binding.jalview.Property createProperty() {
+        return new jalview.xml.binding.jalview.Property();
+    }
+
+    /**
+     * Create an instance of {@link SequenceSet.SequenceSetProperties }
+     * 
+     */
+    public SequenceSet.SequenceSetProperties createSequenceSetSequenceSetProperties() {
+        return new SequenceSet.SequenceSetProperties();
+    }
+
+    /**
+     * Create an instance of {@link MatrixType }
+     * 
+     */
+    public MatrixType createMatrixType() {
+        return new MatrixType();
+    }
+
+    /**
+     * 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 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);
+    }
 
 }
index 2ff7a55..aa418e5 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,119 +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
+ *                     
  * 
- * <p>
- * Java class for PcaDataType complex type.
+ * &lt;p&gt;Java class for PcaDataType 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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 f0fd2f3..144076b 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -15,240 +16,232 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for pdbentry complex type.
+ * &lt;p&gt;Java class for pdbentry 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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 }
-   * 
-   * 
-   */
-  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;
-  }
-
-  /**
-   * <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;
+@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.
+     * 
+     * &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 }
+     * 
      * 
-     * @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;
     }
 
-  }
+
+    /**
+     * &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;
+
+        /**
+         * 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 b70e665..5fc6047 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -12,82 +13,80 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for property complex type.
+ * &lt;p&gt;Java class for property 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.
  * 
- * <pre>
- * &lt;complexType name="property">
- *   &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>
+ * &lt;pre&gt;
+ * &amp;lt;complexType name="property"&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 = "property")
-public class Property
-{
-
-  @XmlAttribute(name = "name")
-  protected String name;
+public class Property {
 
-  @XmlAttribute(name = "value")
-  protected String value;
+    @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;
-  }
+    /**
+     * 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 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 a5923e1..af05181 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -16,340 +17,332 @@ 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.
+ * &lt;p&gt;Java class for anonymous 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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.
-   * 
-   * <p>
-   * For example, to add a new item, do as follows:
-   * 
-   * <pre>
-   * getDBRef().add(newItem);
-   * </pre>
-   * 
-   * 
-   * <p>
-   * 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;
-  }
-
-  /**
-   * <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" 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>
-   * 
-   * 
-   */
-  @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 }
+     * &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.
      * 
-     */
-    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.
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getDBRef().add(newItem);
+     * &lt;/pre&gt;
      * 
-     * @return possible object is {@link String }
      * 
-     */
-    public String getSource()
-    {
-      return source;
-    }
-
-    /**
-     * Sets the value of the source property.
+     * &lt;p&gt;
+     * 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.
+     * &lt;p&gt;Java class for anonymous complex type.
      * 
-     * @param value
-     *          allowed object is {@link Boolean }
+     * &lt;p&gt;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.
+     * &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;
      * 
-     * @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 f08b225..751f6ca 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -16,319 +17,335 @@ 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.
+ * &lt;p&gt;Java class for anonymous 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.
  * 
- * <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>
+ * &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;element name="Matrix" type="{www.vamsas.ac.uk/jalview/version2}MatrixType" 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;
  * 
  * 
  */
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(
-  name = "",
-  propOrder =
-  { "sequence", "annotation", "sequenceSetProperties", "alcodonFrame" })
+@XmlType(name = "", propOrder = {
+    "sequence",
+    "annotation",
+    "sequenceSetProperties",
+    "alcodonFrame",
+    "matrix"
+})
 @XmlRootElement(name = "SequenceSet")
-public class SequenceSet
-{
-
-  @XmlElement(name = "Sequence")
-  protected List<Sequence> sequence;
-
-  @XmlElement(name = "Annotation")
-  protected List<Annotation> annotation;
-
-  protected List<SequenceSet.SequenceSetProperties> sequenceSetProperties;
+public class SequenceSet {
 
-  @XmlElement(name = "AlcodonFrame")
-  protected List<AlcodonFrame> alcodonFrame;
+    @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;
+    @XmlElement(name = "Matrix")
+    protected List<MatrixType> matrix;
+    @XmlAttribute(name = "gapChar", required = true)
+    protected String gapChar;
+    @XmlAttribute(name = "datasetId")
+    protected String datasetId;
 
-  @XmlAttribute(name = "gapChar", required = true)
-  protected String gapChar;
-
-  @XmlAttribute(name = "datasetId")
-  protected String datasetId;
-
-  /**
-   * 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>();
+    /**
+     * 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>();
+        }
+        return this.sequence;
     }
-    return this.sequence;
-  }
 
-  /**
-   * 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>();
+    /**
+     * 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>();
+        }
+        return this.annotation;
     }
-    return this.annotation;
-  }
 
-  /**
-   * 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>();
+    /**
+     * 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>();
+        }
+        return this.sequenceSetProperties;
     }
-    return this.sequenceSetProperties;
-  }
 
-  /**
-   * 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>();
+    /**
+     * 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>();
+        }
+        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;
-  }
-
-  /**
-   * <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.
+     * Gets the value of the matrix 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 matrix property.
+     * 
+     * &lt;p&gt;
+     * For example, to add a new item, do as follows:
+     * &lt;pre&gt;
+     *    getMatrix().add(newItem);
+     * &lt;/pre&gt;
+     * 
+     * 
+     * &lt;p&gt;
+     * Objects of the following type(s) are allowed in the list
+     * {@link MatrixType }
      * 
-     * @return possible object is {@link String }
      * 
      */
-    public String getKey()
-    {
-      return key;
+    public List<MatrixType> getMatrix() {
+        if (matrix == null) {
+            matrix = new ArrayList<MatrixType>();
+        }
+        return this.matrix;
     }
 
     /**
-     * Sets the value of the key property.
-     * 
-     * @param value
-     *          allowed object is {@link String }
+     * Gets the value of the gapChar property.
      * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
      */
-    public void setKey(String value)
-    {
-      this.key = value;
+    public String getGapChar() {
+        return gapChar;
     }
 
     /**
-     * Gets the value of the value property.
+     * Sets the value of the gapChar property.
      * 
-     * @return possible object is {@link String }
+     * @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 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;
     }
 
-  }
+
+    /**
+     * &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 }
+         *     
+         */
+        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 44e606d..429061b 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -13,137 +14,140 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for SequenceType complex type.
+ * &lt;p&gt;Java class for SequenceType 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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 ad0ea1e..f6570a2 100644 (file)
@@ -1,50 +1,46 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import javax.xml.bind.annotation.XmlEnum;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for ThresholdType.
- * 
- * <p>
- * The following schema fragment specifies the expected content contained within
- * this class.
- * <p>
+ * &lt;p&gt;Java class for ThresholdType.
  * 
- * <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>
+ * &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;
  * 
  */
 @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 099af84..6c5240f 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -14,101 +15,95 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for VAMSAS complex type.
+ * &lt;p&gt;Java class for VAMSAS 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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>();
+    /**
+     * 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>();
+        }
+        return this.tree;
     }
-    return this.tree;
-  }
 
-  /**
-   * 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>();
+    /**
+     * 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>();
+        }
+        return this.sequenceSet;
     }
-    return this.sequenceSet;
-  }
 
 }
index 4374c83..181d9e1 100644 (file)
@@ -1,10 +1,11 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 PM GMT 
 //
 
+
 package jalview.xml.binding.jalview;
 
 import java.util.ArrayList;
@@ -17,180 +18,177 @@ import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlSeeAlso;
 import javax.xml.bind.annotation.XmlType;
 
+
 /**
- * <p>
- * Java class for WebServiceParameterSet complex type.
+ * &lt;p&gt;Java class for WebServiceParameterSet 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.
  * 
- * <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>
+ * &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;
  * 
  * 
  */
 @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.
-   * 
-   * <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>();
+    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>();
+        }
+        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 65d49d5..bb3301a 100644 (file)
@@ -1,11 +1,9 @@
 //
-// 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> 
+// This file was generated by the Eclipse Implementation of JAXB, v2.3.3 
+// See https://eclipse-ee4j.github.io/jaxb-ri 
 // Any modifications to this file will be lost upon recompilation of the source schema. 
-// Generated on: 2023.05.13 at 06:58:41 PM BST 
+// Generated on: 2023.11.01 at 07:03:09 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 ecec67d..de6185c 100644 (file)
@@ -111,13 +111,13 @@ public class CommandsTest
       Assert.assertEquals(cmds.argsWereParsed(), cmdArgs,
               "Overall command parse and operation is false");
 
-      Assert.assertEquals(Desktop.getAlignFrames().length, numFrames,
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, numFrames,
               "Wrong number of AlignFrames");
 
       if (sequences != null)
       {
         Set<String> openedSequenceNames = new HashSet<>();
-        AlignFrame[] afs = Desktop.getAlignFrames();
+        AlignFrame[] afs = Desktop.getDesktopAlignFrames();
         for (AlignFrame af : afs)
         {
           openedSequenceNames.addAll(
@@ -325,7 +325,7 @@ public class CommandsTest
 
   public static boolean lookForSequenceName(String sequenceName)
   {
-    AlignFrame[] afs = Desktop.getAlignFrames();
+    AlignFrame[] afs = Desktop.getDesktopAlignFrames();
     for (AlignFrame af : afs)
     {
       for (String name : af.getViewport().getAlignment().getSequenceNames())
index ae14c1a..a78ca5a 100644 (file)
@@ -79,7 +79,7 @@ public class CommandsTest2
     }
     ;
 
-    AlignFrame[] afs = Desktop.getAlignFrames();
+    AlignFrame[] afs = Desktop.getDesktopAlignFrames();
     Assert.assertNotNull(afs);
     Assert.assertTrue(afs.length > 0);
 
index 3839065..00e7b21 100644 (file)
@@ -824,6 +824,11 @@ public class PDBFTSRestClientTest
                           + "        \"resolution\":2.2,\n"
                           + "        \"title\":\"Crystal structure of the complex between maize sulfite reductase and ferredoxin in the form-2 crystal\"}]\n"
                           + "  }}" });
+      mocks.add(new String[] { 
+          "https://www.ebi.ac.uk/pdbe/search/pdb/select?wt=json&fl=pdb_id,title,experimental_method,resolution&rows=500&start=0&q=(4gs9+OR+6bvb+OR+8ck8+OR+8ck3+OR+6x3d+OR+8ck4+OR+6x28+OR+6i7r+OR+3h82+OR+6i7q+OR+6x21+OR+4xt2+OR+5kiz+OR+7q5v+OR+6x2h+OR+7q5x+OR+3f1n+OR+3f1o+OR+2a24+OR+3f1p+OR+1p97+OR+4ghi+OR+3h7w+OR+6d09+OR+6czw+OR+7ujv+OR+5tbm+OR+5ufp+OR+4pky+OR+6d0b+OR+6d0c+OR+6x37)+AND+molecule_sequence:%5B''+TO+*%5D+AND+status:REL&sort="
+           ,
+          readJsonStringFromFile(
+                  "test/jalview/fts/threedbeacons/q99814_tdb_pdbfts_query_resp.txt")});
     } catch (Throwable e)
     {
       Assert.fail("Couldn't read mock data.", e);
index c37058a..40e29d3 100644 (file)
@@ -39,14 +39,20 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import jalview.datamodel.Sequence;
+import jalview.fts.api.FTSData;
 import jalview.fts.api.FTSDataColumnI;
 import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
 import jalview.fts.core.FTSRestClient;
 import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
 import jalview.fts.service.pdb.PDBFTSRestClientTest;
+import jalview.fts.service.threedbeacons.TDB_FTSData;
 import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient;
 import jalview.gui.JvOptionPane;
+import jalview.gui.structurechooser.PDBStructureChooserQuerySource;
+import jalview.gui.structurechooser.TDBResultAnalyser;
+import jalview.gui.structurechooser.ThreeDBStructureChooserQuerySource;
 
 public class TDBeaconsFTSRestClientTest
 {
@@ -301,7 +307,8 @@ public class TDBeaconsFTSRestClientTest
   private static String[][] mocks = { { "P38398.json", null },
       { "P01308.json", null },
       { "P0DTD1.json", null },
-      { "P27787.json", null }
+      { "P27787.json", null },
+      { "Q99814.json", null }
 
       // , { "P0DTD3.json", "{}" } actually results in 404, but {} is in body
   };
@@ -321,6 +328,8 @@ public class TDBeaconsFTSRestClientTest
 
       mocks[3][1] = PDBFTSRestClientTest.readJsonStringFromFile(
               "test/jalview/fts/threedbeacons/p27787_tdb_fts_query_resp.txt");
+      mocks[4][1] = PDBFTSRestClientTest.readJsonStringFromFile(
+              "test/jalview/fts/threedbeacons/q99814_tdb_fts_query_resp.txt");
 
     } catch (IOException e)
     {
@@ -491,4 +500,5 @@ public class TDBeaconsFTSRestClientTest
     System.out.println("Search summary : \n" + response.getSearchSummary());
     // System.out.println(response.getSearchSummary().size());
   }
+  
 }
diff --git a/test/jalview/fts/threedbeacons/q99814_tdb_fts_query.txt b/test/jalview/fts/threedbeacons/q99814_tdb_fts_query.txt
new file mode 100644 (file)
index 0000000..774b719
--- /dev/null
@@ -0,0 +1 @@
+https://www.ebi.ac.uk/pdbe/pdbe-kb/3dbeacons/api/uniprot/summary/Q99814.json
diff --git a/test/jalview/fts/threedbeacons/q99814_tdb_fts_query_resp.txt b/test/jalview/fts/threedbeacons/q99814_tdb_fts_query_resp.txt
new file mode 100644 (file)
index 0000000..17ef5e2
--- /dev/null
@@ -0,0 +1 @@
+{"uniprot_entry":{"ac":"Q99814","id":"EPAS1_HUMAN","uniprot_checksum":"4838989598234FC1","sequence_length":870,"segment_start":8,"segment_end":359},"structures":[{"summary":{"model_identifier":"3f1p","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/3f1p_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/3f1p","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2008-10-28","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.17,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]}]}},{"summary":{"model_identifier":"7q5v","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/7q5v_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/7q5v","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2021-11-04","sequence_identity":100.0,"uniprot_start":523,"uniprot_end":542,"coverage":0.023,"experimental_method":"X-RAY DIFFRACTION","resolution":1.17,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q9GZT9","identifier_category":"UNIPROT","description":"Egl nine homolog 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"GOL","identifier_category":"CCD","description":"GLYCEROL","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"FMT","identifier_category":"CCD","description":"FORMIC ACID","chain_ids":["A","B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"CL","identifier_category":"CCD","description":"CHLORIDE ION","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"MG","identifier_category":"CCD","description":"MAGNESIUM ION","chain_ids":["A","B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"OGA","identifier_category":"CCD","description":"N-OXALYLGLYCINE","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"MN","identifier_category":"CCD","description":"MANGANESE (II) ION","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"PEG","identifier_category":"CCD","description":"DI(HYDROXYETHYL)ETHER","chain_ids":["A"]}]}},{"summary":{"model_identifier":"7q5x","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/7q5x_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/7q5x","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2021-11-04","sequence_identity":100.0,"uniprot_start":523,"uniprot_end":542,"coverage":0.023,"experimental_method":"X-RAY DIFFRACTION","resolution":1.21,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q9GZT9","identifier_category":"UNIPROT","description":"Egl nine homolog 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"GOL","identifier_category":"CCD","description":"GLYCEROL","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"FMT","identifier_category":"CCD","description":"FORMIC ACID","chain_ids":["A","B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"CL","identifier_category":"CCD","description":"CHLORIDE ION","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"MG","identifier_category":"CCD","description":"MAGNESIUM ION","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"AKG","identifier_category":"CCD","description":"2-OXOGLUTARIC ACID","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"MN","identifier_category":"CCD","description":"MANGANESE (II) ION","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"PEG","identifier_category":"CCD","description":"DI(HYDROXYETHYL)ETHER","chain_ids":["A"]}]}},{"summary":{"model_identifier":"3f1n","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/3f1n_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/3f1n","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2008-10-28","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.479,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"EDO","identifier_category":"CCD","description":"1,2-ETHANEDIOL","chain_ids":["A"]}]}},{"summary":{"model_identifier":"4ghi","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/4ghi_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/4ghi","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2012-08-07","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.5,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"0X3","identifier_category":"CCD","description":"N-(3-chloro-5-fluorophenyl)-4-nitro-2,1,3-benzoxadiazol-5-amine","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6d0c","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6d0c_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6d0c","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2018-04-10","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.5,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]}]}},{"summary":{"model_identifier":"3h82","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/3h82_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/3h82","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2009-04-28","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.5,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"020","identifier_category":"CCD","description":"N-(furan-2-ylmethyl)-2-nitro-4-(trifluoromethyl)aniline","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6x21","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6x21_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6x21","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2020-05-19","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":348,"coverage":0.126,"experimental_method":"X-RAY DIFFRACTION","resolution":1.54,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"UKJ","identifier_category":"CCD","description":"1-(3-bromo-5-fluorophenoxy)-4-[(difluoromethyl)sulfonyl]-2-nitrobenzene","chain_ids":["A"]}]}},{"summary":{"model_identifier":"3f1o","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/3f1o_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/3f1o","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2008-10-28","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.598,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"EDO","identifier_category":"CCD","description":"1,2-ETHANEDIOL","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"2XY","identifier_category":"CCD","description":"N-[2-nitro-4-(trifluoromethyl)phenyl]morpholin-4-amine","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6czw","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6czw_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6czw","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2018-04-09","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.6,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"FO7","identifier_category":"CCD","description":"{2-bromo-3-(3-chloro-5-fluorophenoxy)-6-[(difluoromethyl)sulfonyl]phenyl}methanol","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6d0b","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6d0b_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6d0b","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2018-04-10","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.6,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"FOV","identifier_category":"CCD","description":"N-(3-chloro-5-fluorophenyl)-2-nitro-4-[(trifluoromethyl)sulfonyl]aniline","chain_ids":["A"]}]}},{"summary":{"model_identifier":"3h7w","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/3h7w_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/3h7w","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2009-04-28","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.65,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"018","identifier_category":"CCD","description":"2-nitro-N-(thiophen-3-ylmethyl)-4-(trifluoromethyl)aniline","chain_ids":["A"]}]}},{"summary":{"model_identifier":"4xt2","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/4xt2_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/4xt2","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2015-01-22","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.698,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["D","B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A","C"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"43L","identifier_category":"CCD","description":"(5S,7R)-5,7-bis(3-bromophenyl)-4,5,6,7-tetrahydrotetrazolo[1,5-a]pyrimidine","chain_ids":["A","C"]}]}},{"summary":{"model_identifier":"8ck3","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/8ck3_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/8ck3","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2023-02-14","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.707,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"DMS","identifier_category":"CCD","description":"DIMETHYL SULFOXIDE","chain_ids":["B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"UXU","identifier_category":"CCD","description":"(4~{S})-1-[3,5-bis(fluoranyl)phenyl]-5,5-bis(fluoranyl)-3-methylsulfonyl-4,6-dihydrocyclopenta[c]thiophen-4-ol","chain_ids":["A"]}]}},{"summary":{"model_identifier":"4gs9","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/4gs9_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/4gs9","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2012-08-27","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.72,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"PE8","identifier_category":"CCD","description":"3,6,9,12,15,18,21-HEPTAOXATRICOSANE-1,23-DIOL","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"0XB","identifier_category":"CCD","description":"N-(3-fluorophenyl)-4-nitro-2,1,3-benzoxadiazol-5-amine","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6i7q","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6i7q_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6i7q","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2018-11-17","sequence_identity":95.0,"uniprot_start":523,"uniprot_end":542,"coverage":0.023,"experimental_method":"X-RAY DIFFRACTION","resolution":1.798,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P40337","identifier_category":"UNIPROT","description":"von Hippel-Lindau disease tumor suppressor","chain_ids":["V"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q15370","identifier_category":"UNIPROT","description":"Elongin-B","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q2KII4","identifier_category":"UNIPROT","description":"Elongin-C","chain_ids":["C"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["H"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"GOL","identifier_category":"CCD","description":"GLYCEROL","chain_ids":["V"]}]}},{"summary":{"model_identifier":"7ujv","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/7ujv_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/7ujv","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2022-03-31","sequence_identity":100.0,"uniprot_start":523,"uniprot_end":542,"coverage":0.023,"experimental_method":"X-RAY DIFFRACTION","resolution":1.8,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q9GZT9","identifier_category":"UNIPROT","description":"Egl nine homolog 1","chain_ids":["B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"GOL","identifier_category":"CCD","description":"GLYCEROL","chain_ids":["B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"FE","identifier_category":"CCD","description":"FE (III) ION","chain_ids":["B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"OGA","identifier_category":"CCD","description":"N-OXALYLGLYCINE","chain_ids":["B"]}]}},{"summary":{"model_identifier":"6d09","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6d09_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6d09","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2018-04-10","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.85,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"FOJ","identifier_category":"CCD","description":"3-{[(3R)-4-(difluoromethyl)-2,2-difluoro-3-hydroxy-1,1-dioxo-2,3-dihydro-1H-1-benzothiophen-5-yl]oxy}-5-fluorobenzonitrile","chain_ids":["A"]}]}},{"summary":{"model_identifier":"5tbm","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/5tbm_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/5tbm","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2016-09-12","sequence_identity":97.0,"uniprot_start":237,"uniprot_end":348,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":1.85,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"79A","identifier_category":"CCD","description":"3-{[(1S)-2,2-difluoro-1-hydroxy-7-(methylsulfonyl)-2,3-dihydro-1H-inden-4-yl]oxy}-5-fluorobenzonitrile","chain_ids":["A"]}]}},{"summary":{"model_identifier":"5ufp","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/5ufp_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/5ufp","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2017-01-05","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":348,"coverage":0.126,"experimental_method":"X-RAY DIFFRACTION","resolution":1.9,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"86D","identifier_category":"CCD","description":"3-({(1S)-7-[(difluoromethyl)sulfonyl]-2,2-difluoro-1-hydroxy-2,3-dihydro-1H-inden-4-yl}oxy)-5-fluorobenzonitrile","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6x28","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6x28_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6x28","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2020-05-20","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":348,"coverage":0.126,"experimental_method":"X-RAY DIFFRACTION","resolution":1.92,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"ULG","identifier_category":"CCD","description":"(1R)-4-(3,5-difluorophenoxy)-7-(trifluoromethyl)-2,3-dihydro-1H-inden-1-ol","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6x37","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6x37_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6x37","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2020-05-21","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":348,"coverage":0.126,"experimental_method":"X-RAY DIFFRACTION","resolution":1.94,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"ULS","identifier_category":"CCD","description":"3-fluoro-5-{[(7R)-7-hydroxy-1-(trifluoromethyl)-6,7-dihydro-5H-cyclopenta[c]pyridin-4-yl]oxy}benzonitrile","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6i7r","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6i7r_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6i7r","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2018-11-17","sequence_identity":95.0,"uniprot_start":523,"uniprot_end":542,"coverage":0.023,"experimental_method":"X-RAY DIFFRACTION","resolution":1.949,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P40337","identifier_category":"UNIPROT","description":"von Hippel-Lindau disease tumor suppressor","chain_ids":["V"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q15369","identifier_category":"UNIPROT","description":"Elongin-C","chain_ids":["C"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q15370","identifier_category":"UNIPROT","description":"Elongin-B","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["H"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"FMT","identifier_category":"CCD","description":"FORMIC ACID","chain_ids":["V"]}]}},{"summary":{"model_identifier":"6x2h","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6x2h_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6x2h","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2020-05-20","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":348,"coverage":0.126,"experimental_method":"X-RAY DIFFRACTION","resolution":2.0,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"ULD","identifier_category":"CCD","description":"cis-3-({(1S)-7-[dihydroxy(trifluoromethyl)-lambda~4~-sulfanyl]-2,2-difluoro-1-hydroxy-2,3-dihydro-1H-inden-4-yl}oxy)cyclobutane-1-carbonitrile","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6x3d","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6x3d_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6x3d","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2020-05-21","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":348,"coverage":0.126,"experimental_method":"X-RAY DIFFRACTION","resolution":2.0,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"ULM","identifier_category":"CCD","description":"(6R,7S)-4-[(3,3-difluorocyclobutyl)oxy]-6-fluoro-1-(trifluoromethyl)-6,7-dihydro-5H-cyclopenta[c]pyridin-7-ol","chain_ids":["A"]}]}},{"summary":{"model_identifier":"6bvb","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/6bvb_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/6bvb","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2017-12-12","sequence_identity":100.0,"uniprot_start":523,"uniprot_end":540,"coverage":0.021,"experimental_method":"X-RAY DIFFRACTION","resolution":2.002,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P40337","identifier_category":"UNIPROT","description":"von Hippel-Lindau disease tumor suppressor","chain_ids":["V"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q15369","identifier_category":"UNIPROT","description":"Elongin-C","chain_ids":["C"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q15370","identifier_category":"UNIPROT","description":"Elongin-B","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Hypoxia-Inducible Factor 2 alpha","chain_ids":["H"]}]}},{"summary":{"model_identifier":"8ck4","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/8ck4_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/8ck4","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2023-02-14","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":2.29,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"UY3","identifier_category":"CCD","description":"(4~{S})-1-[3,5-bis(fluoranyl)phenyl]-5,5-bis(fluoranyl)-3-methylsulfonyl-6,7-dihydro-4~{H}-2-benzothiophen-4-ol","chain_ids":["A"]}]}},{"summary":{"model_identifier":"8ck8","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/8ck8_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/8ck8","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2023-02-14","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":2.302,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"UYF","identifier_category":"CCD","description":"(4~{S})-1-cyclohexyloxy-5,5-bis(fluoranyl)-3-methylsulfonyl-4,6-dihydrocyclopenta[c]thiophen-4-ol","chain_ids":["A"]}]}},{"summary":{"model_identifier":"4pky","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/4pky_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/4pky","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2014-05-15","sequence_identity":97.0,"uniprot_start":239,"uniprot_end":350,"coverage":0.129,"experimental_method":"X-RAY DIFFRACTION","resolution":3.2,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["A","D"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["G"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q9JJ11","identifier_category":"UNIPROT","description":"Transforming acidic coiled-coil-containing protein 3","chain_ids":["E","F","C","B"]},{"entity_type":"NON-POLYMER","entity_poly_type":null,"identifier":"SO4","identifier_category":"CCD","description":"SULFATE ION","chain_ids":["B"]}]}},{"summary":{"model_identifier":"1p97","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/1p97_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/1p97","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2003-05-09","sequence_identity":100.0,"uniprot_start":240,"uniprot_end":350,"coverage":0.128,"experimental_method":"SOLUTION NMR","resolution":null,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain protein 1","chain_ids":["A"]}]}},{"summary":{"model_identifier":"5kiz","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/5kiz_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/5kiz","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2016-06-17","sequence_identity":94.0,"uniprot_start":239,"uniprot_end":349,"coverage":0.128,"experimental_method":"SOLUTION NMR","resolution":null,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]}]}},{"summary":{"model_identifier":"2a24","model_category":"EXPERIMENTALLY DETERMINED","model_url":"https://www.ebi.ac.uk/pdbe/static/entry/2a24_updated.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://www.ebi.ac.uk/pdbe/entry/pdb/2a24","provider":"PDBe","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2005-06-21","sequence_identity":100.0,"uniprot_start":242,"uniprot_end":348,"coverage":0.123,"experimental_method":"SOLUTION NMR","resolution":null,"confidence_type":null,"confidence_version":null,"confidence_avg_local_score":null,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"P27540","identifier_category":"UNIPROT","description":"Aryl hydrocarbon receptor nuclear translocator","chain_ids":["B"]},{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain protein 1","chain_ids":["A"]}]}},{"summary":{"model_identifier":"Q99814_8-359:4zpk.1.B","model_category":"TEMPLATE-BASED","model_url":"https://swissmodel.expasy.org/3d-beacons/uniprot/Q99814.pdb?range=8-359&template=4zpk.1.B&provider=swissmodel","model_format":"PDB","model_type":"ATOMIC","model_page_url":"https://swissmodel.expasy.org/repository/uniprot/Q99814?range=8-359&template=4zpk.1.B","provider":"SWISS-MODEL","created":"2023-10-21","sequence_identity":1.0,"uniprot_start":8,"uniprot_end":359,"coverage":0.405,"confidence_type":"QMEANDisCo","confidence_version":"4.3.1","confidence_avg_local_score":0.676,"oligomeric_state":"MONOMER","entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"model based on template 4zpk.1.B: Endothelial PAS domain-containing protein 1","chain_ids":["B"]}]}},{"summary":{"model_identifier":"Q99814_26-342:7w80.1.A","model_category":"TEMPLATE-BASED","model_url":"https://swissmodel.expasy.org/3d-beacons/uniprot/Q99814.pdb?range=26-342&template=7w80.1.A&provider=swissmodel","model_format":"PDB","model_type":"ATOMIC","model_page_url":"https://swissmodel.expasy.org/repository/uniprot/Q99814?range=26-342&template=7w80.1.A","provider":"SWISS-MODEL","created":"2023-10-21","sequence_identity":1.0,"uniprot_start":26,"uniprot_end":342,"coverage":0.364,"confidence_type":"QMEANDisCo","confidence_version":"4.3.1","confidence_avg_local_score":0.586,"oligomeric_state":"MONOMER","entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"model based on template 7w80.1.A: Aryl hydrocarbon receptor nuclear translocator","chain_ids":["A"]}]}},{"summary":{"model_identifier":"AF-Q99814-F1","model_category":"AB-INITIO","model_url":"https://alphafold.ebi.ac.uk/files/AF-Q99814-F1-model_v4.cif","model_format":"MMCIF","model_type":null,"model_page_url":"https://alphafold.ebi.ac.uk/entry/Q99814","provider":"AlphaFold DB","number_of_conformers":null,"ensemble_sample_url":null,"ensemble_sample_format":null,"created":"2022-06-01","sequence_identity":1.0,"uniprot_start":1,"uniprot_end":870,"coverage":1.0,"experimental_method":null,"resolution":null,"confidence_type":"pLDDT","confidence_version":null,"confidence_avg_local_score":58.6,"oligomeric_state":null,"preferred_assembly_id":null,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]}]}},{"summary":{"model_identifier":"Q99814","model_category":"TEMPLATE-BASED","model_url":"https://alphafill.eu/v1/aff/Q99814","model_format":"MMCIF","model_page_url":"https://alphafill.eu/model?id=Q99814","provider":"AlphaFill","created":"2022-05-07","sequence_identity":1.0,"uniprot_start":1,"uniprot_end":870,"coverage":1.0,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]},{"entity_type":"NON-POLYMER","description":"PROFLAVIN","chain_ids":["B","C"]},{"entity_type":"NON-POLYMER","description":"ERBIUM (III) ION","chain_ids":["D","E","F","G","H","I","J","K"]}]}},{"summary":{"model_identifier":"CHS.29392.1","model_category":"AB-INITIO","model_url":"https://storage.googleapis.com/isoform.io/pdb/CHS.29392.1.pdb","model_format":"PDB","provider":"isoform.io","created":"2022-06-05","sequence_identity":1.0,"uniprot_start":1,"uniprot_end":870,"coverage":1.0,"entities":[{"entity_type":"POLYMER","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A"]}]}},{"summary":{"model_identifier":"Q99814_V1_5","model_category":"AB-INITIO","model_url":"https://shmoo.weizmann.ac.il/elevy/HomAtlas/Q99814_V1_5.pdb","model_format":"PDB","model_type":"ATOMIC","provider":"levylab","created":"2023-09-14","sequence_identity":1.0,"uniprot_start":1,"uniprot_end":870,"coverage":1.0,"confidence_type":"pLDDT","confidence_version":"AlphaFold2","confidence_avg_local_score":50.9166,"oligomeric_state":"HOMODIMER","oligomeric_state_confidence":0.6276,"entities":[{"entity_type":"POLYMER","entity_poly_type":"POLYPEPTIDE(L)","identifier":"Q99814","identifier_category":"UNIPROT","description":"Endothelial PAS domain-containing protein 1","chain_ids":["A","B"]}]}}]}
\ No newline at end of file
diff --git a/test/jalview/fts/threedbeacons/q99814_tdb_pdbfts_query_resp.txt b/test/jalview/fts/threedbeacons/q99814_tdb_pdbfts_query_resp.txt
new file mode 100644 (file)
index 0000000..a69d63a
--- /dev/null
@@ -0,0 +1,354 @@
+{
+  "responseHeader":{
+    "status":0,
+    "QTime":0,
+    "params":{
+      "q":"(4gs9 OR 6bvb OR 8ck8 OR 8ck3 OR 6x3d OR 8ck4 OR 6x28 OR 6i7r OR 3h82 OR 6i7q OR 6x21 OR 4xt2 OR 5kiz OR 7q5v OR 6x2h OR 7q5x OR 3f1n OR 3f1o OR 2a24 OR 3f1p OR 1p97 OR 4ghi OR 3h7w OR 6d09 OR 6czw OR 7ujv OR 5tbm OR 5ufp OR 4pky OR 6d0b OR 6d0c OR 6x37) AND molecule_sequence:['' TO *] AND status:REL",
+      "fl":"pdb_id,title,experimental_method,resolution",
+      "start":"0",
+      "sort":"",
+      "rows":"500",
+      "wt":"json"}},
+  "response":{"numFound":69,"start":0,"docs":[
+      {
+        "experimental_method":["Solution NMR"],
+        "pdb_id":"1p97",
+        "title":"NMR structure of the C-terminal PAS domain of HIF2a"},
+      {
+        "experimental_method":["Solution NMR"],
+        "pdb_id":"5kiz",
+        "title":"Solution Structure of a repacked version of HIF-2 alpha PAS-B"},
+      {
+        "experimental_method":["Solution NMR"],
+        "pdb_id":"2a24",
+        "title":"HADDOCK Structure of HIF-2a/ARNT PAS-B Heterodimer"},
+      {
+        "experimental_method":["Solution NMR"],
+        "pdb_id":"2a24",
+        "title":"HADDOCK Structure of HIF-2a/ARNT PAS-B Heterodimer"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x28",
+        "resolution":1.92,
+        "title":"Crystal structure of PT2243 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x2h",
+        "resolution":2.0,
+        "title":"Crystal structure of PT2863 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6d0c",
+        "resolution":1.5,
+        "title":"Crystal structure of HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6d0c",
+        "resolution":1.5,
+        "title":"Crystal structure of HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x28",
+        "resolution":1.92,
+        "title":"Crystal structure of PT2243 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x3d",
+        "resolution":2.0,
+        "title":"Crystal structure of PT3388 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x3d",
+        "resolution":2.0,
+        "title":"Crystal structure of PT3388 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x37",
+        "resolution":1.94,
+        "title":"Crystal structure of PT3245 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x37",
+        "resolution":1.94,
+        "title":"Crystal structure of PT3245 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x21",
+        "resolution":1.54,
+        "title":"Crystal structure of PT1673 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x21",
+        "resolution":1.54,
+        "title":"Crystal structure of PT1673 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6x2h",
+        "resolution":2.0,
+        "title":"Crystal structure of PT2863 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6d0b",
+        "resolution":1.6,
+        "title":"Crystal structure of PT1614 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6d09",
+        "resolution":1.85,
+        "title":"Crystal structure of PT2440 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6czw",
+        "resolution":1.6,
+        "title":"Crystal structure of PT1940 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"8ck8",
+        "resolution":2.302,
+        "title":"STRUCTURE OF HIF2A-ARNT HETERODIMER IN COMPLEX WITH (S)-1-Cyclohexyloxy-5,5-difluoro-3-methanesulfonyl-5,6-dihydro-4H-cyclopenta[c]thiophen-4-ol"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"8ck4",
+        "resolution":2.29,
+        "title":"STRUCTURE OF HIF2A-ARNT HETERODIMER IN COMPLEX WITH (4S)-1-(3,5-difluorophenyl)-5,5-difluoro-3-methanesulfonyl-4,5,6,7-tetrahydro-2-benzothiophen-4-ol"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"8ck4",
+        "resolution":2.29,
+        "title":"STRUCTURE OF HIF2A-ARNT HETERODIMER IN COMPLEX WITH (4S)-1-(3,5-difluorophenyl)-5,5-difluoro-3-methanesulfonyl-4,5,6,7-tetrahydro-2-benzothiophen-4-ol"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"8ck8",
+        "resolution":2.302,
+        "title":"STRUCTURE OF HIF2A-ARNT HETERODIMER IN COMPLEX WITH (S)-1-Cyclohexyloxy-5,5-difluoro-3-methanesulfonyl-5,6-dihydro-4H-cyclopenta[c]thiophen-4-ol"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4xt2",
+        "resolution":1.698,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains in complex with a tetrazole-containing antagonist"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3h82",
+        "resolution":1.5,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains with the artificial ligand THS020"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3h7w",
+        "resolution":1.65,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains with the artificial ligand THS017"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3f1p",
+        "resolution":1.17,
+        "title":"Crystal structure of a high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3f1p",
+        "resolution":1.17,
+        "title":"Crystal structure of a high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6d0b",
+        "resolution":1.6,
+        "title":"Crystal structure of PT1614 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6d09",
+        "resolution":1.85,
+        "title":"Crystal structure of PT2440 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6czw",
+        "resolution":1.6,
+        "title":"Crystal structure of PT1940 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4xt2",
+        "resolution":1.698,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains in complex with a tetrazole-containing antagonist"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"5tbm",
+        "resolution":1.85,
+        "title":"Crystal structure of PT2385 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3h82",
+        "resolution":1.5,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains with the artificial ligand THS020"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4gs9",
+        "resolution":1.72,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains in complex with an inactive benzoxadiazole antagonist"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4ghi",
+        "resolution":1.5,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains in complex with a benzoxadiazole antagonist"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4ghi",
+        "resolution":1.5,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains in complex with a benzoxadiazole antagonist"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3h7w",
+        "resolution":1.65,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains with the artificial ligand THS017"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3f1n",
+        "resolution":1.479,
+        "title":"Crystal structure of a high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains, with internally bound ethylene glycol."},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3f1n",
+        "resolution":1.479,
+        "title":"Crystal structure of a high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains, with internally bound ethylene glycol."},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3f1o",
+        "resolution":1.598,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains, with an internally-bound artificial ligand"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"3f1o",
+        "resolution":1.598,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains, with an internally-bound artificial ligand"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"7ujv",
+        "resolution":1.8,
+        "title":"Structure of PHD2 in complex with HIF2a-CODD"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"8ck3",
+        "resolution":1.707,
+        "title":"STRUCTURE OF HIF2A-ARNT HETERODIMER IN COMPLEX WITH (S)-1-(3,5-Difluoro-phenyl)-5,5-difluoro-3-methanesulfonyl-5,6-dihydro-4H-cyclopenta[c]thiophen-4-ol"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"8ck3",
+        "resolution":1.707,
+        "title":"STRUCTURE OF HIF2A-ARNT HETERODIMER IN COMPLEX WITH (S)-1-(3,5-Difluoro-phenyl)-5,5-difluoro-3-methanesulfonyl-5,6-dihydro-4H-cyclopenta[c]thiophen-4-ol"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4gs9",
+        "resolution":1.72,
+        "title":"Crystal structure of the high affinity heterodimer of HIF2 alpha and ARNT C-terminal PAS domains in complex with an inactive benzoxadiazole antagonist"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"5tbm",
+        "resolution":1.85,
+        "title":"Crystal structure of PT2385 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"5ufp",
+        "resolution":1.9,
+        "title":"Crystal structure of PT2399 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"5ufp",
+        "resolution":1.9,
+        "title":"Crystal structure of PT2399 bound to HIF2a-B*:ARNT-B* complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4pky",
+        "resolution":3.2,
+        "title":"ARNT/HIF transcription factor/coactivator complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6bvb",
+        "resolution":2.002,
+        "title":"Crystal structure of HIF-2alpha-pVHL-elongin B-elongin C"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4pky",
+        "resolution":3.2,
+        "title":"ARNT/HIF transcription factor/coactivator complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"4pky",
+        "resolution":3.2,
+        "title":"ARNT/HIF transcription factor/coactivator complex"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7q",
+        "resolution":1.798,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the C2221 form"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7r",
+        "resolution":1.949,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the P43212 form"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"7ujv",
+        "resolution":1.8,
+        "title":"Structure of PHD2 in complex with HIF2a-CODD"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"7q5v",
+        "resolution":1.17,
+        "title":"HIF PROLYL HYDROXYLASE 2 (PHD2/EGLN1) IN COMPLEX WITH N-OXALYLGLYCINE (NOG) AND HIF-2 ALPHA CODD (523-542)"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"7q5x",
+        "resolution":1.21,
+        "title":"HIF PROLYL HYDROXYLASE 2 (PHD2/EGLN1) IN COMPLEX WITH 2-OXOGLUTARATE (2OG) AND HIF-2 ALPHA CODD (523-542)"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"7q5v",
+        "resolution":1.17,
+        "title":"HIF PROLYL HYDROXYLASE 2 (PHD2/EGLN1) IN COMPLEX WITH N-OXALYLGLYCINE (NOG) AND HIF-2 ALPHA CODD (523-542)"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6bvb",
+        "resolution":2.002,
+        "title":"Crystal structure of HIF-2alpha-pVHL-elongin B-elongin C"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"7q5x",
+        "resolution":1.21,
+        "title":"HIF PROLYL HYDROXYLASE 2 (PHD2/EGLN1) IN COMPLEX WITH 2-OXOGLUTARATE (2OG) AND HIF-2 ALPHA CODD (523-542)"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7r",
+        "resolution":1.949,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the P43212 form"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7q",
+        "resolution":1.798,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the C2221 form"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6bvb",
+        "resolution":2.002,
+        "title":"Crystal structure of HIF-2alpha-pVHL-elongin B-elongin C"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7r",
+        "resolution":1.949,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the P43212 form"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7q",
+        "resolution":1.798,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the C2221 form"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6bvb",
+        "resolution":2.002,
+        "title":"Crystal structure of HIF-2alpha-pVHL-elongin B-elongin C"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7q",
+        "resolution":1.798,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the C2221 form"},
+      {
+        "experimental_method":["X-ray diffraction"],
+        "pdb_id":"6i7r",
+        "resolution":1.949,
+        "title":"Structure of pVHL-elongin B-elongin C (VCB) in complex with hydroxylated-HIF-2alpha (523-542) in the P43212 form"}]
+  }}
index 892cdef..a39257c 100644 (file)
@@ -23,6 +23,7 @@ package jalview.gui;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotEquals;
 import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
 
 import java.awt.Container;
 import java.awt.Dimension;
@@ -299,7 +300,30 @@ public class AlignmentPanelTest
     Cache.setProperty("FIGURE_AUTOIDWIDTH", Boolean.TRUE.toString());
     assertEquals(115, af.alignPanel.getVisibleIdWidth(false));
   }
+  @Test(groups = { "Functional", "Not-bamboo" })
+  public void testresetIdWidth()
+  {
+    /*
+     * width for onscreen rendering is IDPanel width
+     */
+    int w = af.alignPanel.getVisibleIdWidth(true);
+    assertEquals(w, af.alignPanel.getIdPanel().getWidth());
+    assertEquals(w, 115);
+
+    // manually adjust 
+    af.viewport.setIdWidth(200);
+    w = af.alignPanel.calculateIdWidth().width;
+    assertTrue(af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
+    assertEquals(w, af.alignPanel.getIdPanel().getWidth());
 
+    af.viewport.setIdWidth(-1);
+    af.alignPanel.getIdPanel().getIdCanvas().setManuallyAdjusted(false);
+    w = af.alignPanel.calculateIdWidth().width;
+    
+    assertEquals(w, af.alignPanel.getIdPanel().getWidth());
+
+    assertNotEquals(w,115);
+  }
   @Test(groups = "Functional")
   public void testSetOverviewTitle()
   {
index 5bf3507..f8fdb63 100644 (file)
@@ -135,7 +135,7 @@ public class DesktopTests
     {
       Assert.fail("Unexpected exception " + x);
     }
-    AlignFrame[] alfs = Desktop.getAlignFrames();
+    AlignFrame[] alfs = Desktop.getDesktopAlignFrames();
     Assert.assertEquals("Expect just 2 alignment frames", 2, alfs.length);
     // internal paste should yield a new alignment window with shared dataset
     AlignmentI dataset = internalSource.getViewport().getAlignment()
index 5ef693a..7cc4cc1 100644 (file)
@@ -42,7 +42,10 @@ import jalview.datamodel.features.FeatureMatcher;
 import jalview.datamodel.features.FeatureMatcherSet;
 import jalview.datamodel.features.FeatureMatcherSetI;
 import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
+import jalview.io.FileFormatI;
 import jalview.io.FileLoader;
+import jalview.io.IdentifyFile;
 import jalview.schemes.FeatureColour;
 import jalview.schemes.FeatureColourTest;
 import jalview.util.matcher.Condition;
@@ -278,4 +281,13 @@ public class FeatureSettingsTest
             "<html>By Score (&gt; 4.0)<br>" + simpleTooltip
                     + "</br></html>");
   }
+  String fsfile="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><ns2:JalviewUserColours schemeName=\"Sequence Features\" xmlns:ns2=\"www.jalview.org/colours\">",fsfile2="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<ns2:JalviewUserColours schemeName=\"Sequence Features\" xmlns:ns2=\"www.jalview.org/colours\">";
+  @Test(groups="Functional")
+  public void testIdentifyFeatureSettingsFile() throws Exception
+  {
+    FileFormatI type = new IdentifyFile().identify(fsfile, DataSourceType.PASTE);
+    assertTrue(FileFormat.FeatureSettings==type,"Feature settings file was identified as "+type);
+    type = new IdentifyFile().identify(fsfile2, DataSourceType.PASTE);
+    assertTrue(FileFormat.FeatureSettings==type,"Feature settings file with newline was identified as "+type);
+  }
 }
index 1523741..20e72b9 100644 (file)
@@ -64,6 +64,10 @@ public class ScalePanelTest
     ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
 
     MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, 4, 0, 1, false);
+    
+    // check the bounded lookup is not returning negatives
+    assertEquals(alignFrame.alignPanel.getSeqPanel().findAlignmentColumn(mouse),0);
+    
     scalePanel.mousePressed(mouse);
     scalePanel.mouseDragged(mouse);
 
index 4e8758b..d47df46 100644 (file)
@@ -789,7 +789,7 @@ public class SeqPanelTest
   }
 
   @Test(groups = "Functional")
-  public void testFindColumn_wrapped()
+  public void testFindColumn_and_FindAlignmentColumn_wrapped()
   {
     Cache.applicationProperties.setProperty("WRAP_ALIGNMENT", "true");
     AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(
@@ -811,6 +811,7 @@ public class SeqPanelTest
     MouseEvent evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0,
             x, 0, 0, 0, 0, false, 0);
     assertEquals(testee.findColumn(evt), 0);
+    assertEquals(testee.findAlignmentColumn(evt), 0);
 
     /*
      * not quite one charWidth across
@@ -819,6 +820,7 @@ public class SeqPanelTest
     evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0,
             0, false, 0);
     assertEquals(testee.findColumn(evt), 0);
+    assertEquals(testee.findAlignmentColumn(evt), 0);
 
     /*
      * one charWidth across
@@ -827,6 +829,7 @@ public class SeqPanelTest
     evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0,
             0, false, 0);
     assertEquals(testee.findColumn(evt), 1);
+    assertEquals(testee.findAlignmentColumn(evt), 1);
 
     /*
      * x over scale left (before drawn columns) results in -1
@@ -840,11 +843,15 @@ public class SeqPanelTest
     evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0,
             0, false, 0);
     assertEquals(testee.findColumn(evt), -1);
+    assertEquals(testee.findAlignmentColumn(evt), 0);
+
 
     x = labelWidth;
     evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0,
             0, false, 0);
     assertEquals(testee.findColumn(evt), 0);
+    assertEquals(testee.findAlignmentColumn(evt), 0);
+
 
     /*
      * x over right edge of last residue (including scale left)
@@ -855,6 +862,8 @@ public class SeqPanelTest
     evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0,
             0, false, 0);
     assertEquals(testee.findColumn(evt), residuesWide - 1);
+    assertEquals(testee.findAlignmentColumn(evt), residuesWide-1);
+
 
     /*
      * x over scale right (beyond drawn columns) results in -1
@@ -869,7 +878,11 @@ public class SeqPanelTest
     x += 1; // just over left edge of scale right
     evt = new MouseEvent(testee, MouseEvent.MOUSE_MOVED, 0L, 0, x, 0, 0, 0,
             0, false, 0);
+    // on scale
     assertEquals(testee.findColumn(evt), -1);
+    // return right-most column visible
+    assertEquals(testee.findAlignmentColumn(evt), residuesWide2-1);
+
 
     // todo add startRes offset, hidden columns
 
index c21add1..4579b9c 100644 (file)
@@ -22,7 +22,9 @@ package jalview.gui.structurechooser;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Vector;
 
@@ -39,8 +41,13 @@ import jalview.datamodel.DBRefSource;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
+import jalview.fts.api.FTSData;
+import jalview.fts.api.FTSDataColumnI;
+import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
 import jalview.fts.service.pdb.PDBFTSRestClientTest;
+import jalview.fts.service.threedbeacons.TDB_FTSData;
+import jalview.fts.service.threedbeacons.TDBeaconsFTSRestClient;
 import jalview.fts.threedbeacons.TDBeaconsFTSRestClientTest;
 import jalview.gui.JvOptionPane;
 import jalview.gui.StructureChooser;
@@ -60,6 +67,8 @@ public class StructureChooserQuerySourceTest
 
   private Sequence upSeq_fer1_maize;
 
+  private Sequence upSeq_epas1_human;
+
   // same set up as for structurechooser test
 
   @BeforeMethod(alwaysRun = true)
@@ -237,7 +246,24 @@ public class StructureChooserQuerySourceTest
     upSeq_fer1_maize
             .addDBRef(new DBRefEntry("UNIPROT", "0", "P27787", null, true));
     upSeq_fer1_maize.createDatasetSequence();
-
+    
+    upSeq_epas1_human = new Sequence("EPAS1_HUMAN","MTADKEKKRSSSERRKEKSRDAARCRRSKETEVFYELAHELPLPHSVSSHLDKASIMRLAISFLRTHKLLSS\n"
+            + "VCSENESEAEADQQMDNLYLKALEGFIAVVTQDGDMIFLSENISKFMGLTQVELTGHSIFDFTHPCDHEEIR\n"
+            + "ENLSLKNGSGFGKKSKDMSTERDFFMRMKCTVTNRGRTVNLKSATWKVLHCTGQVKVYNNCPPHNSLCGYKE\n"
+            + "PLLSCLIIMCEPIQHPSHMDIPLDSKTFLSRHSMDMKFTYCDDRITELIGYHPEELLGRSAYEFYHALDSEN\n"
+            + "MTKSHQNLCTKGQVVSGQYRMLAKHGGYVWLETQGTVIYNPRNLQPQCIMCVNYVLSEIEKNDVVFSMDQTE\n"
+            + "SLFKPHLMAMNSIFDSSGKGAVSEKSNFLFTKLKEEPEELAQLAPTPGDAIISLDFGNQNFEESSAYGKAIL\n"
+            + "PPSQPWATELRSHSTQSEAGSLPAFTVPQAAAPGSTTPSATSSSSSCSTPNSPEDYYTSLDNDLKIEVIEKL\n"
+            + "FAMDTEAKDQCSTQTDFNELDLETLAPYIPMDGEDFQLSPICPEERLLAENPQSTPQHCFSAMTNIFQPLAP\n"
+            + "VAPHSPFLLDKFQQQLESKKTEPEHRPMSSIFFDAGSKASLPPCCGQASTPLSSMGGRSNTQWPPDPPLHFG\n"
+            + "PTKWAVGDQRTEFLGAAPLGPPVSPPHVSTFKTRSAKGFGARGPDVLSPAMVALSNKLKLKRQLEYEEQAFQ\n"
+            + "DLSGGDPPGGSTSHLMWKRMKNLRGGSCPLMPDKPLSANVPNDKFTQNPMRGLGHPLRHLPLPQPPSAISPG\n"
+            + "ENSKSRFPPQCYATQYQDYSLSSAHKVSGMASRLLGPSFESYLLPELTRYDCEVNVPVLGSSTLLQGGDLLR\n"
+            + "ALDQAT");
+    upSeq_epas1_human.setDescription("Endothelial PAS domain-containing protein 1");
+    upSeq_epas1_human
+    .addDBRef(new DBRefEntry("UNIPROT", "0", "Q99814", null, true));
+    upSeq_epas1_human.createDatasetSequence();
   }
 
   @AfterMethod(alwaysRun = true)
@@ -247,6 +273,7 @@ public class StructureChooserQuerySourceTest
     upSeq = null;
     upSeq_r1ab = null;
     upSeq_fer1_maize = null;
+    upSeq_epas1_human=null;
   }
 
   @SuppressWarnings("deprecation")
@@ -438,6 +465,31 @@ public class StructureChooserQuerySourceTest
               pdbResponse);
       assertEquals(upResponse.getNumberOfItemsFound(),
               joinedResp.getNumberOfItemsFound());
+      
+      // Special data test case
+      if (testUpSeq.getDisplayId(true)
+              .equals(upSeq_epas1_human.getDisplayId(true)))
+      {
+
+        TDBResultAnalyser tDBResultAnalyz = new TDBResultAnalyser(testUpSeq,
+                joinedResp.getSearchSummary(), tdbquery.lastTdbRequest,
+                ThreeDBStructureChooserQuerySource.FILTER_FIRST_BEST_COVERAGE,
+                tdbquery.remove_prefix(
+                        ThreeDBStructureChooserQuerySource.FILTER_FIRST_BEST_COVERAGE));
+        List<FTSData> ordered = tDBResultAnalyz.getFilteredResponse();
+        List<FTSData> selected = tDBResultAnalyz.selectStructures(ordered);
+        assertEquals(((TDB_FTSData) selected.get(0)).getProvider(),
+                "AlphaFold DB");
+        // to be sufficient, should also
+        // test that adjacent ordered structure in ordered is levyLab
+        // TDB_FTSData first = (TDB_FTSData) ordered.get(0),
+        // second = (TDB_FTSData) ordered.get(1),
+        // third = (TDB_FTSData) ordered.get(2);
+        // Assert.assertEquals("pLDDT", first.getConfidenceScoreType());
+        // Assert.assertTrue(first.getConfidenceScoreType()
+        // .equals(second.getConfidenceScoreType())); // pLDDT first and
+        // // second
+      }
 
     } catch (
 
@@ -458,7 +510,7 @@ public class StructureChooserQuerySourceTest
   {
     setUp();
     return new Object[][] { { upSeq }, { upSeq_insulin }, { upSeq_r1ab },
-        { upSeq_fer1_maize } };
+        { upSeq_fer1_maize },{upSeq_epas1_human} };
   }
 
   @Test(groups = { "Functional" })
@@ -481,5 +533,5 @@ public class StructureChooserQuerySourceTest
     name = "abcde12[345a]fg";
     AssertJUnit.assertEquals("abcde12345afg",
             PDBStructureChooserQuerySource.sanitizeSeqName(name));
-  }
+  }  
 }
index c46477a..34cc17f 100644 (file)
@@ -186,7 +186,7 @@ public class CrossRef2xmlTests extends Jalview2xmlBase
         SequenceFetcher sf = new SequenceFetcher(Desktop.instance,
                 forSource, forAccession);
         sf.run();
-        AlignFrame[] afs = Desktop.getAlignFrames();
+        AlignFrame[] afs = Desktop.getDesktopAlignFrames();
         if (afs.length == 0)
         {
           failedDBRetr.add("Didn't retrieve " + first);
index bb5d1c4..9391eb1 100644 (file)
@@ -432,8 +432,7 @@ public class SequenceAnnotationReportTest
     assertTrue(report.startsWith("<i>\n" + "<br/>\n" + "UNIPROT P30410,\n"
             + " P30411,\n" + " P30412,\n" + " P30413,...<br/>\n"
             + "PDB0 3iu1<br/>\n" + "PDB1 3iu1<br/>"));
-    assertTrue(report.endsWith("PDB5 3iu1<br/>\n" + "PDB6 3iu1<br/>\n"
-            + "PDB7 3iu1<br/>\n" + "PDB8,...<br/>\n"
+    assertTrue(report.endsWith("PDB3 3iu1<br/>\n"+"PDB4,...<br/>\n"
             + "(Output Sequence Details to list all database references)\n"
             + "</i>"));
   }
index 5f9af25..ce34044 100644 (file)
@@ -84,24 +84,28 @@ public class JvCacheableInputBoxTest
     cacheBox.addItem(testInput);
     cacheBox.setSelectedItem(testInput);
     cacheBox.updateCache();
-
-    try
+    boolean done[]=new boolean[] { false };
+    // this event gets processed after updateCache's update event on the swing
+    // thread
+    SwingUtilities.invokeLater(() -> {
+        done[0]=true;
+    });
+    long t=0;
+    while (!done[0] && t<200)
     {
-      // fix for JAL-4153
-      // This delay is to let cacheBox.updateCache() finish updating the cache
-      SwingUtilities.invokeAndWait(() -> {
-        try
-        {
-          Thread.sleep(1);
+      try {
+        Thread.sleep(7);
+        t++;
         } catch (InterruptedException e)
         {
           e.printStackTrace();
         }
-      });
-    } catch (InvocationTargetException | InterruptedException e)
+    }
+    if (!done[0])
     {
-      e.printStackTrace();
+      Assert.fail("Giving up after 1.4s waiting for cache to be updated.");
     }
+    
     LinkedHashSet<String> foundCache = appCache
             .getAllCachedItemsFor(TEST_CACHE_KEY);
     Assert.assertTrue(foundCache.contains(testInput));
index c9532cc..ebd265a 100644 (file)
@@ -47,6 +47,7 @@ import org.testng.AssertJUnit;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import jalview.analysis.AlignmentUtils;
 import jalview.analysis.scoremodels.SimilarityParams;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
@@ -66,6 +67,7 @@ import jalview.datamodel.HiddenSequences;
 import jalview.datamodel.Mapping;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.PDBEntry.Type;
+import jalview.datamodel.Sequence;
 import jalview.datamodel.Sequence.DBModList;
 import jalview.datamodel.SequenceCollectionI;
 import jalview.datamodel.SequenceFeature;
@@ -100,6 +102,7 @@ import jalview.schemes.StrandColourScheme;
 import jalview.schemes.TCoffeeColourScheme;
 import jalview.structure.StructureImportSettings;
 import jalview.util.MapList;
+import jalview.util.Platform;
 import jalview.util.matcher.Condition;
 import jalview.viewmodel.AlignmentViewport;
 import jalview.viewmodel.seqfeatures.FeatureRendererModel;
@@ -287,12 +290,12 @@ public class Jalview2xmlTests extends Jalview2xmlBase
   @Test(groups = { "Functional" })
   public void gatherViewsHere() throws Exception
   {
-    int origCount = Desktop.getAlignFrames() == null ? 0
-            : Desktop.getAlignFrames().length;
+    int origCount = Desktop.getDesktopAlignFrames() == null ? 0
+            : Desktop.getDesktopAlignFrames().length;
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             "examples/exampleFile_2_7.jar", DataSourceType.FILE);
     assertNotNull(af, "Didn't read in the example file correctly.");
-    assertTrue(Desktop.getAlignFrames().length == 1 + origCount,
+    assertTrue(Desktop.getDesktopAlignFrames().length == 1 + origCount,
             "Didn't gather the views in the example file.");
 
   }
@@ -430,7 +433,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
 
     AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
             "examples/exampleFile_2_7.jar", DataSourceType.FILE);
-    Assert.assertEquals(Desktop.getAlignFrames().length, 1);
+    Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 1);
     String afid = af.getViewport().getSequenceSetId();
 
     // check FileLoader returned a reference to the one alignFrame that is
@@ -440,8 +443,8 @@ public class Jalview2xmlTests extends Jalview2xmlBase
 
     Desktop.explodeViews(af);
 
-    int oldviews = Desktop.getAlignFrames().length;
-    Assert.assertEquals(Desktop.getAlignFrames().length,
+    int oldviews = Desktop.getDesktopAlignFrames().length;
+    Assert.assertEquals(Desktop.getDesktopAlignFrames().length,
             Desktop.getAlignmentPanels(afid).length);
     File tfile = File.createTempFile("testStoreAndRecoverExpanded", ".jvp");
     try
@@ -455,14 +458,14 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the expanded view state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
     af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
             DataSourceType.FILE);
     Assert.assertNotNull(af);
-    Assert.assertEquals(Desktop.getAlignFrames().length,
+    Assert.assertEquals(Desktop.getDesktopAlignFrames().length,
             Desktop.getAlignmentPanels(
                     af.getViewport().getSequenceSetId()).length);
     Assert.assertEquals(Desktop
@@ -519,9 +522,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the expanded view state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
 
     af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
@@ -698,9 +701,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the expanded view state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
 
     af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
@@ -792,9 +795,9 @@ public class Jalview2xmlTests extends Jalview2xmlBase
       Assert.fail("Didn't save the state", e);
     }
     Desktop.instance.closeAll_actionPerformed(null);
-    if (Desktop.getAlignFrames() != null)
+    if (Desktop.getDesktopAlignFrames() != null)
     {
-      Assert.assertEquals(Desktop.getAlignFrames().length, 0);
+      Assert.assertEquals(Desktop.getDesktopAlignFrames().length, 0);
     }
 
     AlignFrame restoredFrame = new FileLoader().LoadFileWaitTillLoaded(
@@ -1217,7 +1220,7 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     assertNotNull(af);
 
     AlignmentI ds = null;
-    for (AlignFrame alignFrame : Desktop.getAlignFrames())
+    for (AlignFrame alignFrame : Desktop.getDesktopAlignFrames())
     {
       if (ds == null)
       {
@@ -1546,6 +1549,44 @@ public class Jalview2xmlTests extends Jalview2xmlBase
   }
 
   @Test(groups = { "Functional" })
+  public void testMatrixToFloatsAndBack()
+  {
+    int imax=2000;
+    int i=imax;
+    SequenceI sq = new Sequence("dummy","SEQ");
+    while (sq.getLength()<i)
+    {
+      sq.setSequence(sq.getSequenceAsString()+'Q');
+    }
+    float[][] paevals = new float[i][i];
+    for (i = imax - 1; i >= 0; i--)
+    {
+      for (int j = 0; j <= i; j++)
+      {
+        paevals[i][j] = ((i - j < 2)
+                || ((i > 1 && i < 5) && (j > 1 && i < 5))) ? 1 : 0f;
+        paevals[j][i] = -paevals[i][j];
+      }
+    }
+    PAEContactMatrix dummyMat = new PAEContactMatrix(sq, paevals);
+    String content = ContactMatrix.contactToFloatString(dummyMat);
+    Assert.assertTrue(content.contains("\t1.")); // at least one element must be
+                                                 // 1
+    float[][] vals = ContactMatrix.fromFloatStringToContacts(content,
+            sq.getLength(), sq.getLength());
+    assertEquals(vals[3][4], paevals[3][4]);
+    assertEquals(vals[4][3], paevals[4][3]);
+    
+    // test recovery
+    for (i=0;i<imax;i++)
+    {
+      for (int j=0;j<imax;j++)
+      {
+        assertEquals(vals[i][j],paevals[i][j]);
+      }
+    }
+  }
+  @Test(groups = { "Functional" })
   public void testPAEsaveRestore() throws Exception
   {
     Desktop.instance.closeAll_actionPerformed(null);
@@ -1646,6 +1687,120 @@ public class Jalview2xmlTests extends Jalview2xmlBase
     Assert.assertEquals(restoredMat.getGroups(), dummyMat.getGroups());
     Assert.assertEquals(restoredMat.hasTree(), dummyMat.hasTree());
     Assert.assertEquals(restoredMat.getNewick(), dummyMat.getNewick());
+
+    // verify no duplicate PAE matrix data when new view created and saved
+    
+    // add reference annotations to view first, then copy
+    AlignmentUtils.addReferenceAnnotationTo(newAl, newAl.getSequenceAt(0), newSeq.getAnnotation()[0],null);
+    
+    AlignmentViewPanel newview = af.newView("copy of PAE", true);
+    
+    // redundant asserts here check all is good with the new view firest...
+    AlignmentI newviewAl = newview.getAlignment();
+    SequenceI newviewSeq = newviewAl.getSequenceAt(0);
+    // check annotation of the expected type exists
+    Assert.assertEquals(newviewSeq.getAnnotation().length, 1);
+    Assert.assertEquals(newviewSeq.getAnnotation()[0].graph, paeCm.graph);
+    // check we have just one contact matrix mapping
+    Assert.assertEquals(newviewSeq.getContactMaps().size(), 1);
+    
+    // and can be found for the annotation on the sequence
+    ContactMatrixI newviewMat = newviewSeq
+            .getContactMatrixFor(newviewSeq.getAnnotation()[0]);
+    Assert.assertNotNull(newviewMat);
+
+    Assert.assertTrue(newviewMat == restoredMat);
+    
+    // save the two views and restore. Now look at visible annotation to check all views have shared refs.
+    
+    tfile = File.createTempFile("testStoreAndRecoverPAEmatrixTwoViews",
+            ".jvp");
+    new Jalview2XML(false).saveState(tfile);
+    Desktop.instance.closeAll_actionPerformed(null);
+
+    af = new FileLoader().LoadFileWaitTillLoaded(tfile.getAbsolutePath(),
+            DataSourceType.FILE);
+    newAl = af.getAlignPanels().get(0).getAlignment();
+    AlignmentAnnotation view1aa = newAl.getSequenceAt(0).getAnnotation()[0];
+
+    newviewAl = af.getAlignPanels().get(1).getAlignment();
+    AlignmentAnnotation view2aa = newviewAl.getSequenceAt(0).getAnnotation()[0];
+
+    // annotations are shared across alignment views - so should still have an identical pair of annotations.
+    Assert.assertTrue(view1aa==view2aa);
+    // identical annotations means identical contact matrix mappings
+    Assert.assertEquals(newAl.getDataset().getSequenceAt(0).getContactMaps().size(), 1);
+
+    // TODO Verify when distinct mappable PAEs are created, only one PAE dataset is actually held.
+    // Assert.assertTrue(view1aa!=view2aa);
+    // restoredMat = newAl.getContactMatrixFor(view1aa);
+    // newviewMat = newviewAl.getContactMatrixFor(view2aa);
+    // Assert.assertTrue(restoredMat!=newviewMat);
+    
+  }
+
+  @Test(groups = "Functional")
+  public void testStoreAndRestoreIDwidthAndAnnotationHeight() throws IOException
+  {
+    Desktop.instance.closeAll_actionPerformed(null);
+    final String SECONDVIEW = "With Diffferent IDwidth";
+    // create a new tempfile
+    File tempfile = File.createTempFile("jvIdWidthStoreRestore", "jvp");
+
+
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded("examples/exampleFile.jvp",
+              DataSourceType.FILE);
+      assertNotNull(af, "Didn't read in the example file correctly.");
+      // FIXME JAL-4281 test made platform dependent to pass, but probably shouldn't be platform dependent
+      assertEquals(af.alignPanel.getAlignViewport().getIdWidth(), Platform.isAMacAndNotJS() ? 144 : 138,
+              "Legacy project import should have fixed ID width");
+      assertTrue(af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
+      
+      
+      af.alignPanel.getAlignViewport().setIdWidth(100);
+      af.alignPanel.updateLayout();
+      assertTrue(af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
+      
+      Jalview2XML jv2xml = new jalview.project.Jalview2XML(false);
+      tempfile.delete();
+      jv2xml.saveState(tempfile);
+      assertTrue(jv2xml.errorMessage == null,
+              "Failed to save dummy project with PCA: test broken");
+      af = null;
+      // load again.
+      Desktop.instance.closeAll_actionPerformed(null);
+      af = new FileLoader().LoadFileWaitTillLoaded(
+              tempfile.getCanonicalPath(), DataSourceType.FILE);
+      assertTrue(af.alignPanel.getIdPanel().getIdCanvas()
+              .isManuallyAdjusted());
+      assertEquals(af.alignPanel.getAlignViewport().getIdWidth(), 100,
+              "New project exported and import should have adjusted ID width");
+
+      af.alignPanel.getAlignViewport().setIdWidth(100);
+      af.alignPanel.updateLayout();
+      assertTrue(af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
+      
+      // now make it autoadjusted
+      af.alignPanel.getAlignViewport().setIdWidth(-1);
+      af.alignPanel.getIdPanel().getIdCanvas().setManuallyAdjusted(false);
+      af.alignPanel.updateLayout();
+      assertFalse(af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
+      assertTrue(af.alignPanel.getAlignViewport().getIdWidth()>-1,
+              "New project exported and import should have adjusted ID width");
+      
+      jv2xml = new jalview.project.Jalview2XML(false);
+      tempfile.delete();
+      jv2xml.saveState(tempfile);
+      assertTrue(jv2xml.errorMessage == null,
+              "Failed to save dummy project with PCA: test broken");
+      af = null;
+      // load again.
+      Desktop.instance.closeAll_actionPerformed(null);
+      af = new FileLoader().LoadFileWaitTillLoaded(
+              tempfile.getCanonicalPath(), DataSourceType.FILE);
+      assertFalse(af.alignPanel.getIdPanel().getIdCanvas().isManuallyAdjusted());
+      assertTrue(af.alignPanel.getAlignViewport().getIdWidth()>-1,
+              "New project exported and import should have adjusted ID width");
   }
 
 }
index 53f98c3..0472317 100644 (file)
@@ -638,7 +638,7 @@ public class FeatureRendererTest
     /*
      * find the complement frames (ugly)
      */
-    AlignFrame[] frames = Desktop.getAlignFrames();
+    AlignFrame[] frames = Desktop.getDesktopAlignFrames();
     assertEquals(frames.length, 2);
     AlignViewport av1 = frames[0].getViewport();
     AlignViewport av2 = frames[1].getViewport();