Merge branch 'develop' into features/JAL-1759jmolUpdate
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 26 Jun 2015 13:37:19 +0000 (14:37 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 26 Jun 2015 13:37:19 +0000 (14:37 +0100)
Conflicts:
.classpath
src/jalview/appletgui/AlignFrame.java
test/jalview/io/NewickFileTests.java

213 files changed:
.classpath
.externalToolBuilders/Jalview Release indices [Builder].launch
.gitignore
.settings/org.eclipse.jdt.ui.prefs
build.xml
examples/testdata/exonerateoutput.fullgff [new file with mode: 0644]
examples/testdata/exonerateoutput.gff [new file with mode: 0644]
examples/testdata/exonerateseqs.fa [new file with mode: 0644]
examples/testdata/rna-alignment.xml [new file with mode: 0644]
examples/testdata/simplegff3.gff [new file with mode: 0644]
src/MCview/PDBfile.java
src/jalview/analysis/SequenceIdMatcher.java
src/jalview/api/AlignExportSettingI.java [new file with mode: 0644]
src/jalview/api/AlignViewControllerGuiI.java
src/jalview/api/AlignViewControllerI.java
src/jalview/api/AlignViewportI.java
src/jalview/api/FeatureRenderer.java
src/jalview/api/FeatureSettingsControllerI.java
src/jalview/appletgui/APopupMenu.java
src/jalview/appletgui/AlignFrame.java
src/jalview/appletgui/AlignViewport.java
src/jalview/appletgui/AnnotationColumnChooser.java
src/jalview/appletgui/CutAndPasteTransfer.java
src/jalview/appletgui/FeatureSettings.java
src/jalview/appletgui/IdCanvas.java
src/jalview/appletgui/OverviewPanel.java
src/jalview/bin/JalviewLite.java
src/jalview/bin/JalviewLiteURLRetrieve.java
src/jalview/binding/Alignment.java
src/jalview/binding/Annotation.java
src/jalview/binding/AnnotationElement.java
src/jalview/binding/Colour.java
src/jalview/binding/Feature.java
src/jalview/binding/FeatureSettings.java
src/jalview/binding/Features.java
src/jalview/binding/JGroup.java
src/jalview/binding/JSeq.java
src/jalview/binding/JalviewModel.java
src/jalview/binding/JalviewModelSequence.java
src/jalview/binding/JalviewUserColours.java
src/jalview/binding/Pdbentry.java
src/jalview/binding/PdbentryItem.java
src/jalview/binding/Pdbids.java
src/jalview/binding/Property.java
src/jalview/binding/Sequence.java
src/jalview/binding/SequenceSet.java
src/jalview/binding/SequenceType.java
src/jalview/binding/Setting.java
src/jalview/binding/Tree.java
src/jalview/binding/UserColourScheme.java
src/jalview/binding/UserColours.java
src/jalview/binding/VAMSAS.java
src/jalview/binding/VamsasModel.java
src/jalview/binding/Viewport.java
src/jalview/controller/AlignViewController.java
src/jalview/controller/FeatureSettingsController.java
src/jalview/datamodel/ASequence.java [new file with mode: 0755]
src/jalview/datamodel/ASequenceI.java [new file with mode: 0755]
src/jalview/datamodel/AlignedCodon.java
src/jalview/datamodel/AlignedCodonFrame.java
src/jalview/datamodel/ColumnSelection.java
src/jalview/datamodel/Sequence.java
src/jalview/datamodel/SequenceDummy.java [new file with mode: 0644]
src/jalview/datamodel/SequenceFeature.java
src/jalview/datamodel/SequenceI.java
src/jalview/gui/AlignExportSettings.java [new file with mode: 0644]
src/jalview/gui/AlignFrame.java
src/jalview/gui/AlignViewport.java
src/jalview/gui/AppJmol.java
src/jalview/gui/CutAndPasteTransfer.java
src/jalview/gui/Desktop.java
src/jalview/gui/FeatureSettings.java
src/jalview/gui/IdCanvas.java
src/jalview/gui/OverviewPanel.java
src/jalview/gui/PopupMenu.java
src/jalview/gui/SequenceFetcher.java
src/jalview/gui/SequenceRenderer.java
src/jalview/io/AlignFile.java
src/jalview/io/AlignmentProperties.java
src/jalview/io/AppletFormatAdapter.java
src/jalview/io/BLCFile.java
src/jalview/io/BioJsHTMLOutput.java
src/jalview/io/FeaturesFile.java
src/jalview/io/FileLoader.java
src/jalview/io/FileParse.java
src/jalview/io/FormatAdapter.java
src/jalview/io/Gff3File.java [new file with mode: 0644]
src/jalview/io/HtmlFile.java
src/jalview/io/HtmlSvgOutput.java
src/jalview/io/IdentifyFile.java
src/jalview/io/JSONFile.java
src/jalview/io/PhylipFile.java
src/jalview/jbgui/GAlignExportSettings.java [new file with mode: 0644]
src/jalview/jbgui/GFinder.java
src/jalview/schemabinding/version2/.castor.cdr
src/jalview/schemabinding/version2/CalcIdParam.java
src/jalview/schemabinding/version2/JGroup.java
src/jalview/schemabinding/version2/Setting.java
src/jalview/schemabinding/version2/StructureState.java
src/jalview/schemabinding/version2/Tree.java
src/jalview/schemabinding/version2/Viewport.java
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/viewmodel/seqfeatures/FeatureSettingsModel.java
src/jalview/ws/DasSequenceFeatureFetcher.java
src/jalview/ws/dbsources/EbiFileRetrievedProxy.java
src/jalview/ws/dbsources/Uniprot.java
src/jalview/ws/jws1/JPredThread.java
src/jalview/ws/jws2/MsaWSThread.java
src/jalview/ws/seqfetcher/DbSourceProxyImpl.java
test/MCview/AtomTest.java
test/MCview/BondTest.java
test/MCview/PDBChainTest.java
test/MCview/PDBfileTest.java
test/MCview/ResidueTest.java
test/com/stevesoft/pat/RegexWriterTest.java
test/jalview/analysis/AAFrequencyTest.java
test/jalview/analysis/AlignmentAnnotationUtilsTest.java
test/jalview/analysis/AlignmentUtilsTests.java
test/jalview/analysis/AnnotationSorterTest.java
test/jalview/analysis/CodingUtilsTest.java
test/jalview/analysis/CrossRefTest.java
test/jalview/analysis/DnaTest.java
test/jalview/analysis/GroupingTest.java
test/jalview/analysis/ParsePropertiesTest.java
test/jalview/analysis/TestAlignSeq.java
test/jalview/analysis/scoremodels/FeatureScoreModelTest.java
test/jalview/bin/CommandLineOperations.java
test/jalview/commands/EditCommandTest.java
test/jalview/datamodel/AlignedCodonFrameTest.java
test/jalview/datamodel/AlignedCodonIteratorTest.java
test/jalview/datamodel/AlignedCodonTest.java
test/jalview/datamodel/AlignmentAnnotationTests.java
test/jalview/datamodel/AlignmentTest.java
test/jalview/datamodel/ColumnSelectionTest.java
test/jalview/datamodel/DBRefEntryTest.java
test/jalview/datamodel/MappingTest.java
test/jalview/datamodel/PDBEntryTest.java
test/jalview/datamodel/SearchResultsTest.java
test/jalview/datamodel/SeqCigarTest.java
test/jalview/datamodel/SequenceDummyTest.java [new file with mode: 0644]
test/jalview/datamodel/SequenceTest.java
test/jalview/datamodel/xdb/embl/EmblFileTest.java
test/jalview/ext/jmol/PDBFileWithJmolTest.java
test/jalview/ext/paradise/TestAnnotate3D.java
test/jalview/ext/rbvi/chimera/ChimeraCommandsTest.java
test/jalview/ext/rbvi/chimera/ChimeraConnect.java
test/jalview/ext/rbvi/chimera/JalviewChimeraView.java
test/jalview/gui/AlignViewportTest.java
test/jalview/gui/AnnotationChooserTest.java
test/jalview/gui/FontChooserTest.java
test/jalview/gui/HelpTest.java
test/jalview/gui/JAL1353bugdemo.java
test/jalview/gui/JvSwingUtilsTest.java
test/jalview/gui/PDBSearchPanelTest.java
test/jalview/gui/PaintRefresherTest.java
test/jalview/gui/PopupMenuTest.java
test/jalview/gui/ProgressBarTest.java
test/jalview/gui/SequenceRendererTest.java
test/jalview/gui/StructureChooserTest.java
test/jalview/io/AnnotatedPDBFileInputTest.java
test/jalview/io/AnnotationFileIOTest.java
test/jalview/io/BioJsHTMLOutputTest.java
test/jalview/io/FileIOTester.java
test/jalview/io/Gff3tests.java [new file with mode: 0644]
test/jalview/io/HtmlFileTest.java
test/jalview/io/JSONFileTest.java
test/jalview/io/Jalview2xmlTests.java
test/jalview/io/NewickFileTests.java
test/jalview/io/PhylipFileTests.java
test/jalview/io/RNAMLfileTest.java
test/jalview/io/StockholmFileTest.java
test/jalview/io/TCoffeeScoreFileTest.java
test/jalview/schemes/DnaCodonTests.java
test/jalview/schemes/ResiduePropertiesTest.java
test/jalview/schemes/ScoreMatrixPrinter.java
test/jalview/structure/Mapping.java
test/jalview/structure/StructureSelectionManagerTest.java
test/jalview/structures/models/AAStructureBindingModelTest.java
test/jalview/util/ColorUtilsTest.java
test/jalview/util/ComparisonTest.java
test/jalview/util/DBRefUtilsTest.java
test/jalview/util/MapListTest.java
test/jalview/util/MappingUtilsTest.java
test/jalview/util/QuickSortTest.java
test/jalview/util/ShiftListTest.java
test/jalview/util/StringUtilsTest.java
test/jalview/viewmodel/styles/ViewStyleTest.java
test/jalview/ws/PDBSequenceFetcherTest.java
test/jalview/ws/dbsources/PDBRestClientTest.java
test/jalview/ws/dbsources/UniprotTest.java
test/jalview/ws/gui/Jws2ParamView.java
test/jalview/ws/jabaws/DisorderAnnotExportImport.java
test/jalview/ws/jabaws/JalviewJabawsTestUtils.java
test/jalview/ws/jabaws/JpredJabaStructExportImport.java
test/jalview/ws/jabaws/MinJabawsClientTests.java
test/jalview/ws/jabaws/RNAStructExportImport.java
test/jalview/ws/jws2/ParameterUtilsTest.java
test/jalview/ws/rest/RestClientTest.java
test/jalview/ws/rest/ShmmrRSBSService.java
test/jalview/ws/seqfetcher/DasSequenceFetcher.java
test/jalview/ws/seqfetcher/DbRefFetcherTest.java
utils/getJavaVersion.java
utils/hamcrest-core-1.3.jar [new file with mode: 0644]
utils/jalview_testng.xml [new file with mode: 0644]
utils/junit-4.12.jar [new file with mode: 0644]
utils/testnglibs/bsh-2.0b4.jar [new file with mode: 0644]
utils/testnglibs/guava-base-r03.jar [new file with mode: 0644]
utils/testnglibs/guava-collections-r03.jar [new file with mode: 0644]
utils/testnglibs/jcommander.jar [new file with mode: 0644]
utils/testnglibs/junit-4.12.jar [new file with mode: 0644]
utils/testnglibs/snakeyaml.jar [new file with mode: 0644]
utils/testnglibs/testng-sources.jar [new file with mode: 0644]
utils/testnglibs/testng.jar [new file with mode: 0644]

index 5a3d60d..473d937 100644 (file)
@@ -65,5 +65,6 @@
        <classpathentry kind="lib" path="lib/jetty-io-9.2.10.v20150310.jar"/>
        <classpathentry kind="lib" path="lib/java-json.jar"/>
        <classpathentry kind="lib" path="lib/Jmol-14.2.14_2015.06.11.jar"/>
+       <classpathentry kind="con" path="org.testng.TESTNG_CONTAINER"/>
        <classpathentry kind="output" path="classes"/>
 </classpath>
index 9d81cc8..7d2c125 100644 (file)
@@ -5,10 +5,10 @@
 <booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
 <booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/jalview/build.xml"/>
+<listEntry value="/jalview"/>
 </listAttribute>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
+<listEntry value="4"/>
 </listAttribute>
 <booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
 <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
index 0c12fb0..2b6921b 100644 (file)
@@ -1,6 +1,9 @@
 .project
 /dist
 /classes
+/tests
+/test-reports
+/test-output
 .externalToolBuilders/Jalview Release indices [Builder].launch
 /.DS_Store
 .DS_Store
index 1986e85..5b61305 100644 (file)
@@ -2,6 +2,10 @@ eclipse.preferences.version=1
 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
 formatter_profile=_Jalview
 formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=jalview;java;javax;org;com;
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
 sp_cleanup.add_missing_annotations=true
index 6227d06..f5f89b6 100755 (executable)
--- a/build.xml
+++ b/build.xml
     <!-- J2SE version needed for webstart launch -->
     <!-- Anne's version needs 1.7 - should rebuild VARNA to java 1.6 for release -->
     <property name="j2sev" value="1.7+"/>
-
+       <!-- Java Compilation settings - source and target javac version -->
+       <property name="javac.source" value="1.7"/>
+       <property name="javac.target" value="1.7"/>
+               
     <!-- Permissions for running Java applets and applications. -->
     <!-- Defaults are those suitable for deploying jalview webstart www.jalview.org -->
     <property name="application.codebase" value="*.jalview.org" />
     <property name="jsonSimple" value="json_simple-1.1.jar" />
     <property name="javaJson" value="java-json.jar" />
     <property name="jalviewLiteJar" value="jalviewApplet.jar" />
+       <property name="reportDir" value="test-reports" />
+       <property name="testDir" value="test" />
+       <property name="testOutputDir" value="tests" />
     <!-- switch to indicate if we should obfuscate jalviewLite -->
     <!-- <property name="donotobfuscate" value="true"/> -->
     <!-- switch to exclude associations from generated jnlp files -->
 
   <target name="build" depends="prepare">
     <!-- not efficient yet. -->
-    <javac source="1.5" target="1.5" srcdir="${sourceDir}" destdir="${outputDir}" debug="${javac.debug}" classpathref="build.classpath">
+    <javac source="${javac.source}" target="${javac.target}" srcdir="${sourceDir}" destdir="${outputDir}" debug="${javac.debug}" classpathref="build.classpath">
       <exclude name="jalview/*applet*" />
       <exclude name="jalview/appletgui/**" />
       <exclude name="com/stevesoft/**" />
     </javac>
   </target>
+  
+  
+  <target name="testclean" depends="init">
+    <delete dir="${testOutputDir}" includes="*,**/*"/>
+  </target>
+  
+  <target name="prepareTests" depends="init">
+       <mkdir dir="${testOutputDir}" />
+       <copy todir="${testOutputDir}">
+               <fileset dir=".">
+                       <include name="${docDir}/**/*.*" />
+                       <include name="${helpDir}/**/*.*" />
+                       <include name="${libDir}/*.jar" />
+               </fileset>
+               <fileset dir="${resourceDir}">
+                       <include name="**/*.*" />
+               </fileset>
+       </copy>
+  </target>  
+  
+  <target name="buildTests" depends="prepareTests">
+       <javac source="${javac.source}" target="${javac.target}" srcdir="${sourceDir}" destdir="${testOutputDir}"
+               debug="${javac.debug}" classpathref="build.classpath" includeantruntime="false" >               
+       </javac>
+       <javac source="${javac.source}" target="${javac.target}" srcdir="${testDir}" destdir="${testOutputDir}"
+               debug="${javac.debug}" classpathref="build.classpath" includeantruntime="false" >
+       </javac>
+  </target>
+  
+  <taskdef name="testng" classname="org.testng.TestNGAntTask" >            
+       <classpath location="utils/testnglibs/testng.jar" />
+  </taskdef>
+  
+  <target name="testng" depends="buildTests">
+       <testng classpathref="build.classpath" outputDir="${reportDir}"
+               haltOnFailure="false">
+               <classpath location="${testOutputDir}" />
+               <xmlfileset dir="utils" includes="jalview_testng.xml" />
+       </testng>
+  </target>
+  
   <target name="buildindices" depends="init, prepare" unless="help.uptodate">
     <java classname="com.sun.java.help.search.Indexer" classpathref="build.classpath" fork="true" dir="${outputDir}/${helpDir}">
       <arg line="html" />
 
 <target name="compileApplet" depends="init,clean">
   <mkdir dir="${outputDir}" />
-  <javac source="1.5" target="1.5" srcdir="${sourceDir}" destdir="${outputDir}" debug="${javac.debug}" 
+  <javac source="${javac.source}" target="${javac.target}" srcdir="${sourceDir}" destdir="${outputDir}" debug="${javac.debug}" 
                        classpathref="jalviewlite.deps" includes="jalview/appletgui/**"
                        excludes="ext/**,MCview/**,org/**,vamsas/**,jalview/ext/paradise/**" />
 </target>
diff --git a/examples/testdata/exonerateoutput.fullgff b/examples/testdata/exonerateoutput.fullgff
new file mode 100644 (file)
index 0000000..9ab732e
--- /dev/null
@@ -0,0 +1,261 @@
+Command line: [exonerate --model protein2genome Input_Sequences63/dcsA.fas NewSequencedGenome/A_Ellipt_clc_pe_contigs.fa --bestn 1 --showtargetgff]
+Hostname: [ningal.cluster.lifesci.dundee.ac.uk]
+
+C4 Alignment:
+------------
+         Query: DDB_G0269124 
+        Target: contig_1146 [revcomp]
+         Model: protein2genome:local
+     Raw score: 3652
+   Query range: 142 -> 1059
+  Target range: 11269 -> 8533
+
+   143 : SerProSerSerGluTyrGlyThrThrSerGlyGlyGlnArgPheAspThrLeuValAsp :   162
+         ||||||!:!! !|||   !.!  !  !  !!.!  !! !!.!|||!!:||||||:!!|||
+         SerProAsnMetGluLeuAlaArgAspLeuAlaGlnProHisPheGluThrLeuIleAsp
+ 11269 : TCGCCCAACATGGAGCTGGCGCGCGACCTCGCCCAGCCGCACTTTGAGACGCTGATCGAC : 11212
+
+   163 : ProAspIleSerLeuAlaGluMetGluGluLysMetArgGlnHisLysValTyrGlnGlu :   182
+         ||||||!!:!!!! !!.!|||!!:||||||||||||||||||||||||!.!:!!!  |||
+         ProAspMetThrProGlyGluIleGluGluLysMetArgGlnHisLysAlaHisLeuGlu
+ 11211 : CCCGACATGACGCCCGGCGAGATCGAGGAGAAGATGCGCCAGCACAAGGCGCACCTCGAG : 11152
+
+   183 : GlnGlnGlnGlnGlnGlnGlnGlnGlnGlnGlnGlnLysGlnLysAspLysGluLeuSer :   202
+                     ..!|||:!!.....!..!:!!!  |||:!!|||..!:!!  !! !  !
+         ------------MetGlnLysSerSerSerGluLeuLysLysLysSerGlnMetGlnLeu
+ 11151 : ------------ATGCAAAAGTCCTCGTCGGAACTCAAGAAGAAGTCCCAAATGCAACTC : 11104
+
+   203 : SerGlnLysLysLysProSerSerMetGlnLeuSerLysLysLysHisValAlaLysGlu :   222
+         !.!||| ! :!!:!!  !..!..!:!:     !!.!|||   :::   :!!  !:!!!!:
+         LysGlnAspGlnGlnLysGlnGlnValValAlaLysLysProArgSerIleLeuGlnAsp
+ 11103 : AAGCAGGATCAGCAGAAACAACAAGTCGTCGCAAAGAAGCCCCGTTCGATCCTCCAGGAC : 11044
+
+   223 : AspSerGluThrLeuGluThrIleIleGlyGluGluLysLysGluValValPheGluVal :   242
+         |||! !||||||! !||||||:!!.!!!.!||||||:::|||||||||||||||||||||
+         AspMetGluThrSerGluThrLeuPheAlaGluGluArgLysGluValValPheGluVal
+ 11043 : GACATGGAGACGTCGGAGACCCTTTTCGCCGAGGAACGCAAGGAGGTCGTCTTTGAGGTG : 10984
+
+   243 : LysProTyrPheSerHisAlaIleLeuGlnAlaThrMetAlaValPheLeuIleTrpAsn :   262
+         :::|||||||||||||||:!!|||||||||||||||||||||||||||||||||||||||
+         ArgProTyrPheSerHisSerIleLeuGlnAlaThrMetAlaValPheLeuIleTrpAsn
+ 10983 : CGTCCCTACTTCTCGCACTCTATCCTCCAGGCGACGATGGCCGTCTTCCTCATCTGGAAC : 10924
+
+   263 : IlePheTyrPheAlaTyrArgAlaGlyTrpThrMetAsnArgThrAspTyrIle<->Thr :   281
+         |||||||||||||||||||||  !|||||||||||||||! !  !:!!  !:!!   ..!
+         IlePheTyrPheAlaTyrArgMetGlyTrpThrMetAsnThrGlnAsnGlyValTyrVal
+ 10923 : ATCTTTTACTTTGCCTACCGTATGGGCTGGACCATGAACACCCAGAACGGCGTCTACGTG : 10864
+
+   282 : PheSerTyrSerIleLeuPheIleIleValGluPheIleSerPheLeuGlySerAlaLeu :   301
+         .!!!!!||||||:!:||||||:!!||||||||||||||||||||||||||||||||||||
+         LeuCysTyrSerValLeuPheLeuIleValGluPheIleSerPheLeuGlySerAlaLeu
+ 10863 : CTCTGCTACTCGGTGCTCTTCCTCATCGTCGAGTTCATCTCTTTCCTCGGCTCCGCGCTC : 10804
+
+   302 : HisLeuAsnAsnPheThrAsnProCysThrPheValLeuValValThrLeuGluGlnIle :   321
+         |||||||||||||||||||||||||||||||||:!!||||||||||||||||||||||||
+         HisLeuAsnAsnPheThrAsnProCysThrPheIleLeuValValThrLeuGluGlnIle
+ 10803 : CATCTCAACAACTTTACCAATCCGTGCACCTTTATCCTGGTGGTCACGCTGGAGCAGATC : 10744
+
+   322 : LeuAlaLysArgArgLysLysHisProThrValMetMetTyrValCysThrTyrLysGlu :   341
+         ||||||:::|||||||||     !||||||||||||||||||:!!|||||||||||||||
+         LeuAlaArgArgArgLysProPheProThrValMetMetTyrIleCysThrTyrLysGlu
+ 10743 : CTCGCGCGCCGTCGCAAGCCCTTCCCCACCGTCATGATGTACATCTGTACCTACAAGGAG : 10684
+
+   342 : ProProSerIleValSerArgThrPheArgThrAlaIleSerMetAspTyrProSerGlu :   361
+         |||||||||||||||||||||||||||||||||||||||:!!||||||||||||:!!|||
+         ProProSerIleValSerArgThrPheArgThrAlaIleAlaMetAspTyrProAlaGlu
+ 10683 : CCGCCCTCGATCGTCTCGCGCACGTTCCGCACCGCCATCGCCATGGACTACCCCGCCGAG : 10624
+
+   362 : AsnLeuTrpIleGlyLeuLeuAspAspSerValAsnTyrArgGluSerArgGlyTrpAla :   381
+         ||||||||||||||||||||||||||||||:!!|||!:!||||||||||||||||||:!!
+         AsnLeuTrpIleGlyLeuLeuAspAspSerIleAsnPheArgGluSerArgGlyTrpSer
+ 10623 : AACCTCTGGATCGGCCTGCTCGACGACTCGATCAACTTCCGCGAGTCGCGCGGCTGGTCG : 10564
+
+   382 : HisLeuGlnSerValGluLysAsnPheLeuTyrValLeuLeuGlnLysAlaValTyrSer :   401
+         ||||||||||||||||||||||||||||||!:!  !|||||||||::::!!||||||:!!
+         HisLeuGlnSerValGluLysAsnPheLeuPheGlnLeuLeuGlnArgSerValTyrAla
+ 10563 : CACCTCCAATCGGTCGAGAAGAACTTCCTCTTCCAGCTGCTCCAGCGCTCCGTGTACGCC : 10504
+
+   402 : ValHisAsnIleArgProProValThrSerGlnHisGluAspProHisGlyIleLeuAsn :   421
+         ||||||||||||  !|||||||||.!!..!|||  !|||||||||:!!|||||||||..!
+         ValHisAsnIleAlaProProValAlaGlnGlnAlaGluAspProTyrGlyIleLeuGly
+ 10503 : GTGCACAACATCGCGCCGCCCGTCGCGCAGCAGGCCGAGGACCCGTACGGCATCCTCGGC : 10444
+
+   422 : GluThrSerSerLysIleGluSerSerThrLysGluValIleGluAlaGluValGlnTrp :   441
+         |||||||||..!:::||||||!.!!!!||||||||||||:!!||||||||||||||||||
+         GluThrSerGluArgIleGluLysThrThrLysGluValValGluAlaGluValGlnTrp
+ 10443 : GAGACGTCCGAGCGCATCGAAAAGACCACGAAAGAGGTCGTCGAGGCCGAGGTGCAGTGG : 10384
+
+   442 : PheIleGluTyrPheLeuLeuAsnSerTrpPheGlyValGlyGlnGluIleProArgAsp :   461
+         ||||||||||||||||||||||||||||||||||||:!!! !!::|||  !  !! !!!:
+         PheIleGluTyrPheLeuLeuAsnSerTrpPheGlyIleAspArgGluProGluIleGlu
+ 10383 : TTCATCGAGTACTTCCTCCTGAACAGCTGGTTCGGCATCGACCGCGAGCCCGAGATCGAG : 10324
+
+   462 : AlaAspAspAlaGluArgAlaLeuIleAlaLysLeuArgAspAspAsnPheSerProTyr :   481
+          !!..!||||||||||||  !!!!|||:!!! !||||||!!:|||||||||||| !!|||
+         ProSerAspAlaGluArgAsnPheIleSerMetLeuArgGluAspAsnPheSerAlaTyr
+ 10323 : CCCTCCGACGCCGAACGCAACTTTATCTCGATGCTGCGCGAGGACAACTTCTCGGCGTAC : 10264
+
+   482 : ArgThrPheThrLysSerGluSerGluLysIleSerAsnPheThrIleAspSerLeuGln :   501
+         ||||||.!!||| ! ..!||| !!|||   |||! !!..|||:!!! !|||:!!||||||
+         ArgThrIleThrAspGlnGluArgGluLeuIleTyrThrPheSerSerAspAlaLeuGln
+ 10263 : CGCACCATCACCGACCAGGAGCGCGAGCTCATCTACACGTTCTCGAGCGACGCGCTCCAG : 10204
+
+   502 : SerLeuTrpHisGlySerAlaPhePheArgProLeuIleArgSerIleLeuLeuLysLys :   521
+         |||:!!|||||||||||| !!.!.!:!|||||||||:!:|||!:!  !|||!!!:!!:::
+         SerIleTrpHisGlySerProMetTyrArgProLeuValArgAsnAlaLeuPheGlnArg
+ 10203 : TCGATCTGGCACGGCTCGCCCATGTACCGCCCGCTGGTGCGCAACGCCCTGTTCCAGCGC : 10144
+
+   522 : AspTyrValArgAsnPheValSerGluLeuAsnAsnGlnHisArgLeuArgPheLeuAsn :   541
+           !||||||!:!:!!|||:!!:!!|||! !|||   ..!|||||||||||||||||||||
+         ArgTyrValLysAspPheIleAlaGluHisAsnAlaSerHisArgLeuArgPheLeuAsn
+ 10143 : CGCTACGTCAAGGACTTTATCGCCGAGCACAACGCGTCGCACCGTCTGCGCTTCCTCAAC : 10084
+
+   542 : ThrGluAlaLeuAlaMetAlaGlnTyrGlnValLeuMetMetGlyArgGlnGluLeuPro :   561
+         ..!!!:|||:!!  !||||||||||||:!!|||! !||||||||||||||||||:!!|||
+         ValAspAlaIleAsnMetAlaGlnTyrLysValHisMetMetGlyArgGlnGluValPro
+ 10083 : GTCGACGCGATCAACATGGCGCAGTACAAGGTGCACATGATGGGCCGCCAGGAGGTGCCC : 10024
+
+   562 : TrpAspGluIleSerSerGlyAsnValArgIleAspPheAspThrCysAspGlyProIle :   581
+         !::|||!!::!:|||:!!|||||||||||||||||||||||| !!     !||| !!:!!
+         PheAspAspValSerAlaGlyAsnValArgIleAspPheAspPro---ThrGlySerVal
+ 10023 : TTCGACGACGTGTCCGCGGGCAACGTGCGCATCGACTTTGACCCG---ACCGGCTCGGTC :  9967
+
+   582 : ValSerProLysCysThrTyrLeuArgArgArgLysProProIleProHisAsnLysAla :   601
+         |||!!!|||:::||||||||||||||||||||||||||||||||||||||||||||||||
+         ValThrProArgCysThrTyrLeuArgArgArgLysProProIleProHisAsnLysAla
+  9966 : GTCACGCCGCGCTGCACCTACCTGCGCCGCCGCAAGCCGCCCATCCCGCACAACAAGGCC :  9907
+
+   602 : GlyAsnIleAsnAsnAlaLeuPheAsnGluSerThrLysAlaAspTyrGluPheLeuGly :   621
+         |||||||||||||||!.!|||||||||||||||! ! ! |||||||||||||||:!!|||
+         GlyAsnIleAsnAsnGlyLeuPheAsnGluSerIleHisAlaAspTyrGluPheMetGly
+  9906 : GGCAACATCAACAACGGCCTCTTCAACGAGTCGATCCACGCCGACTACGAGTTCATGGGC :  9847
+
+   622 : LeuLeuAspAlaAspGlnGlnProHisProAspPheLeuLysArgValLeuProTyrPhe :   641
+         ||||||||||||||||||||||||||||||||||||||||||||||||:!!|||||||||
+         LeuLeuAspAlaAspGlnGlnProHisProAspPheLeuLysArgValMetProTyrPhe
+  9846 : CTGCTCGATGCCGACCAGCAGCCGCACCCCGACTTCCTCAAGCGCGTCATGCCCTACTTC :  9787
+
+   642 : TyrSerAspGluGlyGlnAspLeuAlaPheValGlnThrProGlnPhePheSerAsnIle :   661
+         !:!||||||!!:|||!!.!!::!!||||||||||||||||||||||||||||||||||||
+         PheSerAspAspGlyHisGluValAlaPheValGlnThrProGlnPhePheSerAsnIle
+  9786 : TTCAGCGACGACGGCCACGAGGTCGCCTTTGTCCAGACGCCGCAGTTCTTCTCCAACATC :  9727
+
+   662 : TyrProValAspAspProLeuGlyHisArgAsnMetGluPheTyrGlyProValMetGlu :   681
+         ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+         TyrProValAspAspProLeuGlyHisArgAsnMetGluPheTyrGlyProValMetGlu
+  9726 : TACCCCGTCGACGACCCGCTCGGCCACAGAAACATGGAGTTCTACGGTCCCGTAATGGAG :  9667
+
+   682 : GlyArgSerAlaAsnAsnAlaCysProPheValGlyThrAsnAlaIlePheArgArgGln :   701
+         |||||||||.!!|||..!|||||||||||||||||||||||||||||||||||||||:!!
+         GlyArgSerThrAsnGlyAlaCysProPheValGlyThrAsnAlaIlePheArgArgLys
+  9666 : GGTCGCTCCACCAACGGCGCCTGCCCCTTCGTCGGAACCAACGCCATCTTCCGTCGCAAG :  9607
+
+   702 : ProLeuTyrAspIleGlyGlyIleMetTyrAsnSerValThrGluAspMetTyrThrGly :   721
+         ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+         ProLeuTyrAspIleGlyGlyIleMetTyrAsnSerValThrGluAspMetTyrThrGly
+  9606 : CCCCTCTACGACATTGGCGGCATCATGTACAACTCTGTCACTGAGGATATGTACACGGGA :  9547
+
+   722 : MetLysLeuGlnValSerGlyTyrLysSerTrpTyrHisAsnGluValLeuValValGly :   741
+         |||||||||||||||||||||!:!||||||||||||||||||||||||||||||||||||
+         MetLysLeuGlnValSerGlyPheLysSerTrpTyrHisAsnGluValLeuValValGly
+  9546 : ATGAAGCTCCAGGTCTCGGGATTCAAGTCGTGGTACCACAACGAGGTGCTCGTCGTCGGT :  9487
+
+   742 : ThrAlaProValAspLeuLysGluThrLeuGluGlnArgLysArgTrpAlaGlnGlyAla :   761
+         |||||||||||||||:!!||||||||||||||||||||||||||||||||||||||||||
+         ThrAlaProValAspIleLysGluThrLeuGluGlnArgLysArgTrpAlaGlnGlyAla
+  9486 : ACCGCGCCCGTCGATATCAAGGAAACGCTCGAGCAGAGAAAGCGTTGGGCGCAGGGCGCC :  9427
+
+   762 : ValGluIlePheSerLeuThrProTrpGlyTyrIleArgGlyLysLeuGlyTrpArgLys :   781
+         |||||||||||||||||||||||||||||||||||||||  !||||||||||||||||||
+         ValGluIlePheSerLeuThrProTrpGlyTyrIleArgLysLysLeuGlyTrpArgLys
+  9426 : GTCGAAATCTTCTCGCTCACGCCGTGGGGCTACATCCGCAAGAAGCTCGGCTGGAGAAAG :  9367
+
+   782 : MetLeuTyrAsnLeuAspSerCysIleTyrProPheLeuSerProThrAlaPhePheTyr :   801
+         |||||||||||||||||||||||||||||||||||||||||||||||||||.!!||||||
+         MetLeuTyrAsnLeuAspSerCysIleTyrProPheLeuSerProThrAlaIlePheTyr
+  9366 : ATGCTCTACAACCTCGACTCGTGCATCTACCCGTTCCTCTCGCCGACTGCCATCTTCTAC :  9307
+
+   802 : GlyAlaSerProLeuIleMetSerIleTrpThrValProIleValValLysAspProIle :   821
+         |||  !:!!||||||||||||!!!:!:|||||||||||||||||||||!  :!!||||||
+         GlyLeuAlaProLeuIleMetCysLeuTrpThrValProIleValValThrAsnProIle
+  9306 : GGTCTGGCGCCGCTGATCATGTGTCTGTGGACCGTGCCCATCGTCGTCACCAACCCCATC :  9247
+
+   822 : IlePheIleLeuValGlyMetIleProValMetValLeuProArgValIleGlnTyrMet :   841
+         |||||||||||||||||||||||||||||||||:!!||||||||||||!!:|||||||||
+         IlePheIleLeuValGlyMetIleProValMetIleLeuProArgValMetGlnTyrMet
+  9246 : ATCTTCATCCTCGTCGGTATGATCCCCGTCATGATCCTGCCGCGTGTCATGCAGTACATG :  9187
+
+   842 : IleLeuArgAlaLysArgProTyrGluAlaGlyLysSerGlyProSerLeuTrpValGlu :   861
+         ||||||||||||! !||||||!:!||||||||||||||||||||||||||||||||||||
+         IleLeuArgAlaThrArgProPheGluAlaGlyLysSerGlyProSerLeuTrpValGlu
+  9186 : ATCCTCCGCGCCACGCGTCCCTTCGAGGCCGGAAAGTCCGGCCCCTCGCTCTGGGTCGAA :  9127
+
+   862 : AlaThrAspLeuTrpArgAlaGluGlnThrPhePheGlyPheAlaGlyThrTyrIleSer :   881
+         ||||||||||||||||||||||||||||||||||||!.!|||||||||||||||||||||
+         AlaThrAspLeuTrpArgAlaGluGlnThrPhePheAlaPheAlaGlyThrTyrIleSer
+  9126 : GCCACCGATCTCTGGCGTGCCGAACAGACCTTCTTTGCGTTCGCCGGAACCTACATCTCT :  9067
+
+   882 : SerTrpArgGluGlySerAlaSerIleValLysLeuLeuLysAlaArgLysIleSerArg :   901
+         :!!|||!:!!  ||||||||||||:!!|||:::|||:!!|||||||||||||||||||||
+         AlaTrpLysAlaGlySerAlaSerValValArgLeuIleLysAlaArgLysIleSerArg
+  9066 : GCGTGGAAGGCCGGCTCCGCGTCGGTCGTCCGTCTCATCAAGGCGCGCAAGATCTCGCGT :  9007
+
+   902 : HisLysLeuAlaMetTrpAsnTrpLysArgAspPheValLysLysProValValCysGlu :   921
+         ||||||||||||||||||||||||||||||!!:|||!.!||||||||||||:!!  !|||
+         HisLysLeuAlaMetTrpAsnTrpLysArgGluPheAlaLysLysProValIleValGlu
+  9006 : CACAAACTCGCCATGTGGAACTGGAAGCGTGAGTTTGCCAAGAAGCCCGTCATCGTCGAG :  8947
+
+   922 : ValPheArgGlnThrLysLeuValAsnGluAsnAspAsnAlaGlnGluSerSerGlyLys :   941
+           !!:!||||||:!!|||||||||:!!.!.  !!!:   .!!:!!|||  !!.!|||  !
+         ArgTyrArgGlnSerLysLeuValHisHisAlaGlu---ThrGluGluHisLysGlyPro
+  8946 : CGCTACCGCCAGTCGAAGCTGGTGCACCACGCCGAG---ACCGAGGAGCACAAGGGCCCG :  8890
+
+   942 : HisLysAlaGluGlnSerPheArgThrSerAsnLysGluSerAspThrIleLysAsnSer :   961
+         !.!|||||||||||||||||||||:!!|||||||||||||||||||||||||||||||||
+         ArgLysAlaGluGlnSerPheArgSerSerAsnLysGluSerAspThrIleLysAsnSer
+  8889 : CGCAAGGCCGAGCAGTCGTTCCGTTCCTCCAACAAGGAGTCCGACACCATCAAGAACTCG :  8830
+
+   962 : ArgLeuPheLeuProAsnIleIleLeuPheValValAsnIleLeuAlaMetMetSerAla :   981
+         |||||||||  !||||||:!!|||:!!|||! !!.!||||||||||||!!::!!  !.!!
+         ArgLeuPheAlaProAsnLeuIleMetPheGlyAlaAsnIleLeuAlaIleLeuLeuThr
+  8829 : CGTCTCTTTGCGCCGAATCTCATCATGTTTGGCGCCAACATCCTCGCCATCCTGCTGACC :  8770
+
+   982 : ValLeuArgPheAsnCysPheGlnAsnAspMetTrpLeuLeuValValValAlaGlyPhe :  1001
+         :!!|||  !||||||||||||!  |||||||||||||||:!!:!!|||||||||||||||
+         LeuLeuSerPheAsnCysPheLeuAsnAspMetTrpLeuMetIleValValAlaGlyPhe
+  8769 : CTGCTCTCGTTCAACTGCTTCCTCAACGACATGTGGCTGATGATTGTCGTCGCCGGTTTC :  8710
+
+  1002 : SerPheSerThrLeuTrpHisLeuTrpSerPheIleProMetAlaLeuArgGlnSerGlu :  1021
+         :!!|||||||||! !|||||||||||||||||||||||||||||||||||||||||||||
+         AlaPheSerThrCysTrpHisLeuTrpSerPheIleProMetAlaLeuArgGlnSerGlu
+  8709 : GCCTTCTCCACGTGCTGGCATCTCTGGTCGTTCATCCCTATGGCCCTCAGACAGTCCGAG :  8650
+
+  1022 : LysGlnTrpProTyrAlaSerSerTyrHisAlaHisAsnIleValLeuPheLeuValLeu :  1041
+         ||||||||||||||||||||||||||||||||||||||||||:!!:!!||||||:!!|||
+         LysGlnTrpProTyrAlaSerSerTyrHisAlaHisAsnIleLeuIlePheLeuIleLeu
+  8649 : AAGCAGTGGCCCTACGCCTCCTCGTACCACGCGCACAACATTCTCATCTTTCTCATTCTC :  8590
+
+  1042 : GlyPheLeuValLeuLeuPheValAspValLysValCysIleProArgValGly :  1059
+         |||||||||||||||||||||..! ! |||   |||||||||||||||||||||
+         GlyPheLeuValLeuLeuPheThrLysValAlaValCysIleProArgValGly
+  8589 : GGTTTCCTGGTGCTCCTGTTCACCAAGGTCGCTGTCTGTATTCCTCGTGTCGGA :  8534
+
+vulgar: DDB_G0269124 142 1059 . contig_1146 11269 8533 - 3652 M 40 120 G 4 0 M 94 282 G 0 3 M 296 888 G 1 0 M 356 1068 G 1 0 M 125 375
+# --- START OF GFF DUMP ---
+#
+#
+##gff-version 2
+##source-version exonerate:protein2genome:local 2.2.0
+##date 2015-01-16
+##type DNA
+#
+#
+# seqname source feature start end score strand frame attributes
+#
+contig_1146    exonerate:protein2genome:local  gene    8534    11269   3652    -       .       gene_id 0 ; sequence DDB_G0269124 ; gene_orientation .
+contig_1146    exonerate:protein2genome:local  cds     8534    11269   .       -       .       
+contig_1146    exonerate:protein2genome:local  exon    8534    11269   .       -       .       insertions 3 ; deletions 6
+contig_1146    exonerate:protein2genome:local  similarity      8534    11269   3652    -       .       alignment_id 0 ; Query DDB_G0269124 ; Align 11270 143 120 ; Align 11150 187 282 ; Align 10865 281 888 ; Align 9977 578 1068 ; Align 8909 935 375
+# --- END OF GFF DUMP ---
+#
+-- completed exonerate analysis
diff --git a/examples/testdata/exonerateoutput.gff b/examples/testdata/exonerateoutput.gff
new file mode 100644 (file)
index 0000000..3ea68dc
--- /dev/null
@@ -0,0 +1,13 @@
+##gff-version 2
+##source-version exonerate:protein2genome:local 2.2.0
+##date 2015-01-16
+##type DNA
+#
+#
+# seqname source feature start end score strand frame attributes
+#
+contig_1146    exonerate:protein2genome:local  gene    8534    11269   3652    -       .       gene_id 0 ; sequence DDB_G0269124 ; gene_orientation .
+contig_1146    exonerate:protein2genome:local  cds     8534    11269   .       -       .       
+contig_1146    exonerate:protein2genome:local  exon    8534    11269   .       -       .       insertions 3 ; deletions 6
+contig_1146    exonerate:protein2genome:local  similarity      8534    11269   3652    -       .       alignment_id 0 ; Query DDB_G0269124 ; Align 11270 143 120 ; Align 11150 187 282 ; Align 10865 281 888 ; Align 9977 578 1068 ; Align 8909 935 375
+# --- END OF GFF DUMP ---
diff --git a/examples/testdata/exonerateseqs.fa b/examples/testdata/exonerateseqs.fa
new file mode 100644 (file)
index 0000000..e759925
--- /dev/null
@@ -0,0 +1,183 @@
+>DDB_G0280897 
+MTDKINNLINQWLKWDKNEITRKEIEQLKENNNEKELLVRLEERIQFGTAGLRGAMRAGF
+SCMNDLTVTQASQGLCEYVIETIEQSKSKGIVIGYDGRHNSYIFAKITAATFKSKGFKVY
+LFSHIVPTPYVSFAVPNLKAAIGVMITASHNPKNDNGYKVYWETGCQINTPHDKGISKKI
+DENLEPWSNVDATSDIKYGNGDDGESMIDPLSVITELYNKNIKEYSVGSKIELANEPIVY
+TAMHGVGGVYAKKAFETFQLKPFIPVAQQIEPDAEFPTVTYPNPEEGKGALKLSIETAEA
+NNSRLILANDPDADRLAVAEKLADGSWKVFNGNEIGVLLADWAWTNRSTLTKGGSTLENN
+KYFMINTAVSSAMLKTMSEKEGFIHQECLTGFKWIGNAAYNAINNNDGTTFLFGYEEAIG
+FQYGDVSFDKDGVRAAAIFAEFALSLYKKGSSVQDHLESMYKRYGYHISKNRYFFCYEPS
+KMVSIFNKIRNDGKYLTKLGDDDDEQFTITRIRDLTTGYDNGYPDCKARLPVSSSTQMIT
+FYFKNGGIATLRGSGTEPKLKYYVEMIGEVKSNVESTLTKAVELVINQLLKPIENQLEPP
+KDD
+>PPL_06716 
+MSNIKELAESWLKWDKNAETRKEIQSLLESDNQSELKSRLEQRIAFGTAGLRGPMKAGFS
+CMNDLTVIQASQGLCIYVEQTLSNSKNSGIVVGYDGRHHSKEFARLTAATFASRGFKVYL
+FSKIVPTPYVVILYLISNYMDCYVHQAFAVPELKASVGVMITASHNPKDDNGYKVYWDNG
+CQINTPHDIRIAMQIDLNLEPWNIDVNELLNGSLVSDPLDTITKSYFGKIAKYSVKNEVK
+LATSEKIVYTAMHGVGGEYAKMAFETFGLPAFIPVDQQIQPDPEFPTVAFPNPEEGKGAL
+KLSIETAERNNSRLILANDPDADRLAVAERQPDGQWKVFNGNEIGVLFADWAWQNARRAD
+STTPAERFCMINTAVSSSMLKTMANKDGYRHEECLTGFKWVGNKARELMDKGYNFLFAYE
+EAIGFMYGDVSLDKDGVRCAPIFAELALTCYQAGKSCQDHLEELYKRYGYHISKNRYFFC
+YDPKKMVAIFDKIRNYGQFPTNCGDFYITRVRDLTVGYDSGYPDHKARLPVSSSTQMITF
+YFENGGIATLRGSGTEPKLKYYVEMIGSDRQLVESTLSQLVEQVINQFLRPVENELTPPK
+DD
+>DFA_03821 
+MTDINQLAQNWLKWDRNPKTHKEIEQLVEAKDENELRARLENRIAFGTAGIVSTTIVQSH
+MNIGPMKAGFANMNDLTVIQASQGLSIYVQETISQAQSKGVVVGYDGRYNSEVFAKLTAA
+TFASKGFKVYLFSKIVPTPFVAFAVPELGASVGVMVTASHNPKDDNGYKVYWDNGCQINT
+PHDKGIAKQIDLNLEPWTINIDKLLSSELVNDPLETISNAYFSKIYSYSVKNRSTPLELA
+NEKVVYTAMHGVGGDYVKKAFETFKLPPYVEVAQQIKPDPAFPTVAFPNPEEGKGALKLS
+IETAESVNSRLILANDPDADRLAVAEKLKDGSWKVFNGNEIGILLADWAWTNAKINHPDV
+PAEKFFMINTAVSSAMLKTMAKKEGYICEETLTGFKWVGNKAKEMIDQGYKFLFAYEEAI
+GFMYGDVSLDKDGVRCAPIFAEYALNLYANGSSCQDHLDHLMQRYGYHISKNRYFFCYEP
+SKMVRIFNDIRKSNNGQFPDKCGPYEIIRIRDLTVDYDTAYPDNKARLPVSTSTQMITFY
+FKNGAIATLRGSGTEPKLKYYVEMIGDNKQEVESTLQQVVQQVIDNFLQPVVNQLTPPKD
+D
+>DLA_10096 
+MDIYTLANKWLEWDKNEKNRKEIQHFVDEKNEQELRERLENRIQFGTAGLRGPMKAGFAN
+MNDLTVIQASQGLALYVKETIDSALTKGVVVGYDGRHNSQTFARLTAATFLSKGFKVYLF
+SKLVPTPFVAFAVPELGASCGVMITASHNPKDDNGYKVYWDNGCQINTPHDKGISKLIDE
+NLVPWTMNLDDLNKSDLVSDPLERVSKSYFTKISKYSVVKSGATIKQEKVVYTPMHGVGG
+DYAAEAFKVFDLHPFIPVELQIKPDAEFPTVAFPNPEEGKGALKLAIETAESNQSRLILA
+NDPDADRLAVAEKQSSDGSWKVFNGNEIGVLFADWAWRKERALFSEGYNCKPSEYTMIST
+AVSSAMLSTMAKKEGFQHEEVLTGFKWVGNAAKQAMDRGQKFLFAYEEAIGFMYGDVSLD
+KDGVRGASIFAELAFDLYQQGSSCQEHLESLYKKYGYHISNNRYFFCYDPKKMVRIFNEI
+RGNNREYVKELGEFKVERIRDLTTGYDTAFPPEFKAQLPTSSSTQMITFYFTNGSIATLR
+GSGTEPKLKYYVESIGSDKLQVQQTLTKLVSLVIEKLLRPKENELTPPKESVGSERLLAL
+LSEVMSTSMKIQVKYNESITEYNIIKGVKLLTQIDVLCQIFKVDANPDRFVLNYRESNLI
+LSEDNLSKLFSNEISSCSSQSQNGSNGELSSLYSSFGENSSNNNNNSTLKFELILAPIYQ
+VDSVLEHLNNSNLIKKRII
+>DPU1265769
+MSMIRSISGVRGVIGQSWTPTLVSNHIIGFTQLLESEKYYNQKQKKIVVGRDSRVSGPWI
+EMIVNGSLISMGYQVIHIDIAATPTVQYMVEKTKSSGGIVITSSHNPVEWNGLKFVGPDG
+LFIAPVECEVLFSLADNPSSFKFPNYDKLGSVVCNTTANKEHIEAIFKLPFISVDKIKEK
+KFKVCLDSVNGAGGPIMSYLLTELGCEVIGINLEPTGLFAHTPEPVPANLGQLCELVKTH
+KADFGIAVDPDVDRCVFIDDKGVPLGEEYTLAMAVELLLGDCGRRGNVCKNLSSSRAIDD
+ICKKYDSQVICAPVGEIQVAKKMQQVNAVIGGEGNGGVMLPDIHIGRDAPVAATLALQLL
+ANRNAASISEFKRTTLPTYEIVKLKAGIEGLDPDAILAEYTKQYENKEGVVINQEDGLKI
+DSADWWVHLRKSNTEHIIRVISEAKNTKEATDIATKFINEIESKRK
+>440792448
+MASRVSGRMRKISDETQQMVNAWLSVDWDPESREHVKGLVAAGKEEELVAHLGRRISFGT
+AGLRGKMKWGFAFMNAVTVTQASQGLCAYLRTVHPCLTDLRERGVIVGHDGRYNSRMFAR
+LTAAVFLSRKIKVHLFRDDVPTPLVAFGVRHLKCAAGVMVTASHNPKEDNGYKVYWANSA
+QITAPHDAQIARAIEANFSIWDRMPDDKAIDEHPLCLDPTTDVCAAYLAAARHWSFRTPQ
+QNAAAQLRVVYTAMHGVGGQSVERIFDAFGLPPVIAVREQHDPDPDFTTVEFPNPEEANG
+CSLRLAMSTADREGAPLILANDPDADRLAVAERQRDSGEWRILDGNEIALLLADWLWRNY
+TERHPEVDRAKIVMLNSTVSSKALAAMAAKEGFHYRETLTGFKWLGNLADELVRAGYTFL
+FAYEVEIGFMIGDMSLDTDGVRAAPVFVEMANHLYERGLTLSDHLDNLYHKYGYYKMAVG
+YYFCHDPRLMDQIFNEIRNDGLYISTCGDHKVQYVRDLTTGFDNSQPHNRAVLPVSSAAH
+MITFTFENECVATFRGSGTEPKLKYYIEVANASNEQLATDLLDSMKQEIIDRFLQPSQNG
+LRPPAAAEDAHNSPHNSGNSPEQMAPARIARDVIHKEIQALQNLEATLGRDFEKVVEIIE
+SRGSGRVIFTGVGKSGIIAQKISASFSSLGISSFFVHATEAAHGDLGVITAEDVIIAISN
+SGNTPELIFIIPSLRVLAGKIIGITSNKDSLLARYSDASIITGKIMEADQHKIAPTASTI
+VCLAIGDALAVTLSARMKFTLPEFGLRHPGGVLGEKVLGKVFQEFAMKGQGRFLRFWKRM
+TNEERDKLRRDFERIDLAELSRIYLQCRSKAEKGAIDPHSLEPLPSHTWVKLHESDPAAV
+AAWRDAGLRALREGKIGVVLMAGGQATRLGMTMPKGFLDLNLPSHKSLYQLHAEKLLRLQ
+DEVRQTFGGGGGDEEVQQQQQQIQIPFYVMTSPEALQQTHQFFIKHQFFGLCPKQVFFFK
+QRSLPCVAPSGEIIMDTKCSVVFSPDGHGGLFVALKDAKAYEDMKRRGVEYVFAFGVDNP
+LCEVADPAYMGYCIQRNVKMGYKVVDRRDPQETAGVVCVRDGVINCVEYSELPESVAELR
+DEQSGELVYNAANMLNLFFTLRFMRKIADNPSLMEYHLAKKRIPFVNDNGVRTEPLVPNG
+WKFEKYLVDCTPYANNSVAVMFVKREEEFAPIKNGWNSEVDSPRSARRLLAAHYRRRIER
+AGGKLAADDPDKMVEVSPLVTDRKLAQLLQDKHLVTGPAVLQ
+>ENY64621.1 
+MALNNYIKKTEMDYLYEQAALWLKWDKTPETRKEIEDLVASKNEEELKKRFCKRIEFGTA
+GLRGKMCAGFNCMNNLIVQQASQGLALAVEELVQNAHEKGVVIGYDGRYHSKEFAAITAK
+VFISKGFKTYLFSTLCPTPWTAFAVGYLKTACGVMVTASHNPKADNGYKVYWENGCQIIE
+PIDANIASKIHSNLEPWDLSNVDISKVIDPLADVSAEYYKQMMLTIPHFECPEQPKVKYV
+YTAMHGVGSKYVQDAFKTAKLPQPILVPLQNEPDPEFPTVPFPNPEEGKGALKCSIEVAE
+ANGATVIIANDPDADRLSVAVKSGNGWRQFTGNEMANLIADWTYNKYIVSGDKTPAFMVR
+STVSSSFISKMGEVEGFDTYETLTGFKWIGNKAKEIVDTQHKKLLMAYEEAIGFVIGNMS
+YDKDGVRAAVCFAAMALEYAEQGFNLEDRLNMLYEKYGYFASNNKYYFCYDPKLMEKIFN
+KMRNNGQYYWKFGKYAVKSIRDLTVGIDTAQPDKKPLLPVSASTQMITYTFENGCKATLR
+GSGTEPKLKYYIELPGKKGVKAEDVIAELMDLSHELLQASLEPEKNGLIPPKAE
+>Ppo014092.000
+MSISPSVQELVGKWLQWDKNPQNIKEIKDLVAANNEAELKNRLATRIAFGTAGLRGPMRA
+GFSCMNDLTVIQASQGLCKYLQQMVSDIKTRGIVVGYDGRHHSKEFAEWTAATFLSQGIT
+VYLFTRLVPTPFVSYATPLLRCAAGIMITASHNPKDDNGYKVYWDNGCQINVPHDKGISD
+CIEQNLTPWDINKAELLKSELVKDPTETVASAYLKEIKAKCCFHHDENSQKIPVTYTAMH
+GVGSEWVARAFEVFGLAPYVPVAPQISADPEFPTVAFPNPEEGKGALKLSMEAADKAGST
+LILATDPDADRLAVAEKLPSGSWKIFTGNEIGALLAYWAWLKYKERNPKVDPSKCVVINS
+TVSSKLLKALADKEGLKYDETLTGFKWIGGQAAIRIKEGYTFIFGFEEAIGFLFGDVNLD
+KDGVRAAAVFAEMNIQLHKQGITVVQQLEKIYKLYGYFITRNRYFFCYDPAKMERIFNAI
+RNYNNSGTYPTSCGPFKIKNTRDLTTGYDDSQTDKKAILPVSKSTQMITFFFENGGVVTL
+RGSGTEPKLKYYTELSGSDPEKVKSTLDEMVQAIIDTCLKPVENQLQPPSDE
+>ADB0001102_3
+MSTTTSINKLAQDWLKWDKNPKTRAEIQELVEQNDVKELTARLENRIAFGTAGLRGPMKA
+GFSCMNDLTVIQASQGLCLYVIDTIPNAIKSGVVIGYDGRYNSKEFAKYTAATFLSKGYK
+VYLFSKVVPTPYVAFAVTDLKASIGVMITASHNPKDDNGYKVYWENGCQINTPHDKGIAK
+LIDLNLEPWEINVDQLLSGPLVEDPLDRIVSSYNTKIAQYSVASHVKFANEKIIYTAMHG
+VGGEYTKMAFEAFKLPPFIPVAQQYQPDPAFPTVTFPNPEEGKGALKLSIETAEANGSRL
+ILANDPDADRLAVAERLKDGTWKVFNGNEIGVLLADWAWQNARRSHPDTPAEKFFMINTA
+VSSAMLKTMAKKDGYRCEETLTGFKWVGNRAREVMDAEGLHFLFAYEEAIGFLYGDVSLD
+KDGVRCAAIFAELALSYYANGSSCEDHLESLYKRYGYHISRNRYFFCYEPPKMVAIFNKI
+RNNRNFPTKCGRFEIERVRDLTIDYDDGFPDKKARLPVSTSTQMITFYFKNGAIATLRGS
+GTEPKLKYYVEMIGQDKAHVQQELAELVQCIINEFLRPVENELTPPKDD
+>Carpum
+MTQSTCITSMVINNYLSIYIFIYTINDYLKRSLFVLCLVAKMSHHKVAITHPISSYNSII
+NELAQNWLRWDKNKETRKEIEQLVEQKNEKELYDCLAKRIAFGTADNEIMMLLTHTLHTG
+LRGQMKAGFSNMNDLTVIQASQGLCKYVKETIPEAQKKGVVVGYDCRHHSETFARLTAAT
+FASQGFTVYLYSKMVPTPFVAFGVTDLKACVGVMVTASHNPKEDNGYKVYWENGCQINSP
+HDKGISQQIELNLEPWTIDVNSLLEKVDDPLERVTKSYMDQISKYSVRGSVDMATENVVY
+TAMHGVGGVFVKDAFAAFGLAPYIPVPAQVGPDAEFPTVTLPNPEEGKGALKLSIETAEA
+NNSRLIVANDPDADRLAAAEKLKDGSWKVFNGNEIGVLFADWAWQNARRQHGGDSINPSE
+YFMVTTAVSSSMLRTMATKEGYGYDETLTGFKWVGNKARDLIDQGKKFLFAYEESIGYMY
+GEVSLDKDGVRGAAVFTEMALSCYARGTSCQEHLESLYVKYGYHLSKNRYYFCYDPSKMV
+SIFNRIRNNGEFPKTCGPFEITRIRDLTVDYDNGYEDKKARLPVSSSTQMITFYFKNGAI
+ATLRGSGTEPKLKYYVEMIGDDKEQVKATLDQVHDQVIQQFLRPTENQLSPPSDE
+>Cephalum
+MTTDIYQIAQNWLRWDRNPKTHKEISQLVQDKNESELKARLESRIAFGTAGLRGPMKAGF
+SCMNDLTVIQASQGLCMYVKQTLAPDAERKGIVVGYDGRYNSEVFAKLTAATFVSQGFKV
+HLFSRLVPTPFVAFAVPFLKACVGVMITASHNPKDDNGYKVYWDNGCQINTPHDKGIAKQ
+IELNLEPWNVFYKEYFDRIERYTVRHNKQMAREKIVYSAMHGVGGEYTKRAFEVFALDPF
+IAVKEQFHPDPAFPTVTFPNPEEGKGALKLSIETAEANNNWAWKNGKPYYEKGLGSFPND
+QYFMINTAVSSAMLKTMAMKEGFTYEEVLTGFKWVGNAAQNLIEKGKHLLFAYEEAIGFM
+YGDVSLDKDGVRCAPIFAELAQHLYSKGSSCQDHLEELYKRYGYHISKNRYFFCYDPLKM
+EKIFNRIRNGGQYPTKCGDFEITRIRDLTTGYDTGYPPENKAQLPTSTSTQMITFYFKNG
+GIATLRGSGTEPKLKYYVEMIGDDKENVELILQSMVDQVINQFLRPIENELIPPKD
+>Violaceum
+MVINPFYPYYLYFCYSPGISYQGVKINKTKLEQSTLTTINQWLNGNYDEQTKKNIQNLLD
+QESYTELTDAFYRNLEFGTGGLRGIMGAGSNRINKYTIGTATQGLSNYLLKKYPGEKIKV
+AIAHDSRNNSDQFAKITADVFSANGIYVYFFKELRPTPELSFAIRELGCRSGVMLTASHN
+PKEYNGYKAYGADGGQFTAPDDRLVMDEVAKITSIDEVKFTRIDANIELIGEEIDQLYLD
+KITALSVSPEAISRQKDLKIVYSPIHGTGITLVPKALAQFGFDNVTIVEEQSKPDGNFPT
+VVYPNPEEKEAMTLALKKAQEIDADLVLATDPDADRVGIAVKNNNNEWILLNGNQTGSLL
+VHYVLTAWEEKGKIDGNQYIVKTVVTSNLIEAIAKAKKVDCYNTLTGFKWIGQLITSLQG
+KKTFVVGGEESYGYSVGELVRDKDAVISCAFIAEMTAYYKDKGSSLYNALIDMYVTHGLY
+KEELVSLTKKGKTGAEEIKAMMEKFRNNPPASLGGSKVSTLKDYELGTETDLNTGKISKL
+SLPKSDVLQFVTEDGSIVSARPSGTEPKIKFYCSVNATLSQASEFDKTDEKLGLKINALM
+EDLQK
+>Deminut
+MTDIYQIAQNWLKWDRNPKTHKEISTLVEKKDEAELRARLETRIAFGTAGLRGPMKAGFS
+CMNDLTVIQASQGLSLYVKKTLAGSESKGAVVGYDGRYNSEVFAKLTAATFASQGFKVYL
+FSKVVPTPYVAFAVPELGASVGVMVTASHNPKDDNGYKVYWDNGCQINTPHDKHISELIE
+SNLEPWNVCIYITLQINIDKLLSGVIDPLQVVTSSYMSKIEKYSVKHLPQPLKLATEQKI
+VYTAMHGVGAEYAKLAFEAFSLPPFIPVTQQVTPDPAFPTVAFPNPEEGKGALKLAIETA
+EANKSRIILANDPDADRLAVAEKQPEYVFLFYLISNNGTWKVFNGNEIGILFADWAWQNC
+RRVYPDVPADQFFMINTAVSSAMLKSMAKKDGYIHEETLTGFKWVGNKARELLDQNKRFL
+FAYEEAIGFMYGDVSLDKDGVRCAAIFAELALYQYANGSSCQRHLDSLYERYGYHISKNR
+YFFCYEPPKMVAIFNAIRNNKNYPTKCGEFEIERIRDLTDDYDNGYPDNKARLPISKSTQ
+MITFFFKNGAIATLRGSGTEPKLKYYVEMIGDNKSEVEAILAKVVTAVIDNFLRPVENQL
+TPPKDD
+>Ellipt
+MADLDKLVEDWMRWDKNTKTRDEVQKMVAQGDKKALAAALQNRIAFGTAGLRGPMKAGFA
+NMNDLTVIQASQGLCIYVSATIADAAKKGVVVGYDGRHNSLQFARLTAATFRSKGFKVYL
+FSTVVPTPYVAFSVPELGACVGVMVTASHNPKDDNGYKIDVEKLLKEDGVEDPLEKITAS
+YMSKVADYSIKSHPATKDIVMSDDKIVYTAMHGVGGEYTRRSFKAFSLPEFIPVVQQFHP
+DPEFPTVTFPNPEEGKGALKLAIETAEKNNSRLILANDPDADRLAVAERQPDGTWKVFNG
+NEIGVLFADWAWKNARARDPTTPASEFFMVNTAVSSAMLKTMAKTEGYTYEETLTGFKWV
+GNKAKEAIDKGGRFLFAYEEAIGFMYGDVSLDKDGVRTAPIFAQMALSLYAKGLSCVDHL
+EQLMKTYGYHISRNRYFFCYEPPKMVAIFDKIRNNGNFPKHCGPFEIVRVRDLTVDYDDA
+YEDKKARLPVSTSTQMITFYFKNGAIATLRGSGTEPKLKYYVEMIGDKSAKKEDVEKTLA
+EVVKQVIDNFLRPVENELTPPKDD
+>Lepto
+MASSERLQQLIQDWLKWDKNPTTLSEIQELVKKNDEKELRARLENRIAFGTAGMFLLGPM
+KAGFSCMNDLTVIQASQGLCIYVSDTIPNALNSGVVVGYDGRYNSKEFAKYTAATFLSKG
+YKVYLFSKVVPTPYVAFAVTELKAAIGVMITASHNPKDDNGYKVYWDNGCQINTPHDKGI
+AKQIQLNLEPWNVCAFFLDINANELLSGSSVVDPLDTIVNSYNSKITSYSVGNSGVKLAN
+EKIVYTAMHGVGGEYTKLAFEAFKLPPFVPVPQQYTPDPAFPTVAFPNPEEGKGALKLSI
+ETAEANGSRLILANDPDADRLAVAERNTNGTWKVFNGNEIGVLLADWAWQNARRAHPDTP
+ANRYFMINTAVSSAMLKTMAKHEGYRCDETLTGFKWVGNQARKVIDEEKLNFLFAYEEAI
+GFMYGDVSLDKDGVRCAPIFAEMALSYYAQGHSCEDHLETLYKRYGYHISRNRYFFCYEP
+PKMVAIFDRIRNGRNFPTKCGRFEIERVRDLTVDYDDAYPDKKARLPVSTSTQMITFWFK
+NGGIATLRGSGTEPKLKYYVEMIGQDKQVVEKELAELVDAVIQQFLRPVENELTPPKDD
diff --git a/examples/testdata/rna-alignment.xml b/examples/testdata/rna-alignment.xml
new file mode 100644 (file)
index 0000000..60aa433
--- /dev/null
@@ -0,0 +1,1326 @@
+<?xml version="1.0"?>
+<!--
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *  
+ * 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.
+-->
+<!DOCTYPE rnaml SYSTEM "rnaml.dtd">
+
+<rnaml version="1.0">
+
+   <molecule id="1">
+      <sequence>
+         <numbering-system id="1" used-in-file="false">
+            <numbering-range>
+               <start>1</start>
+               <end>249</end>
+            </numbering-range>
+         </numbering-system>
+         <seq-data>
+            gaggaaaguc cggacUUCGC AGAAAAAGGU GCCAGUGAAA AACUGGGGGC CGUAAGGCUA
+            CGGAAAGUGU AACAGAAAAC AAACCGCUAA UUCUACCUAG GUAAGAUUAG ACAGGAUGAA
+            AAUGUCGAGC UUAUGGCUCG ACCUCUUUGU GGAAACACAA GGACGCUGCA AACCCCACCU
+            GAAGCAAGAA AGAGUUCGUU UCAGUUUUUC GCUCAGGAAC UCUUAGAGUC GCUCGAGGAU
+            UUUGGUGAC
+         </seq-data>
+      </sequence>
+      <structure>
+         <model id="?">
+            <str-annotation>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>15</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>184</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>16</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>183</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>17</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>182</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>18</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>181</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>22</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>210</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>23</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>209</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>24</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>208</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>25</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>207</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>27</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>180</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>28</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>179</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>29</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>178</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>30</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>177</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>31</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>176</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>32</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>46</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>33</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>45</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>34</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>44</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>35</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>43</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>36</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>42</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>47</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>61</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>48</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>59</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>49</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>58</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>50</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>57</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>51</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>56</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>62</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>175</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>63</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>174</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>67</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>173</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>68</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>172</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>69</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>169</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>70</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>168</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>71</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>167</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>84</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>115</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>85</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>114</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>86</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>111</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>87</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>110</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>88</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>109</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>89</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>108</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>90</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>107</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>91</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>106</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>92</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>105</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>93</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>104</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>94</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>103</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>95</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>102</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>96</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>101</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>124</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>142</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>125</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>141</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>126</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>140</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>127</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>139</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>128</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>138</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>129</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>137</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>143</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>165</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>144</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>163</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>145</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>162</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>146</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>161</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>147</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>160</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>148</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>159</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>149</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>158</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>150</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>157</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>151</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>156</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>188</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>230</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>189</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>229</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>190</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>224</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>191</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>223</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>192</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>222</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>193</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>221</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>194</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>220</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>195</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>219</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>196</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>218</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>197</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>217</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>203</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>213</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>204</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>212</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>205</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>211</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>244</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>249</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+            </str-annotation>
+         </model>
+      </structure>
+   </molecule>
+<molecule id="2">
+      <sequence>
+         <numbering-system id="2" used-in-file="false">
+            <numbering-range>
+               <start>1</start>
+               <end>294</end>
+            </numbering-range>
+         </numbering-system>
+         <seq-data>
+            gaggaaaguc cgggCUCCAU AGGGCAGAGU GCCAGGUAAC GCCUGGGAGG CGCGAGCCUA
+            CGGAAAGUGC CACAGAAAAC AACCGCCUAA GCGCGCAAGC GCCGGUAAGG GUGAAAAGGU
+            GCGGUAAGAG CGCACCGCAC GGCUGGCAAC AGUUCGUGGC UAGGUAAACC CCACUCGGAG
+            CAAGACCAAA UAGGGAUCCA UUGGCGUGGC CCGCGCUGGA UCCGGGUAGG UUGCUAAAGG
+            CGGCCAGCGA UGGUCGUCGU AGAGGAAUGA CUGUCCUCGa cagaacccgg cuua
+         </seq-data>
+      </sequence>
+      <structure>
+         <model id="?">
+            <str-annotation>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>6</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>293</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>7</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>292</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>8</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>291</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>10</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>290</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>11</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>289</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>12</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>288</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>13</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>287</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>14</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>286</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>15</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>180</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>16</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>179</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>17</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>178</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>18</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>177</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>22</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>212</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>23</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>211</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>24</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>210</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>25</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>209</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>27</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>176</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>28</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>175</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>29</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>174</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>30</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>173</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>31</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>172</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>32</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>46</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>33</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>45</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>34</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>44</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>35</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>43</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>36</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>42</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>47</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>61</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>48</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>59</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>49</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>58</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>50</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>57</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>51</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>56</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>62</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>171</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>63</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>170</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>67</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>169</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>68</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>168</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>69</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>165</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>70</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>164</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>71</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>163</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>83</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>110</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>84</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>109</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>85</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>106</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>86</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>105</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>87</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>104</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>91</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>102</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>92</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>101</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>93</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>100</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>94</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>99</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>118</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>136</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>119</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>135</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>120</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>134</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>121</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>133</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>122</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>132</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>123</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>131</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>137</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>160</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>138</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>158</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>139</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>157</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>140</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>156</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>141</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>155</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>142</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>154</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>143</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>152</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>144</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>151</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>145</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>150</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>184</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>232</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>185</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>231</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>186</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>230</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>187</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>229</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>194</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>223</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>195</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>222</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>196</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>221</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>197</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>220</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>198</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>219</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>199</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>218</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>203</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>217</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>204</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>216</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>205</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>215</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>206</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>214</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>207</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>213</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>239</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>258</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>240</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>257</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>241</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>256</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>242</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>255</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>243</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>254</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>244</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>253</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>245</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>252</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+               <base-pair comment="?">
+                  <base-id-5p>
+                     <base-id><position>246</position></base-id>
+                  </base-id-5p>
+                  <base-id-3p>
+                     <base-id><position>251</position></base-id>
+                  </base-id-3p>
+               </base-pair>
+            </str-annotation>
+         </model>
+      </structure>
+   </molecule>
+</rnaml>
diff --git a/examples/testdata/simplegff3.gff b/examples/testdata/simplegff3.gff
new file mode 100644 (file)
index 0000000..2ac5421
--- /dev/null
@@ -0,0 +1,19 @@
+##gff-version 2
+##source-version exonerate:protein2genome:local 2.2.0
+##date 2015-01-16
+##type DNA
+#
+#
+# seqname source feature start end score strand frame attributes
+#
+seq1   exonerate:protein2genome:local  gene    8       11      3652    -       .       gene_id 0 ; sequence seq2 ; gene_orientation .
+seq1   exonerate:protein2genome:local  cds     9       11      .       -       .       
+seq1   exonerate:protein2genome:local  exon    9       11      .       -       .       insertions 3 ; deletions 6
+seq1   exonerate:protein2genome:local  similarity      8       11      3652    -       .       alignment_id 0 ; Query seq2 ; Align 11 1 3
+##FASTA
+>seq1
+ACTACGACACGACGACGACGACG
+>seq2
+CDEQEATGTQDAQEQAQC
+
+
index 4039cdd..7b7f4b0 100755 (executable)
  */
 package MCview;
 
-import java.awt.Color;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Vector;
-
 import jalview.analysis.AlignSeq;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
@@ -37,6 +29,14 @@ import jalview.datamodel.SequenceI;
 import jalview.io.FileParse;
 import jalview.util.MessageManager;
 
+import java.awt.Color;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Vector;
+
 public class PDBfile extends jalview.io.AlignFile
 {
   private static String CALC_ID_PREFIX = "JalviewPDB";
@@ -383,7 +383,7 @@ public class PDBfile extends jalview.io.AlignFile
                 "getSeqsAsArray", new Class[]
                 {}).invoke(jmf));
         cl.getMethod("addAnnotations", new Class[]
-        { Alignment.class }).invoke(jmf, al);
+        { AlignmentI.class }).invoke(jmf, al);
         for (SequenceI sq : al.getSequences())
         {
           if (sq.getDatasetSequence() != null)
index e6a4853..5b812dd 100755 (executable)
@@ -24,7 +24,9 @@ import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.SequenceI;
 
 import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Vector;
 
 /**
@@ -35,17 +37,27 @@ import java.util.Vector;
  */
 public class SequenceIdMatcher
 {
-  private Hashtable names;
+  private HashMap<SeqIdName, SequenceI> names;
 
-  public SequenceIdMatcher(SequenceI[] seqs)
+  public SequenceIdMatcher(List<SequenceI> seqs)
   {
-    names = new Hashtable();
-    for (int i = 0; i < seqs.length; i++)
+    names = new HashMap<SeqIdName, SequenceI>();
+    addAll(seqs);
+  }
+
+  /**
+   * add more sequences to this matcher - also used by the constructor
+   * 
+   * @param seqs
+   */
+  public void addAll(List<SequenceI> seqs)
+  {
+    for (SequenceI seq : seqs)
     {
       // TODO: deal with ID collisions - SequenceI should be appended to list
       // associated with this key.
-      names.put(new SeqIdName(seqs[i].getDisplayId(true)), seqs[i]);
-      SequenceI dbseq = seqs[i];
+      names.put(new SeqIdName(seq.getDisplayId(true)), seq);
+      SequenceI dbseq = seq;
       while (dbseq.getDatasetSequence()!=null)
       {
         dbseq = dbseq.getDatasetSequence();
@@ -58,9 +70,9 @@ public class SequenceIdMatcher
         for (int r = 0; r < dbr.length; r++)
         {
           sid = new SeqIdName(dbr[r].getAccessionId());
-          if (!names.contains(sid))
+          if (!names.containsKey(sid))
           {
-            names.put(sid, seqs[i]);
+            names.put(sid, seq);
           }
         }
       }
@@ -68,19 +80,30 @@ public class SequenceIdMatcher
   }
 
   /**
+   * convenience method to make a matcher from concrete array
+   * 
+   * @param sequences
+   */
+  public SequenceIdMatcher(SequenceI[] sequences)
+  {
+    this(Arrays.asList(sequences));
+  }
+
+  /**
    * returns the closest SequenceI in matches to SeqIdName and returns all the
    * matches to the names hash.
    * 
    * @param candName
    *          SeqIdName
    * @param matches
-   *          Vector of SequenceI objects
+   *          List of SequenceI objects
    * @return SequenceI closest SequenceI to SeqIdName
    */
-  private SequenceI pickbestMatch(SeqIdName candName, Vector matches)
+  private SequenceI pickbestMatch(SeqIdName candName,
+          List<SequenceI> matches)
   {
-    SequenceI[] st = pickbestMatches(candName, matches);
-    return st == null || st.length == 0 ? null : st[0];
+    List<SequenceI> st = pickbestMatches(candName, matches);
+    return st == null || st.size() == 0 ? null : st.get(0);
   }
 
   /**
@@ -94,16 +117,15 @@ public class SequenceIdMatcher
    * @return Object[] { SequenceI closest SequenceI to SeqIdName, SequenceI[]
    *         ties }
    */
-  private SequenceI[] pickbestMatches(SeqIdName candName, Vector matches)
+  private List<SequenceI> pickbestMatches(SeqIdName candName,
+          List<SequenceI> matches)
   {
-    ArrayList best = new ArrayList();
-    SequenceI match = null;
+    ArrayList<SequenceI> best = new ArrayList<SequenceI>();
     if (candName == null || matches == null || matches.size() == 0)
     {
       return null;
     }
-    match = (SequenceI) matches.elementAt(0);
-    matches.removeElementAt(0);
+    SequenceI match = matches.remove(0);
     best.add(match);
     names.put(new SeqIdName(match.getName()), match);
     int matchlen = match.getName().length();
@@ -111,8 +133,7 @@ public class SequenceIdMatcher
     while (matches.size() > 0)
     {
       // look through for a better one.
-      SequenceI cand = (SequenceI) matches.elementAt(0);
-      matches.remove(0);
+      SequenceI cand = matches.remove(0);
       names.put(new SeqIdName(cand.getName()), cand);
       int q, w, candlen = cand.getName().length();
       // keep the one with an id 'closer' to the given seqnam string
@@ -136,7 +157,7 @@ public class SequenceIdMatcher
       return null;
     }
     ;
-    return (SequenceI[]) best.toArray(new SequenceI[0]);
+    return best;
   }
 
   /**
@@ -163,12 +184,18 @@ public class SequenceIdMatcher
    * 
    * @param seqnam
    *          string to query Matcher with.
+   * @return a new array or (possibly) null
    */
   public SequenceI[] findAllIdMatches(String seqnam)
   {
 
     SeqIdName nam = new SeqIdName(seqnam);
-    return findAllIdMatches(nam);
+    List<SequenceI> m = findAllIdMatches(nam);
+    if (m!=null)
+    {
+      return m.toArray(new SequenceI[m.size()]);
+    }
+    return null;
   }
 
   /**
@@ -233,15 +260,15 @@ public class SequenceIdMatcher
    *          SeqIdName
    * @return SequenceI[]
    */
-  private SequenceI[] findAllIdMatches(
+  private List<SequenceI> findAllIdMatches(
           jalview.analysis.SequenceIdMatcher.SeqIdName nam)
   {
-    Vector matches = new Vector();
+    ArrayList<SequenceI> matches = new ArrayList<SequenceI>();
     while (names.containsKey(nam))
     {
-      matches.addElement(names.remove(nam));
+      matches.add(names.remove(nam));
     }
-    SequenceI[] r = pickbestMatches(nam, matches);
+    List<SequenceI> r = pickbestMatches(nam, matches);
     return r;
   }
 
diff --git a/src/jalview/api/AlignExportSettingI.java b/src/jalview/api/AlignExportSettingI.java
new file mode 100644 (file)
index 0000000..9b67cf5
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+
+package jalview.api;
+
+/**
+ * Abstract interface implemented by Alignment Export dialog to retrieve user
+ * configurations
+ * 
+ * @author tcnofoegbu
+ *
+ */
+public interface AlignExportSettingI
+{
+  /**
+   * Checks if hidden sequences should be exported
+   * 
+   * @return
+   */
+  public boolean isExportHiddenSequences();
+
+  /**
+   * Checks if hidden columns shoulb be exported
+   * 
+   * @return
+   */
+  public boolean isExportHiddenColumns();
+
+  /**
+   * Checks if Annotations should be exported, note this is available for
+   * complex flat file exports like JSON, HTML, GFF
+   * 
+   * @return
+   */
+  public boolean isExportAnnotations();
+
+  /**
+   * Checks if SequenceFeatures should be exported, note this is available for
+   * complex flat file exports like JSON, HTML, GFF
+   * 
+   * @return
+   */
+  public boolean isExportFeatures();
+
+  /**
+   * Checks if SequenceGroups should be exported, note this is available for
+   * complex flat file exports like JSON, HTML, GFF
+   * 
+   * @return
+   */
+  public boolean isExportGroups();
+
+}
index 584f596..4896b35 100644 (file)
@@ -21,6 +21,7 @@
 package jalview.api;
 
 import jalview.commands.CommandI;
+import jalview.schemes.ColourSchemeI;
 
 /**
  * Interface implemented by gui implementations managing a Jalview Alignment
@@ -41,4 +42,24 @@ public interface AlignViewControllerGuiI
 
   void addHistoryItem(CommandI command);
 
+  void setShowSeqFeatures(boolean show);
+  
+  void setMenusForViewport();
+  
+  void changeColour(ColourSchemeI cs);
+
+  /**
+   * trigger an update of the UI in response to a model data change, and if
+   * necessary enable the display of sequence feature annotation on the view.
+   * 
+   * @param enableIfNecessary
+   */
+  void refreshFeatureUI(boolean enableIfNecessary);
+
+  /**
+   * get the Feature Settings control panel for the alignment view if one exists
+   * 
+   * @return
+   */
+  FeatureSettingsControllerI getFeatureSettingsUI();
 }
index 235a656..fef9f14 100644 (file)
@@ -76,4 +76,17 @@ public interface AlignViewControllerI
    */
   void sortAlignmentByFeatureDensity(String[] typ);
 
+  /**
+   * add a features file of some kind to the current view
+   * 
+   * @param file
+   * @param protocol
+   * @param relaxedIdMatching
+   *          if true, try harder to match up IDs with local sequence data
+   * @return true if parsing resulted in something being imported to the view or
+   *         dataset
+   */
+  public boolean parseFeaturesFile(String file, String protocol,
+          boolean relaxedIdMatching);
+
 }
index 34ee209..93b2134 100644 (file)
  */
 package jalview.api;
 
-import java.awt.Color;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
 import jalview.analysis.Conservation;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
@@ -36,6 +31,11 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.schemes.ColourSchemeI;
 
+import java.awt.Color;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @author jimp
  * 
@@ -372,11 +372,4 @@ public interface AlignViewportI extends ViewStyleI
    * Set whether view should scroll to show the highlighted region of a sequence
    */
   void setFollowHighlight(boolean b);
-
-  public FeatureRenderer getFeatureRenderer();
-
-  public void setFeatureRenderer(FeatureRenderer featureRenderer);
-
-  public boolean isIncludeHiddenRegion();
-
 }
index 79911d9..cf98b2f 100644 (file)
@@ -24,7 +24,6 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 
 import java.awt.Color;
-import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
@@ -37,42 +36,145 @@ import java.util.Map;
 public interface FeatureRenderer
 {
 
+  /**
+   * compute the perceived colour for a given column position in sequenceI,
+   * taking transparency and feature visibility into account.
+   * 
+   * @param col
+   *          - background colour (due to alignment/group shading schemes, etc).
+   * @param sequenceI
+   *          - sequence providing features
+   * @param r
+   *          - column position
+   * @return
+   */
   Color findFeatureColour(Color col, SequenceI sequenceI, int r);
 
+  /**
+   * trigger the feature discovery process for a newly created feature renderer.
+   */
   void featuresAdded();
 
+  /**
+   * 
+   * @param ft
+   * @return display style for a feature
+   */
   Object getFeatureStyle(String ft);
 
+  /**
+   * update the feature style for a particular feature
+   * 
+   * @param ft
+   * @param ggc
+   *          - currently allows java.awt.Color and
+   *          jalview.schemes.GraduatedColor
+   */
   void setColour(String ft, Object ggc);
 
   AlignViewportI getViewport();
 
+  /**
+   * 
+   * @return container managing list of feature types and their visibility
+   */
   FeaturesDisplayedI getFeaturesDisplayed();
 
+  /**
+   * get display style for all features types - visible or invisible
+   * 
+   * @return
+   */
   Map<String,Object> getFeatureColours();
 
+  /**
+   * query the alignment view to find all features
+   * 
+   * @param newMadeVisible
+   *          - when true, automatically make newly discovered types visible
+   */
   void findAllFeatures(boolean newMadeVisible);
 
+  /**
+   * get display style for all features types currently visible
+   * 
+   * @return
+   */
   Map<String,Object> getDisplayedFeatureCols();
 
+  /**
+   * get all registered groups
+   * 
+   * @return
+   */
   List<String> getFeatureGroups();
 
+  /**
+   * get groups that are visible/invisible
+   * 
+   * @param visible
+   * @return
+   */
   List<String> getGroups(boolean visible);
 
+  /**
+   * change visibility for a range of groups
+   * 
+   * @param toset
+   * @param visible
+   */
   void setGroupVisibility(List<String> toset, boolean visible);
 
+  /**
+   * change visibiilty of given group
+   * 
+   * @param group
+   * @param visible
+   */
   void setGroupVisibility(String group, boolean visible);
 
+  /**
+   * locate features at a particular position on the given sequence
+   * 
+   * @param sequence
+   * @param res
+   * @return
+   */
   List<SequenceFeature> findFeaturesAtRes(SequenceI sequence, int res);
 
+  /**
+   * 
+   * @return true if the rendering platform supports transparency
+   */
   boolean isTransparencyAvailable();
 
+  /**
+   * get current displayed types
+   * 
+   * @return
+   */
+
   String[] getDisplayedFeatureTypes();
 
+  /**
+   * get current displayed groups
+   * 
+   * @return
+   */
   String[] getDisplayedFeatureGroups();
 
+  /**
+   * display all features of these types
+   * 
+   * @param featureTypes
+   */
   void setAllVisible(List<String> featureTypes);
 
+  /**
+   * display featureType
+   * 
+   * @param featureType
+   */
   void setVisible(String featureType);
 
 }
index c718e36..2bcd667 100644 (file)
@@ -2,5 +2,7 @@ package jalview.api;
 
 public interface FeatureSettingsControllerI
 {
+
+  void discoverAllFeatureData();
   
 }
index d71fdd4..f16da84 100644 (file)
  */
 package jalview.appletgui;
 
-import java.awt.CheckboxMenuItem;
-import java.awt.Frame;
-import java.awt.Menu;
-import java.awt.MenuItem;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.Vector;
-
 import jalview.analysis.AAFrequency;
 import jalview.analysis.AlignmentAnnotationUtils;
 import jalview.analysis.AlignmentUtils;
@@ -67,6 +51,22 @@ import jalview.schemes.ZappoColourScheme;
 import jalview.util.MessageManager;
 import jalview.util.UrlLink;
 
+import java.awt.CheckboxMenuItem;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuItem;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.Vector;
+
 public class APopupMenu extends java.awt.PopupMenu implements
         ActionListener, ItemListener
 {
@@ -832,7 +832,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     // TODO consider using getSequenceSelection instead here
 
     cap.setText(new jalview.io.AppletFormatAdapter().formatSequences(
-            e.getActionCommand(), ap.av.getShowJVSuffix(), ap.av, true));
+            e.getActionCommand(), ap.av.getShowJVSuffix(), ap, true));
 
   }
 
@@ -898,7 +898,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
   {
     if (seq.getPDBId() != null)
     {
-      PDBEntry entry = (PDBEntry) seq.getPDBId().firstElement();
+      PDBEntry entry = seq.getPDBId().firstElement();
 
       if (ap.av.applet.jmolAvailable)
       {
index 2b30cd5..249b4d3 100644 (file)
@@ -26,6 +26,7 @@ import jalview.api.AlignViewControllerGuiI;
 import jalview.api.AlignViewControllerI;
 import jalview.api.AlignViewportI;
 import jalview.api.FeatureRenderer;
+import jalview.api.FeatureSettingsControllerI;
 import jalview.api.SequenceStructureBinding;
 import jalview.bin.JalviewLite;
 import jalview.commands.CommandI;
@@ -211,7 +212,6 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     if (hiddenSeqs != null && hiddenSeqs.length > 0)
     {
       viewport.hideSequence(hiddenSeqs);
-      viewport.setHasHiddenRows(true);
     }
     if (columnSelection != null)
     {
@@ -1342,9 +1342,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
             { e.getActionCommand() }), 600, 500);
 
     FeatureRenderer fr = this.alignPanel.cloneFeatureRenderer();
-    viewport.setFeatureRenderer(fr);
-    viewport.setIncludeHiddenRegion(false);
-    cap.setText(new AppletFormatAdapter(viewport).formatSequences(
+    cap.setText(new AppletFormatAdapter(alignPanel).formatSequences(
             e.getActionCommand(), viewport.getAlignment(),
             viewport.getShowJVSuffix()));
   }
@@ -3874,7 +3872,6 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   public SequenceStructureBinding addStructureViewInstance(
           Object jmolviewer, String[] sequenceIds)
   {
-    // TODO method never called - remove?
     Viewer viewer = null;
     try
     {
@@ -4210,4 +4207,36 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   {
     this.splitFrame = sf;
   }
+
+    // may not need this
+  @Override
+  public void setShowSeqFeatures(boolean b)
+  {
+    // showSeqFeatures.setSelected(b);
+    viewport.setShowSequenceFeatures(b);
+
+  }
+
+  @Override
+  public void setMenusForViewport()
+  {
+    // setMenusFromViewport(viewport);
+
+  }
+  @Override
+  public void refreshFeatureUI(boolean enableIfNecessary)
+  {
+    if (enableIfNecessary)
+    {
+      sequenceFeatures.setState(true);
+      alignPanel.av.setShowSequenceFeatures(true);
+    }
+  }
+
+  @Override
+  public FeatureSettingsControllerI getFeatureSettingsUI()
+  {
+    return alignPanel.av.featureSettings;
+  }
+
 }
index 607dc05..e4e3e17 100644 (file)
  */
 package jalview.appletgui;
 
-import java.awt.Font;
-
 import jalview.analysis.NJTree;
 import jalview.api.AlignViewportI;
-import jalview.api.FeatureRenderer;
 import jalview.bin.JalviewLite;
 import jalview.commands.CommandI;
 import jalview.datamodel.AlignmentI;
@@ -41,6 +38,8 @@ import jalview.structure.StructureSelectionManager;
 import jalview.structure.VamsasSource;
 import jalview.viewmodel.AlignmentViewport;
 
+import java.awt.Font;
+
 public class AlignViewport extends AlignmentViewport implements
         SelectionSource, VamsasSource, CommandListener
 {
@@ -58,10 +57,6 @@ public class AlignViewport extends AlignmentViewport implements
 
   private AnnotationColumnChooser annotationColumnSelectionState;
 
-  private FeatureRenderer featureRenderer;
-
-  private boolean includeHiddenRegion = true;
-
   public void finalize()
   {
     applet = null;
@@ -472,27 +467,5 @@ public class AlignViewport extends AlignmentViewport implements
     }
   }
 
-  @Override
-  public FeatureRenderer getFeatureRenderer()
-  {
-    return featureRenderer;
-  }
-
-  @Override
-  public void setFeatureRenderer(FeatureRenderer featureRenderer)
-  {
-    this.featureRenderer = featureRenderer;
-
-  }
-
-  public boolean isIncludeHiddenRegion()
-  {
-    return includeHiddenRegion;
-  }
-
-  public void setIncludeHiddenRegion(boolean includeHiddenRegion)
-  {
-    this.includeHiddenRegion = includeHiddenRegion;
-  }
 
 }
index e25ff8f..0375de2 100644 (file)
@@ -2,7 +2,6 @@ package jalview.appletgui;
 
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.ColumnSelection;
-import jalview.gui.JvSwingUtils;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.util.MessageManager;
 import jalview.viewmodel.annotationfilter.AnnotationFilterParameter;
@@ -192,11 +191,11 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements
     slider.setPreferredSize(new Dimension(100, 32));
 
     thresholdPanel.setBackground(Color.white);
-    thresholdPanel.setFont(JvSwingUtils.getLabelFont());
+    // thresholdPanel.setFont(JvSwingUtils.getLabelFont());
     // thresholdPanel.setLayout(new MigLayout("", "[left][right]", "[][]"));
 
     actionPanel.setBackground(Color.white);
-    actionPanel.setFont(JvSwingUtils.getLabelFont());
+    // actionPanel.setFont(JvSwingUtils.getLabelFont());
 
     graphFilterView.setLayout(gBorderLayout);
     graphFilterView.setBackground(Color.white);
@@ -205,7 +204,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements
     noGraphFilterView.setBackground(Color.white);
 
     annotationComboBoxPanel.setBackground(Color.white);
-    annotationComboBoxPanel.setFont(JvSwingUtils.getLabelFont());
+    // annotationComboBoxPanel.setFont(JvSwingUtils.getLabelFont());
 
     gSearchPanel = new SearchPanel(this);
     ngSearchPanel = new SearchPanel(this);
@@ -657,7 +656,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements
 
       this.setBackground(Color.white);
       this.setTitle("Structure Filter");
-      this.setFont(JvSwingUtils.getLabelFont());
+      // this.setFont(JvSwingUtils.getLabelFont());
 
       this.add(all);
       this.add(alphaHelix);
@@ -792,7 +791,7 @@ public class AnnotationColumnChooser extends AnnotationRowFilter implements
       description.setEnabled(false);
       description.addItemListener(this);
       this.setTitle("Search Filter");
-      this.setFont(JvSwingUtils.getLabelFont());
+      // this.setFont(JvSwingUtils.getLabelFont());
 
       syncState();
       this.add(searchBox);
index bb2fa12..535dc62 100644 (file)
  */
 package jalview.appletgui;
 
-import java.awt.BorderLayout;
-import java.awt.Button;
-import java.awt.Dialog;
-import java.awt.Font;
-import java.awt.Frame;
-import java.awt.Label;
-import java.awt.Panel;
-import java.awt.TextArea;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
-
 import jalview.analysis.AlignmentUtils;
 import jalview.api.ComplexAlignFile;
 import jalview.bin.JalviewLite;
-import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.PDBEntry;
@@ -51,6 +37,19 @@ import jalview.schemes.ColourSchemeI;
 import jalview.schemes.TCoffeeColourScheme;
 import jalview.util.MessageManager;
 
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Dialog;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Label;
+import java.awt.Panel;
+import java.awt.TextArea;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
 public class CutAndPasteTransfer extends Panel implements ActionListener,
         MouseListener
 {
@@ -221,11 +220,11 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
   protected void loadAlignment(String text, boolean newWindow,
           AlignViewport viewport)
   {
-    Alignment al = null;
+    AlignmentI al = null;
 
     String format = new IdentifyFile().Identify(text,
             AppletFormatAdapter.PASTE);
-    AppletFormatAdapter afa = new AppletFormatAdapter(viewport);
+    AppletFormatAdapter afa = new AppletFormatAdapter(alignFrame.alignPanel);
     try
     {
       al = afa.readFile(text, AppletFormatAdapter.PASTE, format);
@@ -294,7 +293,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
    * @param al
    * @return
    */
-  protected boolean openSplitFrame(Alignment al, String format)
+  protected boolean openSplitFrame(AlignmentI al, String format)
   {
     final AlignmentI thisAlignment = this.alignFrame.getAlignViewport().getAlignment();
     if (thisAlignment.isNucleotide() == al.isNucleotide())
index 8ce3e62..2b79256 100755 (executable)
  */
 package jalview.appletgui;
 
-import java.util.*;
-import java.util.List;
-import java.awt.*;
-import java.awt.event.*;
-
-import jalview.analysis.AlignmentSorter;
-import jalview.commands.OrderCommand;
-import jalview.datamodel.*;
+import jalview.api.FeatureSettingsControllerI;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceFeature;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.schemes.GraduatedColor;
 import jalview.util.MessageManager;
 
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Checkbox;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.GridLayout;
+import java.awt.Image;
+import java.awt.Label;
+import java.awt.MenuItem;
+import java.awt.Panel;
+import java.awt.PopupMenu;
+import java.awt.ScrollPane;
+import java.awt.Scrollbar;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
+import java.awt.event.InputEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Vector;
+
 public class FeatureSettings extends Panel implements ItemListener,
         MouseListener, MouseMotionListener, ActionListener,
-        AdjustmentListener
+        AdjustmentListener, FeatureSettingsControllerI
 {
   FeatureRenderer fr;
 
@@ -84,7 +114,7 @@ public class FeatureSettings extends Panel implements ItemListener,
       fr.findAllFeatures(true); // was default - now true to make all visible
     }
 
-    setTableData();
+    discoverAllFeatureData();
 
     this.setLayout(new BorderLayout());
     scrollPane = new ScrollPane();
@@ -249,7 +279,8 @@ public class FeatureSettings extends Panel implements ItemListener,
     men.show(this.featurePanel, x, y);
   }
 
-  public void setTableData()
+  @Override
+  public void discoverAllFeatureData()
   {
     if (fr.getAllFeatureColours()!=null && fr.getAllFeatureColours().size()>0)
     {
@@ -276,7 +307,7 @@ public class FeatureSettings extends Panel implements ItemListener,
     }
     // TODO: JAL-964 - smoothly incorporate new group entries if panel already
     // displayed and new groups present
-    for (String group:(List<String>)fr.getFeatureGroups())
+    for (String group:fr.getFeatureGroups())
     {
       boolean vis = fr.checkGroupVisibility(group, false);
       Checkbox check = new MyCheckbox(group, vis,
@@ -648,7 +679,7 @@ public class FeatureSettings extends Panel implements ItemListener,
 
   public void adjustmentValueChanged(AdjustmentEvent evt)
   {
-    fr.setTransparency((float) (100 - transparency.getValue()) / 100f);
+    fr.setTransparency((100 - transparency.getValue()) / 100f);
     ap.seqPanel.seqCanvas.repaint();
 
   }
index 7f9eba9..5204094 100755 (executable)
@@ -56,7 +56,8 @@ public class IdCanvas extends Panel
     PaintRefresher.Register(this, av.getSequenceSetId());
   }
 
-  public void drawIdString(Graphics gg, SequenceI s, int i, int starty,
+  public void drawIdString(Graphics gg, boolean hiddenRows, SequenceI s,
+          int i, int starty,
           int ypos)
   {
     int charHeight = av.getCharHeight();
@@ -88,7 +89,7 @@ public class IdCanvas extends Panel
             ((i - starty) * charHeight) + ypos + charHeight
                     - (charHeight / 5));
 
-    if (av.hasHiddenRows() && av.getShowHiddenMarkers())
+    if (hiddenRows)
     {
       drawMarker(i, starty, ypos);
     }
@@ -199,6 +200,10 @@ public class IdCanvas extends Panel
     Color currentColor = Color.white;
     Color currentTextColor = Color.black;
 
+    final boolean doHiddenCheck = av.isDisplayReferenceSeq()
+            || av.hasHiddenRows(), hiddenRows = av.hasHiddenRows()
+            && av.getShowHiddenMarkers();
+
     if (av.getWrapAlignment())
     {
       int maxwidth = av.getAlignment().getWidth();
@@ -227,7 +232,6 @@ public class IdCanvas extends Panel
       int cHeight = alheight * avcharHeight + hgap + annotationHeight;
 
       int rowSize = av.getEndRes() - av.getStartRes();
-
       // Draw the rest of the panels
       for (int ypos = hgap, row = av.startRes; (ypos <= getSize().height)
               && (row < maxwidth); ypos += cHeight, row += rowSize)
@@ -237,11 +241,11 @@ public class IdCanvas extends Panel
 
           SequenceI s = av.getAlignment().getSequenceAt(i);
           gg.setFont(italic);
-          if (av.isDisplayReferenceSeq() || av.hasHiddenRows())
+          if (doHiddenCheck)
           {
             setHiddenFont(s);
           }
-          drawIdString(gg, s, i, 0, ypos);
+          drawIdString(gg, hiddenRows, s, i, 0, ypos);
         }
 
         if (labels != null)
@@ -267,7 +271,7 @@ public class IdCanvas extends Panel
         }
         gg.setFont(italic);
         // boolean isrep=false;
-        if (av.isDisplayReferenceSeq() || av.hasHiddenRows())
+        if (doHiddenCheck)
         {
           // isrep =
           setHiddenFont(seq);
@@ -302,7 +306,7 @@ public class IdCanvas extends Panel
                 (((i - starty) * avcharHeight) + avcharHeight)
                         - (avcharHeight / 5));
 
-        if (av.hasHiddenRows() && av.getShowHiddenMarkers())
+        if (hiddenRows)
         {
           drawMarker(i, starty, 0);
         }
index 3301543..f09bda5 100755 (executable)
@@ -22,8 +22,17 @@ package jalview.appletgui;
 
 import jalview.datamodel.AlignmentI;
 
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Panel;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
 
 public class OverviewPanel extends Panel implements Runnable,
         MouseMotionListener, MouseListener
@@ -289,6 +298,8 @@ public class OverviewPanel extends Panel implements Runnable,
     Color color = Color.yellow;
     int row, col, sameRow = 0, sameCol = 0;
     jalview.datamodel.SequenceI seq;
+    final boolean hasHiddenRows = av.hasHiddenRows(), hasHiddenCols = av
+            .hasHiddenColumns();
     boolean hiddenRow = false;
     AlignmentI alignment = av.getAlignment();
     for (row = 0; row <= sequencesHeight; row++)
@@ -300,7 +311,7 @@ public class OverviewPanel extends Panel implements Runnable,
       }
 
       hiddenRow = false;
-      if (av.hasHiddenRows())
+      if (hasHiddenRows)
       {
         seq = alignment.getHiddenSequences().getHiddenSequence(lastrow);
         if (seq == null)
@@ -346,7 +357,7 @@ public class OverviewPanel extends Panel implements Runnable,
         }
 
         if (hiddenRow
-                || (av.hasHiddenColumns() && !av.getColumnSelection()
+                || (hasHiddenCols && !av.getColumnSelection()
                         .isVisible(lastcol)))
         {
           color = color.darker().darker();
index ebadb84..ae5c63f 100644 (file)
  */
 package jalview.bin;
 
-import java.applet.Applet;
-import java.awt.Button;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.EventQueue;
-import java.awt.Font;
-import java.awt.Frame;
-import java.awt.Graphics;
-import java.awt.event.ActionEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import netscape.javascript.JSException;
-import netscape.javascript.JSObject;
-
 import jalview.api.StructureSelectionManagerProvider;
 import jalview.appletgui.AlignFrame;
 import jalview.appletgui.AlignViewport;
@@ -72,6 +48,30 @@ import jalview.structure.SelectionListener;
 import jalview.structure.StructureSelectionManager;
 import jalview.util.MessageManager;
 
+import java.applet.Applet;
+import java.awt.Button;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.EventQueue;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.event.ActionEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import netscape.javascript.JSException;
+import netscape.javascript.JSObject;
+
 /**
  * Jalview Applet. Runs in Java 1.18 runtime
  * 
@@ -847,7 +847,7 @@ public class JalviewLite extends Applet implements
    */
   public AlignFrame loadAlignment(String text, String title)
   {
-    Alignment al = null;
+    AlignmentI al = null;
 
     String format = new IdentifyFile().Identify(text,
             AppletFormatAdapter.PASTE);
index 462cb81..6be1016 100644 (file)
@@ -20,7 +20,7 @@
  */
 package jalview.bin;
 
-import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
 import jalview.io.AppletFormatAdapter;
 import jalview.io.FileParse;
 
@@ -120,7 +120,7 @@ public class JalviewLiteURLRetrieve extends Applet
       {
         System.out.println("User specified Format is " + format);
       }
-      Alignment al = null;
+      AlignmentI al = null;
       try
       {
         al = new AppletFormatAdapter().readFile(file, protocol, format);
index 0cc2514..5b107b5 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,162 +19,151 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Alignment implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _annotation.
-   */
-  private jalview.binding.Annotation _annotation;
-
-  /**
-   * Field _sequenceSet.
-   */
-  private jalview.binding.SequenceSet _sequenceSet;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Alignment()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * Returns the value of field 'annotation'.
-   * 
-   * @return the value of field 'Annotation'.
-   */
-  public jalview.binding.Annotation getAnnotation()
-  {
-    return this._annotation;
-  }
-
-  /**
-   * Returns the value of field 'sequenceSet'.
-   * 
-   * @return the value of field 'SequenceSet'.
-   */
-  public jalview.binding.SequenceSet getSequenceSet()
-  {
-    return this._sequenceSet;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+public class Alignment implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _annotation.
+     */
+    private jalview.binding.Annotation _annotation;
+
+    /**
+     * Field _sequenceSet.
+     */
+    private jalview.binding.SequenceSet _sequenceSet;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Alignment() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * Returns the value of field 'annotation'.
+     * 
+     * @return the value of field 'Annotation'.
+     */
+    public jalview.binding.Annotation getAnnotation(
+    ) {
+        return this._annotation;
+    }
+
+    /**
+     * Returns the value of field 'sequenceSet'.
+     * 
+     * @return the value of field 'SequenceSet'.
+     */
+    public jalview.binding.SequenceSet getSequenceSet(
+    ) {
+        return this._sequenceSet;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'annotation'.
+     * 
+     * @param annotation the value of field 'annotation'.
+     */
+    public void setAnnotation(
+            final jalview.binding.Annotation annotation) {
+        this._annotation = annotation;
+    }
+
+    /**
+     * Sets the value of field 'sequenceSet'.
+     * 
+     * @param sequenceSet the value of field 'sequenceSet'.
+     */
+    public void setSequenceSet(
+            final jalview.binding.SequenceSet sequenceSet) {
+        this._sequenceSet = sequenceSet;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Alignment
+     */
+    public static jalview.binding.Alignment unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Alignment) Unmarshaller.unmarshal(jalview.binding.Alignment.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'annotation'.
-   * 
-   * @param annotation
-   *          the value of field 'annotation'.
-   */
-  public void setAnnotation(final jalview.binding.Annotation annotation)
-  {
-    this._annotation = annotation;
-  }
-
-  /**
-   * Sets the value of field 'sequenceSet'.
-   * 
-   * @param sequenceSet
-   *          the value of field 'sequenceSet'.
-   */
-  public void setSequenceSet(final jalview.binding.SequenceSet sequenceSet)
-  {
-    this._sequenceSet = sequenceSet;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Alignment
-   */
-  public static jalview.binding.Alignment unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Alignment) Unmarshaller.unmarshal(
-            jalview.binding.Alignment.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index 005adf0..108d3ad 100644 (file)
@@ -1,30 +1,15 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
-//- Imported classes and packages -/
-//---------------------------------/
-
-import jalview.util.MessageManager;
 
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
@@ -34,443 +19,414 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Annotation implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _graph.
-   */
-  private boolean _graph;
-
-  /**
-   * keeps track of state for field: _graph
-   */
-  private boolean _has_graph;
-
-  /**
-   * Field _graphType.
-   */
-  private int _graphType;
-
-  /**
-   * keeps track of state for field: _graphType
-   */
-  private boolean _has_graphType;
-
-  /**
-   * Field _annotationElementList.
-   */
-  private java.util.Vector _annotationElementList;
-
-  /**
-   * Field _label.
-   */
-  private java.lang.String _label;
-
-  /**
-   * Field _description.
-   */
-  private java.lang.String _description;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Annotation()
-  {
-    super();
-    this._annotationElementList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vAnnotationElement
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addAnnotationElement(
-          final jalview.binding.AnnotationElement vAnnotationElement)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._annotationElementList.addElement(vAnnotationElement);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vAnnotationElement
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addAnnotationElement(final int index,
-          final jalview.binding.AnnotationElement vAnnotationElement)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._annotationElementList.add(index, vAnnotationElement);
-  }
-
-  /**
-     */
-  public void deleteGraph()
-  {
-    this._has_graph = false;
-  }
-
-  /**
-     */
-  public void deleteGraphType()
-  {
-    this._has_graphType = false;
-  }
-
-  /**
-   * Method enumerateAnnotationElement.
-   * 
-   * @return an Enumeration over all jalview.binding.AnnotationElement elements
-   */
-  public java.util.Enumeration enumerateAnnotationElement()
-  {
-    return this._annotationElementList.elements();
-  }
-
-  /**
-   * Method getAnnotationElement.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.AnnotationElement at the given
-   *         index
-   */
-  public jalview.binding.AnnotationElement getAnnotationElement(
-          final int index) throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._annotationElementList.size())
-    {
-      throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getAnnotationElement",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._annotationElementList.size() - 1)).toString()
-      }));
+public class Annotation implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _graph.
+     */
+    private boolean _graph;
+
+    /**
+     * keeps track of state for field: _graph
+     */
+    private boolean _has_graph;
+
+    /**
+     * Field _graphType.
+     */
+    private int _graphType;
+
+    /**
+     * keeps track of state for field: _graphType
+     */
+    private boolean _has_graphType;
+
+    /**
+     * Field _annotationElementList.
+     */
+    private java.util.Vector _annotationElementList;
+
+    /**
+     * Field _label.
+     */
+    private java.lang.String _label;
+
+    /**
+     * Field _description.
+     */
+    private java.lang.String _description;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Annotation() {
+        super();
+        this._annotationElementList = new java.util.Vector();
     }
 
-    return (jalview.binding.AnnotationElement) _annotationElementList
-            .get(index);
-  }
-
-  /**
-   * Method getAnnotationElement.Returns the contents of the collection in an
-   * Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.AnnotationElement[] getAnnotationElement()
-  {
-    jalview.binding.AnnotationElement[] array = new jalview.binding.AnnotationElement[0];
-    return (jalview.binding.AnnotationElement[]) this._annotationElementList
-            .toArray(array);
-  }
-
-  /**
-   * Method getAnnotationElementCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getAnnotationElementCount()
-  {
-    return this._annotationElementList.size();
-  }
-
-  /**
-   * Returns the value of field 'description'.
-   * 
-   * @return the value of field 'Description'.
-   */
-  public java.lang.String getDescription()
-  {
-    return this._description;
-  }
-
-  /**
-   * Returns the value of field 'graph'.
-   * 
-   * @return the value of field 'Graph'.
-   */
-  public boolean getGraph()
-  {
-    return this._graph;
-  }
-
-  /**
-   * Returns the value of field 'graphType'.
-   * 
-   * @return the value of field 'GraphType'.
-   */
-  public int getGraphType()
-  {
-    return this._graphType;
-  }
-
-  /**
-   * Returns the value of field 'label'.
-   * 
-   * @return the value of field 'Label'.
-   */
-  public java.lang.String getLabel()
-  {
-    return this._label;
-  }
-
-  /**
-   * Method hasGraph.
-   * 
-   * @return true if at least one Graph has been added
-   */
-  public boolean hasGraph()
-  {
-    return this._has_graph;
-  }
-
-  /**
-   * Method hasGraphType.
-   * 
-   * @return true if at least one GraphType has been added
-   */
-  public boolean hasGraphType()
-  {
-    return this._has_graphType;
-  }
-
-  /**
-   * Returns the value of field 'graph'.
-   * 
-   * @return the value of field 'Graph'.
-   */
-  public boolean isGraph()
-  {
-    return this._graph;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vAnnotationElement
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addAnnotationElement(
+            final jalview.binding.AnnotationElement vAnnotationElement)
+    throws java.lang.IndexOutOfBoundsException {
+        this._annotationElementList.addElement(vAnnotationElement);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-     */
-  public void removeAllAnnotationElement()
-  {
-    this._annotationElementList.clear();
-  }
-
-  /**
-   * Method removeAnnotationElement.
-   * 
-   * @param vAnnotationElement
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeAnnotationElement(
-          final jalview.binding.AnnotationElement vAnnotationElement)
-  {
-    boolean removed = _annotationElementList.remove(vAnnotationElement);
-    return removed;
-  }
-
-  /**
-   * Method removeAnnotationElementAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.AnnotationElement removeAnnotationElementAt(
-          final int index)
-  {
-    java.lang.Object obj = this._annotationElementList.remove(index);
-    return (jalview.binding.AnnotationElement) obj;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vAnnotationElement
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setAnnotationElement(final int index,
-          final jalview.binding.AnnotationElement vAnnotationElement)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._annotationElementList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "setAnnotationElement",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._annotationElementList.size() - 1)).toString()
-        }));
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vAnnotationElement
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addAnnotationElement(
+            final int index,
+            final jalview.binding.AnnotationElement vAnnotationElement)
+    throws java.lang.IndexOutOfBoundsException {
+        this._annotationElementList.add(index, vAnnotationElement);
+    }
+
+    /**
+     */
+    public void deleteGraph(
+    ) {
+        this._has_graph= false;
+    }
+
+    /**
+     */
+    public void deleteGraphType(
+    ) {
+        this._has_graphType= false;
+    }
+
+    /**
+     * Method enumerateAnnotationElement.
+     * 
+     * @return an Enumeration over all
+     * jalview.binding.AnnotationElement elements
+     */
+    public java.util.Enumeration enumerateAnnotationElement(
+    ) {
+        return this._annotationElementList.elements();
+    }
+
+    /**
+     * Method getAnnotationElement.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.AnnotationElement
+     * at the given index
+     */
+    public jalview.binding.AnnotationElement getAnnotationElement(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._annotationElementList.size()) {
+            throw new IndexOutOfBoundsException("getAnnotationElement: Index value '" + index + "' not in range [0.." + (this._annotationElementList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.AnnotationElement) _annotationElementList.get(index);
     }
 
-    this._annotationElementList.set(index, vAnnotationElement);
-  }
-
-  /**
-   * 
-   * 
-   * @param vAnnotationElementArray
-   */
-  public void setAnnotationElement(
-          final jalview.binding.AnnotationElement[] vAnnotationElementArray)
-  {
-    // -- copy array
-    _annotationElementList.clear();
-
-    for (int i = 0; i < vAnnotationElementArray.length; i++)
-    {
-      this._annotationElementList.add(vAnnotationElementArray[i]);
+    /**
+     * Method getAnnotationElement.Returns the contents of the
+     * collection in an Array.  <p>Note:  Just in case the
+     * collection contents are changing in another thread, we pass
+     * a 0-length Array of the correct type into the API call. 
+     * This way we <i>know</i> that the Array returned is of
+     * exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.AnnotationElement[] getAnnotationElement(
+    ) {
+        jalview.binding.AnnotationElement[] array = new jalview.binding.AnnotationElement[0];
+        return (jalview.binding.AnnotationElement[]) this._annotationElementList.toArray(array);
+    }
+
+    /**
+     * Method getAnnotationElementCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getAnnotationElementCount(
+    ) {
+        return this._annotationElementList.size();
+    }
+
+    /**
+     * Returns the value of field 'description'.
+     * 
+     * @return the value of field 'Description'.
+     */
+    public java.lang.String getDescription(
+    ) {
+        return this._description;
+    }
+
+    /**
+     * Returns the value of field 'graph'.
+     * 
+     * @return the value of field 'Graph'.
+     */
+    public boolean getGraph(
+    ) {
+        return this._graph;
+    }
+
+    /**
+     * Returns the value of field 'graphType'.
+     * 
+     * @return the value of field 'GraphType'.
+     */
+    public int getGraphType(
+    ) {
+        return this._graphType;
+    }
+
+    /**
+     * Returns the value of field 'label'.
+     * 
+     * @return the value of field 'Label'.
+     */
+    public java.lang.String getLabel(
+    ) {
+        return this._label;
+    }
+
+    /**
+     * Method hasGraph.
+     * 
+     * @return true if at least one Graph has been added
+     */
+    public boolean hasGraph(
+    ) {
+        return this._has_graph;
+    }
+
+    /**
+     * Method hasGraphType.
+     * 
+     * @return true if at least one GraphType has been added
+     */
+    public boolean hasGraphType(
+    ) {
+        return this._has_graphType;
+    }
+
+    /**
+     * Returns the value of field 'graph'.
+     * 
+     * @return the value of field 'Graph'.
+     */
+    public boolean isGraph(
+    ) {
+        return this._graph;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     */
+    public void removeAllAnnotationElement(
+    ) {
+        this._annotationElementList.clear();
+    }
+
+    /**
+     * Method removeAnnotationElement.
+     * 
+     * @param vAnnotationElement
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeAnnotationElement(
+            final jalview.binding.AnnotationElement vAnnotationElement) {
+        boolean removed = _annotationElementList.remove(vAnnotationElement);
+        return removed;
+    }
+
+    /**
+     * Method removeAnnotationElementAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.AnnotationElement removeAnnotationElementAt(
+            final int index) {
+        java.lang.Object obj = this._annotationElementList.remove(index);
+        return (jalview.binding.AnnotationElement) obj;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vAnnotationElement
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setAnnotationElement(
+            final int index,
+            final jalview.binding.AnnotationElement vAnnotationElement)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._annotationElementList.size()) {
+            throw new IndexOutOfBoundsException("setAnnotationElement: Index value '" + index + "' not in range [0.." + (this._annotationElementList.size() - 1) + "]");
+        }
+        
+        this._annotationElementList.set(index, vAnnotationElement);
+    }
+
+    /**
+     * 
+     * 
+     * @param vAnnotationElementArray
+     */
+    public void setAnnotationElement(
+            final jalview.binding.AnnotationElement[] vAnnotationElementArray) {
+        //-- copy array
+        _annotationElementList.clear();
+        
+        for (int i = 0; i < vAnnotationElementArray.length; i++) {
+                this._annotationElementList.add(vAnnotationElementArray[i]);
+        }
+    }
+
+    /**
+     * Sets the value of field 'description'.
+     * 
+     * @param description the value of field 'description'.
+     */
+    public void setDescription(
+            final java.lang.String description) {
+        this._description = description;
+    }
+
+    /**
+     * Sets the value of field 'graph'.
+     * 
+     * @param graph the value of field 'graph'.
+     */
+    public void setGraph(
+            final boolean graph) {
+        this._graph = graph;
+        this._has_graph = true;
+    }
+
+    /**
+     * Sets the value of field 'graphType'.
+     * 
+     * @param graphType the value of field 'graphType'.
+     */
+    public void setGraphType(
+            final int graphType) {
+        this._graphType = graphType;
+        this._has_graphType = true;
+    }
+
+    /**
+     * Sets the value of field 'label'.
+     * 
+     * @param label the value of field 'label'.
+     */
+    public void setLabel(
+            final java.lang.String label) {
+        this._label = label;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Annotation
+     */
+    public static jalview.binding.Annotation unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Annotation) Unmarshaller.unmarshal(jalview.binding.Annotation.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-  }
-
-  /**
-   * Sets the value of field 'description'.
-   * 
-   * @param description
-   *          the value of field 'description'.
-   */
-  public void setDescription(final java.lang.String description)
-  {
-    this._description = description;
-  }
-
-  /**
-   * Sets the value of field 'graph'.
-   * 
-   * @param graph
-   *          the value of field 'graph'.
-   */
-  public void setGraph(final boolean graph)
-  {
-    this._graph = graph;
-    this._has_graph = true;
-  }
-
-  /**
-   * Sets the value of field 'graphType'.
-   * 
-   * @param graphType
-   *          the value of field 'graphType'.
-   */
-  public void setGraphType(final int graphType)
-  {
-    this._graphType = graphType;
-    this._has_graphType = true;
-  }
-
-  /**
-   * Sets the value of field 'label'.
-   * 
-   * @param label
-   *          the value of field 'label'.
-   */
-  public void setLabel(final java.lang.String label)
-  {
-    this._label = label;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Annotation
-   */
-  public static jalview.binding.Annotation unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Annotation) Unmarshaller.unmarshal(
-            jalview.binding.Annotation.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index 7bd3d43..d133fe0 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,287 +19,273 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class AnnotationElement implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _position.
-   */
-  private int _position;
-
-  /**
-   * keeps track of state for field: _position
-   */
-  private boolean _has_position;
-
-  /**
-   * Field _displayCharacter.
-   */
-  private java.lang.String _displayCharacter;
-
-  /**
-   * Field _description.
-   */
-  private java.lang.String _description;
-
-  /**
-   * Field _secondaryStructure.
-   */
-  private java.lang.String _secondaryStructure;
-
-  /**
-   * Field _value.
-   */
-  private float _value;
-
-  /**
-   * keeps track of state for field: _value
-   */
-  private boolean _has_value;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public AnnotationElement()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
+public class AnnotationElement implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _position.
+     */
+    private int _position;
+
+    /**
+     * keeps track of state for field: _position
+     */
+    private boolean _has_position;
+
+    /**
+     * Field _displayCharacter.
+     */
+    private java.lang.String _displayCharacter;
+
+    /**
+     * Field _description.
+     */
+    private java.lang.String _description;
+
+    /**
+     * Field _secondaryStructure.
+     */
+    private java.lang.String _secondaryStructure;
+
+    /**
+     * Field _value.
+     */
+    private float _value;
+
+    /**
+     * keeps track of state for field: _value
+     */
+    private boolean _has_value;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public AnnotationElement() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     */
+    public void deletePosition(
+    ) {
+        this._has_position= false;
+    }
+
+    /**
+     */
+    public void deleteValue(
+    ) {
+        this._has_value= false;
+    }
+
+    /**
+     * Returns the value of field 'description'.
+     * 
+     * @return the value of field 'Description'.
+     */
+    public java.lang.String getDescription(
+    ) {
+        return this._description;
+    }
+
+    /**
+     * Returns the value of field 'displayCharacter'.
+     * 
+     * @return the value of field 'DisplayCharacter'.
+     */
+    public java.lang.String getDisplayCharacter(
+    ) {
+        return this._displayCharacter;
+    }
+
+    /**
+     * Returns the value of field 'position'.
+     * 
+     * @return the value of field 'Position'.
      */
-  public void deletePosition()
-  {
-    this._has_position = false;
-  }
+    public int getPosition(
+    ) {
+        return this._position;
+    }
+
+    /**
+     * Returns the value of field 'secondaryStructure'.
+     * 
+     * @return the value of field 'SecondaryStructure'.
+     */
+    public java.lang.String getSecondaryStructure(
+    ) {
+        return this._secondaryStructure;
+    }
+
+    /**
+     * Returns the value of field 'value'.
+     * 
+     * @return the value of field 'Value'.
+     */
+    public float getValue(
+    ) {
+        return this._value;
+    }
+
+    /**
+     * Method hasPosition.
+     * 
+     * @return true if at least one Position has been added
+     */
+    public boolean hasPosition(
+    ) {
+        return this._has_position;
+    }
+
+    /**
+     * Method hasValue.
+     * 
+     * @return true if at least one Value has been added
+     */
+    public boolean hasValue(
+    ) {
+        return this._has_value;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'description'.
+     * 
+     * @param description the value of field 'description'.
+     */
+    public void setDescription(
+            final java.lang.String description) {
+        this._description = description;
+    }
+
+    /**
+     * Sets the value of field 'displayCharacter'.
+     * 
+     * @param displayCharacter the value of field 'displayCharacter'
+     */
+    public void setDisplayCharacter(
+            final java.lang.String displayCharacter) {
+        this._displayCharacter = displayCharacter;
+    }
+
+    /**
+     * Sets the value of field 'position'.
+     * 
+     * @param position the value of field 'position'.
+     */
+    public void setPosition(
+            final int position) {
+        this._position = position;
+        this._has_position = true;
+    }
+
+    /**
+     * Sets the value of field 'secondaryStructure'.
+     * 
+     * @param secondaryStructure the value of field
+     * 'secondaryStructure'.
+     */
+    public void setSecondaryStructure(
+            final java.lang.String secondaryStructure) {
+        this._secondaryStructure = secondaryStructure;
+    }
+
+    /**
+     * Sets the value of field 'value'.
+     * 
+     * @param value the value of field 'value'.
+     */
+    public void setValue(
+            final float value) {
+        this._value = value;
+        this._has_value = true;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.AnnotationElement
+     */
+    public static jalview.binding.AnnotationElement unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.AnnotationElement) Unmarshaller.unmarshal(jalview.binding.AnnotationElement.class, reader);
+    }
 
-  /**
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
      */
-  public void deleteValue()
-  {
-    this._has_value = false;
-  }
-
-  /**
-   * Returns the value of field 'description'.
-   * 
-   * @return the value of field 'Description'.
-   */
-  public java.lang.String getDescription()
-  {
-    return this._description;
-  }
-
-  /**
-   * Returns the value of field 'displayCharacter'.
-   * 
-   * @return the value of field 'DisplayCharacter'.
-   */
-  public java.lang.String getDisplayCharacter()
-  {
-    return this._displayCharacter;
-  }
-
-  /**
-   * Returns the value of field 'position'.
-   * 
-   * @return the value of field 'Position'.
-   */
-  public int getPosition()
-  {
-    return this._position;
-  }
-
-  /**
-   * Returns the value of field 'secondaryStructure'.
-   * 
-   * @return the value of field 'SecondaryStructure'.
-   */
-  public java.lang.String getSecondaryStructure()
-  {
-    return this._secondaryStructure;
-  }
-
-  /**
-   * Returns the value of field 'value'.
-   * 
-   * @return the value of field 'Value'.
-   */
-  public float getValue()
-  {
-    return this._value;
-  }
-
-  /**
-   * Method hasPosition.
-   * 
-   * @return true if at least one Position has been added
-   */
-  public boolean hasPosition()
-  {
-    return this._has_position;
-  }
-
-  /**
-   * Method hasValue.
-   * 
-   * @return true if at least one Value has been added
-   */
-  public boolean hasValue()
-  {
-    return this._has_value;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'description'.
-   * 
-   * @param description
-   *          the value of field 'description'.
-   */
-  public void setDescription(final java.lang.String description)
-  {
-    this._description = description;
-  }
-
-  /**
-   * Sets the value of field 'displayCharacter'.
-   * 
-   * @param displayCharacter
-   *          the value of field 'displayCharacter'
-   */
-  public void setDisplayCharacter(final java.lang.String displayCharacter)
-  {
-    this._displayCharacter = displayCharacter;
-  }
-
-  /**
-   * Sets the value of field 'position'.
-   * 
-   * @param position
-   *          the value of field 'position'.
-   */
-  public void setPosition(final int position)
-  {
-    this._position = position;
-    this._has_position = true;
-  }
-
-  /**
-   * Sets the value of field 'secondaryStructure'.
-   * 
-   * @param secondaryStructure
-   *          the value of field 'secondaryStructure'.
-   */
-  public void setSecondaryStructure(
-          final java.lang.String secondaryStructure)
-  {
-    this._secondaryStructure = secondaryStructure;
-  }
-
-  /**
-   * Sets the value of field 'value'.
-   * 
-   * @param value
-   *          the value of field 'value'.
-   */
-  public void setValue(final float value)
-  {
-    this._value = value;
-    this._has_value = true;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.AnnotationElement
-   */
-  public static jalview.binding.AnnotationElement unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.AnnotationElement) Unmarshaller.unmarshal(
-            jalview.binding.AnnotationElement.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index f761ac1..c041723 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,480 +19,465 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Colour implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _name.
-   */
-  private java.lang.String _name;
-
-  /**
-   * Field _RGB.
-   */
-  private java.lang.String _RGB;
-
-  /**
-   * Field _minRGB.
-   */
-  private java.lang.String _minRGB;
-
-  /**
-   * loosely specified enumeration: NONE,ABOVE, or BELOW
-   */
-  private java.lang.String _threshType;
-
-  /**
-   * Field _threshold.
-   */
-  private float _threshold;
-
-  /**
-   * keeps track of state for field: _threshold
-   */
-  private boolean _has_threshold;
-
-  /**
-   * Field _max.
-   */
-  private float _max;
-
-  /**
-   * keeps track of state for field: _max
-   */
-  private boolean _has_max;
-
-  /**
-   * Field _min.
-   */
-  private float _min;
-
-  /**
-   * keeps track of state for field: _min
-   */
-  private boolean _has_min;
-
-  /**
-   * Field _colourByLabel.
-   */
-  private boolean _colourByLabel;
-
-  /**
-   * keeps track of state for field: _colourByLabel
-   */
-  private boolean _has_colourByLabel;
-
-  /**
-   * Field _autoScale.
-   */
-  private boolean _autoScale;
-
-  /**
-   * keeps track of state for field: _autoScale
-   */
-  private boolean _has_autoScale;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Colour()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-     */
-  public void deleteAutoScale()
-  {
-    this._has_autoScale = false;
-  }
-
-  /**
-     */
-  public void deleteColourByLabel()
-  {
-    this._has_colourByLabel = false;
-  }
-
-  /**
-     */
-  public void deleteMax()
-  {
-    this._has_max = false;
-  }
-
-  /**
-     */
-  public void deleteMin()
-  {
-    this._has_min = false;
-  }
-
-  /**
-     */
-  public void deleteThreshold()
-  {
-    this._has_threshold = false;
-  }
-
-  /**
-   * Returns the value of field 'autoScale'.
-   * 
-   * @return the value of field 'AutoScale'.
-   */
-  public boolean getAutoScale()
-  {
-    return this._autoScale;
-  }
-
-  /**
-   * Returns the value of field 'colourByLabel'.
-   * 
-   * @return the value of field 'ColourByLabel'.
-   */
-  public boolean getColourByLabel()
-  {
-    return this._colourByLabel;
-  }
-
-  /**
-   * Returns the value of field 'max'.
-   * 
-   * @return the value of field 'Max'.
-   */
-  public float getMax()
-  {
-    return this._max;
-  }
-
-  /**
-   * Returns the value of field 'min'.
-   * 
-   * @return the value of field 'Min'.
-   */
-  public float getMin()
-  {
-    return this._min;
-  }
-
-  /**
-   * Returns the value of field 'minRGB'.
-   * 
-   * @return the value of field 'MinRGB'.
-   */
-  public java.lang.String getMinRGB()
-  {
-    return this._minRGB;
-  }
-
-  /**
-   * Returns the value of field 'name'.
-   * 
-   * @return the value of field 'Name'.
-   */
-  public java.lang.String getName()
-  {
-    return this._name;
-  }
-
-  /**
-   * Returns the value of field 'RGB'.
-   * 
-   * @return the value of field 'RGB'.
-   */
-  public java.lang.String getRGB()
-  {
-    return this._RGB;
-  }
-
-  /**
-   * Returns the value of field 'threshType'. The field 'threshType' has the
-   * following description: loosely specified enumeration: NONE,ABOVE, or BELOW
-   * 
-   * @return the value of field 'ThreshType'.
-   */
-  public java.lang.String getThreshType()
-  {
-    return this._threshType;
-  }
-
-  /**
-   * Returns the value of field 'threshold'.
-   * 
-   * @return the value of field 'Threshold'.
-   */
-  public float getThreshold()
-  {
-    return this._threshold;
-  }
-
-  /**
-   * Method hasAutoScale.
-   * 
-   * @return true if at least one AutoScale has been added
-   */
-  public boolean hasAutoScale()
-  {
-    return this._has_autoScale;
-  }
-
-  /**
-   * Method hasColourByLabel.
-   * 
-   * @return true if at least one ColourByLabel has been added
-   */
-  public boolean hasColourByLabel()
-  {
-    return this._has_colourByLabel;
-  }
-
-  /**
-   * Method hasMax.
-   * 
-   * @return true if at least one Max has been added
-   */
-  public boolean hasMax()
-  {
-    return this._has_max;
-  }
-
-  /**
-   * Method hasMin.
-   * 
-   * @return true if at least one Min has been added
-   */
-  public boolean hasMin()
-  {
-    return this._has_min;
-  }
-
-  /**
-   * Method hasThreshold.
-   * 
-   * @return true if at least one Threshold has been added
-   */
-  public boolean hasThreshold()
-  {
-    return this._has_threshold;
-  }
-
-  /**
-   * Returns the value of field 'autoScale'.
-   * 
-   * @return the value of field 'AutoScale'.
-   */
-  public boolean isAutoScale()
-  {
-    return this._autoScale;
-  }
-
-  /**
-   * Returns the value of field 'colourByLabel'.
-   * 
-   * @return the value of field 'ColourByLabel'.
-   */
-  public boolean isColourByLabel()
-  {
-    return this._colourByLabel;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'autoScale'.
-   * 
-   * @param autoScale
-   *          the value of field 'autoScale'.
-   */
-  public void setAutoScale(final boolean autoScale)
-  {
-    this._autoScale = autoScale;
-    this._has_autoScale = true;
-  }
-
-  /**
-   * Sets the value of field 'colourByLabel'.
-   * 
-   * @param colourByLabel
-   *          the value of field 'colourByLabel'.
-   */
-  public void setColourByLabel(final boolean colourByLabel)
-  {
-    this._colourByLabel = colourByLabel;
-    this._has_colourByLabel = true;
-  }
-
-  /**
-   * Sets the value of field 'max'.
-   * 
-   * @param max
-   *          the value of field 'max'.
-   */
-  public void setMax(final float max)
-  {
-    this._max = max;
-    this._has_max = true;
-  }
-
-  /**
-   * Sets the value of field 'min'.
-   * 
-   * @param min
-   *          the value of field 'min'.
-   */
-  public void setMin(final float min)
-  {
-    this._min = min;
-    this._has_min = true;
-  }
-
-  /**
-   * Sets the value of field 'minRGB'.
-   * 
-   * @param minRGB
-   *          the value of field 'minRGB'.
-   */
-  public void setMinRGB(final java.lang.String minRGB)
-  {
-    this._minRGB = minRGB;
-  }
-
-  /**
-   * Sets the value of field 'name'.
-   * 
-   * @param name
-   *          the value of field 'name'.
-   */
-  public void setName(final java.lang.String name)
-  {
-    this._name = name;
-  }
-
-  /**
-   * Sets the value of field 'RGB'.
-   * 
-   * @param RGB
-   *          the value of field 'RGB'.
-   */
-  public void setRGB(final java.lang.String RGB)
-  {
-    this._RGB = RGB;
-  }
-
-  /**
-   * Sets the value of field 'threshType'. The field 'threshType' has the
-   * following description: loosely specified enumeration: NONE,ABOVE, or BELOW
-   * 
-   * @param threshType
-   *          the value of field 'threshType'.
-   */
-  public void setThreshType(final java.lang.String threshType)
-  {
-    this._threshType = threshType;
-  }
-
-  /**
-   * Sets the value of field 'threshold'.
-   * 
-   * @param threshold
-   *          the value of field 'threshold'.
-   */
-  public void setThreshold(final float threshold)
-  {
-    this._threshold = threshold;
-    this._has_threshold = true;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Colour
-   */
-  public static jalview.binding.Colour unmarshal(final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Colour) Unmarshaller.unmarshal(
-            jalview.binding.Colour.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class Colour implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _name.
+     */
+    private java.lang.String _name;
+
+    /**
+     * Field _RGB.
+     */
+    private java.lang.String _RGB;
+
+    /**
+     * Field _minRGB.
+     */
+    private java.lang.String _minRGB;
+
+    /**
+     * loosely specified enumeration: NONE,ABOVE, or BELOW
+     */
+    private java.lang.String _threshType;
+
+    /**
+     * Field _threshold.
+     */
+    private float _threshold;
+
+    /**
+     * keeps track of state for field: _threshold
+     */
+    private boolean _has_threshold;
+
+    /**
+     * Field _max.
+     */
+    private float _max;
+
+    /**
+     * keeps track of state for field: _max
+     */
+    private boolean _has_max;
+
+    /**
+     * Field _min.
+     */
+    private float _min;
+
+    /**
+     * keeps track of state for field: _min
+     */
+    private boolean _has_min;
+
+    /**
+     * Field _colourByLabel.
+     */
+    private boolean _colourByLabel;
+
+    /**
+     * keeps track of state for field: _colourByLabel
+     */
+    private boolean _has_colourByLabel;
+
+    /**
+     * Field _autoScale.
+     */
+    private boolean _autoScale;
+
+    /**
+     * keeps track of state for field: _autoScale
+     */
+    private boolean _has_autoScale;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Colour() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     */
+    public void deleteAutoScale(
+    ) {
+        this._has_autoScale= false;
+    }
+
+    /**
+     */
+    public void deleteColourByLabel(
+    ) {
+        this._has_colourByLabel= false;
+    }
+
+    /**
+     */
+    public void deleteMax(
+    ) {
+        this._has_max= false;
+    }
+
+    /**
+     */
+    public void deleteMin(
+    ) {
+        this._has_min= false;
+    }
+
+    /**
+     */
+    public void deleteThreshold(
+    ) {
+        this._has_threshold= false;
+    }
+
+    /**
+     * Returns the value of field 'autoScale'.
+     * 
+     * @return the value of field 'AutoScale'.
+     */
+    public boolean getAutoScale(
+    ) {
+        return this._autoScale;
+    }
+
+    /**
+     * Returns the value of field 'colourByLabel'.
+     * 
+     * @return the value of field 'ColourByLabel'.
+     */
+    public boolean getColourByLabel(
+    ) {
+        return this._colourByLabel;
+    }
+
+    /**
+     * Returns the value of field 'max'.
+     * 
+     * @return the value of field 'Max'.
+     */
+    public float getMax(
+    ) {
+        return this._max;
+    }
+
+    /**
+     * Returns the value of field 'min'.
+     * 
+     * @return the value of field 'Min'.
+     */
+    public float getMin(
+    ) {
+        return this._min;
+    }
+
+    /**
+     * Returns the value of field 'minRGB'.
+     * 
+     * @return the value of field 'MinRGB'.
+     */
+    public java.lang.String getMinRGB(
+    ) {
+        return this._minRGB;
+    }
+
+    /**
+     * Returns the value of field 'name'.
+     * 
+     * @return the value of field 'Name'.
+     */
+    public java.lang.String getName(
+    ) {
+        return this._name;
+    }
+
+    /**
+     * Returns the value of field 'RGB'.
+     * 
+     * @return the value of field 'RGB'.
+     */
+    public java.lang.String getRGB(
+    ) {
+        return this._RGB;
+    }
+
+    /**
+     * Returns the value of field 'threshType'. The field
+     * 'threshType' has the following description: loosely
+     * specified enumeration: NONE,ABOVE, or BELOW
+     * 
+     * @return the value of field 'ThreshType'.
+     */
+    public java.lang.String getThreshType(
+    ) {
+        return this._threshType;
+    }
+
+    /**
+     * Returns the value of field 'threshold'.
+     * 
+     * @return the value of field 'Threshold'.
+     */
+    public float getThreshold(
+    ) {
+        return this._threshold;
+    }
+
+    /**
+     * Method hasAutoScale.
+     * 
+     * @return true if at least one AutoScale has been added
+     */
+    public boolean hasAutoScale(
+    ) {
+        return this._has_autoScale;
+    }
+
+    /**
+     * Method hasColourByLabel.
+     * 
+     * @return true if at least one ColourByLabel has been added
+     */
+    public boolean hasColourByLabel(
+    ) {
+        return this._has_colourByLabel;
+    }
+
+    /**
+     * Method hasMax.
+     * 
+     * @return true if at least one Max has been added
+     */
+    public boolean hasMax(
+    ) {
+        return this._has_max;
+    }
+
+    /**
+     * Method hasMin.
+     * 
+     * @return true if at least one Min has been added
+     */
+    public boolean hasMin(
+    ) {
+        return this._has_min;
+    }
+
+    /**
+     * Method hasThreshold.
+     * 
+     * @return true if at least one Threshold has been added
+     */
+    public boolean hasThreshold(
+    ) {
+        return this._has_threshold;
+    }
+
+    /**
+     * Returns the value of field 'autoScale'.
+     * 
+     * @return the value of field 'AutoScale'.
+     */
+    public boolean isAutoScale(
+    ) {
+        return this._autoScale;
+    }
+
+    /**
+     * Returns the value of field 'colourByLabel'.
+     * 
+     * @return the value of field 'ColourByLabel'.
+     */
+    public boolean isColourByLabel(
+    ) {
+        return this._colourByLabel;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'autoScale'.
+     * 
+     * @param autoScale the value of field 'autoScale'.
+     */
+    public void setAutoScale(
+            final boolean autoScale) {
+        this._autoScale = autoScale;
+        this._has_autoScale = true;
+    }
+
+    /**
+     * Sets the value of field 'colourByLabel'.
+     * 
+     * @param colourByLabel the value of field 'colourByLabel'.
+     */
+    public void setColourByLabel(
+            final boolean colourByLabel) {
+        this._colourByLabel = colourByLabel;
+        this._has_colourByLabel = true;
+    }
+
+    /**
+     * Sets the value of field 'max'.
+     * 
+     * @param max the value of field 'max'.
+     */
+    public void setMax(
+            final float max) {
+        this._max = max;
+        this._has_max = true;
+    }
+
+    /**
+     * Sets the value of field 'min'.
+     * 
+     * @param min the value of field 'min'.
+     */
+    public void setMin(
+            final float min) {
+        this._min = min;
+        this._has_min = true;
+    }
+
+    /**
+     * Sets the value of field 'minRGB'.
+     * 
+     * @param minRGB the value of field 'minRGB'.
+     */
+    public void setMinRGB(
+            final java.lang.String minRGB) {
+        this._minRGB = minRGB;
+    }
+
+    /**
+     * Sets the value of field 'name'.
+     * 
+     * @param name the value of field 'name'.
+     */
+    public void setName(
+            final java.lang.String name) {
+        this._name = name;
+    }
+
+    /**
+     * Sets the value of field 'RGB'.
+     * 
+     * @param RGB the value of field 'RGB'.
+     */
+    public void setRGB(
+            final java.lang.String RGB) {
+        this._RGB = RGB;
+    }
+
+    /**
+     * Sets the value of field 'threshType'. The field 'threshType'
+     * has the following description: loosely specified
+     * enumeration: NONE,ABOVE, or BELOW
+     * 
+     * @param threshType the value of field 'threshType'.
+     */
+    public void setThreshType(
+            final java.lang.String threshType) {
+        this._threshType = threshType;
+    }
+
+    /**
+     * Sets the value of field 'threshold'.
+     * 
+     * @param threshold the value of field 'threshold'.
+     */
+    public void setThreshold(
+            final float threshold) {
+        this._threshold = threshold;
+        this._has_threshold = true;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Colour
+     */
+    public static jalview.binding.Colour unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Colour) Unmarshaller.unmarshal(jalview.binding.Colour.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index ccc0d82..d429df3 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,286 +19,272 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Feature implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _begin.
-   */
-  private int _begin;
-
-  /**
-   * keeps track of state for field: _begin
-   */
-  private boolean _has_begin;
-
-  /**
-   * Field _end.
-   */
-  private int _end;
-
-  /**
-   * keeps track of state for field: _end
-   */
-  private boolean _has_end;
-
-  /**
-   * Field _type.
-   */
-  private java.lang.String _type;
-
-  /**
-   * Field _description.
-   */
-  private java.lang.String _description;
-
-  /**
-   * Field _status.
-   */
-  private java.lang.String _status;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Feature()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
+public class Feature implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _begin.
+     */
+    private int _begin;
+
+    /**
+     * keeps track of state for field: _begin
+     */
+    private boolean _has_begin;
+
+    /**
+     * Field _end.
+     */
+    private int _end;
+
+    /**
+     * keeps track of state for field: _end
+     */
+    private boolean _has_end;
+
+    /**
+     * Field _type.
+     */
+    private java.lang.String _type;
+
+    /**
+     * Field _description.
+     */
+    private java.lang.String _description;
+
+    /**
+     * Field _status.
+     */
+    private java.lang.String _status;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Feature() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     */
+    public void deleteBegin(
+    ) {
+        this._has_begin= false;
+    }
+
+    /**
+     */
+    public void deleteEnd(
+    ) {
+        this._has_end= false;
+    }
+
+    /**
+     * Returns the value of field 'begin'.
+     * 
+     * @return the value of field 'Begin'.
+     */
+    public int getBegin(
+    ) {
+        return this._begin;
+    }
+
+    /**
+     * Returns the value of field 'description'.
+     * 
+     * @return the value of field 'Description'.
+     */
+    public java.lang.String getDescription(
+    ) {
+        return this._description;
+    }
+
+    /**
+     * Returns the value of field 'end'.
+     * 
+     * @return the value of field 'End'.
      */
-  public void deleteBegin()
-  {
-    this._has_begin = false;
-  }
+    public int getEnd(
+    ) {
+        return this._end;
+    }
+
+    /**
+     * Returns the value of field 'status'.
+     * 
+     * @return the value of field 'Status'.
+     */
+    public java.lang.String getStatus(
+    ) {
+        return this._status;
+    }
+
+    /**
+     * Returns the value of field 'type'.
+     * 
+     * @return the value of field 'Type'.
+     */
+    public java.lang.String getType(
+    ) {
+        return this._type;
+    }
+
+    /**
+     * Method hasBegin.
+     * 
+     * @return true if at least one Begin has been added
+     */
+    public boolean hasBegin(
+    ) {
+        return this._has_begin;
+    }
+
+    /**
+     * Method hasEnd.
+     * 
+     * @return true if at least one End has been added
+     */
+    public boolean hasEnd(
+    ) {
+        return this._has_end;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'begin'.
+     * 
+     * @param begin the value of field 'begin'.
+     */
+    public void setBegin(
+            final int begin) {
+        this._begin = begin;
+        this._has_begin = true;
+    }
+
+    /**
+     * Sets the value of field 'description'.
+     * 
+     * @param description the value of field 'description'.
+     */
+    public void setDescription(
+            final java.lang.String description) {
+        this._description = description;
+    }
+
+    /**
+     * Sets the value of field 'end'.
+     * 
+     * @param end the value of field 'end'.
+     */
+    public void setEnd(
+            final int end) {
+        this._end = end;
+        this._has_end = true;
+    }
+
+    /**
+     * Sets the value of field 'status'.
+     * 
+     * @param status the value of field 'status'.
+     */
+    public void setStatus(
+            final java.lang.String status) {
+        this._status = status;
+    }
+
+    /**
+     * Sets the value of field 'type'.
+     * 
+     * @param type the value of field 'type'.
+     */
+    public void setType(
+            final java.lang.String type) {
+        this._type = type;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Feature
+     */
+    public static jalview.binding.Feature unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Feature) Unmarshaller.unmarshal(jalview.binding.Feature.class, reader);
+    }
 
-  /**
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
      */
-  public void deleteEnd()
-  {
-    this._has_end = false;
-  }
-
-  /**
-   * Returns the value of field 'begin'.
-   * 
-   * @return the value of field 'Begin'.
-   */
-  public int getBegin()
-  {
-    return this._begin;
-  }
-
-  /**
-   * Returns the value of field 'description'.
-   * 
-   * @return the value of field 'Description'.
-   */
-  public java.lang.String getDescription()
-  {
-    return this._description;
-  }
-
-  /**
-   * Returns the value of field 'end'.
-   * 
-   * @return the value of field 'End'.
-   */
-  public int getEnd()
-  {
-    return this._end;
-  }
-
-  /**
-   * Returns the value of field 'status'.
-   * 
-   * @return the value of field 'Status'.
-   */
-  public java.lang.String getStatus()
-  {
-    return this._status;
-  }
-
-  /**
-   * Returns the value of field 'type'.
-   * 
-   * @return the value of field 'Type'.
-   */
-  public java.lang.String getType()
-  {
-    return this._type;
-  }
-
-  /**
-   * Method hasBegin.
-   * 
-   * @return true if at least one Begin has been added
-   */
-  public boolean hasBegin()
-  {
-    return this._has_begin;
-  }
-
-  /**
-   * Method hasEnd.
-   * 
-   * @return true if at least one End has been added
-   */
-  public boolean hasEnd()
-  {
-    return this._has_end;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'begin'.
-   * 
-   * @param begin
-   *          the value of field 'begin'.
-   */
-  public void setBegin(final int begin)
-  {
-    this._begin = begin;
-    this._has_begin = true;
-  }
-
-  /**
-   * Sets the value of field 'description'.
-   * 
-   * @param description
-   *          the value of field 'description'.
-   */
-  public void setDescription(final java.lang.String description)
-  {
-    this._description = description;
-  }
-
-  /**
-   * Sets the value of field 'end'.
-   * 
-   * @param end
-   *          the value of field 'end'.
-   */
-  public void setEnd(final int end)
-  {
-    this._end = end;
-    this._has_end = true;
-  }
-
-  /**
-   * Sets the value of field 'status'.
-   * 
-   * @param status
-   *          the value of field 'status'.
-   */
-  public void setStatus(final java.lang.String status)
-  {
-    this._status = status;
-  }
-
-  /**
-   * Sets the value of field 'type'.
-   * 
-   * @param type
-   *          the value of field 'type'.
-   */
-  public void setType(final java.lang.String type)
-  {
-    this._type = type;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Feature
-   */
-  public static jalview.binding.Feature unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Feature) Unmarshaller.unmarshal(
-            jalview.binding.Feature.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index 0ce377c..f3d06be 100644 (file)
@@ -1,31 +1,16 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
-import jalview.util.MessageManager;
-
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
 
@@ -34,275 +19,257 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class FeatureSettings implements java.io.Serializable
-{
+public class FeatureSettings implements java.io.Serializable {
 
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
 
-  /**
-   * Field _settingList.
-   */
-  private java.util.Vector _settingList;
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
 
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
+    /**
+     * Field _settingList.
+     */
+    private java.util.Vector _settingList;
 
-  public FeatureSettings()
-  {
-    super();
-    this._settingList = new java.util.Vector();
-  }
 
-  // -----------/
-  // - Methods -/
-  // -----------/
+      //----------------/
+     //- Constructors -/
+    //----------------/
 
-  /**
-   * 
-   * 
-   * @param vSetting
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSetting(final jalview.binding.Setting vSetting)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._settingList.addElement(vSetting);
-  }
+    public FeatureSettings() {
+        super();
+        this._settingList = new java.util.Vector();
+    }
 
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSetting
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSetting(final int index,
-          final jalview.binding.Setting vSetting)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._settingList.add(index, vSetting);
-  }
 
-  /**
-   * Method enumerateSetting.
-   * 
-   * @return an Enumeration over all jalview.binding.Setting elements
-   */
-  public java.util.Enumeration enumerateSetting()
-  {
-    return this._settingList.elements();
-  }
+      //-----------/
+     //- Methods -/
+    //-----------/
 
-  /**
-   * Method getSetting.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Setting at the given index
-   */
-  public jalview.binding.Setting getSetting(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._settingList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "getSetting",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._settingList.size() - 1)).toString()
-          }));         
+    /**
+     * 
+     * 
+     * @param vSetting
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSetting(
+            final jalview.binding.Setting vSetting)
+    throws java.lang.IndexOutOfBoundsException {
+        this._settingList.addElement(vSetting);
     }
 
-    return (jalview.binding.Setting) _settingList.get(index);
-  }
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSetting
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSetting(
+            final int index,
+            final jalview.binding.Setting vSetting)
+    throws java.lang.IndexOutOfBoundsException {
+        this._settingList.add(index, vSetting);
+    }
 
-  /**
-   * Method getSetting.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Setting[] getSetting()
-  {
-    jalview.binding.Setting[] array = new jalview.binding.Setting[0];
-    return (jalview.binding.Setting[]) this._settingList.toArray(array);
-  }
+    /**
+     * Method enumerateSetting.
+     * 
+     * @return an Enumeration over all jalview.binding.Setting
+     * elements
+     */
+    public java.util.Enumeration enumerateSetting(
+    ) {
+        return this._settingList.elements();
+    }
 
-  /**
-   * Method getSettingCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getSettingCount()
-  {
-    return this._settingList.size();
-  }
+    /**
+     * Method getSetting.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Setting at the
+     * given index
+     */
+    public jalview.binding.Setting getSetting(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._settingList.size()) {
+            throw new IndexOutOfBoundsException("getSetting: Index value '" + index + "' not in range [0.." + (this._settingList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Setting) _settingList.get(index);
+    }
 
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    /**
+     * Method getSetting.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Setting[] getSetting(
+    ) {
+        jalview.binding.Setting[] array = new jalview.binding.Setting[0];
+        return (jalview.binding.Setting[]) this._settingList.toArray(array);
     }
-    return true;
-  }
 
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
+    /**
+     * Method getSettingCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getSettingCount(
+    ) {
+        return this._settingList.size();
+    }
 
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
 
-  /**
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
      */
-  public void removeAllSetting()
-  {
-    this._settingList.clear();
-  }
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
 
-  /**
-   * Method removeSetting.
-   * 
-   * @param vSetting
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeSetting(final jalview.binding.Setting vSetting)
-  {
-    boolean removed = _settingList.remove(vSetting);
-    return removed;
-  }
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
 
-  /**
-   * Method removeSettingAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Setting removeSettingAt(final int index)
-  {
-    java.lang.Object obj = this._settingList.remove(index);
-    return (jalview.binding.Setting) obj;
-  }
+    /**
+     */
+    public void removeAllSetting(
+    ) {
+        this._settingList.clear();
+    }
 
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSetting
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setSetting(final int index,
-          final jalview.binding.Setting vSetting)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._settingList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "setSetting",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._settingList.size() - 1)).toString()
-        }));           
+    /**
+     * Method removeSetting.
+     * 
+     * @param vSetting
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeSetting(
+            final jalview.binding.Setting vSetting) {
+        boolean removed = _settingList.remove(vSetting);
+        return removed;
     }
 
-    this._settingList.set(index, vSetting);
-  }
+    /**
+     * Method removeSettingAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Setting removeSettingAt(
+            final int index) {
+        java.lang.Object obj = this._settingList.remove(index);
+        return (jalview.binding.Setting) obj;
+    }
 
-  /**
-   * 
-   * 
-   * @param vSettingArray
-   */
-  public void setSetting(final jalview.binding.Setting[] vSettingArray)
-  {
-    // -- copy array
-    _settingList.clear();
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSetting
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setSetting(
+            final int index,
+            final jalview.binding.Setting vSetting)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._settingList.size()) {
+            throw new IndexOutOfBoundsException("setSetting: Index value '" + index + "' not in range [0.." + (this._settingList.size() - 1) + "]");
+        }
+        
+        this._settingList.set(index, vSetting);
+    }
 
-    for (int i = 0; i < vSettingArray.length; i++)
-    {
-      this._settingList.add(vSettingArray[i]);
+    /**
+     * 
+     * 
+     * @param vSettingArray
+     */
+    public void setSetting(
+            final jalview.binding.Setting[] vSettingArray) {
+        //-- copy array
+        _settingList.clear();
+        
+        for (int i = 0; i < vSettingArray.length; i++) {
+                this._settingList.add(vSettingArray[i]);
+        }
     }
-  }
 
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.FeatureSettings
-   */
-  public static jalview.binding.FeatureSettings unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.FeatureSettings) Unmarshaller.unmarshal(
-            jalview.binding.FeatureSettings.class, reader);
-  }
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.FeatureSettings
+     */
+    public static jalview.binding.FeatureSettings unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.FeatureSettings) Unmarshaller.unmarshal(jalview.binding.FeatureSettings.class, reader);
+    }
 
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 6d398c1..e50ae7c 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,106 +19,98 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Features extends Feature implements java.io.Serializable
+public class Features extends Feature 
+implements java.io.Serializable
 {
 
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
 
-  public Features()
-  {
-    super();
-  }
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Features() {
+        super();
+    }
+
 
-  // -----------/
-  // - Methods -/
-  // -----------/
+      //-----------/
+     //- Methods -/
+    //-----------/
 
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
     }
-    return true;
-  }
 
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
 
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
 
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Feature
-   */
-  public static jalview.binding.Feature unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Feature) Unmarshaller.unmarshal(
-            jalview.binding.Features.class, reader);
-  }
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Feature
+     */
+    public static jalview.binding.Feature unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Feature) Unmarshaller.unmarshal(jalview.binding.Features.class, reader);
+    }
 
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index c1f9cd3..862eebd 100644 (file)
@@ -1,30 +1,15 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
-//- Imported classes and packages -/
-//---------------------------------/
-
-import jalview.util.MessageManager;
 
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
@@ -34,748 +19,721 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class JGroup implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _start.
-   */
-  private int _start;
-
-  /**
-   * keeps track of state for field: _start
-   */
-  private boolean _has_start;
-
-  /**
-   * Field _end.
-   */
-  private int _end;
-
-  /**
-   * keeps track of state for field: _end
-   */
-  private boolean _has_end;
-
-  /**
-   * Field _name.
-   */
-  private java.lang.String _name;
-
-  /**
-   * Field _colour.
-   */
-  private java.lang.String _colour;
-
-  /**
-   * Field _consThreshold.
-   */
-  private int _consThreshold;
-
-  /**
-   * keeps track of state for field: _consThreshold
-   */
-  private boolean _has_consThreshold;
-
-  /**
-   * Field _pidThreshold.
-   */
-  private int _pidThreshold;
-
-  /**
-   * keeps track of state for field: _pidThreshold
-   */
-  private boolean _has_pidThreshold;
-
-  /**
-   * Field _outlineColour.
-   */
-  private int _outlineColour;
-
-  /**
-   * keeps track of state for field: _outlineColour
-   */
-  private boolean _has_outlineColour;
-
-  /**
-   * Field _displayBoxes.
-   */
-  private boolean _displayBoxes;
-
-  /**
-   * keeps track of state for field: _displayBoxes
-   */
-  private boolean _has_displayBoxes;
-
-  /**
-   * Field _displayText.
-   */
-  private boolean _displayText;
-
-  /**
-   * keeps track of state for field: _displayText
-   */
-  private boolean _has_displayText;
-
-  /**
-   * Field _colourText.
-   */
-  private boolean _colourText;
-
-  /**
-   * keeps track of state for field: _colourText
-   */
-  private boolean _has_colourText;
-
-  /**
-   * Field _seqList.
-   */
-  private java.util.Vector _seqList;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public JGroup()
-  {
-    super();
-    this._seqList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vSeq
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSeq(final int vSeq)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._seqList.addElement(new java.lang.Integer(vSeq));
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSeq
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSeq(final int index, final int vSeq)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._seqList.add(index, new java.lang.Integer(vSeq));
-  }
-
-  /**
-     */
-  public void deleteColourText()
-  {
-    this._has_colourText = false;
-  }
-
-  /**
-     */
-  public void deleteConsThreshold()
-  {
-    this._has_consThreshold = false;
-  }
-
-  /**
-     */
-  public void deleteDisplayBoxes()
-  {
-    this._has_displayBoxes = false;
-  }
-
-  /**
-     */
-  public void deleteDisplayText()
-  {
-    this._has_displayText = false;
-  }
-
-  /**
-     */
-  public void deleteEnd()
-  {
-    this._has_end = false;
-  }
-
-  /**
-     */
-  public void deleteOutlineColour()
-  {
-    this._has_outlineColour = false;
-  }
-
-  /**
-     */
-  public void deletePidThreshold()
-  {
-    this._has_pidThreshold = false;
-  }
-
-  /**
-     */
-  public void deleteStart()
-  {
-    this._has_start = false;
-  }
-
-  /**
-   * Method enumerateSeq.
-   * 
-   * @return an Enumeration over all int elements
-   */
-  public java.util.Enumeration enumerateSeq()
-  {
-    return this._seqList.elements();
-  }
-
-  /**
-   * Returns the value of field 'colour'.
-   * 
-   * @return the value of field 'Colour'.
-   */
-  public java.lang.String getColour()
-  {
-    return this._colour;
-  }
-
-  /**
-   * Returns the value of field 'colourText'.
-   * 
-   * @return the value of field 'ColourText'.
-   */
-  public boolean getColourText()
-  {
-    return this._colourText;
-  }
-
-  /**
-   * Returns the value of field 'consThreshold'.
-   * 
-   * @return the value of field 'ConsThreshold'.
-   */
-  public int getConsThreshold()
-  {
-    return this._consThreshold;
-  }
-
-  /**
-   * Returns the value of field 'displayBoxes'.
-   * 
-   * @return the value of field 'DisplayBoxes'.
-   */
-  public boolean getDisplayBoxes()
-  {
-    return this._displayBoxes;
-  }
-
-  /**
-   * Returns the value of field 'displayText'.
-   * 
-   * @return the value of field 'DisplayText'.
-   */
-  public boolean getDisplayText()
-  {
-    return this._displayText;
-  }
-
-  /**
-   * Returns the value of field 'end'.
-   * 
-   * @return the value of field 'End'.
-   */
-  public int getEnd()
-  {
-    return this._end;
-  }
-
-  /**
-   * Returns the value of field 'name'.
-   * 
-   * @return the value of field 'Name'.
-   */
-  public java.lang.String getName()
-  {
-    return this._name;
-  }
-
-  /**
-   * Returns the value of field 'outlineColour'.
-   * 
-   * @return the value of field 'OutlineColour'.
-   */
-  public int getOutlineColour()
-  {
-    return this._outlineColour;
-  }
-
-  /**
-   * Returns the value of field 'pidThreshold'.
-   * 
-   * @return the value of field 'PidThreshold'.
-   */
-  public int getPidThreshold()
-  {
-    return this._pidThreshold;
-  }
-
-  /**
-   * Method getSeq.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the int at the given index
-   */
-  public int getSeq(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._seqList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getSeq",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._seqList.size() - 1)).toString()
-        })); 
-    }
-
-    return ((java.lang.Integer) _seqList.get(index)).intValue();
-  }
-
-  /**
-   * Method getSeq.Returns the contents of the collection in an Array.
-   * 
-   * @return this collection as an Array
-   */
-  public int[] getSeq()
-  {
-    int size = this._seqList.size();
-    int[] array = new int[size];
-    java.util.Iterator iter = _seqList.iterator();
-    for (int index = 0; index < size; index++)
-    {
-      array[index] = ((java.lang.Integer) iter.next()).intValue();
-    }
-    return array;
-  }
-
-  /**
-   * Method getSeqCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getSeqCount()
-  {
-    return this._seqList.size();
-  }
-
-  /**
-   * Returns the value of field 'start'.
-   * 
-   * @return the value of field 'Start'.
-   */
-  public int getStart()
-  {
-    return this._start;
-  }
-
-  /**
-   * Method hasColourText.
-   * 
-   * @return true if at least one ColourText has been added
-   */
-  public boolean hasColourText()
-  {
-    return this._has_colourText;
-  }
-
-  /**
-   * Method hasConsThreshold.
-   * 
-   * @return true if at least one ConsThreshold has been added
-   */
-  public boolean hasConsThreshold()
-  {
-    return this._has_consThreshold;
-  }
-
-  /**
-   * Method hasDisplayBoxes.
-   * 
-   * @return true if at least one DisplayBoxes has been added
-   */
-  public boolean hasDisplayBoxes()
-  {
-    return this._has_displayBoxes;
-  }
-
-  /**
-   * Method hasDisplayText.
-   * 
-   * @return true if at least one DisplayText has been added
-   */
-  public boolean hasDisplayText()
-  {
-    return this._has_displayText;
-  }
-
-  /**
-   * Method hasEnd.
-   * 
-   * @return true if at least one End has been added
-   */
-  public boolean hasEnd()
-  {
-    return this._has_end;
-  }
-
-  /**
-   * Method hasOutlineColour.
-   * 
-   * @return true if at least one OutlineColour has been added
-   */
-  public boolean hasOutlineColour()
-  {
-    return this._has_outlineColour;
-  }
-
-  /**
-   * Method hasPidThreshold.
-   * 
-   * @return true if at least one PidThreshold has been added
-   */
-  public boolean hasPidThreshold()
-  {
-    return this._has_pidThreshold;
-  }
-
-  /**
-   * Method hasStart.
-   * 
-   * @return true if at least one Start has been added
-   */
-  public boolean hasStart()
-  {
-    return this._has_start;
-  }
-
-  /**
-   * Returns the value of field 'colourText'.
-   * 
-   * @return the value of field 'ColourText'.
-   */
-  public boolean isColourText()
-  {
-    return this._colourText;
-  }
-
-  /**
-   * Returns the value of field 'displayBoxes'.
-   * 
-   * @return the value of field 'DisplayBoxes'.
-   */
-  public boolean isDisplayBoxes()
-  {
-    return this._displayBoxes;
-  }
-
-  /**
-   * Returns the value of field 'displayText'.
-   * 
-   * @return the value of field 'DisplayText'.
-   */
-  public boolean isDisplayText()
-  {
-    return this._displayText;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-     */
-  public void removeAllSeq()
-  {
-    this._seqList.clear();
-  }
-
-  /**
-   * Method removeSeq.
-   * 
-   * @param vSeq
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeSeq(final int vSeq)
-  {
-    boolean removed = _seqList.remove(new java.lang.Integer(vSeq));
-    return removed;
-  }
-
-  /**
-   * Method removeSeqAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public int removeSeqAt(final int index)
-  {
-    java.lang.Object obj = this._seqList.remove(index);
-    return ((java.lang.Integer) obj).intValue();
-  }
-
-  /**
-   * Sets the value of field 'colour'.
-   * 
-   * @param colour
-   *          the value of field 'colour'.
-   */
-  public void setColour(final java.lang.String colour)
-  {
-    this._colour = colour;
-  }
-
-  /**
-   * Sets the value of field 'colourText'.
-   * 
-   * @param colourText
-   *          the value of field 'colourText'.
-   */
-  public void setColourText(final boolean colourText)
-  {
-    this._colourText = colourText;
-    this._has_colourText = true;
-  }
-
-  /**
-   * Sets the value of field 'consThreshold'.
-   * 
-   * @param consThreshold
-   *          the value of field 'consThreshold'.
-   */
-  public void setConsThreshold(final int consThreshold)
-  {
-    this._consThreshold = consThreshold;
-    this._has_consThreshold = true;
-  }
-
-  /**
-   * Sets the value of field 'displayBoxes'.
-   * 
-   * @param displayBoxes
-   *          the value of field 'displayBoxes'.
-   */
-  public void setDisplayBoxes(final boolean displayBoxes)
-  {
-    this._displayBoxes = displayBoxes;
-    this._has_displayBoxes = true;
-  }
-
-  /**
-   * Sets the value of field 'displayText'.
-   * 
-   * @param displayText
-   *          the value of field 'displayText'.
-   */
-  public void setDisplayText(final boolean displayText)
-  {
-    this._displayText = displayText;
-    this._has_displayText = true;
-  }
-
-  /**
-   * Sets the value of field 'end'.
-   * 
-   * @param end
-   *          the value of field 'end'.
-   */
-  public void setEnd(final int end)
-  {
-    this._end = end;
-    this._has_end = true;
-  }
-
-  /**
-   * Sets the value of field 'name'.
-   * 
-   * @param name
-   *          the value of field 'name'.
-   */
-  public void setName(final java.lang.String name)
-  {
-    this._name = name;
-  }
-
-  /**
-   * Sets the value of field 'outlineColour'.
-   * 
-   * @param outlineColour
-   *          the value of field 'outlineColour'.
-   */
-  public void setOutlineColour(final int outlineColour)
-  {
-    this._outlineColour = outlineColour;
-    this._has_outlineColour = true;
-  }
-
-  /**
-   * Sets the value of field 'pidThreshold'.
-   * 
-   * @param pidThreshold
-   *          the value of field 'pidThreshold'.
-   */
-  public void setPidThreshold(final int pidThreshold)
-  {
-    this._pidThreshold = pidThreshold;
-    this._has_pidThreshold = true;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSeq
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setSeq(final int index, final int vSeq)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._seqList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setSeq",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._seqList.size() - 1)).toString()
-          })); 
-    }
-
-    this._seqList.set(index, new java.lang.Integer(vSeq));
-  }
-
-  /**
-   * 
-   * 
-   * @param vSeqArray
-   */
-  public void setSeq(final int[] vSeqArray)
-  {
-    // -- copy array
-    _seqList.clear();
-
-    for (int i = 0; i < vSeqArray.length; i++)
-    {
-      this._seqList.add(new java.lang.Integer(vSeqArray[i]));
-    }
-  }
-
-  /**
-   * Sets the value of field 'start'.
-   * 
-   * @param start
-   *          the value of field 'start'.
-   */
-  public void setStart(final int start)
-  {
-    this._start = start;
-    this._has_start = true;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.JGroup
-   */
-  public static jalview.binding.JGroup unmarshal(final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.JGroup) Unmarshaller.unmarshal(
-            jalview.binding.JGroup.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class JGroup implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _start.
+     */
+    private int _start;
+
+    /**
+     * keeps track of state for field: _start
+     */
+    private boolean _has_start;
+
+    /**
+     * Field _end.
+     */
+    private int _end;
+
+    /**
+     * keeps track of state for field: _end
+     */
+    private boolean _has_end;
+
+    /**
+     * Field _name.
+     */
+    private java.lang.String _name;
+
+    /**
+     * Field _colour.
+     */
+    private java.lang.String _colour;
+
+    /**
+     * Field _consThreshold.
+     */
+    private int _consThreshold;
+
+    /**
+     * keeps track of state for field: _consThreshold
+     */
+    private boolean _has_consThreshold;
+
+    /**
+     * Field _pidThreshold.
+     */
+    private int _pidThreshold;
+
+    /**
+     * keeps track of state for field: _pidThreshold
+     */
+    private boolean _has_pidThreshold;
+
+    /**
+     * Field _outlineColour.
+     */
+    private int _outlineColour;
+
+    /**
+     * keeps track of state for field: _outlineColour
+     */
+    private boolean _has_outlineColour;
+
+    /**
+     * Field _displayBoxes.
+     */
+    private boolean _displayBoxes;
+
+    /**
+     * keeps track of state for field: _displayBoxes
+     */
+    private boolean _has_displayBoxes;
+
+    /**
+     * Field _displayText.
+     */
+    private boolean _displayText;
+
+    /**
+     * keeps track of state for field: _displayText
+     */
+    private boolean _has_displayText;
+
+    /**
+     * Field _colourText.
+     */
+    private boolean _colourText;
+
+    /**
+     * keeps track of state for field: _colourText
+     */
+    private boolean _has_colourText;
+
+    /**
+     * Field _seqList.
+     */
+    private java.util.Vector _seqList;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public JGroup() {
+        super();
+        this._seqList = new java.util.Vector();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vSeq
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSeq(
+            final int vSeq)
+    throws java.lang.IndexOutOfBoundsException {
+        this._seqList.addElement(new java.lang.Integer(vSeq));
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSeq
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSeq(
+            final int index,
+            final int vSeq)
+    throws java.lang.IndexOutOfBoundsException {
+        this._seqList.add(index, new java.lang.Integer(vSeq));
+    }
+
+    /**
+     */
+    public void deleteColourText(
+    ) {
+        this._has_colourText= false;
+    }
+
+    /**
+     */
+    public void deleteConsThreshold(
+    ) {
+        this._has_consThreshold= false;
+    }
+
+    /**
+     */
+    public void deleteDisplayBoxes(
+    ) {
+        this._has_displayBoxes= false;
+    }
+
+    /**
+     */
+    public void deleteDisplayText(
+    ) {
+        this._has_displayText= false;
+    }
+
+    /**
+     */
+    public void deleteEnd(
+    ) {
+        this._has_end= false;
+    }
+
+    /**
+     */
+    public void deleteOutlineColour(
+    ) {
+        this._has_outlineColour= false;
+    }
+
+    /**
+     */
+    public void deletePidThreshold(
+    ) {
+        this._has_pidThreshold= false;
+    }
+
+    /**
+     */
+    public void deleteStart(
+    ) {
+        this._has_start= false;
+    }
+
+    /**
+     * Method enumerateSeq.
+     * 
+     * @return an Enumeration over all int elements
+     */
+    public java.util.Enumeration enumerateSeq(
+    ) {
+        return this._seqList.elements();
+    }
+
+    /**
+     * Returns the value of field 'colour'.
+     * 
+     * @return the value of field 'Colour'.
+     */
+    public java.lang.String getColour(
+    ) {
+        return this._colour;
+    }
+
+    /**
+     * Returns the value of field 'colourText'.
+     * 
+     * @return the value of field 'ColourText'.
+     */
+    public boolean getColourText(
+    ) {
+        return this._colourText;
+    }
+
+    /**
+     * Returns the value of field 'consThreshold'.
+     * 
+     * @return the value of field 'ConsThreshold'.
+     */
+    public int getConsThreshold(
+    ) {
+        return this._consThreshold;
+    }
+
+    /**
+     * Returns the value of field 'displayBoxes'.
+     * 
+     * @return the value of field 'DisplayBoxes'.
+     */
+    public boolean getDisplayBoxes(
+    ) {
+        return this._displayBoxes;
+    }
+
+    /**
+     * Returns the value of field 'displayText'.
+     * 
+     * @return the value of field 'DisplayText'.
+     */
+    public boolean getDisplayText(
+    ) {
+        return this._displayText;
+    }
+
+    /**
+     * Returns the value of field 'end'.
+     * 
+     * @return the value of field 'End'.
+     */
+    public int getEnd(
+    ) {
+        return this._end;
+    }
+
+    /**
+     * Returns the value of field 'name'.
+     * 
+     * @return the value of field 'Name'.
+     */
+    public java.lang.String getName(
+    ) {
+        return this._name;
+    }
+
+    /**
+     * Returns the value of field 'outlineColour'.
+     * 
+     * @return the value of field 'OutlineColour'.
+     */
+    public int getOutlineColour(
+    ) {
+        return this._outlineColour;
+    }
+
+    /**
+     * Returns the value of field 'pidThreshold'.
+     * 
+     * @return the value of field 'PidThreshold'.
+     */
+    public int getPidThreshold(
+    ) {
+        return this._pidThreshold;
+    }
+
+    /**
+     * Method getSeq.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the int at the given index
+     */
+    public int getSeq(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._seqList.size()) {
+            throw new IndexOutOfBoundsException("getSeq: Index value '" + index + "' not in range [0.." + (this._seqList.size() - 1) + "]");
+        }
+        
+        return ((java.lang.Integer) _seqList.get(index)).intValue();
+    }
+
+    /**
+     * Method getSeq.Returns the contents of the collection in an
+     * Array.  
+     * 
+     * @return this collection as an Array
+     */
+    public int[] getSeq(
+    ) {
+        int size = this._seqList.size();
+        int[] array = new int[size];
+        java.util.Iterator iter = _seqList.iterator();
+        for (int index = 0; index < size; index++) {
+            array[index] = ((java.lang.Integer) iter.next()).intValue();
+        }
+        return array;
+    }
+
+    /**
+     * Method getSeqCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getSeqCount(
+    ) {
+        return this._seqList.size();
+    }
+
+    /**
+     * Returns the value of field 'start'.
+     * 
+     * @return the value of field 'Start'.
+     */
+    public int getStart(
+    ) {
+        return this._start;
+    }
+
+    /**
+     * Method hasColourText.
+     * 
+     * @return true if at least one ColourText has been added
+     */
+    public boolean hasColourText(
+    ) {
+        return this._has_colourText;
+    }
+
+    /**
+     * Method hasConsThreshold.
+     * 
+     * @return true if at least one ConsThreshold has been added
+     */
+    public boolean hasConsThreshold(
+    ) {
+        return this._has_consThreshold;
+    }
+
+    /**
+     * Method hasDisplayBoxes.
+     * 
+     * @return true if at least one DisplayBoxes has been added
+     */
+    public boolean hasDisplayBoxes(
+    ) {
+        return this._has_displayBoxes;
+    }
+
+    /**
+     * Method hasDisplayText.
+     * 
+     * @return true if at least one DisplayText has been added
+     */
+    public boolean hasDisplayText(
+    ) {
+        return this._has_displayText;
+    }
+
+    /**
+     * Method hasEnd.
+     * 
+     * @return true if at least one End has been added
+     */
+    public boolean hasEnd(
+    ) {
+        return this._has_end;
+    }
+
+    /**
+     * Method hasOutlineColour.
+     * 
+     * @return true if at least one OutlineColour has been added
+     */
+    public boolean hasOutlineColour(
+    ) {
+        return this._has_outlineColour;
+    }
+
+    /**
+     * Method hasPidThreshold.
+     * 
+     * @return true if at least one PidThreshold has been added
+     */
+    public boolean hasPidThreshold(
+    ) {
+        return this._has_pidThreshold;
+    }
+
+    /**
+     * Method hasStart.
+     * 
+     * @return true if at least one Start has been added
+     */
+    public boolean hasStart(
+    ) {
+        return this._has_start;
+    }
+
+    /**
+     * Returns the value of field 'colourText'.
+     * 
+     * @return the value of field 'ColourText'.
+     */
+    public boolean isColourText(
+    ) {
+        return this._colourText;
+    }
+
+    /**
+     * Returns the value of field 'displayBoxes'.
+     * 
+     * @return the value of field 'DisplayBoxes'.
+     */
+    public boolean isDisplayBoxes(
+    ) {
+        return this._displayBoxes;
+    }
+
+    /**
+     * Returns the value of field 'displayText'.
+     * 
+     * @return the value of field 'DisplayText'.
+     */
+    public boolean isDisplayText(
+    ) {
+        return this._displayText;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     */
+    public void removeAllSeq(
+    ) {
+        this._seqList.clear();
+    }
+
+    /**
+     * Method removeSeq.
+     * 
+     * @param vSeq
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeSeq(
+            final int vSeq) {
+        boolean removed = _seqList.remove(new java.lang.Integer(vSeq));
+        return removed;
+    }
+
+    /**
+     * Method removeSeqAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public int removeSeqAt(
+            final int index) {
+        java.lang.Object obj = this._seqList.remove(index);
+        return ((java.lang.Integer) obj).intValue();
+    }
+
+    /**
+     * Sets the value of field 'colour'.
+     * 
+     * @param colour the value of field 'colour'.
+     */
+    public void setColour(
+            final java.lang.String colour) {
+        this._colour = colour;
+    }
+
+    /**
+     * Sets the value of field 'colourText'.
+     * 
+     * @param colourText the value of field 'colourText'.
+     */
+    public void setColourText(
+            final boolean colourText) {
+        this._colourText = colourText;
+        this._has_colourText = true;
+    }
+
+    /**
+     * Sets the value of field 'consThreshold'.
+     * 
+     * @param consThreshold the value of field 'consThreshold'.
+     */
+    public void setConsThreshold(
+            final int consThreshold) {
+        this._consThreshold = consThreshold;
+        this._has_consThreshold = true;
+    }
+
+    /**
+     * Sets the value of field 'displayBoxes'.
+     * 
+     * @param displayBoxes the value of field 'displayBoxes'.
+     */
+    public void setDisplayBoxes(
+            final boolean displayBoxes) {
+        this._displayBoxes = displayBoxes;
+        this._has_displayBoxes = true;
+    }
+
+    /**
+     * Sets the value of field 'displayText'.
+     * 
+     * @param displayText the value of field 'displayText'.
+     */
+    public void setDisplayText(
+            final boolean displayText) {
+        this._displayText = displayText;
+        this._has_displayText = true;
+    }
+
+    /**
+     * Sets the value of field 'end'.
+     * 
+     * @param end the value of field 'end'.
+     */
+    public void setEnd(
+            final int end) {
+        this._end = end;
+        this._has_end = true;
+    }
+
+    /**
+     * Sets the value of field 'name'.
+     * 
+     * @param name the value of field 'name'.
+     */
+    public void setName(
+            final java.lang.String name) {
+        this._name = name;
+    }
+
+    /**
+     * Sets the value of field 'outlineColour'.
+     * 
+     * @param outlineColour the value of field 'outlineColour'.
+     */
+    public void setOutlineColour(
+            final int outlineColour) {
+        this._outlineColour = outlineColour;
+        this._has_outlineColour = true;
+    }
+
+    /**
+     * Sets the value of field 'pidThreshold'.
+     * 
+     * @param pidThreshold the value of field 'pidThreshold'.
+     */
+    public void setPidThreshold(
+            final int pidThreshold) {
+        this._pidThreshold = pidThreshold;
+        this._has_pidThreshold = true;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSeq
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setSeq(
+            final int index,
+            final int vSeq)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._seqList.size()) {
+            throw new IndexOutOfBoundsException("setSeq: Index value '" + index + "' not in range [0.." + (this._seqList.size() - 1) + "]");
+        }
+        
+        this._seqList.set(index, new java.lang.Integer(vSeq));
+    }
+
+    /**
+     * 
+     * 
+     * @param vSeqArray
+     */
+    public void setSeq(
+            final int[] vSeqArray) {
+        //-- copy array
+        _seqList.clear();
+        
+        for (int i = 0; i < vSeqArray.length; i++) {
+                this._seqList.add(new java.lang.Integer(vSeqArray[i]));
+        }
+    }
+
+    /**
+     * Sets the value of field 'start'.
+     * 
+     * @param start the value of field 'start'.
+     */
+    public void setStart(
+            final int start) {
+        this._start = start;
+        this._has_start = true;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.JGroup
+     */
+    public static jalview.binding.JGroup unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.JGroup) Unmarshaller.unmarshal(jalview.binding.JGroup.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 68d545f..14b1f2f 100644 (file)
@@ -1,30 +1,15 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
-//- Imported classes and packages -/
-//---------------------------------/
-
-import jalview.util.MessageManager;
 
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
@@ -34,635 +19,605 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class JSeq implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _colour.
-   */
-  private int _colour;
-
-  /**
-   * keeps track of state for field: _colour
-   */
-  private boolean _has_colour;
-
-  /**
-   * Field _start.
-   */
-  private int _start;
-
-  /**
-   * keeps track of state for field: _start
-   */
-  private boolean _has_start;
-
-  /**
-   * Field _end.
-   */
-  private int _end;
-
-  /**
-   * keeps track of state for field: _end
-   */
-  private boolean _has_end;
-
-  /**
-   * Field _id.
-   */
-  private int _id;
-
-  /**
-   * keeps track of state for field: _id
-   */
-  private boolean _has_id;
-
-  /**
-   * Field _featuresList.
-   */
-  private java.util.Vector _featuresList;
-
-  /**
-   * Field _pdbidsList.
-   */
-  private java.util.Vector _pdbidsList;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public JSeq()
-  {
-    super();
-    this._featuresList = new java.util.Vector();
-    this._pdbidsList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vFeatures
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addFeatures(final jalview.binding.Features vFeatures)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._featuresList.addElement(vFeatures);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vFeatures
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addFeatures(final int index,
-          final jalview.binding.Features vFeatures)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._featuresList.add(index, vFeatures);
-  }
-
-  /**
-   * 
-   * 
-   * @param vPdbids
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addPdbids(final jalview.binding.Pdbids vPdbids)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._pdbidsList.addElement(vPdbids);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vPdbids
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addPdbids(final int index,
-          final jalview.binding.Pdbids vPdbids)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._pdbidsList.add(index, vPdbids);
-  }
-
-  /**
-     */
-  public void deleteColour()
-  {
-    this._has_colour = false;
-  }
-
-  /**
-     */
-  public void deleteEnd()
-  {
-    this._has_end = false;
-  }
-
-  /**
-     */
-  public void deleteId()
-  {
-    this._has_id = false;
-  }
-
-  /**
-     */
-  public void deleteStart()
-  {
-    this._has_start = false;
-  }
-
-  /**
-   * Method enumerateFeatures.
-   * 
-   * @return an Enumeration over all jalview.binding.Features elements
-   */
-  public java.util.Enumeration enumerateFeatures()
-  {
-    return this._featuresList.elements();
-  }
-
-  /**
-   * Method enumeratePdbids.
-   * 
-   * @return an Enumeration over all jalview.binding.Pdbids elements
-   */
-  public java.util.Enumeration enumeratePdbids()
-  {
-    return this._pdbidsList.elements();
-  }
-
-  /**
-   * Returns the value of field 'colour'.
-   * 
-   * @return the value of field 'Colour'.
-   */
-  public int getColour()
-  {
-    return this._colour;
-  }
-
-  /**
-   * Returns the value of field 'end'.
-   * 
-   * @return the value of field 'End'.
-   */
-  public int getEnd()
-  {
-    return this._end;
-  }
-
-  /**
-   * Method getFeatures.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Features at the given index
-   */
-  public jalview.binding.Features getFeatures(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._featuresList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getFeatures",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._featuresList.size() - 1)).toString()
-        })); 
-    }
-
-    return (jalview.binding.Features) _featuresList.get(index);
-  }
-
-  /**
-   * Method getFeatures.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Features[] getFeatures()
-  {
-    jalview.binding.Features[] array = new jalview.binding.Features[0];
-    return (jalview.binding.Features[]) this._featuresList.toArray(array);
-  }
-
-  /**
-   * Method getFeaturesCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getFeaturesCount()
-  {
-    return this._featuresList.size();
-  }
-
-  /**
-   * Returns the value of field 'id'.
-   * 
-   * @return the value of field 'Id'.
-   */
-  public int getId()
-  {
-    return this._id;
-  }
-
-  /**
-   * Method getPdbids.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Pdbids at the given index
-   */
-  public jalview.binding.Pdbids getPdbids(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._pdbidsList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "getPdbids",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._pdbidsList.size() - 1)).toString()
-          })); 
-    }
-
-    return (jalview.binding.Pdbids) _pdbidsList.get(index);
-  }
-
-  /**
-   * Method getPdbids.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Pdbids[] getPdbids()
-  {
-    jalview.binding.Pdbids[] array = new jalview.binding.Pdbids[0];
-    return (jalview.binding.Pdbids[]) this._pdbidsList.toArray(array);
-  }
-
-  /**
-   * Method getPdbidsCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getPdbidsCount()
-  {
-    return this._pdbidsList.size();
-  }
-
-  /**
-   * Returns the value of field 'start'.
-   * 
-   * @return the value of field 'Start'.
-   */
-  public int getStart()
-  {
-    return this._start;
-  }
-
-  /**
-   * Method hasColour.
-   * 
-   * @return true if at least one Colour has been added
-   */
-  public boolean hasColour()
-  {
-    return this._has_colour;
-  }
-
-  /**
-   * Method hasEnd.
-   * 
-   * @return true if at least one End has been added
-   */
-  public boolean hasEnd()
-  {
-    return this._has_end;
-  }
-
-  /**
-   * Method hasId.
-   * 
-   * @return true if at least one Id has been added
-   */
-  public boolean hasId()
-  {
-    return this._has_id;
-  }
-
-  /**
-   * Method hasStart.
-   * 
-   * @return true if at least one Start has been added
-   */
-  public boolean hasStart()
-  {
-    return this._has_start;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-     */
-  public void removeAllFeatures()
-  {
-    this._featuresList.clear();
-  }
-
-  /**
-     */
-  public void removeAllPdbids()
-  {
-    this._pdbidsList.clear();
-  }
-
-  /**
-   * Method removeFeatures.
-   * 
-   * @param vFeatures
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeFeatures(final jalview.binding.Features vFeatures)
-  {
-    boolean removed = _featuresList.remove(vFeatures);
-    return removed;
-  }
-
-  /**
-   * Method removeFeaturesAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Features removeFeaturesAt(final int index)
-  {
-    java.lang.Object obj = this._featuresList.remove(index);
-    return (jalview.binding.Features) obj;
-  }
-
-  /**
-   * Method removePdbids.
-   * 
-   * @param vPdbids
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removePdbids(final jalview.binding.Pdbids vPdbids)
-  {
-    boolean removed = _pdbidsList.remove(vPdbids);
-    return removed;
-  }
-
-  /**
-   * Method removePdbidsAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Pdbids removePdbidsAt(final int index)
-  {
-    java.lang.Object obj = this._pdbidsList.remove(index);
-    return (jalview.binding.Pdbids) obj;
-  }
-
-  /**
-   * Sets the value of field 'colour'.
-   * 
-   * @param colour
-   *          the value of field 'colour'.
-   */
-  public void setColour(final int colour)
-  {
-    this._colour = colour;
-    this._has_colour = true;
-  }
-
-  /**
-   * Sets the value of field 'end'.
-   * 
-   * @param end
-   *          the value of field 'end'.
-   */
-  public void setEnd(final int end)
-  {
-    this._end = end;
-    this._has_end = true;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vFeatures
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setFeatures(final int index,
-          final jalview.binding.Features vFeatures)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._featuresList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "setFeatures",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._featuresList.size() - 1)).toString()
-        })); 
-    }
-
-    this._featuresList.set(index, vFeatures);
-  }
-
-  /**
-   * 
-   * 
-   * @param vFeaturesArray
-   */
-  public void setFeatures(final jalview.binding.Features[] vFeaturesArray)
-  {
-    // -- copy array
-    _featuresList.clear();
-
-    for (int i = 0; i < vFeaturesArray.length; i++)
-    {
-      this._featuresList.add(vFeaturesArray[i]);
-    }
-  }
-
-  /**
-   * Sets the value of field 'id'.
-   * 
-   * @param id
-   *          the value of field 'id'.
-   */
-  public void setId(final int id)
-  {
-    this._id = id;
-    this._has_id = true;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vPdbids
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setPdbids(final int index,
-          final jalview.binding.Pdbids vPdbids)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._pdbidsList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setPdbids",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._pdbidsList.size() - 1)).toString()
-          })); 
-    }
-
-    this._pdbidsList.set(index, vPdbids);
-  }
-
-  /**
-   * 
-   * 
-   * @param vPdbidsArray
-   */
-  public void setPdbids(final jalview.binding.Pdbids[] vPdbidsArray)
-  {
-    // -- copy array
-    _pdbidsList.clear();
-
-    for (int i = 0; i < vPdbidsArray.length; i++)
-    {
-      this._pdbidsList.add(vPdbidsArray[i]);
-    }
-  }
-
-  /**
-   * Sets the value of field 'start'.
-   * 
-   * @param start
-   *          the value of field 'start'.
-   */
-  public void setStart(final int start)
-  {
-    this._start = start;
-    this._has_start = true;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.JSeq
-   */
-  public static jalview.binding.JSeq unmarshal(final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.JSeq) Unmarshaller.unmarshal(
-            jalview.binding.JSeq.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class JSeq implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _colour.
+     */
+    private int _colour;
+
+    /**
+     * keeps track of state for field: _colour
+     */
+    private boolean _has_colour;
+
+    /**
+     * Field _start.
+     */
+    private int _start;
+
+    /**
+     * keeps track of state for field: _start
+     */
+    private boolean _has_start;
+
+    /**
+     * Field _end.
+     */
+    private int _end;
+
+    /**
+     * keeps track of state for field: _end
+     */
+    private boolean _has_end;
+
+    /**
+     * Field _id.
+     */
+    private int _id;
+
+    /**
+     * keeps track of state for field: _id
+     */
+    private boolean _has_id;
+
+    /**
+     * Field _featuresList.
+     */
+    private java.util.Vector _featuresList;
+
+    /**
+     * Field _pdbidsList.
+     */
+    private java.util.Vector _pdbidsList;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public JSeq() {
+        super();
+        this._featuresList = new java.util.Vector();
+        this._pdbidsList = new java.util.Vector();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vFeatures
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addFeatures(
+            final jalview.binding.Features vFeatures)
+    throws java.lang.IndexOutOfBoundsException {
+        this._featuresList.addElement(vFeatures);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vFeatures
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addFeatures(
+            final int index,
+            final jalview.binding.Features vFeatures)
+    throws java.lang.IndexOutOfBoundsException {
+        this._featuresList.add(index, vFeatures);
+    }
+
+    /**
+     * 
+     * 
+     * @param vPdbids
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addPdbids(
+            final jalview.binding.Pdbids vPdbids)
+    throws java.lang.IndexOutOfBoundsException {
+        this._pdbidsList.addElement(vPdbids);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vPdbids
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addPdbids(
+            final int index,
+            final jalview.binding.Pdbids vPdbids)
+    throws java.lang.IndexOutOfBoundsException {
+        this._pdbidsList.add(index, vPdbids);
+    }
+
+    /**
+     */
+    public void deleteColour(
+    ) {
+        this._has_colour= false;
+    }
+
+    /**
+     */
+    public void deleteEnd(
+    ) {
+        this._has_end= false;
+    }
+
+    /**
+     */
+    public void deleteId(
+    ) {
+        this._has_id= false;
+    }
+
+    /**
+     */
+    public void deleteStart(
+    ) {
+        this._has_start= false;
+    }
+
+    /**
+     * Method enumerateFeatures.
+     * 
+     * @return an Enumeration over all jalview.binding.Features
+     * elements
+     */
+    public java.util.Enumeration enumerateFeatures(
+    ) {
+        return this._featuresList.elements();
+    }
+
+    /**
+     * Method enumeratePdbids.
+     * 
+     * @return an Enumeration over all jalview.binding.Pdbids
+     * elements
+     */
+    public java.util.Enumeration enumeratePdbids(
+    ) {
+        return this._pdbidsList.elements();
+    }
+
+    /**
+     * Returns the value of field 'colour'.
+     * 
+     * @return the value of field 'Colour'.
+     */
+    public int getColour(
+    ) {
+        return this._colour;
+    }
+
+    /**
+     * Returns the value of field 'end'.
+     * 
+     * @return the value of field 'End'.
+     */
+    public int getEnd(
+    ) {
+        return this._end;
+    }
+
+    /**
+     * Method getFeatures.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Features at the
+     * given index
+     */
+    public jalview.binding.Features getFeatures(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._featuresList.size()) {
+            throw new IndexOutOfBoundsException("getFeatures: Index value '" + index + "' not in range [0.." + (this._featuresList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Features) _featuresList.get(index);
+    }
+
+    /**
+     * Method getFeatures.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Features[] getFeatures(
+    ) {
+        jalview.binding.Features[] array = new jalview.binding.Features[0];
+        return (jalview.binding.Features[]) this._featuresList.toArray(array);
+    }
+
+    /**
+     * Method getFeaturesCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getFeaturesCount(
+    ) {
+        return this._featuresList.size();
+    }
+
+    /**
+     * Returns the value of field 'id'.
+     * 
+     * @return the value of field 'Id'.
+     */
+    public int getId(
+    ) {
+        return this._id;
+    }
+
+    /**
+     * Method getPdbids.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Pdbids at the given
+     * index
+     */
+    public jalview.binding.Pdbids getPdbids(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._pdbidsList.size()) {
+            throw new IndexOutOfBoundsException("getPdbids: Index value '" + index + "' not in range [0.." + (this._pdbidsList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Pdbids) _pdbidsList.get(index);
+    }
+
+    /**
+     * Method getPdbids.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Pdbids[] getPdbids(
+    ) {
+        jalview.binding.Pdbids[] array = new jalview.binding.Pdbids[0];
+        return (jalview.binding.Pdbids[]) this._pdbidsList.toArray(array);
+    }
+
+    /**
+     * Method getPdbidsCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getPdbidsCount(
+    ) {
+        return this._pdbidsList.size();
+    }
+
+    /**
+     * Returns the value of field 'start'.
+     * 
+     * @return the value of field 'Start'.
+     */
+    public int getStart(
+    ) {
+        return this._start;
+    }
+
+    /**
+     * Method hasColour.
+     * 
+     * @return true if at least one Colour has been added
+     */
+    public boolean hasColour(
+    ) {
+        return this._has_colour;
+    }
+
+    /**
+     * Method hasEnd.
+     * 
+     * @return true if at least one End has been added
+     */
+    public boolean hasEnd(
+    ) {
+        return this._has_end;
+    }
+
+    /**
+     * Method hasId.
+     * 
+     * @return true if at least one Id has been added
+     */
+    public boolean hasId(
+    ) {
+        return this._has_id;
+    }
+
+    /**
+     * Method hasStart.
+     * 
+     * @return true if at least one Start has been added
+     */
+    public boolean hasStart(
+    ) {
+        return this._has_start;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     */
+    public void removeAllFeatures(
+    ) {
+        this._featuresList.clear();
+    }
+
+    /**
+     */
+    public void removeAllPdbids(
+    ) {
+        this._pdbidsList.clear();
+    }
+
+    /**
+     * Method removeFeatures.
+     * 
+     * @param vFeatures
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeFeatures(
+            final jalview.binding.Features vFeatures) {
+        boolean removed = _featuresList.remove(vFeatures);
+        return removed;
+    }
+
+    /**
+     * Method removeFeaturesAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Features removeFeaturesAt(
+            final int index) {
+        java.lang.Object obj = this._featuresList.remove(index);
+        return (jalview.binding.Features) obj;
+    }
+
+    /**
+     * Method removePdbids.
+     * 
+     * @param vPdbids
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removePdbids(
+            final jalview.binding.Pdbids vPdbids) {
+        boolean removed = _pdbidsList.remove(vPdbids);
+        return removed;
+    }
+
+    /**
+     * Method removePdbidsAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Pdbids removePdbidsAt(
+            final int index) {
+        java.lang.Object obj = this._pdbidsList.remove(index);
+        return (jalview.binding.Pdbids) obj;
+    }
+
+    /**
+     * Sets the value of field 'colour'.
+     * 
+     * @param colour the value of field 'colour'.
+     */
+    public void setColour(
+            final int colour) {
+        this._colour = colour;
+        this._has_colour = true;
+    }
+
+    /**
+     * Sets the value of field 'end'.
+     * 
+     * @param end the value of field 'end'.
+     */
+    public void setEnd(
+            final int end) {
+        this._end = end;
+        this._has_end = true;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vFeatures
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setFeatures(
+            final int index,
+            final jalview.binding.Features vFeatures)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._featuresList.size()) {
+            throw new IndexOutOfBoundsException("setFeatures: Index value '" + index + "' not in range [0.." + (this._featuresList.size() - 1) + "]");
+        }
+        
+        this._featuresList.set(index, vFeatures);
+    }
+
+    /**
+     * 
+     * 
+     * @param vFeaturesArray
+     */
+    public void setFeatures(
+            final jalview.binding.Features[] vFeaturesArray) {
+        //-- copy array
+        _featuresList.clear();
+        
+        for (int i = 0; i < vFeaturesArray.length; i++) {
+                this._featuresList.add(vFeaturesArray[i]);
+        }
+    }
+
+    /**
+     * Sets the value of field 'id'.
+     * 
+     * @param id the value of field 'id'.
+     */
+    public void setId(
+            final int id) {
+        this._id = id;
+        this._has_id = true;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vPdbids
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setPdbids(
+            final int index,
+            final jalview.binding.Pdbids vPdbids)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._pdbidsList.size()) {
+            throw new IndexOutOfBoundsException("setPdbids: Index value '" + index + "' not in range [0.." + (this._pdbidsList.size() - 1) + "]");
+        }
+        
+        this._pdbidsList.set(index, vPdbids);
+    }
+
+    /**
+     * 
+     * 
+     * @param vPdbidsArray
+     */
+    public void setPdbids(
+            final jalview.binding.Pdbids[] vPdbidsArray) {
+        //-- copy array
+        _pdbidsList.clear();
+        
+        for (int i = 0; i < vPdbidsArray.length; i++) {
+                this._pdbidsList.add(vPdbidsArray[i]);
+        }
+    }
+
+    /**
+     * Sets the value of field 'start'.
+     * 
+     * @param start the value of field 'start'.
+     */
+    public void setStart(
+            final int start) {
+        this._start = start;
+        this._has_start = true;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.JSeq
+     */
+    public static jalview.binding.JSeq unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.JSeq) Unmarshaller.unmarshal(jalview.binding.JSeq.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index cebd813..21f8be9 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,215 +19,202 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class JalviewModel implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _creationDate.
-   */
-  private java.util.Date _creationDate;
-
-  /**
-   * Field _version.
-   */
-  private java.lang.String _version;
-
-  /**
-   * Field _vamsasModel.
-   */
-  private jalview.binding.VamsasModel _vamsasModel;
-
-  /**
-   * Field _jalviewModelSequence.
-   */
-  private jalview.binding.JalviewModelSequence _jalviewModelSequence;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public JalviewModel()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * Returns the value of field 'creationDate'.
-   * 
-   * @return the value of field 'CreationDate'.
-   */
-  public java.util.Date getCreationDate()
-  {
-    return this._creationDate;
-  }
-
-  /**
-   * Returns the value of field 'jalviewModelSequence'.
-   * 
-   * @return the value of field 'JalviewModelSequence'.
-   */
-  public jalview.binding.JalviewModelSequence getJalviewModelSequence()
-  {
-    return this._jalviewModelSequence;
-  }
-
-  /**
-   * Returns the value of field 'vamsasModel'.
-   * 
-   * @return the value of field 'VamsasModel'.
-   */
-  public jalview.binding.VamsasModel getVamsasModel()
-  {
-    return this._vamsasModel;
-  }
-
-  /**
-   * Returns the value of field 'version'.
-   * 
-   * @return the value of field 'Version'.
-   */
-  public java.lang.String getVersion()
-  {
-    return this._version;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+public class JalviewModel implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _creationDate.
+     */
+    private java.util.Date _creationDate;
+
+    /**
+     * Field _version.
+     */
+    private java.lang.String _version;
+
+    /**
+     * Field _vamsasModel.
+     */
+    private jalview.binding.VamsasModel _vamsasModel;
+
+    /**
+     * Field _jalviewModelSequence.
+     */
+    private jalview.binding.JalviewModelSequence _jalviewModelSequence;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public JalviewModel() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * Returns the value of field 'creationDate'.
+     * 
+     * @return the value of field 'CreationDate'.
+     */
+    public java.util.Date getCreationDate(
+    ) {
+        return this._creationDate;
+    }
+
+    /**
+     * Returns the value of field 'jalviewModelSequence'.
+     * 
+     * @return the value of field 'JalviewModelSequence'.
+     */
+    public jalview.binding.JalviewModelSequence getJalviewModelSequence(
+    ) {
+        return this._jalviewModelSequence;
+    }
+
+    /**
+     * Returns the value of field 'vamsasModel'.
+     * 
+     * @return the value of field 'VamsasModel'.
+     */
+    public jalview.binding.VamsasModel getVamsasModel(
+    ) {
+        return this._vamsasModel;
+    }
+
+    /**
+     * Returns the value of field 'version'.
+     * 
+     * @return the value of field 'Version'.
+     */
+    public java.lang.String getVersion(
+    ) {
+        return this._version;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'creationDate'.
+     * 
+     * @param creationDate the value of field 'creationDate'.
+     */
+    public void setCreationDate(
+            final java.util.Date creationDate) {
+        this._creationDate = creationDate;
+    }
+
+    /**
+     * Sets the value of field 'jalviewModelSequence'.
+     * 
+     * @param jalviewModelSequence the value of field
+     * 'jalviewModelSequence'.
+     */
+    public void setJalviewModelSequence(
+            final jalview.binding.JalviewModelSequence jalviewModelSequence) {
+        this._jalviewModelSequence = jalviewModelSequence;
+    }
+
+    /**
+     * Sets the value of field 'vamsasModel'.
+     * 
+     * @param vamsasModel the value of field 'vamsasModel'.
+     */
+    public void setVamsasModel(
+            final jalview.binding.VamsasModel vamsasModel) {
+        this._vamsasModel = vamsasModel;
+    }
+
+    /**
+     * Sets the value of field 'version'.
+     * 
+     * @param version the value of field 'version'.
+     */
+    public void setVersion(
+            final java.lang.String version) {
+        this._version = version;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.JalviewModel
+     */
+    public static jalview.binding.JalviewModel unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.JalviewModel) Unmarshaller.unmarshal(jalview.binding.JalviewModel.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'creationDate'.
-   * 
-   * @param creationDate
-   *          the value of field 'creationDate'.
-   */
-  public void setCreationDate(final java.util.Date creationDate)
-  {
-    this._creationDate = creationDate;
-  }
-
-  /**
-   * Sets the value of field 'jalviewModelSequence'.
-   * 
-   * @param jalviewModelSequence
-   *          the value of field 'jalviewModelSequence'.
-   */
-  public void setJalviewModelSequence(
-          final jalview.binding.JalviewModelSequence jalviewModelSequence)
-  {
-    this._jalviewModelSequence = jalviewModelSequence;
-  }
-
-  /**
-   * Sets the value of field 'vamsasModel'.
-   * 
-   * @param vamsasModel
-   *          the value of field 'vamsasModel'.
-   */
-  public void setVamsasModel(final jalview.binding.VamsasModel vamsasModel)
-  {
-    this._vamsasModel = vamsasModel;
-  }
-
-  /**
-   * Sets the value of field 'version'.
-   * 
-   * @param version
-   *          the value of field 'version'.
-   */
-  public void setVersion(final java.lang.String version)
-  {
-    this._version = version;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.JalviewModel
-   */
-  public static jalview.binding.JalviewModel unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.JalviewModel) Unmarshaller.unmarshal(
-            jalview.binding.JalviewModel.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index 43fa983..5ebcee6 100644 (file)
@@ -1,30 +1,15 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
-//- Imported classes and packages -/
-//---------------------------------/
-
-import jalview.util.MessageManager;
 
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
@@ -34,961 +19,904 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class JalviewModelSequence implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _JSeqList.
-   */
-  private java.util.Vector _JSeqList;
-
-  /**
-   * Field _JGroupList.
-   */
-  private java.util.Vector _JGroupList;
-
-  /**
-   * Field _viewportList.
-   */
-  private java.util.Vector _viewportList;
-
-  /**
-   * Field _userColoursList.
-   */
-  private java.util.Vector _userColoursList;
-
-  /**
-   * Field _treeList.
-   */
-  private java.util.Vector _treeList;
-
-  /**
-   * Field _featureSettings.
-   */
-  private jalview.binding.FeatureSettings _featureSettings;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public JalviewModelSequence()
-  {
-    super();
-    this._JSeqList = new java.util.Vector();
-    this._JGroupList = new java.util.Vector();
-    this._viewportList = new java.util.Vector();
-    this._userColoursList = new java.util.Vector();
-    this._treeList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vJGroup
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addJGroup(final jalview.binding.JGroup vJGroup)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._JGroupList.addElement(vJGroup);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vJGroup
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addJGroup(final int index,
-          final jalview.binding.JGroup vJGroup)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._JGroupList.add(index, vJGroup);
-  }
-
-  /**
-   * 
-   * 
-   * @param vJSeq
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addJSeq(final jalview.binding.JSeq vJSeq)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._JSeqList.addElement(vJSeq);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vJSeq
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addJSeq(final int index, final jalview.binding.JSeq vJSeq)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._JSeqList.add(index, vJSeq);
-  }
-
-  /**
-   * 
-   * 
-   * @param vTree
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addTree(final jalview.binding.Tree vTree)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._treeList.addElement(vTree);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vTree
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addTree(final int index, final jalview.binding.Tree vTree)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._treeList.add(index, vTree);
-  }
-
-  /**
-   * 
-   * 
-   * @param vUserColours
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addUserColours(final jalview.binding.UserColours vUserColours)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._userColoursList.addElement(vUserColours);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vUserColours
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addUserColours(final int index,
-          final jalview.binding.UserColours vUserColours)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._userColoursList.add(index, vUserColours);
-  }
-
-  /**
-   * 
-   * 
-   * @param vViewport
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addViewport(final jalview.binding.Viewport vViewport)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._viewportList.addElement(vViewport);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vViewport
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addViewport(final int index,
-          final jalview.binding.Viewport vViewport)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._viewportList.add(index, vViewport);
-  }
-
-  /**
-   * Method enumerateJGroup.
-   * 
-   * @return an Enumeration over all jalview.binding.JGroup elements
-   */
-  public java.util.Enumeration enumerateJGroup()
-  {
-    return this._JGroupList.elements();
-  }
-
-  /**
-   * Method enumerateJSeq.
-   * 
-   * @return an Enumeration over all jalview.binding.JSeq elements
-   */
-  public java.util.Enumeration enumerateJSeq()
-  {
-    return this._JSeqList.elements();
-  }
-
-  /**
-   * Method enumerateTree.
-   * 
-   * @return an Enumeration over all jalview.binding.Tree elements
-   */
-  public java.util.Enumeration enumerateTree()
-  {
-    return this._treeList.elements();
-  }
-
-  /**
-   * Method enumerateUserColours.
-   * 
-   * @return an Enumeration over all jalview.binding.UserColours elements
-   */
-  public java.util.Enumeration enumerateUserColours()
-  {
-    return this._userColoursList.elements();
-  }
-
-  /**
-   * Method enumerateViewport.
-   * 
-   * @return an Enumeration over all jalview.binding.Viewport elements
-   */
-  public java.util.Enumeration enumerateViewport()
-  {
-    return this._viewportList.elements();
-  }
-
-  /**
-   * Returns the value of field 'featureSettings'.
-   * 
-   * @return the value of field 'FeatureSettings'.
-   */
-  public jalview.binding.FeatureSettings getFeatureSettings()
-  {
-    return this._featureSettings;
-  }
-
-  /**
-   * Method getJGroup.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.JGroup at the given index
-   */
-  public jalview.binding.JGroup getJGroup(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._JGroupList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getJGroup",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._JGroupList.size() - 1)).toString()
-        }));
-    }
-
-    return (jalview.binding.JGroup) _JGroupList.get(index);
-  }
-
-  /**
-   * Method getJGroup.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.JGroup[] getJGroup()
-  {
-    jalview.binding.JGroup[] array = new jalview.binding.JGroup[0];
-    return (jalview.binding.JGroup[]) this._JGroupList.toArray(array);
-  }
-
-  /**
-   * Method getJGroupCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getJGroupCount()
-  {
-    return this._JGroupList.size();
-  }
-
-  /**
-   * Method getJSeq.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.JSeq at the given index
-   */
-  public jalview.binding.JSeq getJSeq(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._JSeqList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "getJSeq",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._JSeqList.size() - 1)).toString()
-          }));
-    }
-
-    return (jalview.binding.JSeq) _JSeqList.get(index);
-  }
-
-  /**
-   * Method getJSeq.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.JSeq[] getJSeq()
-  {
-    jalview.binding.JSeq[] array = new jalview.binding.JSeq[0];
-    return (jalview.binding.JSeq[]) this._JSeqList.toArray(array);
-  }
-
-  /**
-   * Method getJSeqCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getJSeqCount()
-  {
-    return this._JSeqList.size();
-  }
-
-  /**
-   * Method getTree.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Tree at the given index
-   */
-  public jalview.binding.Tree getTree(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._treeList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getJgetTreeSeq",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._treeList.size() - 1)).toString()
-        })); 
-    }
-
-    return (jalview.binding.Tree) _treeList.get(index);
-  }
-
-  /**
-   * Method getTree.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Tree[] getTree()
-  {
-    jalview.binding.Tree[] array = new jalview.binding.Tree[0];
-    return (jalview.binding.Tree[]) this._treeList.toArray(array);
-  }
-
-  /**
-   * Method getTreeCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getTreeCount()
-  {
-    return this._treeList.size();
-  }
-
-  /**
-   * Method getUserColours.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.UserColours at the given index
-   */
-  public jalview.binding.UserColours getUserColours(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._userColoursList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "getUserColours",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._userColoursList.size() - 1)).toString()
-          })); 
-    }
-
-    return (jalview.binding.UserColours) _userColoursList.get(index);
-  }
-
-  /**
-   * Method getUserColours.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.UserColours[] getUserColours()
-  {
-    jalview.binding.UserColours[] array = new jalview.binding.UserColours[0];
-    return (jalview.binding.UserColours[]) this._userColoursList
-            .toArray(array);
-  }
-
-  /**
-   * Method getUserColoursCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getUserColoursCount()
-  {
-    return this._userColoursList.size();
-  }
-
-  /**
-   * Method getViewport.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Viewport at the given index
-   */
-  public jalview.binding.Viewport getViewport(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._viewportList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getViewport",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._viewportList.size() - 1)).toString()
-        })); 
-    }
-
-    return (jalview.binding.Viewport) _viewportList.get(index);
-  }
-
-  /**
-   * Method getViewport.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Viewport[] getViewport()
-  {
-    jalview.binding.Viewport[] array = new jalview.binding.Viewport[0];
-    return (jalview.binding.Viewport[]) this._viewportList.toArray(array);
-  }
-
-  /**
-   * Method getViewportCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getViewportCount()
-  {
-    return this._viewportList.size();
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-     */
-  public void removeAllJGroup()
-  {
-    this._JGroupList.clear();
-  }
-
-  /**
-     */
-  public void removeAllJSeq()
-  {
-    this._JSeqList.clear();
-  }
-
-  /**
-     */
-  public void removeAllTree()
-  {
-    this._treeList.clear();
-  }
-
-  /**
-     */
-  public void removeAllUserColours()
-  {
-    this._userColoursList.clear();
-  }
-
-  /**
-     */
-  public void removeAllViewport()
-  {
-    this._viewportList.clear();
-  }
-
-  /**
-   * Method removeJGroup.
-   * 
-   * @param vJGroup
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeJGroup(final jalview.binding.JGroup vJGroup)
-  {
-    boolean removed = _JGroupList.remove(vJGroup);
-    return removed;
-  }
-
-  /**
-   * Method removeJGroupAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.JGroup removeJGroupAt(final int index)
-  {
-    java.lang.Object obj = this._JGroupList.remove(index);
-    return (jalview.binding.JGroup) obj;
-  }
-
-  /**
-   * Method removeJSeq.
-   * 
-   * @param vJSeq
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeJSeq(final jalview.binding.JSeq vJSeq)
-  {
-    boolean removed = _JSeqList.remove(vJSeq);
-    return removed;
-  }
-
-  /**
-   * Method removeJSeqAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.JSeq removeJSeqAt(final int index)
-  {
-    java.lang.Object obj = this._JSeqList.remove(index);
-    return (jalview.binding.JSeq) obj;
-  }
-
-  /**
-   * Method removeTree.
-   * 
-   * @param vTree
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeTree(final jalview.binding.Tree vTree)
-  {
-    boolean removed = _treeList.remove(vTree);
-    return removed;
-  }
-
-  /**
-   * Method removeTreeAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Tree removeTreeAt(final int index)
-  {
-    java.lang.Object obj = this._treeList.remove(index);
-    return (jalview.binding.Tree) obj;
-  }
-
-  /**
-   * Method removeUserColours.
-   * 
-   * @param vUserColours
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeUserColours(
-          final jalview.binding.UserColours vUserColours)
-  {
-    boolean removed = _userColoursList.remove(vUserColours);
-    return removed;
-  }
-
-  /**
-   * Method removeUserColoursAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.UserColours removeUserColoursAt(final int index)
-  {
-    java.lang.Object obj = this._userColoursList.remove(index);
-    return (jalview.binding.UserColours) obj;
-  }
-
-  /**
-   * Method removeViewport.
-   * 
-   * @param vViewport
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeViewport(final jalview.binding.Viewport vViewport)
-  {
-    boolean removed = _viewportList.remove(vViewport);
-    return removed;
-  }
-
-  /**
-   * Method removeViewportAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Viewport removeViewportAt(final int index)
-  {
-    java.lang.Object obj = this._viewportList.remove(index);
-    return (jalview.binding.Viewport) obj;
-  }
-
-  /**
-   * Sets the value of field 'featureSettings'.
-   * 
-   * @param featureSettings
-   *          the value of field 'featureSettings'.
-   */
-  public void setFeatureSettings(
-          final jalview.binding.FeatureSettings featureSettings)
-  {
-    this._featureSettings = featureSettings;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vJGroup
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setJGroup(final int index,
-          final jalview.binding.JGroup vJGroup)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._JGroupList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setJGroup",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._JGroupList.size() - 1)).toString()
-          })); 
-    }
-
-    this._JGroupList.set(index, vJGroup);
-  }
-
-  /**
-   * 
-   * 
-   * @param vJGroupArray
-   */
-  public void setJGroup(final jalview.binding.JGroup[] vJGroupArray)
-  {
-    // -- copy array
-    _JGroupList.clear();
-
-    for (int i = 0; i < vJGroupArray.length; i++)
-    {
-      this._JGroupList.add(vJGroupArray[i]);
-    }
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vJSeq
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setJSeq(final int index, final jalview.binding.JSeq vJSeq)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._JSeqList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "setJSeq",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._JSeqList.size() - 1)).toString()
-        })); 
-    }
-
-    this._JSeqList.set(index, vJSeq);
-  }
-
-  /**
-   * 
-   * 
-   * @param vJSeqArray
-   */
-  public void setJSeq(final jalview.binding.JSeq[] vJSeqArray)
-  {
-    // -- copy array
-    _JSeqList.clear();
-
-    for (int i = 0; i < vJSeqArray.length; i++)
-    {
-      this._JSeqList.add(vJSeqArray[i]);
-    }
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vTree
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setTree(final int index, final jalview.binding.Tree vTree)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._treeList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setTree",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._treeList.size() - 1)).toString()
-          })); 
-    }
-
-    this._treeList.set(index, vTree);
-  }
-
-  /**
-   * 
-   * 
-   * @param vTreeArray
-   */
-  public void setTree(final jalview.binding.Tree[] vTreeArray)
-  {
-    // -- copy array
-    _treeList.clear();
-
-    for (int i = 0; i < vTreeArray.length; i++)
-    {
-      this._treeList.add(vTreeArray[i]);
-    }
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vUserColours
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setUserColours(final int index,
-          final jalview.binding.UserColours vUserColours)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._userColoursList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "setUserColours",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._userColoursList.size() - 1)).toString()
-        })); 
-    }
-
-    this._userColoursList.set(index, vUserColours);
-  }
-
-  /**
-   * 
-   * 
-   * @param vUserColoursArray
-   */
-  public void setUserColours(
-          final jalview.binding.UserColours[] vUserColoursArray)
-  {
-    // -- copy array
-    _userColoursList.clear();
-
-    for (int i = 0; i < vUserColoursArray.length; i++)
-    {
-      this._userColoursList.add(vUserColoursArray[i]);
-    }
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vViewport
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setViewport(final int index,
-          final jalview.binding.Viewport vViewport)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._viewportList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setViewport",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._viewportList.size() - 1)).toString()
-          })); 
-    }
-
-    this._viewportList.set(index, vViewport);
-  }
-
-  /**
-   * 
-   * 
-   * @param vViewportArray
-   */
-  public void setViewport(final jalview.binding.Viewport[] vViewportArray)
-  {
-    // -- copy array
-    _viewportList.clear();
-
-    for (int i = 0; i < vViewportArray.length; i++)
-    {
-      this._viewportList.add(vViewportArray[i]);
-    }
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.JalviewModelSequence
-   */
-  public static jalview.binding.JalviewModelSequence unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.JalviewModelSequence) Unmarshaller.unmarshal(
-            jalview.binding.JalviewModelSequence.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class JalviewModelSequence implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _JSeqList.
+     */
+    private java.util.Vector _JSeqList;
+
+    /**
+     * Field _JGroupList.
+     */
+    private java.util.Vector _JGroupList;
+
+    /**
+     * Field _viewportList.
+     */
+    private java.util.Vector _viewportList;
+
+    /**
+     * Field _userColoursList.
+     */
+    private java.util.Vector _userColoursList;
+
+    /**
+     * Field _treeList.
+     */
+    private java.util.Vector _treeList;
+
+    /**
+     * Field _featureSettings.
+     */
+    private jalview.binding.FeatureSettings _featureSettings;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public JalviewModelSequence() {
+        super();
+        this._JSeqList = new java.util.Vector();
+        this._JGroupList = new java.util.Vector();
+        this._viewportList = new java.util.Vector();
+        this._userColoursList = new java.util.Vector();
+        this._treeList = new java.util.Vector();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vJGroup
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addJGroup(
+            final jalview.binding.JGroup vJGroup)
+    throws java.lang.IndexOutOfBoundsException {
+        this._JGroupList.addElement(vJGroup);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vJGroup
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addJGroup(
+            final int index,
+            final jalview.binding.JGroup vJGroup)
+    throws java.lang.IndexOutOfBoundsException {
+        this._JGroupList.add(index, vJGroup);
+    }
+
+    /**
+     * 
+     * 
+     * @param vJSeq
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addJSeq(
+            final jalview.binding.JSeq vJSeq)
+    throws java.lang.IndexOutOfBoundsException {
+        this._JSeqList.addElement(vJSeq);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vJSeq
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addJSeq(
+            final int index,
+            final jalview.binding.JSeq vJSeq)
+    throws java.lang.IndexOutOfBoundsException {
+        this._JSeqList.add(index, vJSeq);
+    }
+
+    /**
+     * 
+     * 
+     * @param vTree
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addTree(
+            final jalview.binding.Tree vTree)
+    throws java.lang.IndexOutOfBoundsException {
+        this._treeList.addElement(vTree);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vTree
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addTree(
+            final int index,
+            final jalview.binding.Tree vTree)
+    throws java.lang.IndexOutOfBoundsException {
+        this._treeList.add(index, vTree);
+    }
+
+    /**
+     * 
+     * 
+     * @param vUserColours
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addUserColours(
+            final jalview.binding.UserColours vUserColours)
+    throws java.lang.IndexOutOfBoundsException {
+        this._userColoursList.addElement(vUserColours);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vUserColours
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addUserColours(
+            final int index,
+            final jalview.binding.UserColours vUserColours)
+    throws java.lang.IndexOutOfBoundsException {
+        this._userColoursList.add(index, vUserColours);
+    }
+
+    /**
+     * 
+     * 
+     * @param vViewport
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addViewport(
+            final jalview.binding.Viewport vViewport)
+    throws java.lang.IndexOutOfBoundsException {
+        this._viewportList.addElement(vViewport);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vViewport
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addViewport(
+            final int index,
+            final jalview.binding.Viewport vViewport)
+    throws java.lang.IndexOutOfBoundsException {
+        this._viewportList.add(index, vViewport);
+    }
+
+    /**
+     * Method enumerateJGroup.
+     * 
+     * @return an Enumeration over all jalview.binding.JGroup
+     * elements
+     */
+    public java.util.Enumeration enumerateJGroup(
+    ) {
+        return this._JGroupList.elements();
+    }
+
+    /**
+     * Method enumerateJSeq.
+     * 
+     * @return an Enumeration over all jalview.binding.JSeq elements
+     */
+    public java.util.Enumeration enumerateJSeq(
+    ) {
+        return this._JSeqList.elements();
+    }
+
+    /**
+     * Method enumerateTree.
+     * 
+     * @return an Enumeration over all jalview.binding.Tree elements
+     */
+    public java.util.Enumeration enumerateTree(
+    ) {
+        return this._treeList.elements();
+    }
+
+    /**
+     * Method enumerateUserColours.
+     * 
+     * @return an Enumeration over all jalview.binding.UserColours
+     * elements
+     */
+    public java.util.Enumeration enumerateUserColours(
+    ) {
+        return this._userColoursList.elements();
+    }
+
+    /**
+     * Method enumerateViewport.
+     * 
+     * @return an Enumeration over all jalview.binding.Viewport
+     * elements
+     */
+    public java.util.Enumeration enumerateViewport(
+    ) {
+        return this._viewportList.elements();
+    }
+
+    /**
+     * Returns the value of field 'featureSettings'.
+     * 
+     * @return the value of field 'FeatureSettings'.
+     */
+    public jalview.binding.FeatureSettings getFeatureSettings(
+    ) {
+        return this._featureSettings;
+    }
+
+    /**
+     * Method getJGroup.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.JGroup at the given
+     * index
+     */
+    public jalview.binding.JGroup getJGroup(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._JGroupList.size()) {
+            throw new IndexOutOfBoundsException("getJGroup: Index value '" + index + "' not in range [0.." + (this._JGroupList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.JGroup) _JGroupList.get(index);
+    }
+
+    /**
+     * Method getJGroup.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.JGroup[] getJGroup(
+    ) {
+        jalview.binding.JGroup[] array = new jalview.binding.JGroup[0];
+        return (jalview.binding.JGroup[]) this._JGroupList.toArray(array);
+    }
+
+    /**
+     * Method getJGroupCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getJGroupCount(
+    ) {
+        return this._JGroupList.size();
+    }
+
+    /**
+     * Method getJSeq.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.JSeq at the given
+     * index
+     */
+    public jalview.binding.JSeq getJSeq(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._JSeqList.size()) {
+            throw new IndexOutOfBoundsException("getJSeq: Index value '" + index + "' not in range [0.." + (this._JSeqList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.JSeq) _JSeqList.get(index);
+    }
+
+    /**
+     * Method getJSeq.Returns the contents of the collection in an
+     * Array.  <p>Note:  Just in case the collection contents are
+     * changing in another thread, we pass a 0-length Array of the
+     * correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.JSeq[] getJSeq(
+    ) {
+        jalview.binding.JSeq[] array = new jalview.binding.JSeq[0];
+        return (jalview.binding.JSeq[]) this._JSeqList.toArray(array);
+    }
+
+    /**
+     * Method getJSeqCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getJSeqCount(
+    ) {
+        return this._JSeqList.size();
+    }
+
+    /**
+     * Method getTree.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Tree at the given
+     * index
+     */
+    public jalview.binding.Tree getTree(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._treeList.size()) {
+            throw new IndexOutOfBoundsException("getTree: Index value '" + index + "' not in range [0.." + (this._treeList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Tree) _treeList.get(index);
+    }
+
+    /**
+     * Method getTree.Returns the contents of the collection in an
+     * Array.  <p>Note:  Just in case the collection contents are
+     * changing in another thread, we pass a 0-length Array of the
+     * correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Tree[] getTree(
+    ) {
+        jalview.binding.Tree[] array = new jalview.binding.Tree[0];
+        return (jalview.binding.Tree[]) this._treeList.toArray(array);
+    }
+
+    /**
+     * Method getTreeCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getTreeCount(
+    ) {
+        return this._treeList.size();
+    }
+
+    /**
+     * Method getUserColours.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.UserColours at the
+     * given index
+     */
+    public jalview.binding.UserColours getUserColours(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._userColoursList.size()) {
+            throw new IndexOutOfBoundsException("getUserColours: Index value '" + index + "' not in range [0.." + (this._userColoursList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.UserColours) _userColoursList.get(index);
+    }
+
+    /**
+     * Method getUserColours.Returns the contents of the collection
+     * in an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.UserColours[] getUserColours(
+    ) {
+        jalview.binding.UserColours[] array = new jalview.binding.UserColours[0];
+        return (jalview.binding.UserColours[]) this._userColoursList.toArray(array);
+    }
+
+    /**
+     * Method getUserColoursCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getUserColoursCount(
+    ) {
+        return this._userColoursList.size();
+    }
+
+    /**
+     * Method getViewport.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Viewport at the
+     * given index
+     */
+    public jalview.binding.Viewport getViewport(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._viewportList.size()) {
+            throw new IndexOutOfBoundsException("getViewport: Index value '" + index + "' not in range [0.." + (this._viewportList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Viewport) _viewportList.get(index);
+    }
+
+    /**
+     * Method getViewport.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Viewport[] getViewport(
+    ) {
+        jalview.binding.Viewport[] array = new jalview.binding.Viewport[0];
+        return (jalview.binding.Viewport[]) this._viewportList.toArray(array);
+    }
+
+    /**
+     * Method getViewportCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getViewportCount(
+    ) {
+        return this._viewportList.size();
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     */
+    public void removeAllJGroup(
+    ) {
+        this._JGroupList.clear();
+    }
+
+    /**
+     */
+    public void removeAllJSeq(
+    ) {
+        this._JSeqList.clear();
+    }
+
+    /**
+     */
+    public void removeAllTree(
+    ) {
+        this._treeList.clear();
+    }
+
+    /**
+     */
+    public void removeAllUserColours(
+    ) {
+        this._userColoursList.clear();
+    }
+
+    /**
+     */
+    public void removeAllViewport(
+    ) {
+        this._viewportList.clear();
+    }
+
+    /**
+     * Method removeJGroup.
+     * 
+     * @param vJGroup
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeJGroup(
+            final jalview.binding.JGroup vJGroup) {
+        boolean removed = _JGroupList.remove(vJGroup);
+        return removed;
+    }
+
+    /**
+     * Method removeJGroupAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.JGroup removeJGroupAt(
+            final int index) {
+        java.lang.Object obj = this._JGroupList.remove(index);
+        return (jalview.binding.JGroup) obj;
+    }
+
+    /**
+     * Method removeJSeq.
+     * 
+     * @param vJSeq
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeJSeq(
+            final jalview.binding.JSeq vJSeq) {
+        boolean removed = _JSeqList.remove(vJSeq);
+        return removed;
+    }
+
+    /**
+     * Method removeJSeqAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.JSeq removeJSeqAt(
+            final int index) {
+        java.lang.Object obj = this._JSeqList.remove(index);
+        return (jalview.binding.JSeq) obj;
+    }
+
+    /**
+     * Method removeTree.
+     * 
+     * @param vTree
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeTree(
+            final jalview.binding.Tree vTree) {
+        boolean removed = _treeList.remove(vTree);
+        return removed;
+    }
+
+    /**
+     * Method removeTreeAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Tree removeTreeAt(
+            final int index) {
+        java.lang.Object obj = this._treeList.remove(index);
+        return (jalview.binding.Tree) obj;
+    }
+
+    /**
+     * Method removeUserColours.
+     * 
+     * @param vUserColours
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeUserColours(
+            final jalview.binding.UserColours vUserColours) {
+        boolean removed = _userColoursList.remove(vUserColours);
+        return removed;
+    }
+
+    /**
+     * Method removeUserColoursAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.UserColours removeUserColoursAt(
+            final int index) {
+        java.lang.Object obj = this._userColoursList.remove(index);
+        return (jalview.binding.UserColours) obj;
+    }
+
+    /**
+     * Method removeViewport.
+     * 
+     * @param vViewport
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeViewport(
+            final jalview.binding.Viewport vViewport) {
+        boolean removed = _viewportList.remove(vViewport);
+        return removed;
+    }
+
+    /**
+     * Method removeViewportAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Viewport removeViewportAt(
+            final int index) {
+        java.lang.Object obj = this._viewportList.remove(index);
+        return (jalview.binding.Viewport) obj;
+    }
+
+    /**
+     * Sets the value of field 'featureSettings'.
+     * 
+     * @param featureSettings the value of field 'featureSettings'.
+     */
+    public void setFeatureSettings(
+            final jalview.binding.FeatureSettings featureSettings) {
+        this._featureSettings = featureSettings;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vJGroup
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setJGroup(
+            final int index,
+            final jalview.binding.JGroup vJGroup)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._JGroupList.size()) {
+            throw new IndexOutOfBoundsException("setJGroup: Index value '" + index + "' not in range [0.." + (this._JGroupList.size() - 1) + "]");
+        }
+        
+        this._JGroupList.set(index, vJGroup);
+    }
+
+    /**
+     * 
+     * 
+     * @param vJGroupArray
+     */
+    public void setJGroup(
+            final jalview.binding.JGroup[] vJGroupArray) {
+        //-- copy array
+        _JGroupList.clear();
+        
+        for (int i = 0; i < vJGroupArray.length; i++) {
+                this._JGroupList.add(vJGroupArray[i]);
+        }
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vJSeq
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setJSeq(
+            final int index,
+            final jalview.binding.JSeq vJSeq)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._JSeqList.size()) {
+            throw new IndexOutOfBoundsException("setJSeq: Index value '" + index + "' not in range [0.." + (this._JSeqList.size() - 1) + "]");
+        }
+        
+        this._JSeqList.set(index, vJSeq);
+    }
+
+    /**
+     * 
+     * 
+     * @param vJSeqArray
+     */
+    public void setJSeq(
+            final jalview.binding.JSeq[] vJSeqArray) {
+        //-- copy array
+        _JSeqList.clear();
+        
+        for (int i = 0; i < vJSeqArray.length; i++) {
+                this._JSeqList.add(vJSeqArray[i]);
+        }
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vTree
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setTree(
+            final int index,
+            final jalview.binding.Tree vTree)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._treeList.size()) {
+            throw new IndexOutOfBoundsException("setTree: Index value '" + index + "' not in range [0.." + (this._treeList.size() - 1) + "]");
+        }
+        
+        this._treeList.set(index, vTree);
+    }
+
+    /**
+     * 
+     * 
+     * @param vTreeArray
+     */
+    public void setTree(
+            final jalview.binding.Tree[] vTreeArray) {
+        //-- copy array
+        _treeList.clear();
+        
+        for (int i = 0; i < vTreeArray.length; i++) {
+                this._treeList.add(vTreeArray[i]);
+        }
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vUserColours
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setUserColours(
+            final int index,
+            final jalview.binding.UserColours vUserColours)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._userColoursList.size()) {
+            throw new IndexOutOfBoundsException("setUserColours: Index value '" + index + "' not in range [0.." + (this._userColoursList.size() - 1) + "]");
+        }
+        
+        this._userColoursList.set(index, vUserColours);
+    }
+
+    /**
+     * 
+     * 
+     * @param vUserColoursArray
+     */
+    public void setUserColours(
+            final jalview.binding.UserColours[] vUserColoursArray) {
+        //-- copy array
+        _userColoursList.clear();
+        
+        for (int i = 0; i < vUserColoursArray.length; i++) {
+                this._userColoursList.add(vUserColoursArray[i]);
+        }
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vViewport
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setViewport(
+            final int index,
+            final jalview.binding.Viewport vViewport)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._viewportList.size()) {
+            throw new IndexOutOfBoundsException("setViewport: Index value '" + index + "' not in range [0.." + (this._viewportList.size() - 1) + "]");
+        }
+        
+        this._viewportList.set(index, vViewport);
+    }
+
+    /**
+     * 
+     * 
+     * @param vViewportArray
+     */
+    public void setViewport(
+            final jalview.binding.Viewport[] vViewportArray) {
+        //-- copy array
+        _viewportList.clear();
+        
+        for (int i = 0; i < vViewportArray.length; i++) {
+                this._viewportList.add(vViewportArray[i]);
+        }
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.JalviewModelSequence
+     */
+    public static jalview.binding.JalviewModelSequence unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.JalviewModelSequence) Unmarshaller.unmarshal(jalview.binding.JalviewModelSequence.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index f368245..9a6465b 100644 (file)
@@ -1,31 +1,16 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
-import jalview.util.MessageManager;
-
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
 
@@ -34,330 +19,312 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class JalviewUserColours implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _schemeName.
-   */
-  private java.lang.String _schemeName;
-
-  /**
-   * Jalview colour scheme document version.
-   * 
-   */
-  private java.lang.String _version;
-
-  /**
-   * Field _colourList.
-   */
-  private java.util.Vector _colourList;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public JalviewUserColours()
-  {
-    super();
-    this._colourList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vColour
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addColour(final Colour vColour)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._colourList.addElement(vColour);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vColour
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addColour(final int index, final Colour vColour)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._colourList.add(index, vColour);
-  }
-
-  /**
-   * Method enumerateColour.
-   * 
-   * @return an Enumeration over all Colour elements
-   */
-  public java.util.Enumeration enumerateColour()
-  {
-    return this._colourList.elements();
-  }
-
-  /**
-   * Method getColour.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the Colour at the given index
-   */
-  public Colour getColour(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._colourList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getColour",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._colourList.size() - 1)).toString()
-        })); 
+public class JalviewUserColours implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _schemeName.
+     */
+    private java.lang.String _schemeName;
+
+    /**
+     * Jalview colour scheme document version.
+     *  
+     */
+    private java.lang.String _version;
+
+    /**
+     * Field _colourList.
+     */
+    private java.util.Vector _colourList;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public JalviewUserColours() {
+        super();
+        this._colourList = new java.util.Vector();
     }
 
-    return (Colour) _colourList.get(index);
-  }
-
-  /**
-   * Method getColour.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public Colour[] getColour()
-  {
-    Colour[] array = new Colour[0];
-    return (Colour[]) this._colourList.toArray(array);
-  }
-
-  /**
-   * Method getColourCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getColourCount()
-  {
-    return this._colourList.size();
-  }
-
-  /**
-   * Returns the value of field 'schemeName'.
-   * 
-   * @return the value of field 'SchemeName'.
-   */
-  public java.lang.String getSchemeName()
-  {
-    return this._schemeName;
-  }
-
-  /**
-   * Returns the value of field 'version'. The field 'version' has the following
-   * description: Jalview colour scheme document version.
-   * 
-   * 
-   * @return the value of field 'Version'.
-   */
-  public java.lang.String getVersion()
-  {
-    return this._version;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vColour
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addColour(
+            final Colour vColour)
+    throws java.lang.IndexOutOfBoundsException {
+        this._colourList.addElement(vColour);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vColour
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addColour(
+            final int index,
+            final Colour vColour)
+    throws java.lang.IndexOutOfBoundsException {
+        this._colourList.add(index, vColour);
+    }
+
+    /**
+     * Method enumerateColour.
+     * 
+     * @return an Enumeration over all Colour elements
+     */
+    public java.util.Enumeration enumerateColour(
+    ) {
+        return this._colourList.elements();
+    }
+
+    /**
+     * Method getColour.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the Colour at the given index
+     */
+    public Colour getColour(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._colourList.size()) {
+            throw new IndexOutOfBoundsException("getColour: Index value '" + index + "' not in range [0.." + (this._colourList.size() - 1) + "]");
+        }
+        
+        return (Colour) _colourList.get(index);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
+
+    /**
+     * Method getColour.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public Colour[] getColour(
+    ) {
+        Colour[] array = new Colour[0];
+        return (Colour[]) this._colourList.toArray(array);
+    }
+
+    /**
+     * Method getColourCount.
+     * 
+     * @return the size of this collection
      */
-  public void removeAllColour()
-  {
-    this._colourList.clear();
-  }
-
-  /**
-   * Method removeColour.
-   * 
-   * @param vColour
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeColour(final Colour vColour)
-  {
-    boolean removed = _colourList.remove(vColour);
-    return removed;
-  }
-
-  /**
-   * Method removeColourAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public Colour removeColourAt(final int index)
-  {
-    java.lang.Object obj = this._colourList.remove(index);
-    return (Colour) obj;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vColour
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setColour(final int index, final Colour vColour)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._colourList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setColour",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._colourList.size() - 1)).toString()
-          })); 
+    public int getColourCount(
+    ) {
+        return this._colourList.size();
     }
 
-    this._colourList.set(index, vColour);
-  }
-
-  /**
-   * 
-   * 
-   * @param vColourArray
-   */
-  public void setColour(final Colour[] vColourArray)
-  {
-    // -- copy array
-    _colourList.clear();
-
-    for (int i = 0; i < vColourArray.length; i++)
-    {
-      this._colourList.add(vColourArray[i]);
+    /**
+     * Returns the value of field 'schemeName'.
+     * 
+     * @return the value of field 'SchemeName'.
+     */
+    public java.lang.String getSchemeName(
+    ) {
+        return this._schemeName;
+    }
+
+    /**
+     * Returns the value of field 'version'. The field 'version'
+     * has the following description: Jalview colour scheme
+     * document version.
+     *  
+     * 
+     * @return the value of field 'Version'.
+     */
+    public java.lang.String getVersion(
+    ) {
+        return this._version;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     */
+    public void removeAllColour(
+    ) {
+        this._colourList.clear();
+    }
+
+    /**
+     * Method removeColour.
+     * 
+     * @param vColour
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeColour(
+            final Colour vColour) {
+        boolean removed = _colourList.remove(vColour);
+        return removed;
+    }
+
+    /**
+     * Method removeColourAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public Colour removeColourAt(
+            final int index) {
+        java.lang.Object obj = this._colourList.remove(index);
+        return (Colour) obj;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vColour
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setColour(
+            final int index,
+            final Colour vColour)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._colourList.size()) {
+            throw new IndexOutOfBoundsException("setColour: Index value '" + index + "' not in range [0.." + (this._colourList.size() - 1) + "]");
+        }
+        
+        this._colourList.set(index, vColour);
+    }
+
+    /**
+     * 
+     * 
+     * @param vColourArray
+     */
+    public void setColour(
+            final Colour[] vColourArray) {
+        //-- copy array
+        _colourList.clear();
+        
+        for (int i = 0; i < vColourArray.length; i++) {
+                this._colourList.add(vColourArray[i]);
+        }
+    }
+
+    /**
+     * Sets the value of field 'schemeName'.
+     * 
+     * @param schemeName the value of field 'schemeName'.
+     */
+    public void setSchemeName(
+            final java.lang.String schemeName) {
+        this._schemeName = schemeName;
+    }
+
+    /**
+     * Sets the value of field 'version'. The field 'version' has
+     * the following description: Jalview colour scheme document
+     * version.
+     *  
+     * 
+     * @param version the value of field 'version'.
+     */
+    public void setVersion(
+            final java.lang.String version) {
+        this._version = version;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.JalviewUserColours
+     */
+    public static jalview.binding.JalviewUserColours unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.JalviewUserColours) Unmarshaller.unmarshal(jalview.binding.JalviewUserColours.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-  }
-
-  /**
-   * Sets the value of field 'schemeName'.
-   * 
-   * @param schemeName
-   *          the value of field 'schemeName'.
-   */
-  public void setSchemeName(final java.lang.String schemeName)
-  {
-    this._schemeName = schemeName;
-  }
-
-  /**
-   * Sets the value of field 'version'. The field 'version' has the following
-   * description: Jalview colour scheme document version.
-   * 
-   * 
-   * @param version
-   *          the value of field 'version'.
-   */
-  public void setVersion(final java.lang.String version)
-  {
-    this._version = version;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.JalviewUserColours
-   */
-  public static jalview.binding.JalviewUserColours unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.JalviewUserColours) Unmarshaller.unmarshal(
-            jalview.binding.JalviewUserColours.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index b2bade5..cac4cf6 100644 (file)
@@ -1,31 +1,16 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
-import jalview.util.MessageManager;
-
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
 
@@ -34,330 +19,308 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Pdbentry implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _id.
-   */
-  private java.lang.String _id;
-
-  /**
-   * Field _type.
-   */
-  private java.lang.String _type;
-
-  /**
-   * Field _items.
-   */
-  private java.util.Vector _items;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Pdbentry()
-  {
-    super();
-    this._items = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vPdbentryItem
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addPdbentryItem(
-          final jalview.binding.PdbentryItem vPdbentryItem)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._items.addElement(vPdbentryItem);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vPdbentryItem
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addPdbentryItem(final int index,
-          final jalview.binding.PdbentryItem vPdbentryItem)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._items.add(index, vPdbentryItem);
-  }
-
-  /**
-   * Method enumeratePdbentryItem.
-   * 
-   * @return an Enumeration over all jalview.binding.PdbentryItem elements
-   */
-  public java.util.Enumeration enumeratePdbentryItem()
-  {
-    return this._items.elements();
-  }
-
-  /**
-   * Returns the value of field 'id'.
-   * 
-   * @return the value of field 'Id'.
-   */
-  public java.lang.String getId()
-  {
-    return this._id;
-  }
-
-  /**
-   * Method getPdbentryItem.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.PdbentryItem at the given index
-   */
-  public jalview.binding.PdbentryItem getPdbentryItem(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._items.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getPdbentryItem",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._items.size() - 1)).toString()
-        })); 
+public class Pdbentry implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _id.
+     */
+    private java.lang.String _id;
+
+    /**
+     * Field _type.
+     */
+    private java.lang.String _type;
+
+    /**
+     * Field _items.
+     */
+    private java.util.Vector _items;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Pdbentry() {
+        super();
+        this._items = new java.util.Vector();
     }
 
-    return (jalview.binding.PdbentryItem) _items.get(index);
-  }
-
-  /**
-   * Method getPdbentryItem.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.PdbentryItem[] getPdbentryItem()
-  {
-    jalview.binding.PdbentryItem[] array = new jalview.binding.PdbentryItem[0];
-    return (jalview.binding.PdbentryItem[]) this._items.toArray(array);
-  }
-
-  /**
-   * Method getPdbentryItemCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getPdbentryItemCount()
-  {
-    return this._items.size();
-  }
-
-  /**
-   * Returns the value of field 'type'.
-   * 
-   * @return the value of field 'Type'.
-   */
-  public java.lang.String getType()
-  {
-    return this._type;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vPdbentryItem
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addPdbentryItem(
+            final jalview.binding.PdbentryItem vPdbentryItem)
+    throws java.lang.IndexOutOfBoundsException {
+        this._items.addElement(vPdbentryItem);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vPdbentryItem
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addPdbentryItem(
+            final int index,
+            final jalview.binding.PdbentryItem vPdbentryItem)
+    throws java.lang.IndexOutOfBoundsException {
+        this._items.add(index, vPdbentryItem);
+    }
+
+    /**
+     * Method enumeratePdbentryItem.
+     * 
+     * @return an Enumeration over all jalview.binding.PdbentryItem
+     * elements
+     */
+    public java.util.Enumeration enumeratePdbentryItem(
+    ) {
+        return this._items.elements();
+    }
+
+    /**
+     * Returns the value of field 'id'.
+     * 
+     * @return the value of field 'Id'.
+     */
+    public java.lang.String getId(
+    ) {
+        return this._id;
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
+
+    /**
+     * Method getPdbentryItem.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.PdbentryItem at the
+     * given index
+     */
+    public jalview.binding.PdbentryItem getPdbentryItem(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._items.size()) {
+            throw new IndexOutOfBoundsException("getPdbentryItem: Index value '" + index + "' not in range [0.." + (this._items.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.PdbentryItem) _items.get(index);
+    }
+
+    /**
+     * Method getPdbentryItem.Returns the contents of the
+     * collection in an Array.  <p>Note:  Just in case the
+     * collection contents are changing in another thread, we pass
+     * a 0-length Array of the correct type into the API call. 
+     * This way we <i>know</i> that the Array returned is of
+     * exactly the correct length.
+     * 
+     * @return this collection as an Array
      */
-  public void removeAllPdbentryItem()
-  {
-    this._items.clear();
-  }
-
-  /**
-   * Method removePdbentryItem.
-   * 
-   * @param vPdbentryItem
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removePdbentryItem(
-          final jalview.binding.PdbentryItem vPdbentryItem)
-  {
-    boolean removed = _items.remove(vPdbentryItem);
-    return removed;
-  }
-
-  /**
-   * Method removePdbentryItemAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.PdbentryItem removePdbentryItemAt(final int index)
-  {
-    java.lang.Object obj = this._items.remove(index);
-    return (jalview.binding.PdbentryItem) obj;
-  }
-
-  /**
-   * Sets the value of field 'id'.
-   * 
-   * @param id
-   *          the value of field 'id'.
-   */
-  public void setId(final java.lang.String id)
-  {
-    this._id = id;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vPdbentryItem
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setPdbentryItem(final int index,
-          final jalview.binding.PdbentryItem vPdbentryItem)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._items.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setPdbentryItem",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._items.size() - 1)).toString()
-          })); 
+    public jalview.binding.PdbentryItem[] getPdbentryItem(
+    ) {
+        jalview.binding.PdbentryItem[] array = new jalview.binding.PdbentryItem[0];
+        return (jalview.binding.PdbentryItem[]) this._items.toArray(array);
     }
 
-    this._items.set(index, vPdbentryItem);
-  }
-
-  /**
-   * 
-   * 
-   * @param vPdbentryItemArray
-   */
-  public void setPdbentryItem(
-          final jalview.binding.PdbentryItem[] vPdbentryItemArray)
-  {
-    // -- copy array
-    _items.clear();
-
-    for (int i = 0; i < vPdbentryItemArray.length; i++)
-    {
-      this._items.add(vPdbentryItemArray[i]);
+    /**
+     * Method getPdbentryItemCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getPdbentryItemCount(
+    ) {
+        return this._items.size();
+    }
+
+    /**
+     * Returns the value of field 'type'.
+     * 
+     * @return the value of field 'Type'.
+     */
+    public java.lang.String getType(
+    ) {
+        return this._type;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     */
+    public void removeAllPdbentryItem(
+    ) {
+        this._items.clear();
+    }
+
+    /**
+     * Method removePdbentryItem.
+     * 
+     * @param vPdbentryItem
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removePdbentryItem(
+            final jalview.binding.PdbentryItem vPdbentryItem) {
+        boolean removed = _items.remove(vPdbentryItem);
+        return removed;
+    }
+
+    /**
+     * Method removePdbentryItemAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.PdbentryItem removePdbentryItemAt(
+            final int index) {
+        java.lang.Object obj = this._items.remove(index);
+        return (jalview.binding.PdbentryItem) obj;
+    }
+
+    /**
+     * Sets the value of field 'id'.
+     * 
+     * @param id the value of field 'id'.
+     */
+    public void setId(
+            final java.lang.String id) {
+        this._id = id;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vPdbentryItem
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setPdbentryItem(
+            final int index,
+            final jalview.binding.PdbentryItem vPdbentryItem)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._items.size()) {
+            throw new IndexOutOfBoundsException("setPdbentryItem: Index value '" + index + "' not in range [0.." + (this._items.size() - 1) + "]");
+        }
+        
+        this._items.set(index, vPdbentryItem);
+    }
+
+    /**
+     * 
+     * 
+     * @param vPdbentryItemArray
+     */
+    public void setPdbentryItem(
+            final jalview.binding.PdbentryItem[] vPdbentryItemArray) {
+        //-- copy array
+        _items.clear();
+        
+        for (int i = 0; i < vPdbentryItemArray.length; i++) {
+                this._items.add(vPdbentryItemArray[i]);
+        }
+    }
+
+    /**
+     * Sets the value of field 'type'.
+     * 
+     * @param type the value of field 'type'.
+     */
+    public void setType(
+            final java.lang.String type) {
+        this._type = type;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Pdbentry
+     */
+    public static jalview.binding.Pdbentry unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Pdbentry) Unmarshaller.unmarshal(jalview.binding.Pdbentry.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-  }
-
-  /**
-   * Sets the value of field 'type'.
-   * 
-   * @param type
-   *          the value of field 'type'.
-   */
-  public void setType(final java.lang.String type)
-  {
-    this._type = type;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Pdbentry
-   */
-  public static jalview.binding.Pdbentry unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Pdbentry) Unmarshaller.unmarshal(
-            jalview.binding.Pdbentry.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index 2e8d77d..83bc40a 100644 (file)
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
-package jalview.binding;
 
-import jalview.util.MessageManager;
+package jalview.binding;
 
 /**
  * Class PdbentryItem.
  * 
  * @version $Revision$ $Date$
  */
-public class PdbentryItem implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _propertyList.
-   */
-  private java.util.Vector _propertyList;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public PdbentryItem()
-  {
-    super();
-    this._propertyList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vProperty
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addProperty(final jalview.binding.Property vProperty)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._propertyList.addElement(vProperty);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vProperty
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addProperty(final int index,
-          final jalview.binding.Property vProperty)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._propertyList.add(index, vProperty);
-  }
-
-  /**
-   * Method enumerateProperty.
-   * 
-   * @return an Enumeration over all jalview.binding.Property elements
-   */
-  public java.util.Enumeration enumerateProperty()
-  {
-    return this._propertyList.elements();
-  }
-
-  /**
-   * Method getProperty.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Property at the given index
-   */
-  public jalview.binding.Property getProperty(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._propertyList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getProperty",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._propertyList.size() - 1)).toString()
-        })); 
+public class PdbentryItem implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _propertyList.
+     */
+    private java.util.Vector _propertyList;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public PdbentryItem() {
+        super();
+        this._propertyList = new java.util.Vector();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vProperty
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addProperty(
+            final jalview.binding.Property vProperty)
+    throws java.lang.IndexOutOfBoundsException {
+        this._propertyList.addElement(vProperty);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vProperty
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addProperty(
+            final int index,
+            final jalview.binding.Property vProperty)
+    throws java.lang.IndexOutOfBoundsException {
+        this._propertyList.add(index, vProperty);
+    }
+
+    /**
+     * Method enumerateProperty.
+     * 
+     * @return an Enumeration over all jalview.binding.Property
+     * elements
+     */
+    public java.util.Enumeration enumerateProperty(
+    ) {
+        return this._propertyList.elements();
+    }
+
+    /**
+     * Method getProperty.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Property at the
+     * given index
+     */
+    public jalview.binding.Property getProperty(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._propertyList.size()) {
+            throw new IndexOutOfBoundsException("getProperty: Index value '" + index + "' not in range [0.." + (this._propertyList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Property) _propertyList.get(index);
+    }
+
+    /**
+     * Method getProperty.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Property[] getProperty(
+    ) {
+        jalview.binding.Property[] array = new jalview.binding.Property[0];
+        return (jalview.binding.Property[]) this._propertyList.toArray(array);
+    }
+
+    /**
+     * Method getPropertyCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getPropertyCount(
+    ) {
+        return this._propertyList.size();
     }
 
-    return (jalview.binding.Property) _propertyList.get(index);
-  }
-
-  /**
-   * Method getProperty.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Property[] getProperty()
-  {
-    jalview.binding.Property[] array = new jalview.binding.Property[0];
-    return (jalview.binding.Property[]) this._propertyList.toArray(array);
-  }
-
-  /**
-   * Method getPropertyCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getPropertyCount()
-  {
-    return this._propertyList.size();
-  }
-
-  /**
+    /**
      */
-  public void removeAllProperty()
-  {
-    this._propertyList.clear();
-  }
-
-  /**
-   * Method removeProperty.
-   * 
-   * @param vProperty
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeProperty(final jalview.binding.Property vProperty)
-  {
-    boolean removed = _propertyList.remove(vProperty);
-    return removed;
-  }
-
-  /**
-   * Method removePropertyAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Property removePropertyAt(final int index)
-  {
-    java.lang.Object obj = this._propertyList.remove(index);
-    return (jalview.binding.Property) obj;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vProperty
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setProperty(final int index,
-          final jalview.binding.Property vProperty)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._propertyList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setProperty",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._propertyList.size() - 1)).toString()
-          })); 
+    public void removeAllProperty(
+    ) {
+        this._propertyList.clear();
     }
 
-    this._propertyList.set(index, vProperty);
-  }
-
-  /**
-   * 
-   * 
-   * @param vPropertyArray
-   */
-  public void setProperty(final jalview.binding.Property[] vPropertyArray)
-  {
-    // -- copy array
-    _propertyList.clear();
-
-    for (int i = 0; i < vPropertyArray.length; i++)
-    {
-      this._propertyList.add(vPropertyArray[i]);
+    /**
+     * Method removeProperty.
+     * 
+     * @param vProperty
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeProperty(
+            final jalview.binding.Property vProperty) {
+        boolean removed = _propertyList.remove(vProperty);
+        return removed;
+    }
+
+    /**
+     * Method removePropertyAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Property removePropertyAt(
+            final int index) {
+        java.lang.Object obj = this._propertyList.remove(index);
+        return (jalview.binding.Property) obj;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vProperty
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setProperty(
+            final int index,
+            final jalview.binding.Property vProperty)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._propertyList.size()) {
+            throw new IndexOutOfBoundsException("setProperty: Index value '" + index + "' not in range [0.." + (this._propertyList.size() - 1) + "]");
+        }
+        
+        this._propertyList.set(index, vProperty);
+    }
+
+    /**
+     * 
+     * 
+     * @param vPropertyArray
+     */
+    public void setProperty(
+            final jalview.binding.Property[] vPropertyArray) {
+        //-- copy array
+        _propertyList.clear();
+        
+        for (int i = 0; i < vPropertyArray.length; i++) {
+                this._propertyList.add(vPropertyArray[i]);
+        }
     }
-  }
 
 }
index a37f249..b4745a2 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,106 +19,98 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Pdbids extends Pdbentry implements java.io.Serializable
+public class Pdbids extends Pdbentry 
+implements java.io.Serializable
 {
 
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
 
-  public Pdbids()
-  {
-    super();
-  }
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Pdbids() {
+        super();
+    }
+
 
-  // -----------/
-  // - Methods -/
-  // -----------/
+      //-----------/
+     //- Methods -/
+    //-----------/
 
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
     }
-    return true;
-  }
 
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
 
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
 
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Pdbentry
-   */
-  public static jalview.binding.Pdbentry unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Pdbentry) Unmarshaller.unmarshal(
-            jalview.binding.Pdbids.class, reader);
-  }
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Pdbentry
+     */
+    public static jalview.binding.Pdbentry unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Pdbentry) Unmarshaller.unmarshal(jalview.binding.Pdbids.class, reader);
+    }
 
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 8a3eb8c..f1114f7 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,162 +19,151 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Property implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _name.
-   */
-  private java.lang.String _name;
-
-  /**
-   * Field _value.
-   */
-  private java.lang.String _value;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Property()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * Returns the value of field 'name'.
-   * 
-   * @return the value of field 'Name'.
-   */
-  public java.lang.String getName()
-  {
-    return this._name;
-  }
-
-  /**
-   * Returns the value of field 'value'.
-   * 
-   * @return the value of field 'Value'.
-   */
-  public java.lang.String getValue()
-  {
-    return this._value;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+public class Property implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _name.
+     */
+    private java.lang.String _name;
+
+    /**
+     * Field _value.
+     */
+    private java.lang.String _value;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Property() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * Returns the value of field 'name'.
+     * 
+     * @return the value of field 'Name'.
+     */
+    public java.lang.String getName(
+    ) {
+        return this._name;
+    }
+
+    /**
+     * Returns the value of field 'value'.
+     * 
+     * @return the value of field 'Value'.
+     */
+    public java.lang.String getValue(
+    ) {
+        return this._value;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'name'.
+     * 
+     * @param name the value of field 'name'.
+     */
+    public void setName(
+            final java.lang.String name) {
+        this._name = name;
+    }
+
+    /**
+     * Sets the value of field 'value'.
+     * 
+     * @param value the value of field 'value'.
+     */
+    public void setValue(
+            final java.lang.String value) {
+        this._value = value;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Property
+     */
+    public static jalview.binding.Property unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Property) Unmarshaller.unmarshal(jalview.binding.Property.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'name'.
-   * 
-   * @param name
-   *          the value of field 'name'.
-   */
-  public void setName(final java.lang.String name)
-  {
-    this._name = name;
-  }
-
-  /**
-   * Sets the value of field 'value'.
-   * 
-   * @param value
-   *          the value of field 'value'.
-   */
-  public void setValue(final java.lang.String value)
-  {
-    this._value = value;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Property
-   */
-  public static jalview.binding.Property unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Property) Unmarshaller.unmarshal(
-            jalview.binding.Property.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index 17762a3..9c8cbc2 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,106 +19,98 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Sequence extends SequenceType implements java.io.Serializable
+public class Sequence extends SequenceType 
+implements java.io.Serializable
 {
 
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
 
-  public Sequence()
-  {
-    super();
-  }
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Sequence() {
+        super();
+    }
+
 
-  // -----------/
-  // - Methods -/
-  // -----------/
+      //-----------/
+     //- Methods -/
+    //-----------/
 
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
     }
-    return true;
-  }
 
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
 
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
 
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.SequenceType
-   */
-  public static jalview.binding.SequenceType unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.SequenceType) Unmarshaller.unmarshal(
-            jalview.binding.Sequence.class, reader);
-  }
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.SequenceType
+     */
+    public static jalview.binding.SequenceType unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.SequenceType) Unmarshaller.unmarshal(jalview.binding.Sequence.class, reader);
+    }
 
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 05da739..13a9020 100644 (file)
@@ -1,30 +1,15 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
-//- Imported classes and packages -/
-//---------------------------------/
-
-import jalview.util.MessageManager;
 
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
@@ -34,528 +19,496 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class SequenceSet implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _gapChar.
-   */
-  private java.lang.String _gapChar;
-
-  /**
-   * Field _aligned.
-   */
-  private boolean _aligned;
-
-  /**
-   * keeps track of state for field: _aligned
-   */
-  private boolean _has_aligned;
-
-  /**
-   * Field _sequenceList.
-   */
-  private java.util.Vector _sequenceList;
-
-  /**
-   * Field _annotationList.
-   */
-  private java.util.Vector _annotationList;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public SequenceSet()
-  {
-    super();
-    this._sequenceList = new java.util.Vector();
-    this._annotationList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vAnnotation
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addAnnotation(final jalview.binding.Annotation vAnnotation)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._annotationList.addElement(vAnnotation);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vAnnotation
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addAnnotation(final int index,
-          final jalview.binding.Annotation vAnnotation)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._annotationList.add(index, vAnnotation);
-  }
-
-  /**
-   * 
-   * 
-   * @param vSequence
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSequence(final jalview.binding.Sequence vSequence)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._sequenceList.addElement(vSequence);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSequence
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSequence(final int index,
-          final jalview.binding.Sequence vSequence)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._sequenceList.add(index, vSequence);
-  }
-
-  /**
-     */
-  public void deleteAligned()
-  {
-    this._has_aligned = false;
-  }
-
-  /**
-   * Method enumerateAnnotation.
-   * 
-   * @return an Enumeration over all jalview.binding.Annotation elements
-   */
-  public java.util.Enumeration enumerateAnnotation()
-  {
-    return this._annotationList.elements();
-  }
-
-  /**
-   * Method enumerateSequence.
-   * 
-   * @return an Enumeration over all jalview.binding.Sequence elements
-   */
-  public java.util.Enumeration enumerateSequence()
-  {
-    return this._sequenceList.elements();
-  }
-
-  /**
-   * Returns the value of field 'aligned'.
-   * 
-   * @return the value of field 'Aligned'.
-   */
-  public boolean getAligned()
-  {
-    return this._aligned;
-  }
-
-  /**
-   * Method getAnnotation.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Annotation at the given index
-   */
-  public jalview.binding.Annotation getAnnotation(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._annotationList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getAnnotation",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._annotationList.size() - 1)).toString()
-        })); 
-    }
-
-    return (jalview.binding.Annotation) _annotationList.get(index);
-  }
-
-  /**
-   * Method getAnnotation.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Annotation[] getAnnotation()
-  {
-    jalview.binding.Annotation[] array = new jalview.binding.Annotation[0];
-    return (jalview.binding.Annotation[]) this._annotationList
-            .toArray(array);
-  }
-
-  /**
-   * Method getAnnotationCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getAnnotationCount()
-  {
-    return this._annotationList.size();
-  }
-
-  /**
-   * Returns the value of field 'gapChar'.
-   * 
-   * @return the value of field 'GapChar'.
-   */
-  public java.lang.String getGapChar()
-  {
-    return this._gapChar;
-  }
-
-  /**
-   * Method getSequence.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the jalview.binding.Sequence at the given index
-   */
-  public jalview.binding.Sequence getSequence(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._sequenceList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "getSequence",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._sequenceList.size() - 1)).toString()
-          })); 
-    }
-
-    return (jalview.binding.Sequence) _sequenceList.get(index);
-  }
-
-  /**
-   * Method getSequence.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public jalview.binding.Sequence[] getSequence()
-  {
-    jalview.binding.Sequence[] array = new jalview.binding.Sequence[0];
-    return (jalview.binding.Sequence[]) this._sequenceList.toArray(array);
-  }
-
-  /**
-   * Method getSequenceCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getSequenceCount()
-  {
-    return this._sequenceList.size();
-  }
-
-  /**
-   * Method hasAligned.
-   * 
-   * @return true if at least one Aligned has been added
-   */
-  public boolean hasAligned()
-  {
-    return this._has_aligned;
-  }
-
-  /**
-   * Returns the value of field 'aligned'.
-   * 
-   * @return the value of field 'Aligned'.
-   */
-  public boolean isAligned()
-  {
-    return this._aligned;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-     */
-  public void removeAllAnnotation()
-  {
-    this._annotationList.clear();
-  }
-
-  /**
-     */
-  public void removeAllSequence()
-  {
-    this._sequenceList.clear();
-  }
-
-  /**
-   * Method removeAnnotation.
-   * 
-   * @param vAnnotation
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeAnnotation(
-          final jalview.binding.Annotation vAnnotation)
-  {
-    boolean removed = _annotationList.remove(vAnnotation);
-    return removed;
-  }
-
-  /**
-   * Method removeAnnotationAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Annotation removeAnnotationAt(final int index)
-  {
-    java.lang.Object obj = this._annotationList.remove(index);
-    return (jalview.binding.Annotation) obj;
-  }
-
-  /**
-   * Method removeSequence.
-   * 
-   * @param vSequence
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeSequence(final jalview.binding.Sequence vSequence)
-  {
-    boolean removed = _sequenceList.remove(vSequence);
-    return removed;
-  }
-
-  /**
-   * Method removeSequenceAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public jalview.binding.Sequence removeSequenceAt(final int index)
-  {
-    java.lang.Object obj = this._sequenceList.remove(index);
-    return (jalview.binding.Sequence) obj;
-  }
-
-  /**
-   * Sets the value of field 'aligned'.
-   * 
-   * @param aligned
-   *          the value of field 'aligned'.
-   */
-  public void setAligned(final boolean aligned)
-  {
-    this._aligned = aligned;
-    this._has_aligned = true;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vAnnotation
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setAnnotation(final int index,
-          final jalview.binding.Annotation vAnnotation)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._annotationList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "setAnnotation",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._annotationList.size() - 1)).toString()
-        })); 
-    }
-
-    this._annotationList.set(index, vAnnotation);
-  }
-
-  /**
-   * 
-   * 
-   * @param vAnnotationArray
-   */
-  public void setAnnotation(
-          final jalview.binding.Annotation[] vAnnotationArray)
-  {
-    // -- copy array
-    _annotationList.clear();
-
-    for (int i = 0; i < vAnnotationArray.length; i++)
-    {
-      this._annotationList.add(vAnnotationArray[i]);
-    }
-  }
-
-  /**
-   * Sets the value of field 'gapChar'.
-   * 
-   * @param gapChar
-   *          the value of field 'gapChar'.
-   */
-  public void setGapChar(final java.lang.String gapChar)
-  {
-    this._gapChar = gapChar;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSequence
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setSequence(final int index,
-          final jalview.binding.Sequence vSequence)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._sequenceList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setSequence",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._sequenceList.size() - 1)).toString()
-          })); 
-    }
-
-    this._sequenceList.set(index, vSequence);
-  }
-
-  /**
-   * 
-   * 
-   * @param vSequenceArray
-   */
-  public void setSequence(final jalview.binding.Sequence[] vSequenceArray)
-  {
-    // -- copy array
-    _sequenceList.clear();
-
-    for (int i = 0; i < vSequenceArray.length; i++)
-    {
-      this._sequenceList.add(vSequenceArray[i]);
-    }
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.SequenceSet
-   */
-  public static jalview.binding.SequenceSet unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.SequenceSet) Unmarshaller.unmarshal(
-            jalview.binding.SequenceSet.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class SequenceSet implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _gapChar.
+     */
+    private java.lang.String _gapChar;
+
+    /**
+     * Field _aligned.
+     */
+    private boolean _aligned;
+
+    /**
+     * keeps track of state for field: _aligned
+     */
+    private boolean _has_aligned;
+
+    /**
+     * Field _sequenceList.
+     */
+    private java.util.Vector _sequenceList;
+
+    /**
+     * Field _annotationList.
+     */
+    private java.util.Vector _annotationList;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public SequenceSet() {
+        super();
+        this._sequenceList = new java.util.Vector();
+        this._annotationList = new java.util.Vector();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vAnnotation
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addAnnotation(
+            final jalview.binding.Annotation vAnnotation)
+    throws java.lang.IndexOutOfBoundsException {
+        this._annotationList.addElement(vAnnotation);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vAnnotation
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addAnnotation(
+            final int index,
+            final jalview.binding.Annotation vAnnotation)
+    throws java.lang.IndexOutOfBoundsException {
+        this._annotationList.add(index, vAnnotation);
+    }
+
+    /**
+     * 
+     * 
+     * @param vSequence
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSequence(
+            final jalview.binding.Sequence vSequence)
+    throws java.lang.IndexOutOfBoundsException {
+        this._sequenceList.addElement(vSequence);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSequence
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSequence(
+            final int index,
+            final jalview.binding.Sequence vSequence)
+    throws java.lang.IndexOutOfBoundsException {
+        this._sequenceList.add(index, vSequence);
+    }
+
+    /**
+     */
+    public void deleteAligned(
+    ) {
+        this._has_aligned= false;
+    }
+
+    /**
+     * Method enumerateAnnotation.
+     * 
+     * @return an Enumeration over all jalview.binding.Annotation
+     * elements
+     */
+    public java.util.Enumeration enumerateAnnotation(
+    ) {
+        return this._annotationList.elements();
+    }
+
+    /**
+     * Method enumerateSequence.
+     * 
+     * @return an Enumeration over all jalview.binding.Sequence
+     * elements
+     */
+    public java.util.Enumeration enumerateSequence(
+    ) {
+        return this._sequenceList.elements();
+    }
+
+    /**
+     * Returns the value of field 'aligned'.
+     * 
+     * @return the value of field 'Aligned'.
+     */
+    public boolean getAligned(
+    ) {
+        return this._aligned;
+    }
+
+    /**
+     * Method getAnnotation.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Annotation at the
+     * given index
+     */
+    public jalview.binding.Annotation getAnnotation(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._annotationList.size()) {
+            throw new IndexOutOfBoundsException("getAnnotation: Index value '" + index + "' not in range [0.." + (this._annotationList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Annotation) _annotationList.get(index);
+    }
+
+    /**
+     * Method getAnnotation.Returns the contents of the collection
+     * in an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Annotation[] getAnnotation(
+    ) {
+        jalview.binding.Annotation[] array = new jalview.binding.Annotation[0];
+        return (jalview.binding.Annotation[]) this._annotationList.toArray(array);
+    }
+
+    /**
+     * Method getAnnotationCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getAnnotationCount(
+    ) {
+        return this._annotationList.size();
+    }
+
+    /**
+     * Returns the value of field 'gapChar'.
+     * 
+     * @return the value of field 'GapChar'.
+     */
+    public java.lang.String getGapChar(
+    ) {
+        return this._gapChar;
+    }
+
+    /**
+     * Method getSequence.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the jalview.binding.Sequence at the
+     * given index
+     */
+    public jalview.binding.Sequence getSequence(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._sequenceList.size()) {
+            throw new IndexOutOfBoundsException("getSequence: Index value '" + index + "' not in range [0.." + (this._sequenceList.size() - 1) + "]");
+        }
+        
+        return (jalview.binding.Sequence) _sequenceList.get(index);
+    }
+
+    /**
+     * Method getSequence.Returns the contents of the collection in
+     * an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public jalview.binding.Sequence[] getSequence(
+    ) {
+        jalview.binding.Sequence[] array = new jalview.binding.Sequence[0];
+        return (jalview.binding.Sequence[]) this._sequenceList.toArray(array);
+    }
+
+    /**
+     * Method getSequenceCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getSequenceCount(
+    ) {
+        return this._sequenceList.size();
+    }
+
+    /**
+     * Method hasAligned.
+     * 
+     * @return true if at least one Aligned has been added
+     */
+    public boolean hasAligned(
+    ) {
+        return this._has_aligned;
+    }
+
+    /**
+     * Returns the value of field 'aligned'.
+     * 
+     * @return the value of field 'Aligned'.
+     */
+    public boolean isAligned(
+    ) {
+        return this._aligned;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     */
+    public void removeAllAnnotation(
+    ) {
+        this._annotationList.clear();
+    }
+
+    /**
+     */
+    public void removeAllSequence(
+    ) {
+        this._sequenceList.clear();
+    }
+
+    /**
+     * Method removeAnnotation.
+     * 
+     * @param vAnnotation
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeAnnotation(
+            final jalview.binding.Annotation vAnnotation) {
+        boolean removed = _annotationList.remove(vAnnotation);
+        return removed;
+    }
+
+    /**
+     * Method removeAnnotationAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Annotation removeAnnotationAt(
+            final int index) {
+        java.lang.Object obj = this._annotationList.remove(index);
+        return (jalview.binding.Annotation) obj;
+    }
+
+    /**
+     * Method removeSequence.
+     * 
+     * @param vSequence
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeSequence(
+            final jalview.binding.Sequence vSequence) {
+        boolean removed = _sequenceList.remove(vSequence);
+        return removed;
+    }
+
+    /**
+     * Method removeSequenceAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public jalview.binding.Sequence removeSequenceAt(
+            final int index) {
+        java.lang.Object obj = this._sequenceList.remove(index);
+        return (jalview.binding.Sequence) obj;
+    }
+
+    /**
+     * Sets the value of field 'aligned'.
+     * 
+     * @param aligned the value of field 'aligned'.
+     */
+    public void setAligned(
+            final boolean aligned) {
+        this._aligned = aligned;
+        this._has_aligned = true;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vAnnotation
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setAnnotation(
+            final int index,
+            final jalview.binding.Annotation vAnnotation)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._annotationList.size()) {
+            throw new IndexOutOfBoundsException("setAnnotation: Index value '" + index + "' not in range [0.." + (this._annotationList.size() - 1) + "]");
+        }
+        
+        this._annotationList.set(index, vAnnotation);
+    }
+
+    /**
+     * 
+     * 
+     * @param vAnnotationArray
+     */
+    public void setAnnotation(
+            final jalview.binding.Annotation[] vAnnotationArray) {
+        //-- copy array
+        _annotationList.clear();
+        
+        for (int i = 0; i < vAnnotationArray.length; i++) {
+                this._annotationList.add(vAnnotationArray[i]);
+        }
+    }
+
+    /**
+     * Sets the value of field 'gapChar'.
+     * 
+     * @param gapChar the value of field 'gapChar'.
+     */
+    public void setGapChar(
+            final java.lang.String gapChar) {
+        this._gapChar = gapChar;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSequence
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setSequence(
+            final int index,
+            final jalview.binding.Sequence vSequence)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._sequenceList.size()) {
+            throw new IndexOutOfBoundsException("setSequence: Index value '" + index + "' not in range [0.." + (this._sequenceList.size() - 1) + "]");
+        }
+        
+        this._sequenceList.set(index, vSequence);
+    }
+
+    /**
+     * 
+     * 
+     * @param vSequenceArray
+     */
+    public void setSequence(
+            final jalview.binding.Sequence[] vSequenceArray) {
+        //-- copy array
+        _sequenceList.clear();
+        
+        for (int i = 0; i < vSequenceArray.length; i++) {
+                this._sequenceList.add(vSequenceArray[i]);
+        }
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.SequenceSet
+     */
+    public static jalview.binding.SequenceSet unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.SequenceSet) Unmarshaller.unmarshal(jalview.binding.SequenceSet.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index c23a93b..1bb2a62 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,188 +19,176 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class SequenceType implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _id.
-   */
-  private java.lang.String _id;
-
-  /**
-   * Field _sequence.
-   */
-  private java.lang.String _sequence;
-
-  /**
-   * Field _name.
-   */
-  private java.lang.String _name;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public SequenceType()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * Returns the value of field 'id'.
-   * 
-   * @return the value of field 'Id'.
-   */
-  public java.lang.String getId()
-  {
-    return this._id;
-  }
-
-  /**
-   * Returns the value of field 'name'.
-   * 
-   * @return the value of field 'Name'.
-   */
-  public java.lang.String getName()
-  {
-    return this._name;
-  }
-
-  /**
-   * Returns the value of field 'sequence'.
-   * 
-   * @return the value of field 'Sequence'.
-   */
-  public java.lang.String getSequence()
-  {
-    return this._sequence;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+public class SequenceType implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _id.
+     */
+    private java.lang.String _id;
+
+    /**
+     * Field _sequence.
+     */
+    private java.lang.String _sequence;
+
+    /**
+     * Field _name.
+     */
+    private java.lang.String _name;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public SequenceType() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * Returns the value of field 'id'.
+     * 
+     * @return the value of field 'Id'.
+     */
+    public java.lang.String getId(
+    ) {
+        return this._id;
+    }
+
+    /**
+     * Returns the value of field 'name'.
+     * 
+     * @return the value of field 'Name'.
+     */
+    public java.lang.String getName(
+    ) {
+        return this._name;
+    }
+
+    /**
+     * Returns the value of field 'sequence'.
+     * 
+     * @return the value of field 'Sequence'.
+     */
+    public java.lang.String getSequence(
+    ) {
+        return this._sequence;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'id'.
+     * 
+     * @param id the value of field 'id'.
+     */
+    public void setId(
+            final java.lang.String id) {
+        this._id = id;
+    }
+
+    /**
+     * Sets the value of field 'name'.
+     * 
+     * @param name the value of field 'name'.
+     */
+    public void setName(
+            final java.lang.String name) {
+        this._name = name;
+    }
+
+    /**
+     * Sets the value of field 'sequence'.
+     * 
+     * @param sequence the value of field 'sequence'.
+     */
+    public void setSequence(
+            final java.lang.String sequence) {
+        this._sequence = sequence;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.SequenceType
+     */
+    public static jalview.binding.SequenceType unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.SequenceType) Unmarshaller.unmarshal(jalview.binding.SequenceType.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'id'.
-   * 
-   * @param id
-   *          the value of field 'id'.
-   */
-  public void setId(final java.lang.String id)
-  {
-    this._id = id;
-  }
-
-  /**
-   * Sets the value of field 'name'.
-   * 
-   * @param name
-   *          the value of field 'name'.
-   */
-  public void setName(final java.lang.String name)
-  {
-    this._name = name;
-  }
-
-  /**
-   * Sets the value of field 'sequence'.
-   * 
-   * @param sequence
-   *          the value of field 'sequence'.
-   */
-  public void setSequence(final java.lang.String sequence)
-  {
-    this._sequence = sequence;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.SequenceType
-   */
-  public static jalview.binding.SequenceType unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.SequenceType) Unmarshaller.unmarshal(
-            jalview.binding.SequenceType.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index bde410f..9cd84b4 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,244 +19,232 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Setting implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _type.
-   */
-  private java.lang.String _type;
-
-  /**
-   * Field _colour.
-   */
-  private int _colour;
-
-  /**
-   * keeps track of state for field: _colour
-   */
-  private boolean _has_colour;
-
-  /**
-   * Field _display.
-   */
-  private boolean _display;
-
-  /**
-   * keeps track of state for field: _display
-   */
-  private boolean _has_display;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Setting()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
+public class Setting implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _type.
+     */
+    private java.lang.String _type;
+
+    /**
+     * Field _colour.
+     */
+    private int _colour;
+
+    /**
+     * keeps track of state for field: _colour
+     */
+    private boolean _has_colour;
+
+    /**
+     * Field _display.
+     */
+    private boolean _display;
+
+    /**
+     * keeps track of state for field: _display
+     */
+    private boolean _has_display;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Setting() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
      */
-  public void deleteColour()
-  {
-    this._has_colour = false;
-  }
+    public void deleteColour(
+    ) {
+        this._has_colour= false;
+    }
+
+    /**
+     */
+    public void deleteDisplay(
+    ) {
+        this._has_display= false;
+    }
+
+    /**
+     * Returns the value of field 'colour'.
+     * 
+     * @return the value of field 'Colour'.
+     */
+    public int getColour(
+    ) {
+        return this._colour;
+    }
+
+    /**
+     * Returns the value of field 'display'.
+     * 
+     * @return the value of field 'Display'.
+     */
+    public boolean getDisplay(
+    ) {
+        return this._display;
+    }
+
+    /**
+     * Returns the value of field 'type'.
+     * 
+     * @return the value of field 'Type'.
+     */
+    public java.lang.String getType(
+    ) {
+        return this._type;
+    }
+
+    /**
+     * Method hasColour.
+     * 
+     * @return true if at least one Colour has been added
+     */
+    public boolean hasColour(
+    ) {
+        return this._has_colour;
+    }
+
+    /**
+     * Method hasDisplay.
+     * 
+     * @return true if at least one Display has been added
+     */
+    public boolean hasDisplay(
+    ) {
+        return this._has_display;
+    }
+
+    /**
+     * Returns the value of field 'display'.
+     * 
+     * @return the value of field 'Display'.
+     */
+    public boolean isDisplay(
+    ) {
+        return this._display;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'colour'.
+     * 
+     * @param colour the value of field 'colour'.
+     */
+    public void setColour(
+            final int colour) {
+        this._colour = colour;
+        this._has_colour = true;
+    }
+
+    /**
+     * Sets the value of field 'display'.
+     * 
+     * @param display the value of field 'display'.
+     */
+    public void setDisplay(
+            final boolean display) {
+        this._display = display;
+        this._has_display = true;
+    }
+
+    /**
+     * Sets the value of field 'type'.
+     * 
+     * @param type the value of field 'type'.
+     */
+    public void setType(
+            final java.lang.String type) {
+        this._type = type;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Setting
+     */
+    public static jalview.binding.Setting unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Setting) Unmarshaller.unmarshal(jalview.binding.Setting.class, reader);
+    }
 
-  /**
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
      */
-  public void deleteDisplay()
-  {
-    this._has_display = false;
-  }
-
-  /**
-   * Returns the value of field 'colour'.
-   * 
-   * @return the value of field 'Colour'.
-   */
-  public int getColour()
-  {
-    return this._colour;
-  }
-
-  /**
-   * Returns the value of field 'display'.
-   * 
-   * @return the value of field 'Display'.
-   */
-  public boolean getDisplay()
-  {
-    return this._display;
-  }
-
-  /**
-   * Returns the value of field 'type'.
-   * 
-   * @return the value of field 'Type'.
-   */
-  public java.lang.String getType()
-  {
-    return this._type;
-  }
-
-  /**
-   * Method hasColour.
-   * 
-   * @return true if at least one Colour has been added
-   */
-  public boolean hasColour()
-  {
-    return this._has_colour;
-  }
-
-  /**
-   * Method hasDisplay.
-   * 
-   * @return true if at least one Display has been added
-   */
-  public boolean hasDisplay()
-  {
-    return this._has_display;
-  }
-
-  /**
-   * Returns the value of field 'display'.
-   * 
-   * @return the value of field 'Display'.
-   */
-  public boolean isDisplay()
-  {
-    return this._display;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'colour'.
-   * 
-   * @param colour
-   *          the value of field 'colour'.
-   */
-  public void setColour(final int colour)
-  {
-    this._colour = colour;
-    this._has_colour = true;
-  }
-
-  /**
-   * Sets the value of field 'display'.
-   * 
-   * @param display
-   *          the value of field 'display'.
-   */
-  public void setDisplay(final boolean display)
-  {
-    this._display = display;
-    this._has_display = true;
-  }
-
-  /**
-   * Sets the value of field 'type'.
-   * 
-   * @param type
-   *          the value of field 'type'.
-   */
-  public void setType(final java.lang.String type)
-  {
-    this._type = type;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Setting
-   */
-  public static jalview.binding.Setting unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Setting) Unmarshaller.unmarshal(
-            jalview.binding.Setting.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index 59d1319..5f138d0 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,825 +19,802 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Tree implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _width.
-   */
-  private int _width;
-
-  /**
-   * keeps track of state for field: _width
-   */
-  private boolean _has_width;
-
-  /**
-   * Field _height.
-   */
-  private int _height;
-
-  /**
-   * keeps track of state for field: _height
-   */
-  private boolean _has_height;
-
-  /**
-   * Field _xpos.
-   */
-  private int _xpos;
-
-  /**
-   * keeps track of state for field: _xpos
-   */
-  private boolean _has_xpos;
-
-  /**
-   * Field _ypos.
-   */
-  private int _ypos;
-
-  /**
-   * keeps track of state for field: _ypos
-   */
-  private boolean _has_ypos;
-
-  /**
-   * Field _fontName.
-   */
-  private java.lang.String _fontName;
-
-  /**
-   * Field _fontSize.
-   */
-  private int _fontSize;
-
-  /**
-   * keeps track of state for field: _fontSize
-   */
-  private boolean _has_fontSize;
-
-  /**
-   * Field _fontStyle.
-   */
-  private int _fontStyle;
-
-  /**
-   * keeps track of state for field: _fontStyle
-   */
-  private boolean _has_fontStyle;
-
-  /**
-   * Field _threshold.
-   */
-  private float _threshold;
-
-  /**
-   * keeps track of state for field: _threshold
-   */
-  private boolean _has_threshold;
-
-  /**
-   * Field _showBootstrap.
-   */
-  private boolean _showBootstrap;
-
-  /**
-   * keeps track of state for field: _showBootstrap
-   */
-  private boolean _has_showBootstrap;
-
-  /**
-   * Field _showDistances.
-   */
-  private boolean _showDistances;
-
-  /**
-   * keeps track of state for field: _showDistances
-   */
-  private boolean _has_showDistances;
-
-  /**
-   * Field _markUnlinked.
-   */
-  private boolean _markUnlinked;
-
-  /**
-   * keeps track of state for field: _markUnlinked
-   */
-  private boolean _has_markUnlinked;
-
-  /**
-   * Field _fitToWindow.
-   */
-  private boolean _fitToWindow;
-
-  /**
-   * keeps track of state for field: _fitToWindow
-   */
-  private boolean _has_fitToWindow;
-
-  /**
-   * Field _currentTree.
-   */
-  private boolean _currentTree;
-
-  /**
-   * keeps track of state for field: _currentTree
-   */
-  private boolean _has_currentTree;
-
-  /**
-   * Field _title.
-   */
-  private java.lang.String _title;
-
-  /**
-   * Field _newick.
-   */
-  private java.lang.String _newick;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Tree()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-     */
-  public void deleteCurrentTree()
-  {
-    this._has_currentTree = false;
-  }
-
-  /**
-     */
-  public void deleteFitToWindow()
-  {
-    this._has_fitToWindow = false;
-  }
-
-  /**
-     */
-  public void deleteFontSize()
-  {
-    this._has_fontSize = false;
-  }
-
-  /**
-     */
-  public void deleteFontStyle()
-  {
-    this._has_fontStyle = false;
-  }
-
-  /**
-     */
-  public void deleteHeight()
-  {
-    this._has_height = false;
-  }
-
-  /**
-     */
-  public void deleteMarkUnlinked()
-  {
-    this._has_markUnlinked = false;
-  }
-
-  /**
-     */
-  public void deleteShowBootstrap()
-  {
-    this._has_showBootstrap = false;
-  }
-
-  /**
-     */
-  public void deleteShowDistances()
-  {
-    this._has_showDistances = false;
-  }
-
-  /**
-     */
-  public void deleteThreshold()
-  {
-    this._has_threshold = false;
-  }
-
-  /**
-     */
-  public void deleteWidth()
-  {
-    this._has_width = false;
-  }
-
-  /**
-     */
-  public void deleteXpos()
-  {
-    this._has_xpos = false;
-  }
-
-  /**
-     */
-  public void deleteYpos()
-  {
-    this._has_ypos = false;
-  }
-
-  /**
-   * Returns the value of field 'currentTree'.
-   * 
-   * @return the value of field 'CurrentTree'.
-   */
-  public boolean getCurrentTree()
-  {
-    return this._currentTree;
-  }
-
-  /**
-   * Returns the value of field 'fitToWindow'.
-   * 
-   * @return the value of field 'FitToWindow'.
-   */
-  public boolean getFitToWindow()
-  {
-    return this._fitToWindow;
-  }
-
-  /**
-   * Returns the value of field 'fontName'.
-   * 
-   * @return the value of field 'FontName'.
-   */
-  public java.lang.String getFontName()
-  {
-    return this._fontName;
-  }
-
-  /**
-   * Returns the value of field 'fontSize'.
-   * 
-   * @return the value of field 'FontSize'.
-   */
-  public int getFontSize()
-  {
-    return this._fontSize;
-  }
-
-  /**
-   * Returns the value of field 'fontStyle'.
-   * 
-   * @return the value of field 'FontStyle'.
-   */
-  public int getFontStyle()
-  {
-    return this._fontStyle;
-  }
-
-  /**
-   * Returns the value of field 'height'.
-   * 
-   * @return the value of field 'Height'.
-   */
-  public int getHeight()
-  {
-    return this._height;
-  }
-
-  /**
-   * Returns the value of field 'markUnlinked'.
-   * 
-   * @return the value of field 'MarkUnlinked'.
-   */
-  public boolean getMarkUnlinked()
-  {
-    return this._markUnlinked;
-  }
-
-  /**
-   * Returns the value of field 'newick'.
-   * 
-   * @return the value of field 'Newick'.
-   */
-  public java.lang.String getNewick()
-  {
-    return this._newick;
-  }
-
-  /**
-   * Returns the value of field 'showBootstrap'.
-   * 
-   * @return the value of field 'ShowBootstrap'.
-   */
-  public boolean getShowBootstrap()
-  {
-    return this._showBootstrap;
-  }
-
-  /**
-   * Returns the value of field 'showDistances'.
-   * 
-   * @return the value of field 'ShowDistances'.
-   */
-  public boolean getShowDistances()
-  {
-    return this._showDistances;
-  }
-
-  /**
-   * Returns the value of field 'threshold'.
-   * 
-   * @return the value of field 'Threshold'.
-   */
-  public float getThreshold()
-  {
-    return this._threshold;
-  }
-
-  /**
-   * Returns the value of field 'title'.
-   * 
-   * @return the value of field 'Title'.
-   */
-  public java.lang.String getTitle()
-  {
-    return this._title;
-  }
-
-  /**
-   * Returns the value of field 'width'.
-   * 
-   * @return the value of field 'Width'.
-   */
-  public int getWidth()
-  {
-    return this._width;
-  }
-
-  /**
-   * Returns the value of field 'xpos'.
-   * 
-   * @return the value of field 'Xpos'.
-   */
-  public int getXpos()
-  {
-    return this._xpos;
-  }
-
-  /**
-   * Returns the value of field 'ypos'.
-   * 
-   * @return the value of field 'Ypos'.
-   */
-  public int getYpos()
-  {
-    return this._ypos;
-  }
-
-  /**
-   * Method hasCurrentTree.
-   * 
-   * @return true if at least one CurrentTree has been added
-   */
-  public boolean hasCurrentTree()
-  {
-    return this._has_currentTree;
-  }
-
-  /**
-   * Method hasFitToWindow.
-   * 
-   * @return true if at least one FitToWindow has been added
-   */
-  public boolean hasFitToWindow()
-  {
-    return this._has_fitToWindow;
-  }
-
-  /**
-   * Method hasFontSize.
-   * 
-   * @return true if at least one FontSize has been added
-   */
-  public boolean hasFontSize()
-  {
-    return this._has_fontSize;
-  }
-
-  /**
-   * Method hasFontStyle.
-   * 
-   * @return true if at least one FontStyle has been added
-   */
-  public boolean hasFontStyle()
-  {
-    return this._has_fontStyle;
-  }
-
-  /**
-   * Method hasHeight.
-   * 
-   * @return true if at least one Height has been added
-   */
-  public boolean hasHeight()
-  {
-    return this._has_height;
-  }
-
-  /**
-   * Method hasMarkUnlinked.
-   * 
-   * @return true if at least one MarkUnlinked has been added
-   */
-  public boolean hasMarkUnlinked()
-  {
-    return this._has_markUnlinked;
-  }
-
-  /**
-   * Method hasShowBootstrap.
-   * 
-   * @return true if at least one ShowBootstrap has been added
-   */
-  public boolean hasShowBootstrap()
-  {
-    return this._has_showBootstrap;
-  }
-
-  /**
-   * Method hasShowDistances.
-   * 
-   * @return true if at least one ShowDistances has been added
-   */
-  public boolean hasShowDistances()
-  {
-    return this._has_showDistances;
-  }
-
-  /**
-   * Method hasThreshold.
-   * 
-   * @return true if at least one Threshold has been added
-   */
-  public boolean hasThreshold()
-  {
-    return this._has_threshold;
-  }
-
-  /**
-   * Method hasWidth.
-   * 
-   * @return true if at least one Width has been added
-   */
-  public boolean hasWidth()
-  {
-    return this._has_width;
-  }
-
-  /**
-   * Method hasXpos.
-   * 
-   * @return true if at least one Xpos has been added
-   */
-  public boolean hasXpos()
-  {
-    return this._has_xpos;
-  }
-
-  /**
-   * Method hasYpos.
-   * 
-   * @return true if at least one Ypos has been added
-   */
-  public boolean hasYpos()
-  {
-    return this._has_ypos;
-  }
-
-  /**
-   * Returns the value of field 'currentTree'.
-   * 
-   * @return the value of field 'CurrentTree'.
-   */
-  public boolean isCurrentTree()
-  {
-    return this._currentTree;
-  }
-
-  /**
-   * Returns the value of field 'fitToWindow'.
-   * 
-   * @return the value of field 'FitToWindow'.
-   */
-  public boolean isFitToWindow()
-  {
-    return this._fitToWindow;
-  }
-
-  /**
-   * Returns the value of field 'markUnlinked'.
-   * 
-   * @return the value of field 'MarkUnlinked'.
-   */
-  public boolean isMarkUnlinked()
-  {
-    return this._markUnlinked;
-  }
-
-  /**
-   * Returns the value of field 'showBootstrap'.
-   * 
-   * @return the value of field 'ShowBootstrap'.
-   */
-  public boolean isShowBootstrap()
-  {
-    return this._showBootstrap;
-  }
-
-  /**
-   * Returns the value of field 'showDistances'.
-   * 
-   * @return the value of field 'ShowDistances'.
-   */
-  public boolean isShowDistances()
-  {
-    return this._showDistances;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'currentTree'.
-   * 
-   * @param currentTree
-   *          the value of field 'currentTree'.
-   */
-  public void setCurrentTree(final boolean currentTree)
-  {
-    this._currentTree = currentTree;
-    this._has_currentTree = true;
-  }
-
-  /**
-   * Sets the value of field 'fitToWindow'.
-   * 
-   * @param fitToWindow
-   *          the value of field 'fitToWindow'.
-   */
-  public void setFitToWindow(final boolean fitToWindow)
-  {
-    this._fitToWindow = fitToWindow;
-    this._has_fitToWindow = true;
-  }
-
-  /**
-   * Sets the value of field 'fontName'.
-   * 
-   * @param fontName
-   *          the value of field 'fontName'.
-   */
-  public void setFontName(final java.lang.String fontName)
-  {
-    this._fontName = fontName;
-  }
-
-  /**
-   * Sets the value of field 'fontSize'.
-   * 
-   * @param fontSize
-   *          the value of field 'fontSize'.
-   */
-  public void setFontSize(final int fontSize)
-  {
-    this._fontSize = fontSize;
-    this._has_fontSize = true;
-  }
-
-  /**
-   * Sets the value of field 'fontStyle'.
-   * 
-   * @param fontStyle
-   *          the value of field 'fontStyle'.
-   */
-  public void setFontStyle(final int fontStyle)
-  {
-    this._fontStyle = fontStyle;
-    this._has_fontStyle = true;
-  }
-
-  /**
-   * Sets the value of field 'height'.
-   * 
-   * @param height
-   *          the value of field 'height'.
-   */
-  public void setHeight(final int height)
-  {
-    this._height = height;
-    this._has_height = true;
-  }
-
-  /**
-   * Sets the value of field 'markUnlinked'.
-   * 
-   * @param markUnlinked
-   *          the value of field 'markUnlinked'.
-   */
-  public void setMarkUnlinked(final boolean markUnlinked)
-  {
-    this._markUnlinked = markUnlinked;
-    this._has_markUnlinked = true;
-  }
-
-  /**
-   * Sets the value of field 'newick'.
-   * 
-   * @param newick
-   *          the value of field 'newick'.
-   */
-  public void setNewick(final java.lang.String newick)
-  {
-    this._newick = newick;
-  }
-
-  /**
-   * Sets the value of field 'showBootstrap'.
-   * 
-   * @param showBootstrap
-   *          the value of field 'showBootstrap'.
-   */
-  public void setShowBootstrap(final boolean showBootstrap)
-  {
-    this._showBootstrap = showBootstrap;
-    this._has_showBootstrap = true;
-  }
-
-  /**
-   * Sets the value of field 'showDistances'.
-   * 
-   * @param showDistances
-   *          the value of field 'showDistances'.
-   */
-  public void setShowDistances(final boolean showDistances)
-  {
-    this._showDistances = showDistances;
-    this._has_showDistances = true;
-  }
-
-  /**
-   * Sets the value of field 'threshold'.
-   * 
-   * @param threshold
-   *          the value of field 'threshold'.
-   */
-  public void setThreshold(final float threshold)
-  {
-    this._threshold = threshold;
-    this._has_threshold = true;
-  }
-
-  /**
-   * Sets the value of field 'title'.
-   * 
-   * @param title
-   *          the value of field 'title'.
-   */
-  public void setTitle(final java.lang.String title)
-  {
-    this._title = title;
-  }
-
-  /**
-   * Sets the value of field 'width'.
-   * 
-   * @param width
-   *          the value of field 'width'.
-   */
-  public void setWidth(final int width)
-  {
-    this._width = width;
-    this._has_width = true;
-  }
-
-  /**
-   * Sets the value of field 'xpos'.
-   * 
-   * @param xpos
-   *          the value of field 'xpos'.
-   */
-  public void setXpos(final int xpos)
-  {
-    this._xpos = xpos;
-    this._has_xpos = true;
-  }
-
-  /**
-   * Sets the value of field 'ypos'.
-   * 
-   * @param ypos
-   *          the value of field 'ypos'.
-   */
-  public void setYpos(final int ypos)
-  {
-    this._ypos = ypos;
-    this._has_ypos = true;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Tree
-   */
-  public static jalview.binding.Tree unmarshal(final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Tree) Unmarshaller.unmarshal(
-            jalview.binding.Tree.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class Tree implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _width.
+     */
+    private int _width;
+
+    /**
+     * keeps track of state for field: _width
+     */
+    private boolean _has_width;
+
+    /**
+     * Field _height.
+     */
+    private int _height;
+
+    /**
+     * keeps track of state for field: _height
+     */
+    private boolean _has_height;
+
+    /**
+     * Field _xpos.
+     */
+    private int _xpos;
+
+    /**
+     * keeps track of state for field: _xpos
+     */
+    private boolean _has_xpos;
+
+    /**
+     * Field _ypos.
+     */
+    private int _ypos;
+
+    /**
+     * keeps track of state for field: _ypos
+     */
+    private boolean _has_ypos;
+
+    /**
+     * Field _fontName.
+     */
+    private java.lang.String _fontName;
+
+    /**
+     * Field _fontSize.
+     */
+    private int _fontSize;
+
+    /**
+     * keeps track of state for field: _fontSize
+     */
+    private boolean _has_fontSize;
+
+    /**
+     * Field _fontStyle.
+     */
+    private int _fontStyle;
+
+    /**
+     * keeps track of state for field: _fontStyle
+     */
+    private boolean _has_fontStyle;
+
+    /**
+     * Field _threshold.
+     */
+    private float _threshold;
+
+    /**
+     * keeps track of state for field: _threshold
+     */
+    private boolean _has_threshold;
+
+    /**
+     * Field _showBootstrap.
+     */
+    private boolean _showBootstrap;
+
+    /**
+     * keeps track of state for field: _showBootstrap
+     */
+    private boolean _has_showBootstrap;
+
+    /**
+     * Field _showDistances.
+     */
+    private boolean _showDistances;
+
+    /**
+     * keeps track of state for field: _showDistances
+     */
+    private boolean _has_showDistances;
+
+    /**
+     * Field _markUnlinked.
+     */
+    private boolean _markUnlinked;
+
+    /**
+     * keeps track of state for field: _markUnlinked
+     */
+    private boolean _has_markUnlinked;
+
+    /**
+     * Field _fitToWindow.
+     */
+    private boolean _fitToWindow;
+
+    /**
+     * keeps track of state for field: _fitToWindow
+     */
+    private boolean _has_fitToWindow;
+
+    /**
+     * Field _currentTree.
+     */
+    private boolean _currentTree;
+
+    /**
+     * keeps track of state for field: _currentTree
+     */
+    private boolean _has_currentTree;
+
+    /**
+     * Field _title.
+     */
+    private java.lang.String _title;
+
+    /**
+     * Field _newick.
+     */
+    private java.lang.String _newick;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Tree() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     */
+    public void deleteCurrentTree(
+    ) {
+        this._has_currentTree= false;
+    }
+
+    /**
+     */
+    public void deleteFitToWindow(
+    ) {
+        this._has_fitToWindow= false;
+    }
+
+    /**
+     */
+    public void deleteFontSize(
+    ) {
+        this._has_fontSize= false;
+    }
+
+    /**
+     */
+    public void deleteFontStyle(
+    ) {
+        this._has_fontStyle= false;
+    }
+
+    /**
+     */
+    public void deleteHeight(
+    ) {
+        this._has_height= false;
+    }
+
+    /**
+     */
+    public void deleteMarkUnlinked(
+    ) {
+        this._has_markUnlinked= false;
+    }
+
+    /**
+     */
+    public void deleteShowBootstrap(
+    ) {
+        this._has_showBootstrap= false;
+    }
+
+    /**
+     */
+    public void deleteShowDistances(
+    ) {
+        this._has_showDistances= false;
+    }
+
+    /**
+     */
+    public void deleteThreshold(
+    ) {
+        this._has_threshold= false;
+    }
+
+    /**
+     */
+    public void deleteWidth(
+    ) {
+        this._has_width= false;
+    }
+
+    /**
+     */
+    public void deleteXpos(
+    ) {
+        this._has_xpos= false;
+    }
+
+    /**
+     */
+    public void deleteYpos(
+    ) {
+        this._has_ypos= false;
+    }
+
+    /**
+     * Returns the value of field 'currentTree'.
+     * 
+     * @return the value of field 'CurrentTree'.
+     */
+    public boolean getCurrentTree(
+    ) {
+        return this._currentTree;
+    }
+
+    /**
+     * Returns the value of field 'fitToWindow'.
+     * 
+     * @return the value of field 'FitToWindow'.
+     */
+    public boolean getFitToWindow(
+    ) {
+        return this._fitToWindow;
+    }
+
+    /**
+     * Returns the value of field 'fontName'.
+     * 
+     * @return the value of field 'FontName'.
+     */
+    public java.lang.String getFontName(
+    ) {
+        return this._fontName;
+    }
+
+    /**
+     * Returns the value of field 'fontSize'.
+     * 
+     * @return the value of field 'FontSize'.
+     */
+    public int getFontSize(
+    ) {
+        return this._fontSize;
+    }
+
+    /**
+     * Returns the value of field 'fontStyle'.
+     * 
+     * @return the value of field 'FontStyle'.
+     */
+    public int getFontStyle(
+    ) {
+        return this._fontStyle;
+    }
+
+    /**
+     * Returns the value of field 'height'.
+     * 
+     * @return the value of field 'Height'.
+     */
+    public int getHeight(
+    ) {
+        return this._height;
+    }
+
+    /**
+     * Returns the value of field 'markUnlinked'.
+     * 
+     * @return the value of field 'MarkUnlinked'.
+     */
+    public boolean getMarkUnlinked(
+    ) {
+        return this._markUnlinked;
+    }
+
+    /**
+     * Returns the value of field 'newick'.
+     * 
+     * @return the value of field 'Newick'.
+     */
+    public java.lang.String getNewick(
+    ) {
+        return this._newick;
+    }
+
+    /**
+     * Returns the value of field 'showBootstrap'.
+     * 
+     * @return the value of field 'ShowBootstrap'.
+     */
+    public boolean getShowBootstrap(
+    ) {
+        return this._showBootstrap;
+    }
+
+    /**
+     * Returns the value of field 'showDistances'.
+     * 
+     * @return the value of field 'ShowDistances'.
+     */
+    public boolean getShowDistances(
+    ) {
+        return this._showDistances;
+    }
+
+    /**
+     * Returns the value of field 'threshold'.
+     * 
+     * @return the value of field 'Threshold'.
+     */
+    public float getThreshold(
+    ) {
+        return this._threshold;
+    }
+
+    /**
+     * Returns the value of field 'title'.
+     * 
+     * @return the value of field 'Title'.
+     */
+    public java.lang.String getTitle(
+    ) {
+        return this._title;
+    }
+
+    /**
+     * Returns the value of field 'width'.
+     * 
+     * @return the value of field 'Width'.
+     */
+    public int getWidth(
+    ) {
+        return this._width;
+    }
+
+    /**
+     * Returns the value of field 'xpos'.
+     * 
+     * @return the value of field 'Xpos'.
+     */
+    public int getXpos(
+    ) {
+        return this._xpos;
+    }
+
+    /**
+     * Returns the value of field 'ypos'.
+     * 
+     * @return the value of field 'Ypos'.
+     */
+    public int getYpos(
+    ) {
+        return this._ypos;
+    }
+
+    /**
+     * Method hasCurrentTree.
+     * 
+     * @return true if at least one CurrentTree has been added
+     */
+    public boolean hasCurrentTree(
+    ) {
+        return this._has_currentTree;
+    }
+
+    /**
+     * Method hasFitToWindow.
+     * 
+     * @return true if at least one FitToWindow has been added
+     */
+    public boolean hasFitToWindow(
+    ) {
+        return this._has_fitToWindow;
+    }
+
+    /**
+     * Method hasFontSize.
+     * 
+     * @return true if at least one FontSize has been added
+     */
+    public boolean hasFontSize(
+    ) {
+        return this._has_fontSize;
+    }
+
+    /**
+     * Method hasFontStyle.
+     * 
+     * @return true if at least one FontStyle has been added
+     */
+    public boolean hasFontStyle(
+    ) {
+        return this._has_fontStyle;
+    }
+
+    /**
+     * Method hasHeight.
+     * 
+     * @return true if at least one Height has been added
+     */
+    public boolean hasHeight(
+    ) {
+        return this._has_height;
+    }
+
+    /**
+     * Method hasMarkUnlinked.
+     * 
+     * @return true if at least one MarkUnlinked has been added
+     */
+    public boolean hasMarkUnlinked(
+    ) {
+        return this._has_markUnlinked;
+    }
+
+    /**
+     * Method hasShowBootstrap.
+     * 
+     * @return true if at least one ShowBootstrap has been added
+     */
+    public boolean hasShowBootstrap(
+    ) {
+        return this._has_showBootstrap;
+    }
+
+    /**
+     * Method hasShowDistances.
+     * 
+     * @return true if at least one ShowDistances has been added
+     */
+    public boolean hasShowDistances(
+    ) {
+        return this._has_showDistances;
+    }
+
+    /**
+     * Method hasThreshold.
+     * 
+     * @return true if at least one Threshold has been added
+     */
+    public boolean hasThreshold(
+    ) {
+        return this._has_threshold;
+    }
+
+    /**
+     * Method hasWidth.
+     * 
+     * @return true if at least one Width has been added
+     */
+    public boolean hasWidth(
+    ) {
+        return this._has_width;
+    }
+
+    /**
+     * Method hasXpos.
+     * 
+     * @return true if at least one Xpos has been added
+     */
+    public boolean hasXpos(
+    ) {
+        return this._has_xpos;
+    }
+
+    /**
+     * Method hasYpos.
+     * 
+     * @return true if at least one Ypos has been added
+     */
+    public boolean hasYpos(
+    ) {
+        return this._has_ypos;
+    }
+
+    /**
+     * Returns the value of field 'currentTree'.
+     * 
+     * @return the value of field 'CurrentTree'.
+     */
+    public boolean isCurrentTree(
+    ) {
+        return this._currentTree;
+    }
+
+    /**
+     * Returns the value of field 'fitToWindow'.
+     * 
+     * @return the value of field 'FitToWindow'.
+     */
+    public boolean isFitToWindow(
+    ) {
+        return this._fitToWindow;
+    }
+
+    /**
+     * Returns the value of field 'markUnlinked'.
+     * 
+     * @return the value of field 'MarkUnlinked'.
+     */
+    public boolean isMarkUnlinked(
+    ) {
+        return this._markUnlinked;
+    }
+
+    /**
+     * Returns the value of field 'showBootstrap'.
+     * 
+     * @return the value of field 'ShowBootstrap'.
+     */
+    public boolean isShowBootstrap(
+    ) {
+        return this._showBootstrap;
+    }
+
+    /**
+     * Returns the value of field 'showDistances'.
+     * 
+     * @return the value of field 'ShowDistances'.
+     */
+    public boolean isShowDistances(
+    ) {
+        return this._showDistances;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'currentTree'.
+     * 
+     * @param currentTree the value of field 'currentTree'.
+     */
+    public void setCurrentTree(
+            final boolean currentTree) {
+        this._currentTree = currentTree;
+        this._has_currentTree = true;
+    }
+
+    /**
+     * Sets the value of field 'fitToWindow'.
+     * 
+     * @param fitToWindow the value of field 'fitToWindow'.
+     */
+    public void setFitToWindow(
+            final boolean fitToWindow) {
+        this._fitToWindow = fitToWindow;
+        this._has_fitToWindow = true;
+    }
+
+    /**
+     * Sets the value of field 'fontName'.
+     * 
+     * @param fontName the value of field 'fontName'.
+     */
+    public void setFontName(
+            final java.lang.String fontName) {
+        this._fontName = fontName;
+    }
+
+    /**
+     * Sets the value of field 'fontSize'.
+     * 
+     * @param fontSize the value of field 'fontSize'.
+     */
+    public void setFontSize(
+            final int fontSize) {
+        this._fontSize = fontSize;
+        this._has_fontSize = true;
+    }
+
+    /**
+     * Sets the value of field 'fontStyle'.
+     * 
+     * @param fontStyle the value of field 'fontStyle'.
+     */
+    public void setFontStyle(
+            final int fontStyle) {
+        this._fontStyle = fontStyle;
+        this._has_fontStyle = true;
+    }
+
+    /**
+     * Sets the value of field 'height'.
+     * 
+     * @param height the value of field 'height'.
+     */
+    public void setHeight(
+            final int height) {
+        this._height = height;
+        this._has_height = true;
+    }
+
+    /**
+     * Sets the value of field 'markUnlinked'.
+     * 
+     * @param markUnlinked the value of field 'markUnlinked'.
+     */
+    public void setMarkUnlinked(
+            final boolean markUnlinked) {
+        this._markUnlinked = markUnlinked;
+        this._has_markUnlinked = true;
+    }
+
+    /**
+     * Sets the value of field 'newick'.
+     * 
+     * @param newick the value of field 'newick'.
+     */
+    public void setNewick(
+            final java.lang.String newick) {
+        this._newick = newick;
+    }
+
+    /**
+     * Sets the value of field 'showBootstrap'.
+     * 
+     * @param showBootstrap the value of field 'showBootstrap'.
+     */
+    public void setShowBootstrap(
+            final boolean showBootstrap) {
+        this._showBootstrap = showBootstrap;
+        this._has_showBootstrap = true;
+    }
+
+    /**
+     * Sets the value of field 'showDistances'.
+     * 
+     * @param showDistances the value of field 'showDistances'.
+     */
+    public void setShowDistances(
+            final boolean showDistances) {
+        this._showDistances = showDistances;
+        this._has_showDistances = true;
+    }
+
+    /**
+     * Sets the value of field 'threshold'.
+     * 
+     * @param threshold the value of field 'threshold'.
+     */
+    public void setThreshold(
+            final float threshold) {
+        this._threshold = threshold;
+        this._has_threshold = true;
+    }
+
+    /**
+     * Sets the value of field 'title'.
+     * 
+     * @param title the value of field 'title'.
+     */
+    public void setTitle(
+            final java.lang.String title) {
+        this._title = title;
+    }
+
+    /**
+     * Sets the value of field 'width'.
+     * 
+     * @param width the value of field 'width'.
+     */
+    public void setWidth(
+            final int width) {
+        this._width = width;
+        this._has_width = true;
+    }
+
+    /**
+     * Sets the value of field 'xpos'.
+     * 
+     * @param xpos the value of field 'xpos'.
+     */
+    public void setXpos(
+            final int xpos) {
+        this._xpos = xpos;
+        this._has_xpos = true;
+    }
+
+    /**
+     * Sets the value of field 'ypos'.
+     * 
+     * @param ypos the value of field 'ypos'.
+     */
+    public void setYpos(
+            final int ypos) {
+        this._ypos = ypos;
+        this._has_ypos = true;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Tree
+     */
+    public static jalview.binding.Tree unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Tree) Unmarshaller.unmarshal(jalview.binding.Tree.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 18fa2e1..24c97ff 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,107 +19,98 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class UserColourScheme extends JalviewUserColours implements
-        java.io.Serializable
+public class UserColourScheme extends JalviewUserColours 
+implements java.io.Serializable
 {
 
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
 
-  public UserColourScheme()
-  {
-    super();
-  }
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public UserColourScheme() {
+        super();
+    }
+
 
-  // -----------/
-  // - Methods -/
-  // -----------/
+      //-----------/
+     //- Methods -/
+    //-----------/
 
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
     }
-    return true;
-  }
 
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
 
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
 
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.JalviewUserColours
-   */
-  public static jalview.binding.JalviewUserColours unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.JalviewUserColours) Unmarshaller.unmarshal(
-            jalview.binding.UserColourScheme.class, reader);
-  }
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.JalviewUserColours
+     */
+    public static jalview.binding.JalviewUserColours unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.JalviewUserColours) Unmarshaller.unmarshal(jalview.binding.UserColourScheme.class, reader);
+    }
 
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 96bb810..bdefe05 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,163 +19,151 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class UserColours implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _id.
-   */
-  private java.lang.String _id;
-
-  /**
-   * Field _userColourScheme.
-   */
-  private jalview.binding.UserColourScheme _userColourScheme;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public UserColours()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * Returns the value of field 'id'.
-   * 
-   * @return the value of field 'Id'.
-   */
-  public java.lang.String getId()
-  {
-    return this._id;
-  }
-
-  /**
-   * Returns the value of field 'userColourScheme'.
-   * 
-   * @return the value of field 'UserColourScheme'.
-   */
-  public jalview.binding.UserColourScheme getUserColourScheme()
-  {
-    return this._userColourScheme;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+public class UserColours implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _id.
+     */
+    private java.lang.String _id;
+
+    /**
+     * Field _userColourScheme.
+     */
+    private jalview.binding.UserColourScheme _userColourScheme;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public UserColours() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * Returns the value of field 'id'.
+     * 
+     * @return the value of field 'Id'.
+     */
+    public java.lang.String getId(
+    ) {
+        return this._id;
+    }
+
+    /**
+     * Returns the value of field 'userColourScheme'.
+     * 
+     * @return the value of field 'UserColourScheme'.
+     */
+    public jalview.binding.UserColourScheme getUserColourScheme(
+    ) {
+        return this._userColourScheme;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'id'.
+     * 
+     * @param id the value of field 'id'.
+     */
+    public void setId(
+            final java.lang.String id) {
+        this._id = id;
+    }
+
+    /**
+     * Sets the value of field 'userColourScheme'.
+     * 
+     * @param userColourScheme the value of field 'userColourScheme'
+     */
+    public void setUserColourScheme(
+            final jalview.binding.UserColourScheme userColourScheme) {
+        this._userColourScheme = userColourScheme;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.UserColours
+     */
+    public static jalview.binding.UserColours unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.UserColours) Unmarshaller.unmarshal(jalview.binding.UserColours.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
     }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'id'.
-   * 
-   * @param id
-   *          the value of field 'id'.
-   */
-  public void setId(final java.lang.String id)
-  {
-    this._id = id;
-  }
-
-  /**
-   * Sets the value of field 'userColourScheme'.
-   * 
-   * @param userColourScheme
-   *          the value of field 'userColourScheme'
-   */
-  public void setUserColourScheme(
-          final jalview.binding.UserColourScheme userColourScheme)
-  {
-    this._userColourScheme = userColourScheme;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.UserColours
-   */
-  public static jalview.binding.UserColours unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.UserColours) Unmarshaller.unmarshal(
-            jalview.binding.UserColours.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
 
 }
index d7f98ce..1c92bd3 100644 (file)
@@ -1,31 +1,16 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
-import jalview.util.MessageManager;
-
 import org.exolab.castor.xml.Marshaller;
 import org.exolab.castor.xml.Unmarshaller;
 
@@ -34,598 +19,563 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class VAMSAS implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _alignmentList.
-   */
-  private java.util.Vector _alignmentList;
-
-  /**
-   * Field _treeList.
-   */
-  private java.util.Vector _treeList;
-
-  /**
-   * Field _sequenceSetList.
-   */
-  private java.util.Vector _sequenceSetList;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public VAMSAS()
-  {
-    super();
-    this._alignmentList = new java.util.Vector();
-    this._treeList = new java.util.Vector();
-    this._sequenceSetList = new java.util.Vector();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
-
-  /**
-   * 
-   * 
-   * @param vAlignment
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addAlignment(final Alignment vAlignment)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._alignmentList.addElement(vAlignment);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vAlignment
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addAlignment(final int index, final Alignment vAlignment)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._alignmentList.add(index, vAlignment);
-  }
-
-  /**
-   * 
-   * 
-   * @param vSequenceSet
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSequenceSet(final SequenceSet vSequenceSet)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._sequenceSetList.addElement(vSequenceSet);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSequenceSet
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addSequenceSet(final int index, final SequenceSet vSequenceSet)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._sequenceSetList.add(index, vSequenceSet);
-  }
-
-  /**
-   * 
-   * 
-   * @param vTree
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addTree(final java.lang.String vTree)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._treeList.addElement(vTree);
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vTree
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void addTree(final int index, final java.lang.String vTree)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    this._treeList.add(index, vTree);
-  }
-
-  /**
-   * Method enumerateAlignment.
-   * 
-   * @return an Enumeration over all Alignment elements
-   */
-  public java.util.Enumeration enumerateAlignment()
-  {
-    return this._alignmentList.elements();
-  }
-
-  /**
-   * Method enumerateSequenceSet.
-   * 
-   * @return an Enumeration over all SequenceSet elements
-   */
-  public java.util.Enumeration enumerateSequenceSet()
-  {
-    return this._sequenceSetList.elements();
-  }
-
-  /**
-   * Method enumerateTree.
-   * 
-   * @return an Enumeration over all java.lang.String elements
-   */
-  public java.util.Enumeration enumerateTree()
-  {
-    return this._treeList.elements();
-  }
-
-  /**
-   * Method getAlignment.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the Alignment at the given index
-   */
-  public Alignment getAlignment(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._alignmentList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getAlignment",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._alignmentList.size() - 1)).toString()
-        })); 
-    }
-
-    return (Alignment) _alignmentList.get(index);
-  }
-
-  /**
-   * Method getAlignment.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public Alignment[] getAlignment()
-  {
-    Alignment[] array = new Alignment[0];
-    return (Alignment[]) this._alignmentList.toArray(array);
-  }
-
-  /**
-   * Method getAlignmentCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getAlignmentCount()
-  {
-    return this._alignmentList.size();
-  }
-
-  /**
-   * Method getSequenceSet.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the SequenceSet at the given index
-   */
-  public SequenceSet getSequenceSet(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._sequenceSetList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "getSequenceSet",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._sequenceSetList.size() - 1)).toString()
-          })); 
-    }
-
-    return (SequenceSet) _sequenceSetList.get(index);
-  }
-
-  /**
-   * Method getSequenceSet.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public SequenceSet[] getSequenceSet()
-  {
-    SequenceSet[] array = new SequenceSet[0];
-    return (SequenceSet[]) this._sequenceSetList.toArray(array);
-  }
-
-  /**
-   * Method getSequenceSetCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getSequenceSetCount()
-  {
-    return this._sequenceSetList.size();
-  }
-
-  /**
-   * Method getTree.
-   * 
-   * @param index
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   * @return the value of the java.lang.String at the given index
-   */
-  public java.lang.String getTree(final int index)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._treeList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "getTree",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._treeList.size() - 1)).toString()
-        })); 
-    }
-
-    return (java.lang.String) _treeList.get(index);
-  }
-
-  /**
-   * Method getTree.Returns the contents of the collection in an Array.
-   * <p>
-   * Note: Just in case the collection contents are changing in another thread,
-   * we pass a 0-length Array of the correct type into the API call. This way we
-   * <i>know</i> that the Array returned is of exactly the correct length.
-   * 
-   * @return this collection as an Array
-   */
-  public java.lang.String[] getTree()
-  {
-    java.lang.String[] array = new java.lang.String[0];
-    return (java.lang.String[]) this._treeList.toArray(array);
-  }
-
-  /**
-   * Method getTreeCount.
-   * 
-   * @return the size of this collection
-   */
-  public int getTreeCount()
-  {
-    return this._treeList.size();
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Method removeAlignment.
-   * 
-   * @param vAlignment
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeAlignment(final Alignment vAlignment)
-  {
-    boolean removed = _alignmentList.remove(vAlignment);
-    return removed;
-  }
-
-  /**
-   * Method removeAlignmentAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public Alignment removeAlignmentAt(final int index)
-  {
-    java.lang.Object obj = this._alignmentList.remove(index);
-    return (Alignment) obj;
-  }
-
-  /**
-     */
-  public void removeAllAlignment()
-  {
-    this._alignmentList.clear();
-  }
-
-  /**
-     */
-  public void removeAllSequenceSet()
-  {
-    this._sequenceSetList.clear();
-  }
-
-  /**
-     */
-  public void removeAllTree()
-  {
-    this._treeList.clear();
-  }
-
-  /**
-   * Method removeSequenceSet.
-   * 
-   * @param vSequenceSet
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeSequenceSet(final SequenceSet vSequenceSet)
-  {
-    boolean removed = _sequenceSetList.remove(vSequenceSet);
-    return removed;
-  }
-
-  /**
-   * Method removeSequenceSetAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public SequenceSet removeSequenceSetAt(final int index)
-  {
-    java.lang.Object obj = this._sequenceSetList.remove(index);
-    return (SequenceSet) obj;
-  }
-
-  /**
-   * Method removeTree.
-   * 
-   * @param vTree
-   * @return true if the object was removed from the collection.
-   */
-  public boolean removeTree(final java.lang.String vTree)
-  {
-    boolean removed = _treeList.remove(vTree);
-    return removed;
-  }
-
-  /**
-   * Method removeTreeAt.
-   * 
-   * @param index
-   * @return the element removed from the collection
-   */
-  public java.lang.String removeTreeAt(final int index)
-  {
-    java.lang.Object obj = this._treeList.remove(index);
-    return (java.lang.String) obj;
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vAlignment
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setAlignment(final int index, final Alignment vAlignment)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._alignmentList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setAlignment",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._alignmentList.size() - 1)).toString()
-          })); 
-    }
-
-    this._alignmentList.set(index, vAlignment);
-  }
-
-  /**
-   * 
-   * 
-   * @param vAlignmentArray
-   */
-  public void setAlignment(final Alignment[] vAlignmentArray)
-  {
-    // -- copy array
-    _alignmentList.clear();
-
-    for (int i = 0; i < vAlignmentArray.length; i++)
-    {
-      this._alignmentList.add(vAlignmentArray[i]);
-    }
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vSequenceSet
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setSequenceSet(final int index, final SequenceSet vSequenceSet)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._sequenceSetList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                 "setSequenceSet",
-                 Integer.valueOf(index).toString(),
-                 Integer.valueOf((this._sequenceSetList.size() - 1)).toString()
-        })); 
-    }
-
-    this._sequenceSetList.set(index, vSequenceSet);
-  }
-
-  /**
-   * 
-   * 
-   * @param vSequenceSetArray
-   */
-  public void setSequenceSet(final SequenceSet[] vSequenceSetArray)
-  {
-    // -- copy array
-    _sequenceSetList.clear();
-
-    for (int i = 0; i < vSequenceSetArray.length; i++)
-    {
-      this._sequenceSetList.add(vSequenceSetArray[i]);
-    }
-  }
-
-  /**
-   * 
-   * 
-   * @param index
-   * @param vTree
-   * @throws java.lang.IndexOutOfBoundsException
-   *           if the index given is outside the bounds of the collection
-   */
-  public void setTree(final int index, final java.lang.String vTree)
-          throws java.lang.IndexOutOfBoundsException
-  {
-    // check bounds for index
-    if (index < 0 || index >= this._treeList.size())
-    {
-        throw new IndexOutOfBoundsException(MessageManager.formatMessage("exception.index_value_not_in_range", new String[]{
-                         "setTree",
-                         Integer.valueOf(index).toString(),
-                         Integer.valueOf((this._treeList.size() - 1)).toString()
-          })); 
-    }
-
-    this._treeList.set(index, vTree);
-  }
-
-  /**
-   * 
-   * 
-   * @param vTreeArray
-   */
-  public void setTree(final java.lang.String[] vTreeArray)
-  {
-    // -- copy array
-    _treeList.clear();
-
-    for (int i = 0; i < vTreeArray.length; i++)
-    {
-      this._treeList.add(vTreeArray[i]);
-    }
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.VAMSAS
-   */
-  public static jalview.binding.VAMSAS unmarshal(final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.VAMSAS) Unmarshaller.unmarshal(
-            jalview.binding.VAMSAS.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+public class VAMSAS implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _alignmentList.
+     */
+    private java.util.Vector _alignmentList;
+
+    /**
+     * Field _treeList.
+     */
+    private java.util.Vector _treeList;
+
+    /**
+     * Field _sequenceSetList.
+     */
+    private java.util.Vector _sequenceSetList;
+
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public VAMSAS() {
+        super();
+        this._alignmentList = new java.util.Vector();
+        this._treeList = new java.util.Vector();
+        this._sequenceSetList = new java.util.Vector();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     * 
+     * 
+     * @param vAlignment
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addAlignment(
+            final Alignment vAlignment)
+    throws java.lang.IndexOutOfBoundsException {
+        this._alignmentList.addElement(vAlignment);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vAlignment
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addAlignment(
+            final int index,
+            final Alignment vAlignment)
+    throws java.lang.IndexOutOfBoundsException {
+        this._alignmentList.add(index, vAlignment);
+    }
+
+    /**
+     * 
+     * 
+     * @param vSequenceSet
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSequenceSet(
+            final SequenceSet vSequenceSet)
+    throws java.lang.IndexOutOfBoundsException {
+        this._sequenceSetList.addElement(vSequenceSet);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSequenceSet
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addSequenceSet(
+            final int index,
+            final SequenceSet vSequenceSet)
+    throws java.lang.IndexOutOfBoundsException {
+        this._sequenceSetList.add(index, vSequenceSet);
+    }
+
+    /**
+     * 
+     * 
+     * @param vTree
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addTree(
+            final java.lang.String vTree)
+    throws java.lang.IndexOutOfBoundsException {
+        this._treeList.addElement(vTree);
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vTree
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void addTree(
+            final int index,
+            final java.lang.String vTree)
+    throws java.lang.IndexOutOfBoundsException {
+        this._treeList.add(index, vTree);
+    }
+
+    /**
+     * Method enumerateAlignment.
+     * 
+     * @return an Enumeration over all Alignment elements
+     */
+    public java.util.Enumeration enumerateAlignment(
+    ) {
+        return this._alignmentList.elements();
+    }
+
+    /**
+     * Method enumerateSequenceSet.
+     * 
+     * @return an Enumeration over all SequenceSet elements
+     */
+    public java.util.Enumeration enumerateSequenceSet(
+    ) {
+        return this._sequenceSetList.elements();
+    }
+
+    /**
+     * Method enumerateTree.
+     * 
+     * @return an Enumeration over all java.lang.String elements
+     */
+    public java.util.Enumeration enumerateTree(
+    ) {
+        return this._treeList.elements();
+    }
+
+    /**
+     * Method getAlignment.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the Alignment at the given index
+     */
+    public Alignment getAlignment(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._alignmentList.size()) {
+            throw new IndexOutOfBoundsException("getAlignment: Index value '" + index + "' not in range [0.." + (this._alignmentList.size() - 1) + "]");
+        }
+        
+        return (Alignment) _alignmentList.get(index);
+    }
+
+    /**
+     * Method getAlignment.Returns the contents of the collection
+     * in an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public Alignment[] getAlignment(
+    ) {
+        Alignment[] array = new Alignment[0];
+        return (Alignment[]) this._alignmentList.toArray(array);
+    }
+
+    /**
+     * Method getAlignmentCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getAlignmentCount(
+    ) {
+        return this._alignmentList.size();
+    }
+
+    /**
+     * Method getSequenceSet.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the SequenceSet at the given index
+     */
+    public SequenceSet getSequenceSet(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._sequenceSetList.size()) {
+            throw new IndexOutOfBoundsException("getSequenceSet: Index value '" + index + "' not in range [0.." + (this._sequenceSetList.size() - 1) + "]");
+        }
+        
+        return (SequenceSet) _sequenceSetList.get(index);
+    }
+
+    /**
+     * Method getSequenceSet.Returns the contents of the collection
+     * in an Array.  <p>Note:  Just in case the collection contents
+     * are changing in another thread, we pass a 0-length Array of
+     * the correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public SequenceSet[] getSequenceSet(
+    ) {
+        SequenceSet[] array = new SequenceSet[0];
+        return (SequenceSet[]) this._sequenceSetList.toArray(array);
+    }
+
+    /**
+     * Method getSequenceSetCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getSequenceSetCount(
+    ) {
+        return this._sequenceSetList.size();
+    }
+
+    /**
+     * Method getTree.
+     * 
+     * @param index
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     * @return the value of the java.lang.String at the given index
+     */
+    public java.lang.String getTree(
+            final int index)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._treeList.size()) {
+            throw new IndexOutOfBoundsException("getTree: Index value '" + index + "' not in range [0.." + (this._treeList.size() - 1) + "]");
+        }
+        
+        return (java.lang.String) _treeList.get(index);
+    }
+
+    /**
+     * Method getTree.Returns the contents of the collection in an
+     * Array.  <p>Note:  Just in case the collection contents are
+     * changing in another thread, we pass a 0-length Array of the
+     * correct type into the API call.  This way we <i>know</i>
+     * that the Array returned is of exactly the correct length.
+     * 
+     * @return this collection as an Array
+     */
+    public java.lang.String[] getTree(
+    ) {
+        java.lang.String[] array = new java.lang.String[0];
+        return (java.lang.String[]) this._treeList.toArray(array);
+    }
+
+    /**
+     * Method getTreeCount.
+     * 
+     * @return the size of this collection
+     */
+    public int getTreeCount(
+    ) {
+        return this._treeList.size();
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Method removeAlignment.
+     * 
+     * @param vAlignment
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeAlignment(
+            final Alignment vAlignment) {
+        boolean removed = _alignmentList.remove(vAlignment);
+        return removed;
+    }
+
+    /**
+     * Method removeAlignmentAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public Alignment removeAlignmentAt(
+            final int index) {
+        java.lang.Object obj = this._alignmentList.remove(index);
+        return (Alignment) obj;
+    }
+
+    /**
+     */
+    public void removeAllAlignment(
+    ) {
+        this._alignmentList.clear();
+    }
+
+    /**
+     */
+    public void removeAllSequenceSet(
+    ) {
+        this._sequenceSetList.clear();
+    }
+
+    /**
+     */
+    public void removeAllTree(
+    ) {
+        this._treeList.clear();
+    }
+
+    /**
+     * Method removeSequenceSet.
+     * 
+     * @param vSequenceSet
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeSequenceSet(
+            final SequenceSet vSequenceSet) {
+        boolean removed = _sequenceSetList.remove(vSequenceSet);
+        return removed;
+    }
+
+    /**
+     * Method removeSequenceSetAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public SequenceSet removeSequenceSetAt(
+            final int index) {
+        java.lang.Object obj = this._sequenceSetList.remove(index);
+        return (SequenceSet) obj;
+    }
+
+    /**
+     * Method removeTree.
+     * 
+     * @param vTree
+     * @return true if the object was removed from the collection.
+     */
+    public boolean removeTree(
+            final java.lang.String vTree) {
+        boolean removed = _treeList.remove(vTree);
+        return removed;
+    }
+
+    /**
+     * Method removeTreeAt.
+     * 
+     * @param index
+     * @return the element removed from the collection
+     */
+    public java.lang.String removeTreeAt(
+            final int index) {
+        java.lang.Object obj = this._treeList.remove(index);
+        return (java.lang.String) obj;
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vAlignment
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setAlignment(
+            final int index,
+            final Alignment vAlignment)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._alignmentList.size()) {
+            throw new IndexOutOfBoundsException("setAlignment: Index value '" + index + "' not in range [0.." + (this._alignmentList.size() - 1) + "]");
+        }
+        
+        this._alignmentList.set(index, vAlignment);
+    }
+
+    /**
+     * 
+     * 
+     * @param vAlignmentArray
+     */
+    public void setAlignment(
+            final Alignment[] vAlignmentArray) {
+        //-- copy array
+        _alignmentList.clear();
+        
+        for (int i = 0; i < vAlignmentArray.length; i++) {
+                this._alignmentList.add(vAlignmentArray[i]);
+        }
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vSequenceSet
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setSequenceSet(
+            final int index,
+            final SequenceSet vSequenceSet)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._sequenceSetList.size()) {
+            throw new IndexOutOfBoundsException("setSequenceSet: Index value '" + index + "' not in range [0.." + (this._sequenceSetList.size() - 1) + "]");
+        }
+        
+        this._sequenceSetList.set(index, vSequenceSet);
+    }
+
+    /**
+     * 
+     * 
+     * @param vSequenceSetArray
+     */
+    public void setSequenceSet(
+            final SequenceSet[] vSequenceSetArray) {
+        //-- copy array
+        _sequenceSetList.clear();
+        
+        for (int i = 0; i < vSequenceSetArray.length; i++) {
+                this._sequenceSetList.add(vSequenceSetArray[i]);
+        }
+    }
+
+    /**
+     * 
+     * 
+     * @param index
+     * @param vTree
+     * @throws java.lang.IndexOutOfBoundsException if the index
+     * given is outside the bounds of the collection
+     */
+    public void setTree(
+            final int index,
+            final java.lang.String vTree)
+    throws java.lang.IndexOutOfBoundsException {
+        // check bounds for index
+        if (index < 0 || index >= this._treeList.size()) {
+            throw new IndexOutOfBoundsException("setTree: Index value '" + index + "' not in range [0.." + (this._treeList.size() - 1) + "]");
+        }
+        
+        this._treeList.set(index, vTree);
+    }
+
+    /**
+     * 
+     * 
+     * @param vTreeArray
+     */
+    public void setTree(
+            final java.lang.String[] vTreeArray) {
+        //-- copy array
+        _treeList.clear();
+        
+        for (int i = 0; i < vTreeArray.length; i++) {
+                this._treeList.add(vTreeArray[i]);
+        }
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.VAMSAS
+     */
+    public static jalview.binding.VAMSAS unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.VAMSAS) Unmarshaller.unmarshal(jalview.binding.VAMSAS.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index c57556a..5fda35e 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,105 +19,98 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class VamsasModel extends VAMSAS implements java.io.Serializable
+public class VamsasModel extends VAMSAS 
+implements java.io.Serializable
 {
 
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
 
-  public VamsasModel()
-  {
-    super();
-  }
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public VamsasModel() {
+        super();
+    }
+
 
-  // -----------/
-  // - Methods -/
-  // -----------/
+      //-----------/
+     //- Methods -/
+    //-----------/
 
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
     }
-    return true;
-  }
 
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
 
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
 
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.VAMSAS
-   */
-  public static jalview.binding.VAMSAS unmarshal(final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.VAMSAS) Unmarshaller.unmarshal(
-            jalview.binding.VamsasModel.class, reader);
-  }
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.VAMSAS
+     */
+    public static jalview.binding.VAMSAS unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.VAMSAS) Unmarshaller.unmarshal(jalview.binding.VamsasModel.class, reader);
+    }
 
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index af2f286..643c323 100644 (file)
@@ -1,27 +1,14 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
- * 
- * This file is part of Jalview.
- * 
- * Jalview is free software: you can redistribute it and/or
- * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3
- * of the License, or (at your option) any later version.
- *  
- * Jalview is distributed in the hope that it will be useful, but 
- * WITHOUT ANY WARRANTY; without even the implied warranty 
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
- * PURPOSE.  See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
- * The Jalview Authors are detailed in the 'AUTHORS' file.
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
  */
+
 package jalview.binding;
 
-//---------------------------------/
-//- Imported classes and packages -/
+  //---------------------------------/
+ //- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -32,1445 +19,1414 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Viewport implements java.io.Serializable
-{
-
-  // --------------------------/
-  // - Class/Member Variables -/
-  // --------------------------/
-
-  /**
-   * Field _conservationSelected.
-   */
-  private boolean _conservationSelected;
-
-  /**
-   * keeps track of state for field: _conservationSelected
-   */
-  private boolean _has_conservationSelected;
-
-  /**
-   * Field _pidSelected.
-   */
-  private boolean _pidSelected;
-
-  /**
-   * keeps track of state for field: _pidSelected
-   */
-  private boolean _has_pidSelected;
-
-  /**
-   * Field _bgColour.
-   */
-  private java.lang.String _bgColour;
-
-  /**
-   * Field _consThreshold.
-   */
-  private int _consThreshold;
-
-  /**
-   * keeps track of state for field: _consThreshold
-   */
-  private boolean _has_consThreshold;
-
-  /**
-   * Field _pidThreshold.
-   */
-  private int _pidThreshold;
-
-  /**
-   * keeps track of state for field: _pidThreshold
-   */
-  private boolean _has_pidThreshold;
-
-  /**
-   * Field _title.
-   */
-  private java.lang.String _title;
-
-  /**
-   * Field _showFullId.
-   */
-  private boolean _showFullId;
-
-  /**
-   * keeps track of state for field: _showFullId
-   */
-  private boolean _has_showFullId;
-
-  /**
-   * Field _showText.
-   */
-  private boolean _showText;
-
-  /**
-   * keeps track of state for field: _showText
-   */
-  private boolean _has_showText;
-
-  /**
-   * Field _showColourText.
-   */
-  private boolean _showColourText;
-
-  /**
-   * keeps track of state for field: _showColourText
-   */
-  private boolean _has_showColourText;
-
-  /**
-   * Field _showBoxes.
-   */
-  private boolean _showBoxes;
-
-  /**
-   * keeps track of state for field: _showBoxes
-   */
-  private boolean _has_showBoxes;
-
-  /**
-   * Field _wrapAlignment.
-   */
-  private boolean _wrapAlignment;
-
-  /**
-   * keeps track of state for field: _wrapAlignment
-   */
-  private boolean _has_wrapAlignment;
-
-  /**
-   * Field _renderGaps.
-   */
-  private boolean _renderGaps;
-
-  /**
-   * keeps track of state for field: _renderGaps
-   */
-  private boolean _has_renderGaps;
-
-  /**
-   * Field _showSequenceFeatures.
-   */
-  private boolean _showSequenceFeatures;
-
-  /**
-   * keeps track of state for field: _showSequenceFeatures
-   */
-  private boolean _has_showSequenceFeatures;
-
-  /**
-   * Field _showAnnotation.
-   */
-  private boolean _showAnnotation;
-
-  /**
-   * keeps track of state for field: _showAnnotation
-   */
-  private boolean _has_showAnnotation;
-
-  /**
-   * Field _showConservation.
-   */
-  private boolean _showConservation;
-
-  /**
-   * keeps track of state for field: _showConservation
-   */
-  private boolean _has_showConservation;
-
-  /**
-   * Field _showQuality.
-   */
-  private boolean _showQuality;
-
-  /**
-   * keeps track of state for field: _showQuality
-   */
-  private boolean _has_showQuality;
-
-  /**
-   * Field _showIdentity.
-   */
-  private boolean _showIdentity;
-
-  /**
-   * keeps track of state for field: _showIdentity
-   */
-  private boolean _has_showIdentity;
-
-  /**
-   * Field _xpos.
-   */
-  private int _xpos;
-
-  /**
-   * keeps track of state for field: _xpos
-   */
-  private boolean _has_xpos;
-
-  /**
-   * Field _ypos.
-   */
-  private int _ypos;
-
-  /**
-   * keeps track of state for field: _ypos
-   */
-  private boolean _has_ypos;
-
-  /**
-   * Field _width.
-   */
-  private int _width;
-
-  /**
-   * keeps track of state for field: _width
-   */
-  private boolean _has_width;
-
-  /**
-   * Field _height.
-   */
-  private int _height;
-
-  /**
-   * keeps track of state for field: _height
-   */
-  private boolean _has_height;
-
-  /**
-   * Field _startRes.
-   */
-  private int _startRes;
-
-  /**
-   * keeps track of state for field: _startRes
-   */
-  private boolean _has_startRes;
-
-  /**
-   * Field _startSeq.
-   */
-  private int _startSeq;
-
-  /**
-   * keeps track of state for field: _startSeq
-   */
-  private boolean _has_startSeq;
-
-  /**
-   * Field _fontName.
-   */
-  private java.lang.String _fontName;
-
-  /**
-   * Field _fontSize.
-   */
-  private int _fontSize;
-
-  /**
-   * keeps track of state for field: _fontSize
-   */
-  private boolean _has_fontSize;
-
-  /**
-   * Field _fontStyle.
-   */
-  private int _fontStyle;
-
-  /**
-   * keeps track of state for field: _fontStyle
-   */
-  private boolean _has_fontStyle;
-
-  // ----------------/
-  // - Constructors -/
-  // ----------------/
-
-  public Viewport()
-  {
-    super();
-  }
-
-  // -----------/
-  // - Methods -/
-  // -----------/
+public class Viewport implements java.io.Serializable {
+
+
+      //--------------------------/
+     //- Class/Member Variables -/
+    //--------------------------/
+
+    /**
+     * Field _conservationSelected.
+     */
+    private boolean _conservationSelected;
+
+    /**
+     * keeps track of state for field: _conservationSelected
+     */
+    private boolean _has_conservationSelected;
+
+    /**
+     * Field _pidSelected.
+     */
+    private boolean _pidSelected;
+
+    /**
+     * keeps track of state for field: _pidSelected
+     */
+    private boolean _has_pidSelected;
+
+    /**
+     * Field _bgColour.
+     */
+    private java.lang.String _bgColour;
+
+    /**
+     * Field _consThreshold.
+     */
+    private int _consThreshold;
+
+    /**
+     * keeps track of state for field: _consThreshold
+     */
+    private boolean _has_consThreshold;
+
+    /**
+     * Field _pidThreshold.
+     */
+    private int _pidThreshold;
+
+    /**
+     * keeps track of state for field: _pidThreshold
+     */
+    private boolean _has_pidThreshold;
+
+    /**
+     * Field _title.
+     */
+    private java.lang.String _title;
+
+    /**
+     * Field _showFullId.
+     */
+    private boolean _showFullId;
+
+    /**
+     * keeps track of state for field: _showFullId
+     */
+    private boolean _has_showFullId;
+
+    /**
+     * Field _showText.
+     */
+    private boolean _showText;
+
+    /**
+     * keeps track of state for field: _showText
+     */
+    private boolean _has_showText;
+
+    /**
+     * Field _showColourText.
+     */
+    private boolean _showColourText;
+
+    /**
+     * keeps track of state for field: _showColourText
+     */
+    private boolean _has_showColourText;
+
+    /**
+     * Field _showBoxes.
+     */
+    private boolean _showBoxes;
+
+    /**
+     * keeps track of state for field: _showBoxes
+     */
+    private boolean _has_showBoxes;
+
+    /**
+     * Field _wrapAlignment.
+     */
+    private boolean _wrapAlignment;
+
+    /**
+     * keeps track of state for field: _wrapAlignment
+     */
+    private boolean _has_wrapAlignment;
+
+    /**
+     * Field _renderGaps.
+     */
+    private boolean _renderGaps;
+
+    /**
+     * keeps track of state for field: _renderGaps
+     */
+    private boolean _has_renderGaps;
+
+    /**
+     * Field _showSequenceFeatures.
+     */
+    private boolean _showSequenceFeatures;
+
+    /**
+     * keeps track of state for field: _showSequenceFeatures
+     */
+    private boolean _has_showSequenceFeatures;
+
+    /**
+     * Field _showAnnotation.
+     */
+    private boolean _showAnnotation;
+
+    /**
+     * keeps track of state for field: _showAnnotation
+     */
+    private boolean _has_showAnnotation;
+
+    /**
+     * Field _showConservation.
+     */
+    private boolean _showConservation;
+
+    /**
+     * keeps track of state for field: _showConservation
+     */
+    private boolean _has_showConservation;
+
+    /**
+     * Field _showQuality.
+     */
+    private boolean _showQuality;
+
+    /**
+     * keeps track of state for field: _showQuality
+     */
+    private boolean _has_showQuality;
+
+    /**
+     * Field _showIdentity.
+     */
+    private boolean _showIdentity;
+
+    /**
+     * keeps track of state for field: _showIdentity
+     */
+    private boolean _has_showIdentity;
+
+    /**
+     * Field _xpos.
+     */
+    private int _xpos;
+
+    /**
+     * keeps track of state for field: _xpos
+     */
+    private boolean _has_xpos;
+
+    /**
+     * Field _ypos.
+     */
+    private int _ypos;
+
+    /**
+     * keeps track of state for field: _ypos
+     */
+    private boolean _has_ypos;
+
+    /**
+     * Field _width.
+     */
+    private int _width;
 
-  /**
+    /**
+     * keeps track of state for field: _width
      */
-  public void deleteConsThreshold()
-  {
-    this._has_consThreshold = false;
-  }
+    private boolean _has_width;
 
-  /**
+    /**
+     * Field _height.
      */
-  public void deleteConservationSelected()
-  {
-    this._has_conservationSelected = false;
-  }
+    private int _height;
 
-  /**
+    /**
+     * keeps track of state for field: _height
      */
-  public void deleteFontSize()
-  {
-    this._has_fontSize = false;
-  }
+    private boolean _has_height;
 
-  /**
+    /**
+     * Field _startRes.
      */
-  public void deleteFontStyle()
-  {
-    this._has_fontStyle = false;
-  }
+    private int _startRes;
 
-  /**
+    /**
+     * keeps track of state for field: _startRes
      */
-  public void deleteHeight()
-  {
-    this._has_height = false;
-  }
+    private boolean _has_startRes;
 
-  /**
+    /**
+     * Field _startSeq.
      */
-  public void deletePidSelected()
-  {
-    this._has_pidSelected = false;
-  }
+    private int _startSeq;
 
-  /**
+    /**
+     * keeps track of state for field: _startSeq
      */
-  public void deletePidThreshold()
-  {
-    this._has_pidThreshold = false;
-  }
+    private boolean _has_startSeq;
 
-  /**
+    /**
+     * Field _fontName.
      */
-  public void deleteRenderGaps()
-  {
-    this._has_renderGaps = false;
-  }
+    private java.lang.String _fontName;
 
-  /**
+    /**
+     * Field _fontSize.
      */
-  public void deleteShowAnnotation()
-  {
-    this._has_showAnnotation = false;
-  }
+    private int _fontSize;
 
-  /**
+    /**
+     * keeps track of state for field: _fontSize
      */
-  public void deleteShowBoxes()
-  {
-    this._has_showBoxes = false;
-  }
+    private boolean _has_fontSize;
 
-  /**
+    /**
+     * Field _fontStyle.
      */
-  public void deleteShowColourText()
-  {
-    this._has_showColourText = false;
-  }
+    private int _fontStyle;
 
-  /**
+    /**
+     * keeps track of state for field: _fontStyle
      */
-  public void deleteShowConservation()
-  {
-    this._has_showConservation = false;
-  }
+    private boolean _has_fontStyle;
 
-  /**
+
+      //----------------/
+     //- Constructors -/
+    //----------------/
+
+    public Viewport() {
+        super();
+    }
+
+
+      //-----------/
+     //- Methods -/
+    //-----------/
+
+    /**
+     */
+    public void deleteConsThreshold(
+    ) {
+        this._has_consThreshold= false;
+    }
+
+    /**
      */
-  public void deleteShowFullId()
-  {
-    this._has_showFullId = false;
-  }
+    public void deleteConservationSelected(
+    ) {
+        this._has_conservationSelected= false;
+    }
 
-  /**
+    /**
      */
-  public void deleteShowIdentity()
-  {
-    this._has_showIdentity = false;
-  }
+    public void deleteFontSize(
+    ) {
+        this._has_fontSize= false;
+    }
+
+    /**
+     */
+    public void deleteFontStyle(
+    ) {
+        this._has_fontStyle= false;
+    }
+
+    /**
+     */
+    public void deleteHeight(
+    ) {
+        this._has_height= false;
+    }
+
+    /**
+     */
+    public void deletePidSelected(
+    ) {
+        this._has_pidSelected= false;
+    }
+
+    /**
+     */
+    public void deletePidThreshold(
+    ) {
+        this._has_pidThreshold= false;
+    }
+
+    /**
+     */
+    public void deleteRenderGaps(
+    ) {
+        this._has_renderGaps= false;
+    }
+
+    /**
+     */
+    public void deleteShowAnnotation(
+    ) {
+        this._has_showAnnotation= false;
+    }
+
+    /**
+     */
+    public void deleteShowBoxes(
+    ) {
+        this._has_showBoxes= false;
+    }
+
+    /**
+     */
+    public void deleteShowColourText(
+    ) {
+        this._has_showColourText= false;
+    }
+
+    /**
+     */
+    public void deleteShowConservation(
+    ) {
+        this._has_showConservation= false;
+    }
+
+    /**
+     */
+    public void deleteShowFullId(
+    ) {
+        this._has_showFullId= false;
+    }
+
+    /**
+     */
+    public void deleteShowIdentity(
+    ) {
+        this._has_showIdentity= false;
+    }
+
+    /**
+     */
+    public void deleteShowQuality(
+    ) {
+        this._has_showQuality= false;
+    }
+
+    /**
+     */
+    public void deleteShowSequenceFeatures(
+    ) {
+        this._has_showSequenceFeatures= false;
+    }
+
+    /**
+     */
+    public void deleteShowText(
+    ) {
+        this._has_showText= false;
+    }
+
+    /**
+     */
+    public void deleteStartRes(
+    ) {
+        this._has_startRes= false;
+    }
+
+    /**
+     */
+    public void deleteStartSeq(
+    ) {
+        this._has_startSeq= false;
+    }
+
+    /**
+     */
+    public void deleteWidth(
+    ) {
+        this._has_width= false;
+    }
+
+    /**
+     */
+    public void deleteWrapAlignment(
+    ) {
+        this._has_wrapAlignment= false;
+    }
+
+    /**
+     */
+    public void deleteXpos(
+    ) {
+        this._has_xpos= false;
+    }
+
+    /**
+     */
+    public void deleteYpos(
+    ) {
+        this._has_ypos= false;
+    }
+
+    /**
+     * Returns the value of field 'bgColour'.
+     * 
+     * @return the value of field 'BgColour'.
+     */
+    public java.lang.String getBgColour(
+    ) {
+        return this._bgColour;
+    }
+
+    /**
+     * Returns the value of field 'consThreshold'.
+     * 
+     * @return the value of field 'ConsThreshold'.
+     */
+    public int getConsThreshold(
+    ) {
+        return this._consThreshold;
+    }
+
+    /**
+     * Returns the value of field 'conservationSelected'.
+     * 
+     * @return the value of field 'ConservationSelected'.
+     */
+    public boolean getConservationSelected(
+    ) {
+        return this._conservationSelected;
+    }
+
+    /**
+     * Returns the value of field 'fontName'.
+     * 
+     * @return the value of field 'FontName'.
+     */
+    public java.lang.String getFontName(
+    ) {
+        return this._fontName;
+    }
+
+    /**
+     * Returns the value of field 'fontSize'.
+     * 
+     * @return the value of field 'FontSize'.
+     */
+    public int getFontSize(
+    ) {
+        return this._fontSize;
+    }
+
+    /**
+     * Returns the value of field 'fontStyle'.
+     * 
+     * @return the value of field 'FontStyle'.
+     */
+    public int getFontStyle(
+    ) {
+        return this._fontStyle;
+    }
+
+    /**
+     * Returns the value of field 'height'.
+     * 
+     * @return the value of field 'Height'.
+     */
+    public int getHeight(
+    ) {
+        return this._height;
+    }
+
+    /**
+     * Returns the value of field 'pidSelected'.
+     * 
+     * @return the value of field 'PidSelected'.
+     */
+    public boolean getPidSelected(
+    ) {
+        return this._pidSelected;
+    }
+
+    /**
+     * Returns the value of field 'pidThreshold'.
+     * 
+     * @return the value of field 'PidThreshold'.
+     */
+    public int getPidThreshold(
+    ) {
+        return this._pidThreshold;
+    }
+
+    /**
+     * Returns the value of field 'renderGaps'.
+     * 
+     * @return the value of field 'RenderGaps'.
+     */
+    public boolean getRenderGaps(
+    ) {
+        return this._renderGaps;
+    }
+
+    /**
+     * Returns the value of field 'showAnnotation'.
+     * 
+     * @return the value of field 'ShowAnnotation'.
+     */
+    public boolean getShowAnnotation(
+    ) {
+        return this._showAnnotation;
+    }
+
+    /**
+     * Returns the value of field 'showBoxes'.
+     * 
+     * @return the value of field 'ShowBoxes'.
+     */
+    public boolean getShowBoxes(
+    ) {
+        return this._showBoxes;
+    }
+
+    /**
+     * Returns the value of field 'showColourText'.
+     * 
+     * @return the value of field 'ShowColourText'.
+     */
+    public boolean getShowColourText(
+    ) {
+        return this._showColourText;
+    }
+
+    /**
+     * Returns the value of field 'showConservation'.
+     * 
+     * @return the value of field 'ShowConservation'.
+     */
+    public boolean getShowConservation(
+    ) {
+        return this._showConservation;
+    }
+
+    /**
+     * Returns the value of field 'showFullId'.
+     * 
+     * @return the value of field 'ShowFullId'.
+     */
+    public boolean getShowFullId(
+    ) {
+        return this._showFullId;
+    }
+
+    /**
+     * Returns the value of field 'showIdentity'.
+     * 
+     * @return the value of field 'ShowIdentity'.
+     */
+    public boolean getShowIdentity(
+    ) {
+        return this._showIdentity;
+    }
+
+    /**
+     * Returns the value of field 'showQuality'.
+     * 
+     * @return the value of field 'ShowQuality'.
+     */
+    public boolean getShowQuality(
+    ) {
+        return this._showQuality;
+    }
+
+    /**
+     * Returns the value of field 'showSequenceFeatures'.
+     * 
+     * @return the value of field 'ShowSequenceFeatures'.
+     */
+    public boolean getShowSequenceFeatures(
+    ) {
+        return this._showSequenceFeatures;
+    }
+
+    /**
+     * Returns the value of field 'showText'.
+     * 
+     * @return the value of field 'ShowText'.
+     */
+    public boolean getShowText(
+    ) {
+        return this._showText;
+    }
+
+    /**
+     * Returns the value of field 'startRes'.
+     * 
+     * @return the value of field 'StartRes'.
+     */
+    public int getStartRes(
+    ) {
+        return this._startRes;
+    }
+
+    /**
+     * Returns the value of field 'startSeq'.
+     * 
+     * @return the value of field 'StartSeq'.
+     */
+    public int getStartSeq(
+    ) {
+        return this._startSeq;
+    }
 
-  /**
+    /**
+     * Returns the value of field 'title'.
+     * 
+     * @return the value of field 'Title'.
      */
-  public void deleteShowQuality()
-  {
-    this._has_showQuality = false;
-  }
-
-  /**
-     */
-  public void deleteShowSequenceFeatures()
-  {
-    this._has_showSequenceFeatures = false;
-  }
-
-  /**
-     */
-  public void deleteShowText()
-  {
-    this._has_showText = false;
-  }
-
-  /**
-     */
-  public void deleteStartRes()
-  {
-    this._has_startRes = false;
-  }
-
-  /**
-     */
-  public void deleteStartSeq()
-  {
-    this._has_startSeq = false;
-  }
-
-  /**
-     */
-  public void deleteWidth()
-  {
-    this._has_width = false;
-  }
-
-  /**
-     */
-  public void deleteWrapAlignment()
-  {
-    this._has_wrapAlignment = false;
-  }
-
-  /**
-     */
-  public void deleteXpos()
-  {
-    this._has_xpos = false;
-  }
-
-  /**
-     */
-  public void deleteYpos()
-  {
-    this._has_ypos = false;
-  }
-
-  /**
-   * Returns the value of field 'bgColour'.
-   * 
-   * @return the value of field 'BgColour'.
-   */
-  public java.lang.String getBgColour()
-  {
-    return this._bgColour;
-  }
-
-  /**
-   * Returns the value of field 'consThreshold'.
-   * 
-   * @return the value of field 'ConsThreshold'.
-   */
-  public int getConsThreshold()
-  {
-    return this._consThreshold;
-  }
-
-  /**
-   * Returns the value of field 'conservationSelected'.
-   * 
-   * @return the value of field 'ConservationSelected'.
-   */
-  public boolean getConservationSelected()
-  {
-    return this._conservationSelected;
-  }
-
-  /**
-   * Returns the value of field 'fontName'.
-   * 
-   * @return the value of field 'FontName'.
-   */
-  public java.lang.String getFontName()
-  {
-    return this._fontName;
-  }
-
-  /**
-   * Returns the value of field 'fontSize'.
-   * 
-   * @return the value of field 'FontSize'.
-   */
-  public int getFontSize()
-  {
-    return this._fontSize;
-  }
-
-  /**
-   * Returns the value of field 'fontStyle'.
-   * 
-   * @return the value of field 'FontStyle'.
-   */
-  public int getFontStyle()
-  {
-    return this._fontStyle;
-  }
-
-  /**
-   * Returns the value of field 'height'.
-   * 
-   * @return the value of field 'Height'.
-   */
-  public int getHeight()
-  {
-    return this._height;
-  }
-
-  /**
-   * Returns the value of field 'pidSelected'.
-   * 
-   * @return the value of field 'PidSelected'.
-   */
-  public boolean getPidSelected()
-  {
-    return this._pidSelected;
-  }
-
-  /**
-   * Returns the value of field 'pidThreshold'.
-   * 
-   * @return the value of field 'PidThreshold'.
-   */
-  public int getPidThreshold()
-  {
-    return this._pidThreshold;
-  }
-
-  /**
-   * Returns the value of field 'renderGaps'.
-   * 
-   * @return the value of field 'RenderGaps'.
-   */
-  public boolean getRenderGaps()
-  {
-    return this._renderGaps;
-  }
-
-  /**
-   * Returns the value of field 'showAnnotation'.
-   * 
-   * @return the value of field 'ShowAnnotation'.
-   */
-  public boolean getShowAnnotation()
-  {
-    return this._showAnnotation;
-  }
-
-  /**
-   * Returns the value of field 'showBoxes'.
-   * 
-   * @return the value of field 'ShowBoxes'.
-   */
-  public boolean getShowBoxes()
-  {
-    return this._showBoxes;
-  }
-
-  /**
-   * Returns the value of field 'showColourText'.
-   * 
-   * @return the value of field 'ShowColourText'.
-   */
-  public boolean getShowColourText()
-  {
-    return this._showColourText;
-  }
-
-  /**
-   * Returns the value of field 'showConservation'.
-   * 
-   * @return the value of field 'ShowConservation'.
-   */
-  public boolean getShowConservation()
-  {
-    return this._showConservation;
-  }
-
-  /**
-   * Returns the value of field 'showFullId'.
-   * 
-   * @return the value of field 'ShowFullId'.
-   */
-  public boolean getShowFullId()
-  {
-    return this._showFullId;
-  }
-
-  /**
-   * Returns the value of field 'showIdentity'.
-   * 
-   * @return the value of field 'ShowIdentity'.
-   */
-  public boolean getShowIdentity()
-  {
-    return this._showIdentity;
-  }
-
-  /**
-   * Returns the value of field 'showQuality'.
-   * 
-   * @return the value of field 'ShowQuality'.
-   */
-  public boolean getShowQuality()
-  {
-    return this._showQuality;
-  }
-
-  /**
-   * Returns the value of field 'showSequenceFeatures'.
-   * 
-   * @return the value of field 'ShowSequenceFeatures'.
-   */
-  public boolean getShowSequenceFeatures()
-  {
-    return this._showSequenceFeatures;
-  }
-
-  /**
-   * Returns the value of field 'showText'.
-   * 
-   * @return the value of field 'ShowText'.
-   */
-  public boolean getShowText()
-  {
-    return this._showText;
-  }
-
-  /**
-   * Returns the value of field 'startRes'.
-   * 
-   * @return the value of field 'StartRes'.
-   */
-  public int getStartRes()
-  {
-    return this._startRes;
-  }
-
-  /**
-   * Returns the value of field 'startSeq'.
-   * 
-   * @return the value of field 'StartSeq'.
-   */
-  public int getStartSeq()
-  {
-    return this._startSeq;
-  }
-
-  /**
-   * Returns the value of field 'title'.
-   * 
-   * @return the value of field 'Title'.
-   */
-  public java.lang.String getTitle()
-  {
-    return this._title;
-  }
-
-  /**
-   * Returns the value of field 'width'.
-   * 
-   * @return the value of field 'Width'.
-   */
-  public int getWidth()
-  {
-    return this._width;
-  }
-
-  /**
-   * Returns the value of field 'wrapAlignment'.
-   * 
-   * @return the value of field 'WrapAlignment'.
-   */
-  public boolean getWrapAlignment()
-  {
-    return this._wrapAlignment;
-  }
-
-  /**
-   * Returns the value of field 'xpos'.
-   * 
-   * @return the value of field 'Xpos'.
-   */
-  public int getXpos()
-  {
-    return this._xpos;
-  }
-
-  /**
-   * Returns the value of field 'ypos'.
-   * 
-   * @return the value of field 'Ypos'.
-   */
-  public int getYpos()
-  {
-    return this._ypos;
-  }
-
-  /**
-   * Method hasConsThreshold.
-   * 
-   * @return true if at least one ConsThreshold has been added
-   */
-  public boolean hasConsThreshold()
-  {
-    return this._has_consThreshold;
-  }
-
-  /**
-   * Method hasConservationSelected.
-   * 
-   * @return true if at least one ConservationSelected has been added
-   */
-  public boolean hasConservationSelected()
-  {
-    return this._has_conservationSelected;
-  }
-
-  /**
-   * Method hasFontSize.
-   * 
-   * @return true if at least one FontSize has been added
-   */
-  public boolean hasFontSize()
-  {
-    return this._has_fontSize;
-  }
-
-  /**
-   * Method hasFontStyle.
-   * 
-   * @return true if at least one FontStyle has been added
-   */
-  public boolean hasFontStyle()
-  {
-    return this._has_fontStyle;
-  }
-
-  /**
-   * Method hasHeight.
-   * 
-   * @return true if at least one Height has been added
-   */
-  public boolean hasHeight()
-  {
-    return this._has_height;
-  }
-
-  /**
-   * Method hasPidSelected.
-   * 
-   * @return true if at least one PidSelected has been added
-   */
-  public boolean hasPidSelected()
-  {
-    return this._has_pidSelected;
-  }
-
-  /**
-   * Method hasPidThreshold.
-   * 
-   * @return true if at least one PidThreshold has been added
-   */
-  public boolean hasPidThreshold()
-  {
-    return this._has_pidThreshold;
-  }
-
-  /**
-   * Method hasRenderGaps.
-   * 
-   * @return true if at least one RenderGaps has been added
-   */
-  public boolean hasRenderGaps()
-  {
-    return this._has_renderGaps;
-  }
-
-  /**
-   * Method hasShowAnnotation.
-   * 
-   * @return true if at least one ShowAnnotation has been added
-   */
-  public boolean hasShowAnnotation()
-  {
-    return this._has_showAnnotation;
-  }
-
-  /**
-   * Method hasShowBoxes.
-   * 
-   * @return true if at least one ShowBoxes has been added
-   */
-  public boolean hasShowBoxes()
-  {
-    return this._has_showBoxes;
-  }
-
-  /**
-   * Method hasShowColourText.
-   * 
-   * @return true if at least one ShowColourText has been added
-   */
-  public boolean hasShowColourText()
-  {
-    return this._has_showColourText;
-  }
-
-  /**
-   * Method hasShowConservation.
-   * 
-   * @return true if at least one ShowConservation has been added
-   */
-  public boolean hasShowConservation()
-  {
-    return this._has_showConservation;
-  }
-
-  /**
-   * Method hasShowFullId.
-   * 
-   * @return true if at least one ShowFullId has been added
-   */
-  public boolean hasShowFullId()
-  {
-    return this._has_showFullId;
-  }
-
-  /**
-   * Method hasShowIdentity.
-   * 
-   * @return true if at least one ShowIdentity has been added
-   */
-  public boolean hasShowIdentity()
-  {
-    return this._has_showIdentity;
-  }
-
-  /**
-   * Method hasShowQuality.
-   * 
-   * @return true if at least one ShowQuality has been added
-   */
-  public boolean hasShowQuality()
-  {
-    return this._has_showQuality;
-  }
-
-  /**
-   * Method hasShowSequenceFeatures.
-   * 
-   * @return true if at least one ShowSequenceFeatures has been added
-   */
-  public boolean hasShowSequenceFeatures()
-  {
-    return this._has_showSequenceFeatures;
-  }
-
-  /**
-   * Method hasShowText.
-   * 
-   * @return true if at least one ShowText has been added
-   */
-  public boolean hasShowText()
-  {
-    return this._has_showText;
-  }
-
-  /**
-   * Method hasStartRes.
-   * 
-   * @return true if at least one StartRes has been added
-   */
-  public boolean hasStartRes()
-  {
-    return this._has_startRes;
-  }
-
-  /**
-   * Method hasStartSeq.
-   * 
-   * @return true if at least one StartSeq has been added
-   */
-  public boolean hasStartSeq()
-  {
-    return this._has_startSeq;
-  }
-
-  /**
-   * Method hasWidth.
-   * 
-   * @return true if at least one Width has been added
-   */
-  public boolean hasWidth()
-  {
-    return this._has_width;
-  }
-
-  /**
-   * Method hasWrapAlignment.
-   * 
-   * @return true if at least one WrapAlignment has been added
-   */
-  public boolean hasWrapAlignment()
-  {
-    return this._has_wrapAlignment;
-  }
-
-  /**
-   * Method hasXpos.
-   * 
-   * @return true if at least one Xpos has been added
-   */
-  public boolean hasXpos()
-  {
-    return this._has_xpos;
-  }
-
-  /**
-   * Method hasYpos.
-   * 
-   * @return true if at least one Ypos has been added
-   */
-  public boolean hasYpos()
-  {
-    return this._has_ypos;
-  }
-
-  /**
-   * Returns the value of field 'conservationSelected'.
-   * 
-   * @return the value of field 'ConservationSelected'.
-   */
-  public boolean isConservationSelected()
-  {
-    return this._conservationSelected;
-  }
-
-  /**
-   * Returns the value of field 'pidSelected'.
-   * 
-   * @return the value of field 'PidSelected'.
-   */
-  public boolean isPidSelected()
-  {
-    return this._pidSelected;
-  }
-
-  /**
-   * Returns the value of field 'renderGaps'.
-   * 
-   * @return the value of field 'RenderGaps'.
-   */
-  public boolean isRenderGaps()
-  {
-    return this._renderGaps;
-  }
-
-  /**
-   * Returns the value of field 'showAnnotation'.
-   * 
-   * @return the value of field 'ShowAnnotation'.
-   */
-  public boolean isShowAnnotation()
-  {
-    return this._showAnnotation;
-  }
-
-  /**
-   * Returns the value of field 'showBoxes'.
-   * 
-   * @return the value of field 'ShowBoxes'.
-   */
-  public boolean isShowBoxes()
-  {
-    return this._showBoxes;
-  }
-
-  /**
-   * Returns the value of field 'showColourText'.
-   * 
-   * @return the value of field 'ShowColourText'.
-   */
-  public boolean isShowColourText()
-  {
-    return this._showColourText;
-  }
-
-  /**
-   * Returns the value of field 'showConservation'.
-   * 
-   * @return the value of field 'ShowConservation'.
-   */
-  public boolean isShowConservation()
-  {
-    return this._showConservation;
-  }
-
-  /**
-   * Returns the value of field 'showFullId'.
-   * 
-   * @return the value of field 'ShowFullId'.
-   */
-  public boolean isShowFullId()
-  {
-    return this._showFullId;
-  }
-
-  /**
-   * Returns the value of field 'showIdentity'.
-   * 
-   * @return the value of field 'ShowIdentity'.
-   */
-  public boolean isShowIdentity()
-  {
-    return this._showIdentity;
-  }
-
-  /**
-   * Returns the value of field 'showQuality'.
-   * 
-   * @return the value of field 'ShowQuality'.
-   */
-  public boolean isShowQuality()
-  {
-    return this._showQuality;
-  }
-
-  /**
-   * Returns the value of field 'showSequenceFeatures'.
-   * 
-   * @return the value of field 'ShowSequenceFeatures'.
-   */
-  public boolean isShowSequenceFeatures()
-  {
-    return this._showSequenceFeatures;
-  }
-
-  /**
-   * Returns the value of field 'showText'.
-   * 
-   * @return the value of field 'ShowText'.
-   */
-  public boolean isShowText()
-  {
-    return this._showText;
-  }
-
-  /**
-   * Method isValid.
-   * 
-   * @return true if this object is valid according to the schema
-   */
-  public boolean isValid()
-  {
-    try
-    {
-      validate();
-    } catch (org.exolab.castor.xml.ValidationException vex)
-    {
-      return false;
-    }
-    return true;
-  }
-
-  /**
-   * Returns the value of field 'wrapAlignment'.
-   * 
-   * @return the value of field 'WrapAlignment'.
-   */
-  public boolean isWrapAlignment()
-  {
-    return this._wrapAlignment;
-  }
-
-  /**
-   * 
-   * 
-   * @param out
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void marshal(final java.io.Writer out)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, out);
-  }
-
-  /**
-   * 
-   * 
-   * @param handler
-   * @throws java.io.IOException
-   *           if an IOException occurs during marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   */
-  public void marshal(final org.xml.sax.ContentHandler handler)
-          throws java.io.IOException,
-          org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    Marshaller.marshal(this, handler);
-  }
-
-  /**
-   * Sets the value of field 'bgColour'.
-   * 
-   * @param bgColour
-   *          the value of field 'bgColour'.
-   */
-  public void setBgColour(final java.lang.String bgColour)
-  {
-    this._bgColour = bgColour;
-  }
-
-  /**
-   * Sets the value of field 'consThreshold'.
-   * 
-   * @param consThreshold
-   *          the value of field 'consThreshold'.
-   */
-  public void setConsThreshold(final int consThreshold)
-  {
-    this._consThreshold = consThreshold;
-    this._has_consThreshold = true;
-  }
-
-  /**
-   * Sets the value of field 'conservationSelected'.
-   * 
-   * @param conservationSelected
-   *          the value of field 'conservationSelected'.
-   */
-  public void setConservationSelected(final boolean conservationSelected)
-  {
-    this._conservationSelected = conservationSelected;
-    this._has_conservationSelected = true;
-  }
-
-  /**
-   * Sets the value of field 'fontName'.
-   * 
-   * @param fontName
-   *          the value of field 'fontName'.
-   */
-  public void setFontName(final java.lang.String fontName)
-  {
-    this._fontName = fontName;
-  }
-
-  /**
-   * Sets the value of field 'fontSize'.
-   * 
-   * @param fontSize
-   *          the value of field 'fontSize'.
-   */
-  public void setFontSize(final int fontSize)
-  {
-    this._fontSize = fontSize;
-    this._has_fontSize = true;
-  }
-
-  /**
-   * Sets the value of field 'fontStyle'.
-   * 
-   * @param fontStyle
-   *          the value of field 'fontStyle'.
-   */
-  public void setFontStyle(final int fontStyle)
-  {
-    this._fontStyle = fontStyle;
-    this._has_fontStyle = true;
-  }
-
-  /**
-   * Sets the value of field 'height'.
-   * 
-   * @param height
-   *          the value of field 'height'.
-   */
-  public void setHeight(final int height)
-  {
-    this._height = height;
-    this._has_height = true;
-  }
-
-  /**
-   * Sets the value of field 'pidSelected'.
-   * 
-   * @param pidSelected
-   *          the value of field 'pidSelected'.
-   */
-  public void setPidSelected(final boolean pidSelected)
-  {
-    this._pidSelected = pidSelected;
-    this._has_pidSelected = true;
-  }
-
-  /**
-   * Sets the value of field 'pidThreshold'.
-   * 
-   * @param pidThreshold
-   *          the value of field 'pidThreshold'.
-   */
-  public void setPidThreshold(final int pidThreshold)
-  {
-    this._pidThreshold = pidThreshold;
-    this._has_pidThreshold = true;
-  }
-
-  /**
-   * Sets the value of field 'renderGaps'.
-   * 
-   * @param renderGaps
-   *          the value of field 'renderGaps'.
-   */
-  public void setRenderGaps(final boolean renderGaps)
-  {
-    this._renderGaps = renderGaps;
-    this._has_renderGaps = true;
-  }
-
-  /**
-   * Sets the value of field 'showAnnotation'.
-   * 
-   * @param showAnnotation
-   *          the value of field 'showAnnotation'.
-   */
-  public void setShowAnnotation(final boolean showAnnotation)
-  {
-    this._showAnnotation = showAnnotation;
-    this._has_showAnnotation = true;
-  }
-
-  /**
-   * Sets the value of field 'showBoxes'.
-   * 
-   * @param showBoxes
-   *          the value of field 'showBoxes'.
-   */
-  public void setShowBoxes(final boolean showBoxes)
-  {
-    this._showBoxes = showBoxes;
-    this._has_showBoxes = true;
-  }
-
-  /**
-   * Sets the value of field 'showColourText'.
-   * 
-   * @param showColourText
-   *          the value of field 'showColourText'.
-   */
-  public void setShowColourText(final boolean showColourText)
-  {
-    this._showColourText = showColourText;
-    this._has_showColourText = true;
-  }
-
-  /**
-   * Sets the value of field 'showConservation'.
-   * 
-   * @param showConservation
-   *          the value of field 'showConservation'
-   */
-  public void setShowConservation(final boolean showConservation)
-  {
-    this._showConservation = showConservation;
-    this._has_showConservation = true;
-  }
-
-  /**
-   * Sets the value of field 'showFullId'.
-   * 
-   * @param showFullId
-   *          the value of field 'showFullId'.
-   */
-  public void setShowFullId(final boolean showFullId)
-  {
-    this._showFullId = showFullId;
-    this._has_showFullId = true;
-  }
-
-  /**
-   * Sets the value of field 'showIdentity'.
-   * 
-   * @param showIdentity
-   *          the value of field 'showIdentity'.
-   */
-  public void setShowIdentity(final boolean showIdentity)
-  {
-    this._showIdentity = showIdentity;
-    this._has_showIdentity = true;
-  }
-
-  /**
-   * Sets the value of field 'showQuality'.
-   * 
-   * @param showQuality
-   *          the value of field 'showQuality'.
-   */
-  public void setShowQuality(final boolean showQuality)
-  {
-    this._showQuality = showQuality;
-    this._has_showQuality = true;
-  }
-
-  /**
-   * Sets the value of field 'showSequenceFeatures'.
-   * 
-   * @param showSequenceFeatures
-   *          the value of field 'showSequenceFeatures'.
-   */
-  public void setShowSequenceFeatures(final boolean showSequenceFeatures)
-  {
-    this._showSequenceFeatures = showSequenceFeatures;
-    this._has_showSequenceFeatures = true;
-  }
-
-  /**
-   * Sets the value of field 'showText'.
-   * 
-   * @param showText
-   *          the value of field 'showText'.
-   */
-  public void setShowText(final boolean showText)
-  {
-    this._showText = showText;
-    this._has_showText = true;
-  }
-
-  /**
-   * Sets the value of field 'startRes'.
-   * 
-   * @param startRes
-   *          the value of field 'startRes'.
-   */
-  public void setStartRes(final int startRes)
-  {
-    this._startRes = startRes;
-    this._has_startRes = true;
-  }
-
-  /**
-   * Sets the value of field 'startSeq'.
-   * 
-   * @param startSeq
-   *          the value of field 'startSeq'.
-   */
-  public void setStartSeq(final int startSeq)
-  {
-    this._startSeq = startSeq;
-    this._has_startSeq = true;
-  }
-
-  /**
-   * Sets the value of field 'title'.
-   * 
-   * @param title
-   *          the value of field 'title'.
-   */
-  public void setTitle(final java.lang.String title)
-  {
-    this._title = title;
-  }
-
-  /**
-   * Sets the value of field 'width'.
-   * 
-   * @param width
-   *          the value of field 'width'.
-   */
-  public void setWidth(final int width)
-  {
-    this._width = width;
-    this._has_width = true;
-  }
-
-  /**
-   * Sets the value of field 'wrapAlignment'.
-   * 
-   * @param wrapAlignment
-   *          the value of field 'wrapAlignment'.
-   */
-  public void setWrapAlignment(final boolean wrapAlignment)
-  {
-    this._wrapAlignment = wrapAlignment;
-    this._has_wrapAlignment = true;
-  }
-
-  /**
-   * Sets the value of field 'xpos'.
-   * 
-   * @param xpos
-   *          the value of field 'xpos'.
-   */
-  public void setXpos(final int xpos)
-  {
-    this._xpos = xpos;
-    this._has_xpos = true;
-  }
-
-  /**
-   * Sets the value of field 'ypos'.
-   * 
-   * @param ypos
-   *          the value of field 'ypos'.
-   */
-  public void setYpos(final int ypos)
-  {
-    this._ypos = ypos;
-    this._has_ypos = true;
-  }
-
-  /**
-   * Method unmarshal.
-   * 
-   * @param reader
-   * @throws org.exolab.castor.xml.MarshalException
-   *           if object is null or if any SAXException is thrown during
-   *           marshaling
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   * @return the unmarshaled jalview.binding.Viewport
-   */
-  public static jalview.binding.Viewport unmarshal(
-          final java.io.Reader reader)
-          throws org.exolab.castor.xml.MarshalException,
-          org.exolab.castor.xml.ValidationException
-  {
-    return (jalview.binding.Viewport) Unmarshaller.unmarshal(
-            jalview.binding.Viewport.class, reader);
-  }
-
-  /**
-   * 
-   * 
-   * @throws org.exolab.castor.xml.ValidationException
-   *           if this object is an invalid instance according to the schema
-   */
-  public void validate() throws org.exolab.castor.xml.ValidationException
-  {
-    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
-    validator.validate(this);
-  }
+    public java.lang.String getTitle(
+    ) {
+        return this._title;
+    }
+
+    /**
+     * Returns the value of field 'width'.
+     * 
+     * @return the value of field 'Width'.
+     */
+    public int getWidth(
+    ) {
+        return this._width;
+    }
+
+    /**
+     * Returns the value of field 'wrapAlignment'.
+     * 
+     * @return the value of field 'WrapAlignment'.
+     */
+    public boolean getWrapAlignment(
+    ) {
+        return this._wrapAlignment;
+    }
+
+    /**
+     * Returns the value of field 'xpos'.
+     * 
+     * @return the value of field 'Xpos'.
+     */
+    public int getXpos(
+    ) {
+        return this._xpos;
+    }
+
+    /**
+     * Returns the value of field 'ypos'.
+     * 
+     * @return the value of field 'Ypos'.
+     */
+    public int getYpos(
+    ) {
+        return this._ypos;
+    }
+
+    /**
+     * Method hasConsThreshold.
+     * 
+     * @return true if at least one ConsThreshold has been added
+     */
+    public boolean hasConsThreshold(
+    ) {
+        return this._has_consThreshold;
+    }
+
+    /**
+     * Method hasConservationSelected.
+     * 
+     * @return true if at least one ConservationSelected has been
+     * added
+     */
+    public boolean hasConservationSelected(
+    ) {
+        return this._has_conservationSelected;
+    }
+
+    /**
+     * Method hasFontSize.
+     * 
+     * @return true if at least one FontSize has been added
+     */
+    public boolean hasFontSize(
+    ) {
+        return this._has_fontSize;
+    }
+
+    /**
+     * Method hasFontStyle.
+     * 
+     * @return true if at least one FontStyle has been added
+     */
+    public boolean hasFontStyle(
+    ) {
+        return this._has_fontStyle;
+    }
+
+    /**
+     * Method hasHeight.
+     * 
+     * @return true if at least one Height has been added
+     */
+    public boolean hasHeight(
+    ) {
+        return this._has_height;
+    }
+
+    /**
+     * Method hasPidSelected.
+     * 
+     * @return true if at least one PidSelected has been added
+     */
+    public boolean hasPidSelected(
+    ) {
+        return this._has_pidSelected;
+    }
+
+    /**
+     * Method hasPidThreshold.
+     * 
+     * @return true if at least one PidThreshold has been added
+     */
+    public boolean hasPidThreshold(
+    ) {
+        return this._has_pidThreshold;
+    }
+
+    /**
+     * Method hasRenderGaps.
+     * 
+     * @return true if at least one RenderGaps has been added
+     */
+    public boolean hasRenderGaps(
+    ) {
+        return this._has_renderGaps;
+    }
+
+    /**
+     * Method hasShowAnnotation.
+     * 
+     * @return true if at least one ShowAnnotation has been added
+     */
+    public boolean hasShowAnnotation(
+    ) {
+        return this._has_showAnnotation;
+    }
+
+    /**
+     * Method hasShowBoxes.
+     * 
+     * @return true if at least one ShowBoxes has been added
+     */
+    public boolean hasShowBoxes(
+    ) {
+        return this._has_showBoxes;
+    }
+
+    /**
+     * Method hasShowColourText.
+     * 
+     * @return true if at least one ShowColourText has been added
+     */
+    public boolean hasShowColourText(
+    ) {
+        return this._has_showColourText;
+    }
+
+    /**
+     * Method hasShowConservation.
+     * 
+     * @return true if at least one ShowConservation has been added
+     */
+    public boolean hasShowConservation(
+    ) {
+        return this._has_showConservation;
+    }
+
+    /**
+     * Method hasShowFullId.
+     * 
+     * @return true if at least one ShowFullId has been added
+     */
+    public boolean hasShowFullId(
+    ) {
+        return this._has_showFullId;
+    }
+
+    /**
+     * Method hasShowIdentity.
+     * 
+     * @return true if at least one ShowIdentity has been added
+     */
+    public boolean hasShowIdentity(
+    ) {
+        return this._has_showIdentity;
+    }
+
+    /**
+     * Method hasShowQuality.
+     * 
+     * @return true if at least one ShowQuality has been added
+     */
+    public boolean hasShowQuality(
+    ) {
+        return this._has_showQuality;
+    }
+
+    /**
+     * Method hasShowSequenceFeatures.
+     * 
+     * @return true if at least one ShowSequenceFeatures has been
+     * added
+     */
+    public boolean hasShowSequenceFeatures(
+    ) {
+        return this._has_showSequenceFeatures;
+    }
+
+    /**
+     * Method hasShowText.
+     * 
+     * @return true if at least one ShowText has been added
+     */
+    public boolean hasShowText(
+    ) {
+        return this._has_showText;
+    }
+
+    /**
+     * Method hasStartRes.
+     * 
+     * @return true if at least one StartRes has been added
+     */
+    public boolean hasStartRes(
+    ) {
+        return this._has_startRes;
+    }
+
+    /**
+     * Method hasStartSeq.
+     * 
+     * @return true if at least one StartSeq has been added
+     */
+    public boolean hasStartSeq(
+    ) {
+        return this._has_startSeq;
+    }
+
+    /**
+     * Method hasWidth.
+     * 
+     * @return true if at least one Width has been added
+     */
+    public boolean hasWidth(
+    ) {
+        return this._has_width;
+    }
+
+    /**
+     * Method hasWrapAlignment.
+     * 
+     * @return true if at least one WrapAlignment has been added
+     */
+    public boolean hasWrapAlignment(
+    ) {
+        return this._has_wrapAlignment;
+    }
+
+    /**
+     * Method hasXpos.
+     * 
+     * @return true if at least one Xpos has been added
+     */
+    public boolean hasXpos(
+    ) {
+        return this._has_xpos;
+    }
+
+    /**
+     * Method hasYpos.
+     * 
+     * @return true if at least one Ypos has been added
+     */
+    public boolean hasYpos(
+    ) {
+        return this._has_ypos;
+    }
+
+    /**
+     * Returns the value of field 'conservationSelected'.
+     * 
+     * @return the value of field 'ConservationSelected'.
+     */
+    public boolean isConservationSelected(
+    ) {
+        return this._conservationSelected;
+    }
+
+    /**
+     * Returns the value of field 'pidSelected'.
+     * 
+     * @return the value of field 'PidSelected'.
+     */
+    public boolean isPidSelected(
+    ) {
+        return this._pidSelected;
+    }
+
+    /**
+     * Returns the value of field 'renderGaps'.
+     * 
+     * @return the value of field 'RenderGaps'.
+     */
+    public boolean isRenderGaps(
+    ) {
+        return this._renderGaps;
+    }
+
+    /**
+     * Returns the value of field 'showAnnotation'.
+     * 
+     * @return the value of field 'ShowAnnotation'.
+     */
+    public boolean isShowAnnotation(
+    ) {
+        return this._showAnnotation;
+    }
+
+    /**
+     * Returns the value of field 'showBoxes'.
+     * 
+     * @return the value of field 'ShowBoxes'.
+     */
+    public boolean isShowBoxes(
+    ) {
+        return this._showBoxes;
+    }
+
+    /**
+     * Returns the value of field 'showColourText'.
+     * 
+     * @return the value of field 'ShowColourText'.
+     */
+    public boolean isShowColourText(
+    ) {
+        return this._showColourText;
+    }
+
+    /**
+     * Returns the value of field 'showConservation'.
+     * 
+     * @return the value of field 'ShowConservation'.
+     */
+    public boolean isShowConservation(
+    ) {
+        return this._showConservation;
+    }
+
+    /**
+     * Returns the value of field 'showFullId'.
+     * 
+     * @return the value of field 'ShowFullId'.
+     */
+    public boolean isShowFullId(
+    ) {
+        return this._showFullId;
+    }
+
+    /**
+     * Returns the value of field 'showIdentity'.
+     * 
+     * @return the value of field 'ShowIdentity'.
+     */
+    public boolean isShowIdentity(
+    ) {
+        return this._showIdentity;
+    }
+
+    /**
+     * Returns the value of field 'showQuality'.
+     * 
+     * @return the value of field 'ShowQuality'.
+     */
+    public boolean isShowQuality(
+    ) {
+        return this._showQuality;
+    }
+
+    /**
+     * Returns the value of field 'showSequenceFeatures'.
+     * 
+     * @return the value of field 'ShowSequenceFeatures'.
+     */
+    public boolean isShowSequenceFeatures(
+    ) {
+        return this._showSequenceFeatures;
+    }
+
+    /**
+     * Returns the value of field 'showText'.
+     * 
+     * @return the value of field 'ShowText'.
+     */
+    public boolean isShowText(
+    ) {
+        return this._showText;
+    }
+
+    /**
+     * Method isValid.
+     * 
+     * @return true if this object is valid according to the schema
+     */
+    public boolean isValid(
+    ) {
+        try {
+            validate();
+        } catch (org.exolab.castor.xml.ValidationException vex) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the value of field 'wrapAlignment'.
+     * 
+     * @return the value of field 'WrapAlignment'.
+     */
+    public boolean isWrapAlignment(
+    ) {
+        return this._wrapAlignment;
+    }
+
+    /**
+     * 
+     * 
+     * @param out
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void marshal(
+            final java.io.Writer out)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, out);
+    }
+
+    /**
+     * 
+     * 
+     * @param handler
+     * @throws java.io.IOException if an IOException occurs during
+     * marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     */
+    public void marshal(
+            final org.xml.sax.ContentHandler handler)
+    throws java.io.IOException, org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        Marshaller.marshal(this, handler);
+    }
+
+    /**
+     * Sets the value of field 'bgColour'.
+     * 
+     * @param bgColour the value of field 'bgColour'.
+     */
+    public void setBgColour(
+            final java.lang.String bgColour) {
+        this._bgColour = bgColour;
+    }
+
+    /**
+     * Sets the value of field 'consThreshold'.
+     * 
+     * @param consThreshold the value of field 'consThreshold'.
+     */
+    public void setConsThreshold(
+            final int consThreshold) {
+        this._consThreshold = consThreshold;
+        this._has_consThreshold = true;
+    }
+
+    /**
+     * Sets the value of field 'conservationSelected'.
+     * 
+     * @param conservationSelected the value of field
+     * 'conservationSelected'.
+     */
+    public void setConservationSelected(
+            final boolean conservationSelected) {
+        this._conservationSelected = conservationSelected;
+        this._has_conservationSelected = true;
+    }
+
+    /**
+     * Sets the value of field 'fontName'.
+     * 
+     * @param fontName the value of field 'fontName'.
+     */
+    public void setFontName(
+            final java.lang.String fontName) {
+        this._fontName = fontName;
+    }
+
+    /**
+     * Sets the value of field 'fontSize'.
+     * 
+     * @param fontSize the value of field 'fontSize'.
+     */
+    public void setFontSize(
+            final int fontSize) {
+        this._fontSize = fontSize;
+        this._has_fontSize = true;
+    }
+
+    /**
+     * Sets the value of field 'fontStyle'.
+     * 
+     * @param fontStyle the value of field 'fontStyle'.
+     */
+    public void setFontStyle(
+            final int fontStyle) {
+        this._fontStyle = fontStyle;
+        this._has_fontStyle = true;
+    }
+
+    /**
+     * Sets the value of field 'height'.
+     * 
+     * @param height the value of field 'height'.
+     */
+    public void setHeight(
+            final int height) {
+        this._height = height;
+        this._has_height = true;
+    }
+
+    /**
+     * Sets the value of field 'pidSelected'.
+     * 
+     * @param pidSelected the value of field 'pidSelected'.
+     */
+    public void setPidSelected(
+            final boolean pidSelected) {
+        this._pidSelected = pidSelected;
+        this._has_pidSelected = true;
+    }
+
+    /**
+     * Sets the value of field 'pidThreshold'.
+     * 
+     * @param pidThreshold the value of field 'pidThreshold'.
+     */
+    public void setPidThreshold(
+            final int pidThreshold) {
+        this._pidThreshold = pidThreshold;
+        this._has_pidThreshold = true;
+    }
+
+    /**
+     * Sets the value of field 'renderGaps'.
+     * 
+     * @param renderGaps the value of field 'renderGaps'.
+     */
+    public void setRenderGaps(
+            final boolean renderGaps) {
+        this._renderGaps = renderGaps;
+        this._has_renderGaps = true;
+    }
+
+    /**
+     * Sets the value of field 'showAnnotation'.
+     * 
+     * @param showAnnotation the value of field 'showAnnotation'.
+     */
+    public void setShowAnnotation(
+            final boolean showAnnotation) {
+        this._showAnnotation = showAnnotation;
+        this._has_showAnnotation = true;
+    }
+
+    /**
+     * Sets the value of field 'showBoxes'.
+     * 
+     * @param showBoxes the value of field 'showBoxes'.
+     */
+    public void setShowBoxes(
+            final boolean showBoxes) {
+        this._showBoxes = showBoxes;
+        this._has_showBoxes = true;
+    }
+
+    /**
+     * Sets the value of field 'showColourText'.
+     * 
+     * @param showColourText the value of field 'showColourText'.
+     */
+    public void setShowColourText(
+            final boolean showColourText) {
+        this._showColourText = showColourText;
+        this._has_showColourText = true;
+    }
+
+    /**
+     * Sets the value of field 'showConservation'.
+     * 
+     * @param showConservation the value of field 'showConservation'
+     */
+    public void setShowConservation(
+            final boolean showConservation) {
+        this._showConservation = showConservation;
+        this._has_showConservation = true;
+    }
+
+    /**
+     * Sets the value of field 'showFullId'.
+     * 
+     * @param showFullId the value of field 'showFullId'.
+     */
+    public void setShowFullId(
+            final boolean showFullId) {
+        this._showFullId = showFullId;
+        this._has_showFullId = true;
+    }
+
+    /**
+     * Sets the value of field 'showIdentity'.
+     * 
+     * @param showIdentity the value of field 'showIdentity'.
+     */
+    public void setShowIdentity(
+            final boolean showIdentity) {
+        this._showIdentity = showIdentity;
+        this._has_showIdentity = true;
+    }
+
+    /**
+     * Sets the value of field 'showQuality'.
+     * 
+     * @param showQuality the value of field 'showQuality'.
+     */
+    public void setShowQuality(
+            final boolean showQuality) {
+        this._showQuality = showQuality;
+        this._has_showQuality = true;
+    }
+
+    /**
+     * Sets the value of field 'showSequenceFeatures'.
+     * 
+     * @param showSequenceFeatures the value of field
+     * 'showSequenceFeatures'.
+     */
+    public void setShowSequenceFeatures(
+            final boolean showSequenceFeatures) {
+        this._showSequenceFeatures = showSequenceFeatures;
+        this._has_showSequenceFeatures = true;
+    }
+
+    /**
+     * Sets the value of field 'showText'.
+     * 
+     * @param showText the value of field 'showText'.
+     */
+    public void setShowText(
+            final boolean showText) {
+        this._showText = showText;
+        this._has_showText = true;
+    }
+
+    /**
+     * Sets the value of field 'startRes'.
+     * 
+     * @param startRes the value of field 'startRes'.
+     */
+    public void setStartRes(
+            final int startRes) {
+        this._startRes = startRes;
+        this._has_startRes = true;
+    }
+
+    /**
+     * Sets the value of field 'startSeq'.
+     * 
+     * @param startSeq the value of field 'startSeq'.
+     */
+    public void setStartSeq(
+            final int startSeq) {
+        this._startSeq = startSeq;
+        this._has_startSeq = true;
+    }
+
+    /**
+     * Sets the value of field 'title'.
+     * 
+     * @param title the value of field 'title'.
+     */
+    public void setTitle(
+            final java.lang.String title) {
+        this._title = title;
+    }
+
+    /**
+     * Sets the value of field 'width'.
+     * 
+     * @param width the value of field 'width'.
+     */
+    public void setWidth(
+            final int width) {
+        this._width = width;
+        this._has_width = true;
+    }
+
+    /**
+     * Sets the value of field 'wrapAlignment'.
+     * 
+     * @param wrapAlignment the value of field 'wrapAlignment'.
+     */
+    public void setWrapAlignment(
+            final boolean wrapAlignment) {
+        this._wrapAlignment = wrapAlignment;
+        this._has_wrapAlignment = true;
+    }
+
+    /**
+     * Sets the value of field 'xpos'.
+     * 
+     * @param xpos the value of field 'xpos'.
+     */
+    public void setXpos(
+            final int xpos) {
+        this._xpos = xpos;
+        this._has_xpos = true;
+    }
+
+    /**
+     * Sets the value of field 'ypos'.
+     * 
+     * @param ypos the value of field 'ypos'.
+     */
+    public void setYpos(
+            final int ypos) {
+        this._ypos = ypos;
+        this._has_ypos = true;
+    }
+
+    /**
+     * Method unmarshal.
+     * 
+     * @param reader
+     * @throws org.exolab.castor.xml.MarshalException if object is
+     * null or if any SAXException is thrown during marshaling
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     * @return the unmarshaled jalview.binding.Viewport
+     */
+    public static jalview.binding.Viewport unmarshal(
+            final java.io.Reader reader)
+    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
+        return (jalview.binding.Viewport) Unmarshaller.unmarshal(jalview.binding.Viewport.class, reader);
+    }
+
+    /**
+     * 
+     * 
+     * @throws org.exolab.castor.xml.ValidationException if this
+     * object is an invalid instance according to the schema
+     */
+    public void validate(
+    )
+    throws org.exolab.castor.xml.ValidationException {
+        org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+        validator.validate(this);
+    }
 
 }
index 972b6ab..3be32bb 100644 (file)
@@ -33,6 +33,7 @@ import jalview.datamodel.SequenceCollectionI;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.io.FeaturesFile;
 import jalview.util.MessageManager;
 
 import java.awt.Color;
@@ -379,4 +380,38 @@ public class AlignViewController implements AlignViewControllerI
   {
     sortBy(typ, "Sort by Feature Score", AlignmentSorter.FEATURE_SCORE);
   }
+
+  @Override
+  public boolean parseFeaturesFile(String file, String protocol,
+          boolean relaxedIdMatching)
+  {
+    boolean featuresFile = false;
+    try
+    {
+      featuresFile = new FeaturesFile(file, protocol).parse(viewport
+              .getAlignment().getDataset(), alignPanel.getFeatureRenderer()
+              .getFeatureColours(), false, relaxedIdMatching);
+    } catch (Exception ex)
+    {
+      ex.printStackTrace();
+    }
+
+    if (featuresFile)
+    {
+      avcg.refreshFeatureUI(true);
+      if (alignPanel.getFeatureRenderer() != null)
+      {
+        // update the min/max ranges where necessary
+        alignPanel.getFeatureRenderer().findAllFeatures(true);
+      }
+      if (avcg.getFeatureSettingsUI() != null)
+      {
+        avcg.getFeatureSettingsUI().discoverAllFeatureData();
+      }
+      alignPanel.paintAlignment(true);
+    }
+
+    return featuresFile;
+
+  }
 }
index ebf4958..7dd1399 100644 (file)
@@ -3,7 +3,8 @@ package jalview.controller;
 import jalview.api.FeatureRenderer;
 import jalview.api.FeatureSettingsModelI;
 
-public class FeatureSettingsController implements jalview.api.FeatureSettingsControllerI
+public class FeatureSettingsController // implements
+                                       // jalview.api.FeatureSettingsControllerI
 {
   FeatureSettingsControllerGuiI settingUI;
   FeatureRenderer fr;
diff --git a/src/jalview/datamodel/ASequence.java b/src/jalview/datamodel/ASequence.java
new file mode 100755 (executable)
index 0000000..238fd38
--- /dev/null
@@ -0,0 +1,16 @@
+/**
+ * 
+ */
+package jalview.datamodel;
+
+/**
+ * Metadata for a sequence that may or may not be physically present in Jalview
+ * at the moment
+ * 
+ * @author jprocter
+ *
+ */
+public class ASequence implements ASequenceI
+{
+
+}
diff --git a/src/jalview/datamodel/ASequenceI.java b/src/jalview/datamodel/ASequenceI.java
new file mode 100755 (executable)
index 0000000..481b1e3
--- /dev/null
@@ -0,0 +1,12 @@
+package jalview.datamodel;
+
+/**
+ * interfaces to access the basic metadata for a concrete or virtual sequence
+ * 
+ * @author jprocter
+ *
+ */
+public interface ASequenceI
+{
+
+}
index 0daa3fb..12eb470 100644 (file)
@@ -7,6 +7,8 @@ package jalview.datamodel;
  * 
  * Example: in "G-AT-C-GA" the aligned codons are (0, 2, 3) and (5, 7, 8).
  * 
+ * JBPComment: Is this useful anywhere other than jalview.analysis.Dna ?
+ * 
  * @author gmcarstairs
  *
  */
index d0b2731..eb977bc 100644 (file)
@@ -33,12 +33,12 @@ import jalview.util.MappingUtils;
 public class AlignedCodonFrame
 {
 
-  /*
+  /**
    * tied array of na Sequence objects.
    */
   private SequenceI[] dnaSeqs = null;
 
-  /*
+  /**
    * tied array of Mappings to protein sequence Objects and SequenceI[]
    * aaSeqs=null; MapLists where each maps from the corresponding dnaSeqs
    * element to corresponding aaSeqs element
index 835d7e9..3916b7d 100644 (file)
@@ -1138,7 +1138,7 @@ public class ColumnSelection
    *         profileseq marked as hidden.
    */
   public static ColumnSelection propagateInsertions(SequenceI profileseq,
-          Alignment al, AlignmentView input)
+          AlignmentI al, AlignmentView input)
   {
     int profsqpos = 0;
 
index 9e93444..37bb7a9 100755 (executable)
@@ -37,7 +37,7 @@ import jalview.util.StringUtils;
  * @author $author$
  * @version $Revision$
  */
-public class Sequence implements SequenceI
+public class Sequence extends ASequence implements SequenceI
 {
   SequenceI datasetSequence;
 
@@ -91,20 +91,30 @@ public class Sequence implements SequenceI
    */
   public Sequence(String name, String sequence, int start, int end)
   {
-    this.name = name;
-    this.sequence = sequence.toCharArray();
-    this.start = start;
-    this.end = end;
-    parseId();
-    checkValidRange();
+    initSeqAndName(name, sequence.toCharArray(), start, end);
   }
 
   public Sequence(String name, char[] sequence, int start, int end)
   {
-    this.name = name;
-    this.sequence = sequence;
-    this.start = start;
-    this.end = end;
+    initSeqAndName(name, sequence, start, end);
+  }
+
+  /**
+   * Stage 1 constructor - assign name, sequence, and set start and end fields.
+   * start and end are updated values from name2 if it ends with /start-end
+   * 
+   * @param name2
+   * @param sequence2
+   * @param start2
+   * @param end2
+   */
+  protected void initSeqAndName(String name2, char[] sequence2, int start2,
+          int end2)
+  {
+    this.name = name2;
+    this.sequence = sequence2;
+    this.start = start2;
+    this.end = end2;
     parseId();
     checkValidRange();
   }
@@ -197,7 +207,15 @@ public class Sequence implements SequenceI
    */
   public Sequence(SequenceI seq, AlignmentAnnotation[] alAnnotation)
   {
-    this(seq.getName(), seq.getSequence(), seq.getStart(), seq.getEnd());
+    initSeqFrom(seq, alAnnotation);
+
+  }
+
+  protected void initSeqFrom(SequenceI seq,
+          AlignmentAnnotation[] alAnnotation)
+  {
+    initSeqAndName(seq.getName(), seq.getSequence(), seq.getStart(),
+            seq.getEnd());
     description = seq.getDescription();
     if (seq.getSequenceFeatures() != null)
     {
diff --git a/src/jalview/datamodel/SequenceDummy.java b/src/jalview/datamodel/SequenceDummy.java
new file mode 100644 (file)
index 0000000..4a8c3ee
--- /dev/null
@@ -0,0 +1,32 @@
+package jalview.datamodel;
+
+public class SequenceDummy extends Sequence implements SequenceI
+{
+  public SequenceDummy(String sequenceId)
+  {
+    super(sequenceId, "THISAPLACEHOLDER");
+  }
+
+  private boolean dummy = true;
+  /**
+   * become a proxy for mseq, merging any existing annotation on this sequence
+   * 
+   * @param mseq
+   */
+  public void become(SequenceI mseq)
+  {
+    initSeqFrom(mseq, null);
+    dummy=false;
+  }
+
+  /**
+   * Test if the SequenceDummy has been promoted to a real sequence via
+   * SequenceDummy.become
+   * 
+   * @return true if this is a placeholder and contains no actual sequence data
+   */
+  public boolean isDummy()
+  {
+    return dummy;
+  }
+}
index 28ab82c..1b6498f 100755 (executable)
@@ -302,4 +302,23 @@ public class SequenceFeature
     return begin;
   }
 
+  public int getStrand()
+  {
+    String str;
+    if (otherDetails == null
+            || (str = otherDetails.get("STRAND").toString()) == null)
+    {
+      return 0;
+    }
+    if (str.equals("-"))
+    {
+      return -1;
+    }
+    if (str.equals("+"))
+    {
+      return 1;
+    }
+    return 0;
+  }
+
 }
index 38ae372..f69c8b6 100755 (executable)
@@ -26,12 +26,13 @@ import java.util.Vector;
 import fr.orsay.lri.varna.models.rna.RNA;
 
 /**
- * DOCUMENT ME!
+ * Methods for manipulating a sequence, its metadata and related annotation in
+ * an alignment or dataset.
  * 
  * @author $author$
  * @version $Revision$
  */
-public interface SequenceI
+public interface SequenceI extends ASequenceI
 {
   /**
    * Set the display name for the sequence
diff --git a/src/jalview/gui/AlignExportSettings.java b/src/jalview/gui/AlignExportSettings.java
new file mode 100644 (file)
index 0000000..40128af
--- /dev/null
@@ -0,0 +1,87 @@
+package jalview.gui;
+
+import jalview.api.AlignExportSettingI;
+import jalview.jbgui.GAlignExportSettings;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.JDialog;
+import javax.swing.JInternalFrame;
+import javax.swing.JOptionPane;
+
+@SuppressWarnings("serial")
+public class AlignExportSettings extends GAlignExportSettings implements
+        AlignExportSettingI
+{
+  protected JInternalFrame frame;
+
+  boolean cancelled = false;
+
+  JDialog dialog;
+
+  public AlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols,
+          String alignFileFormat)
+  {
+    super(hasHiddenSeq, hasHiddenCols, alignFileFormat);
+    if (isShowDialog())
+    {
+      JOptionPane pane = new JOptionPane(null, JOptionPane.DEFAULT_OPTION,
+              JOptionPane.DEFAULT_OPTION, null, new Object[]
+              { this });
+      dialog = pane.createDialog(Desktop.desktop, "Export Settings");
+      dialog.pack();
+      dialog.setVisible(true);
+      dialog.setContentPane(this);
+      dialog.validate();
+    }
+  }
+
+
+  public void ok_actionPerformed(ActionEvent e)
+  {
+    cancelled = false;
+    dialog.setVisible(false);
+  }
+
+  public void cancel_actionPerformed(ActionEvent e)
+  {
+    cancelled = true;
+    dialog.setVisible(false);
+  }
+
+  @Override
+  public boolean isExportHiddenSequences()
+  {
+    return chkHiddenSeqs.isSelected();
+  }
+
+  @Override
+  public boolean isExportHiddenColumns()
+  {
+    return chkHiddenCols.isSelected();
+  }
+
+  @Override
+  public boolean isExportAnnotations()
+  {
+    return chkExportAnnots.isSelected();
+  }
+
+  @Override
+  public boolean isExportFeatures()
+  {
+    return chkExportFeats.isSelected();
+  }
+
+  @Override
+  public boolean isExportGroups()
+  {
+    return chkExportGrps.isSelected();
+  }
+
+  public boolean isCancelled()
+  {
+    return cancelled;
+  }
+
+}
index 9ad126f..07ce23c 100644 (file)
  */
 package jalview.gui;
 
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Rectangle;
-import java.awt.Toolkit;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.StringSelection;
-import java.awt.datatransfer.Transferable;
-import java.awt.dnd.DnDConstants;
-import java.awt.dnd.DropTargetDragEvent;
-import java.awt.dnd.DropTargetDropEvent;
-import java.awt.dnd.DropTargetEvent;
-import java.awt.dnd.DropTargetListener;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.print.PageFormat;
-import java.awt.print.PrinterJob;
-import java.beans.PropertyChangeEvent;
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Deque;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JEditorPane;
-import javax.swing.JInternalFrame;
-import javax.swing.JLayeredPane;
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JRadioButtonMenuItem;
-import javax.swing.JScrollPane;
-import javax.swing.SwingUtilities;
-
 import jalview.analysis.AAFrequency;
 import jalview.analysis.AlignmentSorter;
 import jalview.analysis.AlignmentUtils;
@@ -78,6 +32,7 @@ import jalview.api.AlignViewControllerGuiI;
 import jalview.api.AlignViewControllerI;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
+import jalview.api.FeatureSettingsControllerI;
 import jalview.api.SplitContainerI;
 import jalview.api.ViewStyleI;
 import jalview.api.analysis.ScoreModelI;
@@ -107,7 +62,6 @@ import jalview.gui.ViewSelectionMenu.ViewSetProvider;
 import jalview.io.AlignmentProperties;
 import jalview.io.AnnotationFile;
 import jalview.io.BioJsHTMLOutput;
-import jalview.io.FeaturesFile;
 import jalview.io.FileLoader;
 import jalview.io.FormatAdapter;
 import jalview.io.HtmlSvgOutput;
@@ -144,6 +98,52 @@ import jalview.ws.jws2.Jws2Discoverer;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.seqfetcher.DbSourceProxy;
 
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.print.PageFormat;
+import java.awt.print.PrinterJob;
+import java.beans.PropertyChangeEvent;
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Deque;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JEditorPane;
+import javax.swing.JInternalFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JScrollPane;
+import javax.swing.SwingUtilities;
+
 /**
  * DOCUMENT ME!
  * 
@@ -305,7 +305,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     if (hiddenSeqs != null && hiddenSeqs.length > 0)
     {
       viewport.hideSequence(hiddenSeqs);
-      viewport.setHasHiddenRows(true);
     }
     alignPanel = new AlignmentPanel(this, viewport);
     addAlignmentPanel(alignPanel, true);
@@ -1140,8 +1139,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         return false;
       }
 
-      ExportData exportData = getAlignmentForExport();
-      FormatAdapter f = new FormatAdapter(viewport);
+      ExportData exportData = getAlignmentForExport(format);
+      FormatAdapter f = new FormatAdapter(alignPanel);
       String output = f.formatSequences(format,
               exportData.getAlignment(), // class cast exceptions will
               // occur in the distant future
@@ -1213,13 +1212,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void outputText_actionPerformed(ActionEvent e)
   {
 
-    ExportData exportData = getAlignmentForExport();
+    ExportData exportData = getAlignmentForExport(e.getActionCommand());
+    if (exportData.getSettings().isCancelled())
+    {
+      return;
+    }
     CutAndPasteTransfer cap = new CutAndPasteTransfer();
     cap.setForInput(null);
-
     try
     {
-      cap.setText(new FormatAdapter(viewport).formatSequences(
+      cap.setText(new FormatAdapter(alignPanel, exportData.getSettings())
+              .formatSequences(
               e.getActionCommand(),
  exportData.getAlignment(),
               exportData.getOmitHidden(), exportData.getStartEndPostions(),
@@ -1235,13 +1238,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   }
 
-  public ExportData getAlignmentForExport()
+  public ExportData getAlignmentForExport(String exportFomat)
   {
     AlignmentI alignmentToExport = null;
     String[] omitHidden = null;
     int[] alignmentStartEnd = new int[2];
-    FeatureRenderer fr = new FeatureRenderer(this.alignPanel);
-    viewport.setFeatureRenderer(fr);
+
     HiddenSequences hiddenSeqs = viewport.getAlignment()
             .getHiddenSequences();
 
@@ -1250,36 +1252,28 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     alignmentStartEnd = new int[]
     { 0, alignmentToExport.getWidth() - 1 };
 
-    if (viewport.hasHiddenColumns() || hiddenSeqs.getSize() > 0)
-    {
-      int reply = JOptionPane
-              .showInternalConfirmDialog(
-                      Desktop.desktop,
-                      MessageManager
-                              .getString("label.alignment_contains_hidden_columns"),
-                      MessageManager
-                              .getString("action.save_omit_hidden_columns"),
-                      JOptionPane.YES_NO_OPTION,
-                      JOptionPane.QUESTION_MESSAGE);
+    boolean hasHiddenSeqs = hiddenSeqs.getSize() > 0;
+    AlignExportSettings settings = new AlignExportSettings(hasHiddenSeqs,
+            viewport.hasHiddenColumns(), exportFomat);
+    settings.isExportAnnotations();
 
-      if (reply == JOptionPane.YES_OPTION)
-      {
-        // export only visible region
-        omitHidden = viewport.getViewAsString(false);
-        alignmentToExport = viewport.getAlignment();
-        alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport
-                .getColumnSelection().getHiddenColumns());
-        viewport.setIncludeHiddenRegion(false);
-      }
-      else
-      {
-        // export all region including visible
-        alignmentToExport = hiddenSeqs.getFullAlignment();
-        viewport.setIncludeHiddenRegion(true);
-      }
+    if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns())
+    {
+      omitHidden = viewport.getViewAsString(false);
     }
 
-    return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd);
+    if (hasHiddenSeqs && settings.isExportHiddenSequences())
+    {
+      alignmentToExport = hiddenSeqs.getFullAlignment();
+    }
+    else
+    {
+      alignmentToExport = viewport.getAlignment();
+      alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport
+              .getColumnSelection().getHiddenColumns());
+    }
+    return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd,
+            settings);
   }
 
   private static int[] getStartEnd(int[] aligmentStartEnd,
@@ -1352,17 +1346,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   protected void htmlMenuItem_actionPerformed(ActionEvent e)
   {
-    // new HTMLOutput(alignPanel,
-    // alignPanel.getSeqPanel().seqCanvas.getSequenceRenderer(),
-    // alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer());
     new HtmlSvgOutput(null, alignPanel);
   }
 
   @Override
   public void bioJSMenuItem_actionPerformed(ActionEvent e)
   {
-    BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel,
-            alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer());
+    BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel);
     bjs.exportJalviewAlignmentAsBioJsHtmlFile();
   }
   public void createImageMap(File file, String image)
@@ -3159,6 +3149,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   public FeatureSettings featureSettings;
 
   @Override
+  public FeatureSettingsControllerI getFeatureSettingsUI()
+  {
+    return featureSettings;
+  }
+
+  @Override
   public void featureSettings_actionPerformed(ActionEvent e)
   {
     if (featureSettings != null)
@@ -5008,41 +5004,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    *          contents or path to retrieve file
    * @param type
    *          access mode of file (see jalview.io.AlignFile)
-   * @return true if features file was parsed corectly.
+   * @return true if features file was parsed correctly.
    */
   public boolean parseFeaturesFile(String file, String type)
   {
-    boolean featuresFile = false;
-    try
-    {
-      featuresFile = new FeaturesFile(file, type).parse(viewport
-              .getAlignment().getDataset(), alignPanel.getSeqPanel().seqCanvas
-              .getFeatureRenderer().getFeatureColours(), false,
-              jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false));
-    } catch (Exception ex)
-    {
-      ex.printStackTrace();
-    }
+    return avc.parseFeaturesFile(file, type,
+            jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false));
+    
+  }
 
-    if (featuresFile)
+  @Override
+  public void refreshFeatureUI(boolean enableIfNecessary)
+  {
+    // note - currently this is only still here rather than in the controller
+    // because of the featureSettings hard reference that is yet to be
+    // abstracted
+    if (enableIfNecessary)
     {
       viewport.setShowSequenceFeatures(true);
       showSeqFeatures.setSelected(true);
-      if (alignPanel.getSeqPanel().seqCanvas.fr != null)
-      {
-        // update the min/max ranges where necessary
-        alignPanel.getSeqPanel().seqCanvas.fr.findAllFeatures(true);
-      }
-      if (featureSettings != null)
-      {
-        featureSettings.setTableData();
-      }
-      alignPanel.paintAlignment(true);
     }
 
-    return featuresFile;
-  }
 
+  }
   @Override
   public void dragEnter(DropTargetDragEvent evt)
   {
@@ -6094,11 +6078,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     private int[] startEnd;
 
-    public ExportData(AlignmentI align, String[] ommit, int[] startEnd)
+    private AlignExportSettings settings;
+
+    public ExportData(AlignmentI align, String[] ommit, int[] startEnd,
+            AlignExportSettings settings)
     {
       this.alignment = align;
       this.omitHidden = ommit;
       this.startEnd = startEnd;
+      this.settings = settings;
     }
 
     public AlignmentI getAlignment()
@@ -6130,6 +6118,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       this.startEnd = startEnd;
     }
+
+    public AlignExportSettings getSettings()
+    {
+      return settings;
+    }
+
+    public void setSettings(AlignExportSettings settings)
+    {
+      this.settings = settings;
+    }
   }
 
 }
index 16e3de7..b275186 100644 (file)
  */
 package jalview.gui;
 
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Rectangle;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Set;
-import java.util.Vector;
-
-import javax.swing.JInternalFrame;
-import javax.swing.JOptionPane;
-
 import jalview.analysis.AlignmentUtils;
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.analysis.NJTree;
 import jalview.api.AlignViewportI;
-import jalview.api.FeatureRenderer;
 import jalview.api.ViewStyleI;
 import jalview.bin.Cache;
 import jalview.commands.CommandI;
@@ -78,6 +64,19 @@ import jalview.util.MessageManager;
 import jalview.viewmodel.AlignmentViewport;
 import jalview.ws.params.AutoCalcSetting;
 
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Rectangle;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.swing.JInternalFrame;
+import javax.swing.JOptionPane;
+
 /**
  * DOCUMENT ME!
  * 
@@ -97,9 +96,6 @@ public class AlignViewport extends AlignmentViewport implements
 
   private Rectangle explodedGeometry;
 
-  private FeatureRenderer featureRenderer;
-
-  private boolean includeHiddenRegion = true;
   String viewName;
 
   /*
@@ -1041,25 +1037,4 @@ public class AlignViewport extends AlignmentViewport implements
     }
   }
 
-  @Override
-  public FeatureRenderer getFeatureRenderer()
-  {
-    return featureRenderer;
-  }
-
-  @Override
-  public void setFeatureRenderer(FeatureRenderer featureRenderer)
-  {
-    this.featureRenderer = featureRenderer;
-  }
-
-  public boolean isIncludeHiddenRegion()
-  {
-    return includeHiddenRegion;
-  }
-
-  public void setIncludeHiddenRegion(boolean includeHiddenRegion)
-  {
-    this.includeHiddenRegion = includeHiddenRegion;
-  }
 }
index 4e6ab83..57b9220 100644 (file)
@@ -1087,7 +1087,7 @@ public class AppJmol extends StructureViewerBase
       getSize(currentSize);
       g.getClipBounds(rectClip);
 
-      if (jmb.fileLoadingError != null)
+      if (jmb != null && jmb.fileLoadingError != null)
       {
         g.setColor(Color.black);
         g.fillRect(0, 0, currentSize.width, currentSize.height);
index f3c4d87..7268ae5 100644 (file)
  */
 package jalview.gui;
 
+import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+import jalview.api.ComplexAlignFile;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.SequenceI;
+import jalview.io.FileParse;
+import jalview.io.FormatAdapter;
+import jalview.io.IdentifyFile;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.jbgui.GCutAndPasteTransfer;
+import jalview.schemes.ColourSchemeI;
+import jalview.util.MessageManager;
+
 import java.awt.Toolkit;
 import java.awt.datatransfer.Clipboard;
 import java.awt.datatransfer.DataFlavor;
@@ -34,19 +49,6 @@ import javax.swing.JOptionPane;
 import javax.swing.JPopupMenu;
 import javax.swing.SwingUtilities;
 
-import jalview.api.ComplexAlignFile;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.ColumnSelection;
-import jalview.datamodel.SequenceI;
-import jalview.io.FileParse;
-import jalview.io.FormatAdapter;
-import jalview.io.IdentifyFile;
-import jalview.io.JalviewFileChooser;
-import jalview.io.JalviewFileView;
-import jalview.jbgui.GCutAndPasteTransfer;
-import jalview.schemes.ColourSchemeI;
-import jalview.util.MessageManager;
-
 /**
  * Cut'n'paste files into the desktop See JAL-1105
  * 
@@ -56,7 +58,9 @@ import jalview.util.MessageManager;
 public class CutAndPasteTransfer extends GCutAndPasteTransfer
 {
 
-  AlignViewport viewport;
+  AlignmentViewPanel alignpanel;
+
+  AlignViewportI viewport;
 
   FileParse source = null;
   public CutAndPasteTransfer()
@@ -74,9 +78,13 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
   /**
    * DOCUMENT ME!
    */
-  public void setForInput(AlignViewport viewport)
+  public void setForInput(AlignmentViewPanel viewpanel)
   {
-    this.viewport = viewport;
+    this.alignpanel = viewpanel;
+    if (alignpanel != null)
+    {
+      this.viewport = alignpanel.getAlignViewport();
+    }
     if (viewport != null)
     {
       ok.setText(MessageManager.getString("action.add"));
@@ -188,13 +196,13 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
   {
     String format = new IdentifyFile().Identify(getText(), "Paste");
     // TODO: identify feature, annotation or tree file and parse appropriately.
-    Alignment al = null;
+    AlignmentI al = null;
 
     if (FormatAdapter.isValidFormat(format))
     {
       try
       {
-        FormatAdapter fa = new FormatAdapter(viewport);
+        FormatAdapter fa = new FormatAdapter(alignpanel);
         al = fa.readFile(getText(), "Paste", format);
         source = fa.getAlignFile();
 
@@ -216,7 +224,7 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
               { format });
       if (viewport != null)
       {
-        viewport.addAlignment(al, title);
+        ((AlignViewport) viewport).addAlignment(al, title);
       }
       else
       {
index 9e84407..cc9daa1 100644 (file)
  */
 package jalview.gui;
 
+import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
+import jalview.bin.Cache;
+import jalview.io.FileLoader;
+import jalview.io.FormatAdapter;
+import jalview.io.IdentifyFile;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.jbgui.GSplitFrame;
+import jalview.jbgui.GStructureViewer;
+import jalview.structure.StructureSelectionManager;
+import jalview.util.ImageMaker;
+import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
+import jalview.ws.params.ParamManager;
+
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Dimension;
@@ -84,22 +100,6 @@ import javax.swing.event.HyperlinkEvent.EventType;
 import javax.swing.event.MenuEvent;
 import javax.swing.event.MenuListener;
 
-import jalview.api.AlignViewportI;
-import jalview.api.AlignmentViewPanel;
-import jalview.bin.Cache;
-import jalview.io.FileLoader;
-import jalview.io.FormatAdapter;
-import jalview.io.IdentifyFile;
-import jalview.io.JalviewFileChooser;
-import jalview.io.JalviewFileView;
-import jalview.jbgui.GSplitFrame;
-import jalview.jbgui.GStructureViewer;
-import jalview.structure.StructureSelectionManager;
-import jalview.util.ImageMaker;
-import jalview.util.MessageManager;
-import jalview.viewmodel.AlignmentViewport;
-import jalview.ws.params.ParamManager;
-
 /**
  * Jalview Desktop
  * 
@@ -1133,7 +1133,7 @@ public class Desktop extends jalview.jbgui.GDesktop implements
   public void inputTextboxMenuItem_actionPerformed(AlignViewport viewport)
   {
     CutAndPasteTransfer cap = new CutAndPasteTransfer();
-    cap.setForInput(viewport);
+    cap.setForInput(viewport.getAlignPanel());
     Desktop.addInternalFrame(cap,
             MessageManager.getString("label.cut_paste_alignmen_file"),
             true, 600, 500);
index 918fc02..940a216 100644 (file)
@@ -20,6 +20,7 @@
  */
 package jalview.gui;
 
+import jalview.api.FeatureSettingsControllerI;
 import jalview.bin.Cache;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
@@ -88,7 +89,8 @@ import javax.swing.table.AbstractTableModel;
 import javax.swing.table.TableCellEditor;
 import javax.swing.table.TableCellRenderer;
 
-public class FeatureSettings extends JPanel
+public class FeatureSettings extends JPanel implements
+        FeatureSettingsControllerI
 {
   DasSourceBrowser dassourceBrowser;
 
@@ -227,7 +229,7 @@ public class FeatureSettings extends JPanel
       fr.findAllFeatures(true); // display everything!
     }
 
-    setTableData();
+    discoverAllFeatureData();
     final PropertyChangeListener change;
     final FeatureSettings fs = this;
     fr.addPropertyChangeListener(change = new PropertyChangeListener()
@@ -421,7 +423,8 @@ public class FeatureSettings extends JPanel
    */
   Hashtable typeWidth = null;
 
-  synchronized public void setTableData()
+  @Override
+  synchronized public void discoverAllFeatureData()
   {
     Vector allFeatures = new Vector();
     Vector allGroups = new Vector();
index a7a4e34..fe42e1e 100755 (executable)
@@ -86,6 +86,8 @@ public class IdCanvas extends JPanel
    * 
    * @param gg
    *          DOCUMENT ME!
+   * @param hiddenRows
+   *          true - check and display hidden row marker if need be
    * @param s
    *          DOCUMENT ME!
    * @param i
@@ -95,7 +97,8 @@ public class IdCanvas extends JPanel
    * @param ypos
    *          DOCUMENT ME!
    */
-  public void drawIdString(Graphics2D gg, SequenceI s, int i, int starty,
+  public void drawIdString(Graphics2D gg, boolean hiddenRows, SequenceI s,
+          int i, int starty,
           int ypos)
   {
     int xPos = 0;
@@ -134,7 +137,7 @@ public class IdCanvas extends JPanel
     gg.drawString(s.getDisplayId(av.getShowJVSuffix()), xPos,
             (((i - starty + 1) * charHeight) + ypos) - (charHeight / 5));
 
-    if (av.hasHiddenRows() && av.getShowHiddenMarkers())
+    if (hiddenRows)
     {
       drawMarker(i, starty, ypos);
     }
@@ -274,6 +277,9 @@ public class IdCanvas extends JPanel
     Color currentColor = Color.white;
     Color currentTextColor = Color.black;
 
+    final boolean doHiddenCheck = av.isDisplayReferenceSeq()
+            || av.hasHiddenRows(), hiddenRows = av.hasHiddenRows();
+
     if (av.getWrapAlignment())
     {
       int maxwidth = av.getAlignment().getWidth();
@@ -317,7 +323,7 @@ public class IdCanvas extends JPanel
         for (int i = starty; i < alheight; i++)
         {
           SequenceI s = av.getAlignment().getSequenceAt(i);
-          if (av.isDisplayReferenceSeq() || av.hasHiddenRows())
+          if (doHiddenCheck)
           {
             setHiddenFont(s);
           }
@@ -326,7 +332,7 @@ public class IdCanvas extends JPanel
             gg.setFont(getIdfont());
           }
 
-          drawIdString(gg, s, i, 0, ypos);
+          drawIdString(gg, hiddenRows, s, i, 0, ypos);
         }
 
         if (labels != null && av.isShowAnnotation())
@@ -357,7 +363,7 @@ public class IdCanvas extends JPanel
           continue;
         }
 
-        if (av.isDisplayReferenceSeq() || av.hasHiddenRows())
+        if (doHiddenCheck)
         {
           setHiddenFont(sequence);
         }
@@ -399,7 +405,7 @@ public class IdCanvas extends JPanel
                 (((i - starty) * av.getCharHeight()) + av.getCharHeight())
                         - (av.getCharHeight() / 5));
 
-        if (av.hasHiddenRows() && av.getShowHiddenMarkers())
+        if (hiddenRows)
         {
           drawMarker(i, starty, 0);
         }
index 39a232a..609e010 100755 (executable)
@@ -292,6 +292,8 @@ public class OverviewPanel extends JPanel implements Runnable
     int color = Color.white.getRGB();
     int row, col;
     jalview.datamodel.SequenceI seq;
+    final boolean hasHiddenRows = av.hasHiddenRows(), hasHiddenCols = av
+            .hasHiddenColumns();
     boolean hiddenRow = false;
     for (row = 0; row < sequencesHeight; row++)
     {
@@ -309,7 +311,7 @@ public class OverviewPanel extends JPanel implements Runnable
       lastrow = (int) (row * sampleRow);
 
       hiddenRow = false;
-      if (av.hasHiddenRows())
+      if (hasHiddenRows)
       {
         seq = av.getAlignment().getHiddenSequences()
                 .getHiddenSequence(lastrow);
@@ -362,7 +364,7 @@ public class OverviewPanel extends JPanel implements Runnable
         }
 
         if (hiddenRow
-                || (av.hasHiddenColumns() && !av.getColumnSelection()
+                || (hasHiddenCols && !av.getColumnSelection()
                         .isVisible(lastcol)))
         {
           color = new Color(color).darker().darker().getRGB();
index 0095bc9..37082aa 100644 (file)
@@ -2398,7 +2398,7 @@ public class PopupMenu extends JPopupMenu
     // wysiwig behaviour
 
     cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(),
-            ap.av, true));
+            ap, true));
   }
 
   public void pdbFromFile_actionPerformed()
index dd25532..c330a92 100755 (executable)
  */
 package jalview.gui;
 
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.DBRefSource;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+import jalview.io.FormatAdapter;
+import jalview.io.IdentifyFile;
+import jalview.util.DBRefUtils;
+import jalview.util.MessageManager;
+import jalview.ws.dbsources.das.api.DasSourceRegistryI;
+import jalview.ws.seqfetcher.DbSourceProxy;
+
 import java.awt.BorderLayout;
 import java.awt.Font;
 import java.awt.event.ActionEvent;
@@ -44,19 +56,6 @@ import javax.swing.tree.DefaultMutableTreeNode;
 
 import com.stevesoft.pat.Regex;
 
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.DBRefSource;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.SequenceI;
-import jalview.io.FormatAdapter;
-import jalview.io.IdentifyFile;
-import jalview.util.DBRefUtils;
-import jalview.util.MessageManager;
-import jalview.ws.dbsources.das.api.DasSourceRegistryI;
-import jalview.ws.seqfetcher.DbSourceProxy;
-
 public class SequenceFetcher extends JPanel implements Runnable
 {
   JLabel dbeg = new JLabel();
@@ -774,7 +773,7 @@ public class SequenceFetcher extends JPanel implements Runnable
   AlignmentI parseResult(String result, String title)
   {
     String format = new IdentifyFile().Identify(result, "Paste");
-    Alignment sequences = null;
+    AlignmentI sequences = null;
     if (FormatAdapter.isValidFormat(format))
     {
       sequences = null;
index 70acb7b..21286ad 100755 (executable)
@@ -323,11 +323,17 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer
     {
       boolean srep = av.isDisplayReferenceSeq();
       boolean getboxColour = false;
+      boolean isarep = av.getAlignment().getSeqrep() == seq;
+      boolean isgrep = currentSequenceGroup != null ? currentSequenceGroup
+              .getSeqrep() == seq : false;
+      char sr_c;
       for (int i = start; i <= end; i++)
       {
+
         graphics.setColor(av.getTextColour());
         getboxColour = false;
         s = seq.getCharAt(i);
+
         if (!renderGaps && jalview.util.Comparison.isGap(s))
         {
           continue;
@@ -364,11 +370,12 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer
           {
             graphics.setColor(currentSequenceGroup.textColour);
           }
-          if (currentSequenceGroup.getShowNonconserved()) // todo optimize
+          if (!isarep && !isgrep
+                  && currentSequenceGroup.getShowNonconserved()) // todo
+                                                                 // optimize
           {
             // todo - use sequence group consensus
-            s = getDisplayChar(srep, i, s,
-                    '.');
+            s = getDisplayChar(srep, i, s, '.', currentSequenceGroup);
 
           }
 
@@ -408,10 +415,9 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer
               graphics.setColor(av.getTextColour2());
             }
           }
-          if (av.getShowUnconserved())
+          if (!isarep && av.getShowUnconserved())
           {
-            s = getDisplayChar(srep, i, s,
-                    '.');
+            s = getDisplayChar(srep, i, s, '.', currentSequenceGroup);
 
           }
 
@@ -438,12 +444,20 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer
    * @return
    */
   private char getDisplayChar(final boolean usesrep, int position,
-          char sequenceChar, char conservedChar)
+          char sequenceChar, char conservedChar, SequenceGroup currentGroup)
   {
     // TODO - use currentSequenceGroup rather than alignment
     // currentSequenceGroup.getConsensus()
-    char conschar = (usesrep) ? av.getAlignment().getSeqrep().getCharAt(position) : av.getAlignmentConsensusAnnotation().annotations[position].displayCharacter
-            .charAt(0);
+    char conschar = (usesrep) ? (currentGroup == null ? av.getAlignment()
+            .getSeqrep().getCharAt(position)
+            : (currentGroup.getSeqrep() != null ? currentGroup.getSeqrep()
+                    .getCharAt(position) : av.getAlignment().getSeqrep()
+                    .getCharAt(position)))
+            : (currentGroup != null && currentGroup.getConsensus() != null) ? currentGroup
+                    .getConsensus().annotations[position].displayCharacter
+                    .charAt(0)
+                    : av.getAlignmentConsensusAnnotation().annotations[position].displayCharacter
+                            .charAt(0);
     if (conschar != '-'
             && (sequenceChar == conschar || sequenceChar + CHAR_TO_UPPER == conschar))
     {
index 5d8a297..3b46760 100755 (executable)
  */
 package jalview.io;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Vector;
-
-import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Sequence;
@@ -35,6 +27,13 @@ import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
 import jalview.util.MessageManager;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Vector;
+
 /**
  * DOCUMENT ME!
  * 
@@ -200,7 +199,7 @@ public abstract class AlignFile extends FileParse
    * 
    * @param al
    */
-  public void addAnnotations(Alignment al)
+  public void addAnnotations(AlignmentI al)
   {
     addProperties(al);
     for (int i = 0; i < annotations.size(); i++)
@@ -220,6 +219,11 @@ public abstract class AlignFile extends FileParse
 
   }
 
+  /**
+   * register sequence groups on the alignment for **output**
+   * 
+   * @param al
+   */
   public void addSeqGroups(AlignmentI al)
   {
     this.seqGroups = al.getGroups();
@@ -233,7 +237,7 @@ public abstract class AlignFile extends FileParse
    * @note implicitly called by addAnnotations()
    * @param al
    */
-  public void addProperties(Alignment al)
+  public void addProperties(AlignmentI al)
   {
     if (properties != null && properties.size() > 0)
     {
@@ -378,4 +382,13 @@ public abstract class AlignFile extends FileParse
     return newickStrings == null ? 0 : newickStrings.size();
   }
 
+  public void addGroups(AlignmentI al)
+  {
+
+    for (SequenceGroup sg : getSeqGroups())
+    {
+      al.addGroup(sg);
+    }
+  }
+
 }
index 9effa74..cb4b7ad 100644 (file)
@@ -20,8 +20,8 @@
  */
 package jalview.io;
 
-import java.io.StringWriter;
 import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.Enumeration;
 import java.util.Hashtable;
 
@@ -61,11 +61,15 @@ public class AlignmentProperties
               - alignment.getSequenceAt(i).getStart();
       avg += size;
       if (size > max)
+      {
         max = size;
+      }
       if (size < min)
+      {
         min = size;
+      }
     }
-    avg = avg / (float) alignment.getHeight();
+    avg = avg / alignment.getHeight();
     pw.print(nl);
     pw.print("Sequences: " + alignment.getHeight());
     pw.print(nl);
index 78aa86b..d3d4d6e 100755 (executable)
  */
 package jalview.io;
 
-import java.io.File;
-import java.io.InputStream;
-import java.util.List;
-
-import jalview.api.AlignViewportI;
+import jalview.api.AlignExportSettingI;
+import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.AlignmentView;
-import jalview.datamodel.SequenceGroup;
 import jalview.util.MessageManager;
 
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+
 /**
  * A low level class for alignment and feature IO with alignment formatting
  * methods used by both applet and application for generating flat alignment
@@ -43,7 +43,7 @@ import jalview.util.MessageManager;
  */
 public class AppletFormatAdapter
 {
-  private AlignViewportI viewport;
+  private AlignmentViewPanel viewpanel;
 
   public static String FILE = "File";
 
@@ -77,12 +77,14 @@ public class AppletFormatAdapter
    */
   protected String newline = System.getProperty("line.separator");
 
+  private AlignExportSettingI exportSettings;
+
   /**
    * List of valid format strings used in the isValidFormat method
    */
   public static final String[] READABLE_FORMATS = new String[]
   { "BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH",
-      "PDB", "JnetFile", "RNAML", PhylipFile.FILE_DESC, JSONFile.FILE_DESC,
+      "PDB", "JnetFile", "RNAML", PhylipFile.FILE_DESC, JSONFile.FILE_DESC, IdentifyFile.GFF3File,
       "HTML" };
 
   /**
@@ -92,6 +94,7 @@ public class AppletFormatAdapter
   public static final String[] READABLE_EXTENSIONS = new String[]
   { "fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa",
       "sto,stk", "xml,rnaml", PhylipFile.FILE_EXT, JSONFile.FILE_EXT,
+      ".gff2,gff3",
       "jar,jvp", HtmlFile.FILE_EXT };
 
   /**
@@ -100,7 +103,7 @@ public class AppletFormatAdapter
    */
   public static final String[] READABLE_FNAMES = new String[]
   { "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm",
-      "RNAML", PhylipFile.FILE_DESC, JSONFile.FILE_DESC, "Jalview",
+      "RNAML", PhylipFile.FILE_DESC, JSONFile.FILE_DESC, IdentifyFile.GFF3File, "Jalview",
       HtmlFile.FILE_DESC };
 
   /**
@@ -137,9 +140,16 @@ public class AppletFormatAdapter
   {
   }
 
-  public AppletFormatAdapter(AlignViewportI viewport)
+  public AppletFormatAdapter(AlignmentViewPanel viewpanel)
+  {
+    this.viewpanel = viewpanel;
+  }
+
+  public AppletFormatAdapter(AlignmentViewPanel alignPanel,
+          AlignExportSettingI settings)
   {
-    this.viewport = viewport;
+    viewpanel = alignPanel;
+    exportSettings = settings;
   }
 
   /**
@@ -221,7 +231,7 @@ public class AppletFormatAdapter
    *
    * @return DOCUMENT ME!
    */
-  public Alignment readFile(String inFile, String type, String format)
+  public AlignmentI readFile(String inFile, String type, String format)
           throws java.io.IOException
   {
     // TODO: generalise mapping between format string and io. class instances
@@ -229,7 +239,6 @@ public class AppletFormatAdapter
     this.inFile = inFile;
     try
     {
-      Alignment al;
       if (format.equals("FASTA"))
       {
         alignFile = new FastaFile(inFile, type);
@@ -285,37 +294,20 @@ public class AppletFormatAdapter
       else if (format.equals(JSONFile.FILE_DESC))
       {
         alignFile = new JSONFile(inFile, type);
-        al = new Alignment(alignFile.getSeqsAsArray());
-        alignFile.addAnnotations(al);
-        ((JSONFile) alignFile).setViewport(viewport);
-        for (SequenceGroup sg : alignFile.getSeqGroups())
-        {
-          al.addGroup(sg);
-        }
-
-        return al;
       }
       else if (format.equals(HtmlFile.FILE_DESC))
       {
         alignFile = new HtmlFile(inFile, type);
-        al = new Alignment(alignFile.getSeqsAsArray());
-        alignFile.addAnnotations(al);
-        for (SequenceGroup sg : alignFile.getSeqGroups())
-        {
-          al.addGroup(sg);
-        }
-        return al;
       }
       else if (format.equals("RNAML"))
       {
         alignFile = new RnamlFile(inFile, type);
       }
-
-      al = new Alignment(alignFile.getSeqsAsArray());
-
-      alignFile.addAnnotations(al);
-
-      return al;
+      else if (format.equals(IdentifyFile.GFF3File))
+      {
+        alignFile = new Gff3File(inFile, type);
+      }
+      return buildAlignmentFrom(alignFile);
     } catch (Exception e)
     {
       e.printStackTrace();
@@ -335,11 +327,7 @@ public class AppletFormatAdapter
         {
           // Possible sequence is just residues with no label
           alignFile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");
-          Alignment al = new Alignment(alignFile.getSeqsAsArray());
-
-          alignFile.addSeqGroups(al);
-          alignFile.addAnnotations(al);
-          return al;
+          return buildAlignmentFrom(alignFile);
 
         } catch (Exception ex)
         {
@@ -378,7 +366,6 @@ public class AppletFormatAdapter
     String type = source.type;
     try
     {
-      Alignment al;
       if (format.equals("FASTA"))
       {
         alignFile = new FastaFile(source);
@@ -433,22 +420,21 @@ public class AppletFormatAdapter
       {
         alignFile = new PhylipFile(source);
       }
+      else if (format.equals(IdentifyFile.GFF3File))
+      {
+        alignFile = new Gff3File(inFile, type);
+      }
       else if (format.equals(JSONFile.FILE_DESC))
       {
         alignFile = new JSONFile(source);
-        al = new Alignment(alignFile.getSeqsAsArray());
-        alignFile.addAnnotations(al);
-        alignFile.addSeqGroups(al);
-        return al;
       }
       else if (format.equals(HtmlFile.FILE_DESC))
       {
         alignFile = new HtmlFile(source);
       }
-      al = new Alignment(alignFile.getSeqsAsArray());
-      alignFile.addAnnotations(al);
 
-      return al;
+      return buildAlignmentFrom(alignFile);
+
     } catch (Exception e)
     {
       e.printStackTrace();
@@ -468,10 +454,7 @@ public class AppletFormatAdapter
         {
           // Possible sequence is just residues with no label
           alignFile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");
-          Alignment al = new Alignment(alignFile.getSeqsAsArray());
-          alignFile.addAnnotations(al);
-          alignFile.addSeqGroups(al);
-          return al;
+          return buildAlignmentFrom(alignFile);
 
         } catch (Exception ex)
         {
@@ -491,6 +474,27 @@ public class AppletFormatAdapter
 
 
   /**
+   * boilerplate method to handle data from an AlignFile and construct a new
+   * alignment or import to an existing alignment
+   * 
+   * @param alignFile2
+   * @return AlignmentI instance ready to pass to a UI constructor
+   */
+  private AlignmentI buildAlignmentFrom(AlignFile alignFile2)
+  {
+    // Standard boilerplate for creating alignment from parser
+    alignFile.configureForView(viewpanel);
+
+    AlignmentI al = new Alignment(alignFile.getSeqsAsArray());
+
+    alignFile.addAnnotations(al);
+
+    alignFile.addGroups(al);
+
+    return al;
+  }
+
+  /**
    * create an alignment flatfile from a Jalview alignment view
    * @param format
    * @param jvsuffix
@@ -499,13 +503,14 @@ public class AppletFormatAdapter
    * @return flatfile in a string
    */
   public String formatSequences(String format, boolean jvsuffix,
-          AlignViewportI av, boolean selectedOnly)
+          AlignmentViewPanel ap, boolean selectedOnly)
   {
 
-    AlignmentView selvew = av.getAlignmentView(selectedOnly, false);
-    AlignmentI aselview = selvew.getVisibleAlignment(av
+    AlignmentView selvew = ap.getAlignViewport().getAlignmentView(
+            selectedOnly, false);
+    AlignmentI aselview = selvew.getVisibleAlignment(ap.getAlignViewport()
             .getGapCharacter());
-    List<AlignmentAnnotation> ala = (av
+    List<AlignmentAnnotation> ala = (ap.getAlignViewport()
             .getVisibleAlignmentAnnotation(selectedOnly));
     if (ala != null)
     {
@@ -582,22 +587,6 @@ public class AppletFormatAdapter
        else if (format.equalsIgnoreCase(JSONFile.FILE_DESC))
        {
         afile = new JSONFile();
-        afile.setViewport(viewport);
-        // Add groups to AlignFile
-        afile.seqGroups = alignment.getGroups();
-
-        // Add non auto calculated annotation to AlignFile
-        for (AlignmentAnnotation annot : alignment.getAlignmentAnnotation())
-        {
-          if (annot != null && !annot.autoCalculated)
-          {
-            if (annot.label.equals("PDB.CATempFactor"))
-            {
-              continue;
-            }
-            afile.annotations.add(annot);
-          }
-        }
        }
       else if (format.equalsIgnoreCase("RNAML"))
       {
@@ -611,8 +600,21 @@ public class AppletFormatAdapter
       afile.setNewlineString(newline);
       afile.addJVSuffix(jvsuffix);
 
-      afile.setSeqs(alignment.getSequencesArray());
+      afile.setExportSettings(exportSettings);
 
+      afile.configureForView(viewpanel);
+
+      // check whether we were given a specific alignment to export, rather than
+      // the one in the viewpanel
+      if (viewpanel == null || viewpanel.getAlignment() == null
+              || viewpanel.getAlignment() != alignment)
+      {
+        afile.setSeqs(alignment.getSequencesArray());
+      }
+      else
+      {
+        afile.setSeqs(viewpanel.getAlignment().getSequencesArray());
+      }
 
       String afileresp = afile.print();
       if (afile.hasWarningMessage())
@@ -659,7 +661,7 @@ public class AppletFormatAdapter
           System.gc();
           long memf = -r.totalMemory() + r.freeMemory();
           long t1 = -System.currentTimeMillis();
-          Alignment al = afa.readFile(args[i], FILE,
+          AlignmentI al = afa.readFile(args[i], FILE,
                   new IdentifyFile().Identify(args[i], FILE));
           t1 += System.currentTimeMillis();
           System.gc();
index 0376c2c..c7cf2d6 100755 (executable)
  */
 package jalview.io;
 
-import java.io.*;
-import java.util.*;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
 
-import jalview.datamodel.*;
+import java.io.IOException;
+import java.util.Vector;
 
 /**
  * DOCUMENT ME!
@@ -115,7 +116,9 @@ public class BLCFile extends AlignFile
       {
         line = nextLine();
         if (line == null)
+        {
           break;
+        }
         // seek end of ids
         if (line.indexOf("*") > -1)
         {
@@ -150,7 +153,9 @@ public class BLCFile extends AlignFile
         }
       } while (!idsFound);
       if (line == null)
+       {
         break; // end of file.
+      }
       int starCol = line.indexOf("*");
       seqstrings = new StringBuffer[seqs.size()];
 
@@ -198,9 +203,11 @@ public class BLCFile extends AlignFile
     }
     if (seqs.size() > 0)
     {
-      if (headerLines.length() > 1 + numHeaderLines) // could see if buffer is
+      if (headerLines.length() > 1 + numHeaderLines)
+      {
         // just whitespace or not.
         setAlignmentProperty("Comments", headerLines.toString());
+      }
       setAlignmentProperty("iteration", "" + iterationCount);
     }
   }
index a026c57..74fb147 100644 (file)
@@ -1,9 +1,7 @@
 package jalview.io;
 
+import jalview.api.AlignmentViewPanel;
 import jalview.exceptions.NoFileSelectedException;
-import jalview.gui.AlignViewport;
-import jalview.gui.AlignmentPanel;
-import jalview.gui.FeatureRenderer;
 import jalview.json.binding.v1.BioJSReleasePojo;
 import jalview.json.binding.v1.BioJSRepositoryPojo;
 import jalview.util.MessageManager;
@@ -23,7 +21,7 @@ import java.util.TreeMap;
 
 public class BioJsHTMLOutput
 {
-  private AlignViewport av;
+  private AlignmentViewPanel ap;
 
   private static File currentBJSTemplateFile;
 
@@ -40,12 +38,11 @@ public class BioJsHTMLOutput
                   "biojs_template_git_repo",
                   "https://raw.githubusercontent.com/tcofoegbu/bjs-template/master/package.json");
 
-  public BioJsHTMLOutput(AlignmentPanel ap, FeatureRenderer fr1)
+  public BioJsHTMLOutput(AlignmentViewPanel ap)
   {
     if (ap != null)
     {
-      this.av = ap.av;
-      av.setFeatureRenderer(new FeatureRenderer(ap));
+      this.ap = ap;
     }
   }
 
@@ -54,7 +51,7 @@ public class BioJsHTMLOutput
     try
     {
       String outputFile = getOutputFile();
-      String jalviewAlignmentJson = JSONFile.getJSONData(av);
+      String jalviewAlignmentJson = JSONFile.getJSONData(ap);
       String bioJSTemplateString = getBioJsTemplateAsString();
       String generatedBioJsWithJalviewAlignmentAsJson = bioJSTemplateString
               .replaceAll(
index 260b32d..57f6384 100755 (executable)
  */
 package jalview.io;
 
-import java.io.*;
-import java.util.*;
-
 import jalview.analysis.SequenceIdMatcher;
-import jalview.datamodel.*;
-import jalview.schemes.*;
+import jalview.datamodel.AlignedCodonFrame;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceDummy;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+import jalview.schemes.AnnotationColourGradient;
+import jalview.schemes.GraduatedColor;
+import jalview.schemes.UserColourScheme;
 import jalview.util.Format;
+import jalview.util.MapList;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.Vector;
 
 /**
  * Parse and create Jalview Features files Detects GFF format features files and
@@ -45,6 +60,8 @@ public class FeaturesFile extends AlignFile
    */
   private boolean doGffSource = true;
 
+  private int gffversion;
+
   /**
    * Creates a new FeaturesFile object.
    */
@@ -53,27 +70,48 @@ public class FeaturesFile extends AlignFile
   }
 
   /**
-   * Creates a new FeaturesFile object.
-   * 
    * @param inFile
-   *          DOCUMENT ME!
    * @param type
-   *          DOCUMENT ME!
-   * 
    * @throws IOException
-   *           DOCUMENT ME!
    */
   public FeaturesFile(String inFile, String type) throws IOException
   {
     super(inFile, type);
   }
 
+  /**
+   * @param source
+   * @throws IOException
+   */
   public FeaturesFile(FileParse source) throws IOException
   {
     super(source);
   }
 
   /**
+   * @param parseImmediately
+   * @param source
+   * @throws IOException
+   */
+  public FeaturesFile(boolean parseImmediately, FileParse source)
+          throws IOException
+  {
+    super(parseImmediately, source);
+  }
+
+  /**
+   * @param parseImmediately
+   * @param inFile
+   * @param type
+   * @throws IOException
+   */
+  public FeaturesFile(boolean parseImmediately, String inFile, String type)
+          throws IOException
+  {
+    super(parseImmediately, inFile, type);
+  }
+
+  /**
    * Parse GFF or sequence features file using case-independent matching,
    * discarding URLs
    * 
@@ -131,6 +169,27 @@ public class FeaturesFile extends AlignFile
     return parse(align, colours, featureLink, removeHTML, false);
   }
 
+  @Override
+  public void addAnnotations(AlignmentI al)
+  {
+    // TODO Auto-generated method stub
+    super.addAnnotations(al);
+  }
+
+  @Override
+  public void addProperties(AlignmentI al)
+  {
+    // TODO Auto-generated method stub
+    super.addProperties(al);
+  }
+
+  @Override
+  public void addSeqGroups(AlignmentI al)
+  {
+    // TODO Auto-generated method stub
+    super.addSeqGroups(al);
+  }
+
   /**
    * Parse GFF or sequence features file
    * 
@@ -154,6 +213,10 @@ public class FeaturesFile extends AlignFile
     try
     {
       SequenceI seq = null;
+      /**
+       * keep track of any sequences we try to create from the data if it is a GFF3 file
+       */
+      ArrayList<SequenceI> newseqs = new ArrayList<SequenceI>();
       String type, desc, token = null;
 
       int index, start, end;
@@ -166,10 +229,18 @@ public class FeaturesFile extends AlignFile
        * when true, assume GFF style features rather than Jalview style.
        */
       boolean GFFFile = true;
+      Map<String, String> gffProps = new HashMap<String, String>();
       while ((line = nextLine()) != null)
       {
+        // skip comments/process pragmas
         if (line.startsWith("#"))
         {
+          if (line.startsWith("##"))
+          {
+            // possibly GFF2/3 version and metadata header
+            processGffPragma(line, gffProps, align, newseqs);
+            line = "";
+          }
           continue;
         }
 
@@ -427,7 +498,7 @@ public class FeaturesFile extends AlignFile
             // Still possible this is an old Jalview file,
             // which does not have type colours at the beginning
             seqId = token = st.nextToken();
-            seq = findName(align, seqId, relaxedIdmatching);
+            seq = findName(align, seqId, relaxedIdmatching, newseqs);
             if (seq != null)
             {
               desc = st.nextToken();
@@ -496,9 +567,11 @@ public class FeaturesFile extends AlignFile
               if (st.hasMoreTokens())
               {
                 StringBuffer attributes = new StringBuffer();
+                boolean sep = false;
                 while (st.hasMoreTokens())
                 {
-                  attributes.append("\t" + st.nextElement());
+                  attributes.append((sep ? "\t" : "") + st.nextElement());
+                  sep = true;
                 }
                 // TODO validate and split GFF2 attributes field ? parse out
                 // ([A-Za-z][A-Za-z0-9_]*) <value> ; and add as
@@ -506,10 +579,15 @@ public class FeaturesFile extends AlignFile
                 sf.setValue("ATTRIBUTES", attributes.toString());
               }
 
-              seq.addSequenceFeature(sf);
-              while ((seq = align.findName(seq, seqId, true)) != null)
+              if (processOrAddSeqFeature(align, newseqs, seq, sf, GFFFile,
+                      relaxedIdmatching))
               {
-                seq.addSequenceFeature(new SequenceFeature(sf));
+                // check whether we should add the sequence feature to any other
+                // sequences in the alignment with the same or similar
+                while ((seq = align.findName(seq, seqId, true)) != null)
+                {
+                  seq.addSequenceFeature(new SequenceFeature(sf));
+                }
               }
               break;
             }
@@ -536,7 +614,7 @@ public class FeaturesFile extends AlignFile
 
           if (!token.equals("ID_NOT_SPECIFIED"))
           {
-            seq = findName(align, seqId = token, relaxedIdmatching);
+            seq = findName(align, seqId = token, relaxedIdmatching, null);
             st.nextToken();
           }
           else
@@ -609,6 +687,9 @@ public class FeaturesFile extends AlignFile
       resetMatcher();
     } catch (Exception ex)
     {
+      // should report somewhere useful for UI if necessary
+      warningMessage = ((warningMessage == null) ? "" : warningMessage)
+              + "Parsing error at\n" + line;
       System.out.println("Error parsing feature file: " + ex + "\n" + line);
       ex.printStackTrace(System.err);
       resetMatcher();
@@ -618,6 +699,398 @@ public class FeaturesFile extends AlignFile
     return true;
   }
 
+  private enum GffPragmas
+  {
+    gff_version, sequence_region, feature_ontology, attribute_ontology, source_ontology, species_build, fasta, hash
+  };
+
+  private static Map<String, GffPragmas> GFFPRAGMA;
+  static
+  {
+    GFFPRAGMA = new HashMap<String, GffPragmas>();
+    GFFPRAGMA.put("sequence-region", GffPragmas.sequence_region);
+    GFFPRAGMA.put("feature-ontology", GffPragmas.feature_ontology);
+    GFFPRAGMA.put("#", GffPragmas.hash);
+    GFFPRAGMA.put("fasta", GffPragmas.fasta);
+    GFFPRAGMA.put("species-build", GffPragmas.species_build);
+    GFFPRAGMA.put("source-ontology", GffPragmas.source_ontology);
+    GFFPRAGMA.put("attribute-ontology", GffPragmas.attribute_ontology);
+  }
+
+  private void processGffPragma(String line, Map<String, String> gffProps,
+          AlignmentI align, ArrayList<SequenceI> newseqs)
+          throws IOException
+  {
+    // line starts with ##
+    int spacepos = line.indexOf(' ');
+    String pragma = spacepos == -1 ? line.substring(2).trim() : line
+            .substring(2, spacepos);
+    GffPragmas gffpragma = GFFPRAGMA.get(pragma.toLowerCase());
+    if (gffpragma == null)
+    {
+      return;
+    }
+    switch (gffpragma)
+    {
+    case gff_version:
+      try
+      {
+        gffversion = Integer.parseInt(line.substring(spacepos + 1));
+      } finally
+      {
+
+      }
+      break;
+    case feature_ontology:
+      // resolve against specific feature ontology
+      break;
+    case attribute_ontology:
+      // resolve against specific attribute ontology
+      break;
+    case source_ontology:
+      // resolve against specific source ontology
+      break;
+    case species_build:
+      // resolve against specific NCBI taxon version
+      break;
+    case hash:
+      // close off any open feature hierarchies
+      break;
+    case fasta:
+      // process the rest of the file as a fasta file and replace any dummy
+      // sequence IDs
+      process_as_fasta(align, newseqs);
+      break;
+    default:
+      // we do nothing ?
+      System.err.println("Ignoring unknown pragma:\n" + line);
+    }
+  }
+
+  private void process_as_fasta(AlignmentI align, List<SequenceI> newseqs)
+          throws IOException
+  {
+    try
+    {
+      mark();
+    } catch (IOException q)
+    {
+    }
+    FastaFile parser = new FastaFile(this);
+    List<SequenceI> includedseqs = parser.getSeqs();
+    SequenceIdMatcher smatcher = new SequenceIdMatcher(newseqs);
+    // iterate over includedseqs, and replacing matching ones with newseqs
+    // sequences. Generic iterator not used here because we modify includedseqs
+    // as we go
+    for (int p = 0, pSize = includedseqs.size(); p < pSize; p++)
+    {
+      // search for any dummy seqs that this sequence can be used to update
+      SequenceI dummyseq = smatcher.findIdMatch(includedseqs.get(p));
+      if (dummyseq != null)
+      {
+        // dummyseq was created so it could be annotated and referred to in
+        // alignments/codon mappings
+
+        SequenceI mseq = includedseqs.get(p);
+        // mseq is the 'template' imported from the FASTA file which we'll use
+        // to coomplete dummyseq
+        if (dummyseq instanceof SequenceDummy)
+        {
+          // probably have the pattern wrong
+          // idea is that a flyweight proxy for a sequence ID can be created for
+          // 1. stable reference creation
+          // 2. addition of annotation
+          // 3. future replacement by a real sequence
+          // current pattern is to create SequenceDummy objects - a convenience
+          // constructor for a Sequence.
+          // problem is that when promoted to a real sequence, all references
+          // need
+          // to be updated somehow.
+          ((SequenceDummy) dummyseq).become(mseq);
+          includedseqs.set(p, dummyseq); // template is no longer needed
+        }
+      }
+    }
+    // finally add sequences to the dataset
+    for (SequenceI seq : includedseqs)
+    {
+      align.addSequence(seq);
+    }
+  }
+
+  /**
+   * take a sequence feature and examine its attributes to decide how it should
+   * be added to a sequence
+   * 
+   * @param seq
+   *          - the destination sequence constructed or discovered in the
+   *          current context
+   * @param sf
+   *          - the base feature with ATTRIBUTES property containing any
+   *          additional attributes
+   * @param gFFFile
+   *          - true if we are processing a GFF annotation file
+   * @return true if sf was actually added to the sequence, false if it was
+   *         processed in another way
+   */
+  public boolean processOrAddSeqFeature(AlignmentI align, List<SequenceI> newseqs, SequenceI seq, SequenceFeature sf,
+          boolean gFFFile, boolean relaxedIdMatching)
+  {
+    String attr = (String) sf.getValue("ATTRIBUTES");
+    boolean add = true;
+    if (gFFFile && attr != null)
+    {
+      int nattr=8;
+
+      for (String attset : attr.split("\t"))
+      {
+        if (attset==null || attset.trim().length()==0)
+        {
+          continue;
+        }
+        nattr++;
+        Map<String, List<String>> set = new HashMap<String, List<String>>();
+        // normally, only expect one column - 9 - in this field
+        // the attributes (Gff3) or groups (gff2) field
+        for (String pair : attset.trim().split(";"))
+        {
+          pair = pair.trim();
+          if (pair.length() == 0)
+          {
+            continue;
+          }
+
+          // expect either space seperated (gff2) or '=' separated (gff3) 
+          // key/value pairs here
+
+          int eqpos = pair.indexOf('='),sppos = pair.indexOf(' ');
+          String key = null, value = null;
+
+          if (sppos > -1 && (eqpos == -1 || sppos < eqpos))
+          {
+            key = pair.substring(0, sppos);
+            value = pair.substring(sppos + 1);
+          } else {
+            if (eqpos > -1 && (sppos == -1 || eqpos < sppos))
+            {
+              key = pair.substring(0, eqpos);
+              value = pair.substring(eqpos + 1);
+            } else
+            {
+              key = pair;
+            }
+          }
+          if (key != null)
+          {
+            List<String> vals = set.get(key);
+            if (vals == null)
+            {
+              vals = new ArrayList<String>();
+              set.put(key, vals);
+            }
+            if (value != null)
+            {
+              vals.add(value.trim());
+            }
+          }
+        }
+        try
+        {
+          add &= processGffKey(set, nattr, seq, sf, align, newseqs,
+                  relaxedIdMatching); // process decides if
+                                                     // feature is actually
+                                                     // added
+        } catch (InvalidGFF3FieldException ivfe)
+        {
+          System.err.println(ivfe);
+        }
+      }
+    }
+    if (add)
+    {
+      seq.addSequenceFeature(sf);
+    }
+    return add;
+  }
+
+  public class InvalidGFF3FieldException extends Exception
+  {
+    String field, value;
+
+    public InvalidGFF3FieldException(String field,
+            Map<String, List<String>> set, String message)
+    {
+      super(message + " (Field was " + field + " and value was "
+              + set.get(field).toString());
+      this.field = field;
+      this.value = set.get(field).toString();
+    }
+
+  }
+
+  /**
+   * take a set of keys for a feature and interpret them
+   * 
+   * @param set
+   * @param nattr
+   * @param seq
+   * @param sf
+   * @return
+   */
+  public boolean processGffKey(Map<String, List<String>> set, int nattr,
+          SequenceI seq, SequenceFeature sf, AlignmentI align,
+          List<SequenceI> newseqs, boolean relaxedIdMatching)
+          throws InvalidGFF3FieldException
+  {
+    String attr;
+    // decide how to interpret according to type
+    if (sf.getType().equals("similarity"))
+    {
+      int strand = sf.getStrand();
+      // exonerate cdna/protein map
+      // look for fields 
+      List<SequenceI> querySeq = findNames(align, newseqs,
+              relaxedIdMatching, set.get(attr="Query"));
+      if (querySeq==null || querySeq.size()!=1)
+      {
+        throw new InvalidGFF3FieldException( attr, set,
+                "Expecting exactly one sequence in Query field (got "
+                        + set.get(attr) + ")");
+      }
+      if (set.containsKey(attr="Align"))
+      {
+        // process the align maps and create cdna/protein maps
+        // ideally, the query sequences are in the alignment, but maybe not...
+        
+        AlignedCodonFrame alco = new AlignedCodonFrame();
+        MapList codonmapping = constructCodonMappingFromAlign(set, attr,
+                strand);
+
+        // add codon mapping, and hope!
+        alco.addMap(seq, querySeq.get(0), codonmapping);
+        align.addCodonFrame(alco);
+        // everything that's needed to be done is done
+        // no features to create here !
+        return false;
+      }
+
+    }
+    return true;
+  }
+
+  private MapList constructCodonMappingFromAlign(
+          Map<String, List<String>> set,
+          String attr, int strand) throws InvalidGFF3FieldException
+  {
+    if (strand == 0)
+    {
+      throw new InvalidGFF3FieldException(attr, set,
+              "Invalid strand for a codon mapping (cannot be 0)");
+    }
+    List<Integer> fromrange = new ArrayList<Integer>(), torange = new ArrayList<Integer>();
+    int lastppos = 0, lastpframe = 0;
+    for (String range : set.get(attr))
+    {
+      List<Integer> ints = new ArrayList<Integer>();
+      StringTokenizer st = new StringTokenizer(range, " ");
+      while (st.hasMoreTokens())
+      {
+        String num = st.nextToken();
+        try
+        {
+          ints.add(new Integer(num));
+        } catch (NumberFormatException nfe)
+        {
+          throw new InvalidGFF3FieldException(attr, set,
+                  "Invalid number in field " + num);
+        }
+      }
+      // Align positionInRef positionInQuery LengthInRef
+      // contig_1146 exonerate:protein2genome:local similarity 8534 11269
+      // 3652 - . alignment_id 0 ;
+      // Query DDB_G0269124
+      // Align 11270 143 120
+      // corresponds to : 120 bases align at pos 143 in protein to 11270 on
+      // dna in strand direction
+      // Align 11150 187 282
+      // corresponds to : 282 bases align at pos 187 in protein to 11150 on
+      // dna in strand direction
+      //
+      // Align 10865 281 888
+      // Align 9977 578 1068
+      // Align 8909 935 375
+      //
+      if (ints.size() != 3)
+      {
+        throw new InvalidGFF3FieldException(attr, set,
+                "Invalid number of fields for this attribute ("
+                        + ints.size() + ")");
+      }
+      fromrange.add(new Integer(ints.get(0).intValue()));
+      fromrange.add(new Integer(ints.get(0).intValue() + strand
+              * ints.get(2).intValue()));
+      // how are intron/exon boundaries that do not align in codons
+      // represented
+      if (ints.get(1).equals(lastppos) && lastpframe > 0)
+      {
+        // extend existing to map
+        lastppos += ints.get(2) / 3;
+        lastpframe = ints.get(2) % 3;
+        torange.set(torange.size() - 1, new Integer(lastppos));
+      }
+      else
+      {
+        // new to map range
+        torange.add(ints.get(1));
+        lastppos = ints.get(1) + ints.get(2) / 3;
+        lastpframe = ints.get(2) % 3;
+        torange.add(new Integer(lastppos));
+      }
+    }
+    // from and to ranges must end up being a series of start/end intervals
+    if (fromrange.size() % 2 == 1)
+    {
+      throw new InvalidGFF3FieldException(attr, set,
+              "Couldn't parse the DNA alignment range correctly");
+    }
+    if (torange.size() % 2 == 1)
+    {
+      throw new InvalidGFF3FieldException(attr, set,
+              "Couldn't parse the protein alignment range correctly");
+    }
+    // finally, build the map
+    int[] frommap = new int[fromrange.size()], tomap = new int[torange
+            .size()];
+    int p = 0;
+    for (Integer ip : fromrange)
+    {
+      frommap[p++] = ip.intValue();
+    }
+    p = 0;
+    for (Integer ip : torange)
+    {
+      tomap[p++] = ip.intValue();
+    }
+
+    return new MapList(frommap, tomap, 3, 1);
+  }
+
+  private List<SequenceI> findNames(AlignmentI align,
+          List<SequenceI> newseqs, boolean relaxedIdMatching,
+          List<String> list)
+  {
+    List<SequenceI> found = new ArrayList<SequenceI>();
+    for (String seqId : list)
+    {
+      SequenceI seq = findName(align, seqId, relaxedIdMatching, newseqs);
+      if (seq != null)
+      {
+        found.add(seq);
+      }
+    }
+    return found;
+  }
+
   private AlignmentI lastmatchedAl = null;
 
   private SequenceIdMatcher matcher = null;
@@ -632,7 +1105,7 @@ public class FeaturesFile extends AlignFile
   }
 
   private SequenceI findName(AlignmentI align, String seqId,
-          boolean relaxedIdMatching)
+          boolean relaxedIdMatching, List<SequenceI> newseqs)
   {
     SequenceI match = null;
     if (relaxedIdMatching)
@@ -641,16 +1114,41 @@ public class FeaturesFile extends AlignFile
       {
         matcher = new SequenceIdMatcher(
                 (lastmatchedAl = align).getSequencesArray());
+        if (newseqs != null)
+        {
+          matcher.addAll(newseqs);
+        }
       }
       match = matcher.findIdMatch(seqId);
     }
     else
     {
       match = align.findName(seqId, true);
+      if (match == null && newseqs != null)
+      {
+        for (SequenceI m : newseqs)
+        {
+          if (seqId.equals(m.getName()))
+          {
+            return m;
+          }
+        }
+      }
+      
+    }
+    if (match==null && newseqs!=null)
+    {
+      match = new SequenceDummy(seqId);
+      if (relaxedIdMatching)
+      {
+        matcher.addAll(Arrays.asList(new SequenceI[]
+        { match }));
+      }
+      // add dummy sequence to the newseqs list
+      newseqs.add(match);
     }
     return match;
   }
-
   public void parseDescriptionHTML(SequenceFeature sf, boolean removeHTML)
   {
     if (sf.getDescription() == null)
index 0cd2987..b11dfd5 100755 (executable)
@@ -299,7 +299,8 @@ public class FileLoader implements Runnable
               // open a new source and read from it
               FormatAdapter fa = new FormatAdapter();
               al = fa.readFile(file, protocol, format);
-              source = fa.getAlignFile(); // keep reference for later if necessary.
+              source = fa.getAlignFile(); // keep reference for later if
+                                          // necessary.
             }
           } catch (java.io.IOException ex)
           {
@@ -367,34 +368,34 @@ public class FileLoader implements Runnable
               alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH,
                       AlignFrame.DEFAULT_HEIGHT);
             }
-          }
-          // add metadata and update ui
-          if (!protocol.equals(AppletFormatAdapter.PASTE))
-          {
-            alignFrame.setFileName(file, format);
-          }
+            // add metadata and update ui
+            if (!protocol.equals(AppletFormatAdapter.PASTE))
+            {
+              alignFrame.setFileName(file, format);
+            }
 
-          alignFrame.statusBar.setText(MessageManager.formatMessage(
-                  "label.successfully_loaded_file", new String[]
-                  { title }));
+            alignFrame.statusBar.setText(MessageManager.formatMessage(
+                    "label.successfully_loaded_file", new String[]
+                    { title }));
 
-          if (raiseGUI)
-          {
-            // add the window to the GUI
-            // note - this actually should happen regardless of raiseGUI
-            // status in Jalview 3
-            // TODO: define 'virtual desktop' for benefit of headless scripts
-            // that perform queries to find the 'current working alignment'
-            Desktop.addInternalFrame(alignFrame, title,
-                    AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
-          }
+            if (raiseGUI)
+            {
+              // add the window to the GUI
+              // note - this actually should happen regardless of raiseGUI
+              // status in Jalview 3
+              // TODO: define 'virtual desktop' for benefit of headless scripts
+              // that perform queries to find the 'current working alignment'
+              Desktop.addInternalFrame(alignFrame, title,
+                      AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
+            }
 
-          try
-          {
-            alignFrame.setMaximum(jalview.bin.Cache.getDefault(
-                    "SHOW_FULLSCREEN", false));
-          } catch (java.beans.PropertyVetoException ex)
-          {
+            try
+            {
+              alignFrame.setMaximum(jalview.bin.Cache.getDefault(
+                      "SHOW_FULLSCREEN", false));
+            } catch (java.beans.PropertyVetoException ex)
+            {
+            }
           }
         }
         else
@@ -406,7 +407,9 @@ public class FileLoader implements Runnable
 
           final String errorMessage = "Couldn't load file " + title + "\n"
                   + error;
-          if (raiseGUI)
+          // TODO: refactor FileLoader to be independent of Desktop / Applet GUI
+          // bits ?
+          if (raiseGUI && Desktop.desktop != null)
           {
             javax.swing.SwingUtilities.invokeLater(new Runnable()
             {
@@ -459,12 +462,12 @@ public class FileLoader implements Runnable
         {
           public void run()
           {
-            javax.swing.JOptionPane
-                    .showInternalMessageDialog(
-                            Desktop.desktop,
-                            MessageManager.formatMessage("warn.out_of_memory_loading_file", new String[]{file}),
-                            MessageManager.getString("label.out_of_memory"),
-                            javax.swing.JOptionPane.WARNING_MESSAGE);
+            javax.swing.JOptionPane.showInternalMessageDialog(
+                    Desktop.desktop, MessageManager.formatMessage(
+                            "warn.out_of_memory_loading_file", new String[]
+                            { file }), MessageManager
+                            .getString("label.out_of_memory"),
+                    javax.swing.JOptionPane.WARNING_MESSAGE);
           }
         });
       }
index f9c717d..9228257 100755 (executable)
@@ -20,7 +20,9 @@
  */
 package jalview.io;
 
+import jalview.api.AlignExportSettingI;
 import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
 import jalview.util.MessageManager;
 
 import java.io.BufferedReader;
@@ -49,12 +51,26 @@ public class FileParse
 
   public File inFile = null;
 
+  /**
+   * a viewport associated with the current file operation. May be null. May
+   * move to different object.
+   */
   private AlignViewportI viewport;
 
-  public int index = 1; // sequence counter for FileParse object created from
+  /**
+   * specific settings for exporting data from the current context
+   */
+  private AlignExportSettingI exportSettings;
 
-  // same data source
+  /**
+   * sequence counter for FileParse object created from same data source
+   */
+  public int index = 1;
 
+  /**
+   * separator for extracting specific 'frame' of a datasource for formats that
+   * support multiple records (e.g. BLC, Stockholm, etc)
+   */
   protected char suffixSeparator = '#';
 
   /**
@@ -395,6 +411,19 @@ public class FileParse
     throw new IOException(MessageManager.formatMessage("exception.invalid_source_stream", new String[]{errormessage}));
   }
 
+  /**
+   * 
+   * @return true if this FileParse is configured for Export only
+   */
+  public boolean isExporting()
+  {
+    return !error && dataIn == null;
+  }
+
+  /**
+   * 
+   * @return true if the data source is valid
+   */
   public boolean isValid()
   {
     return !error;
@@ -501,4 +530,37 @@ public class FileParse
   {
     this.viewport = viewport;
   }
+
+  /**
+   * @return the currently configured exportSettings for writing data.
+   */
+  public AlignExportSettingI getExportSettings()
+  {
+    return exportSettings;
+  }
+
+  /**
+   * Set configuration for export of data.
+   * 
+   * @param exportSettings
+   *          the exportSettings to set
+   */
+  public void setExportSettings(AlignExportSettingI exportSettings)
+  {
+    this.exportSettings = exportSettings;
+  }
+
+  /**
+   * method overridden by complex file exporter/importers which support
+   * exporting visualisation and layout settings for a view
+   * 
+   * @param avpanel
+   */
+  public void configureForView(AlignmentViewPanel avpanel)
+  {
+    if (avpanel!=null) {
+      setViewport(avpanel.getAlignViewport());
+    }
+    // could also set export/import settings
+  }
 }
index d241308..e795925 100755 (executable)
@@ -20,7 +20,8 @@
  */
 package jalview.io;
 
-import jalview.api.AlignViewportI;
+import jalview.api.AlignExportSettingI;
+import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
@@ -28,6 +29,7 @@ import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.gui.AlignmentPanel;
 
 /**
  * Additional formatting methods used by the application in a number of places.
@@ -37,9 +39,9 @@ import jalview.datamodel.SequenceI;
  */
 public class FormatAdapter extends AppletFormatAdapter
 {
-  public FormatAdapter(AlignViewportI viewport)
+  public FormatAdapter(AlignmentViewPanel viewpanel)
   {
-    super(viewport);
+    super(viewpanel);
     init();
   }
 
@@ -49,6 +51,12 @@ public class FormatAdapter extends AppletFormatAdapter
     init();
   }
 
+  public FormatAdapter(AlignmentPanel alignPanel,
+          AlignExportSettingI settings)
+  {
+    super(alignPanel, settings);
+  }
+
   private void init()
   {
     if (jalview.bin.Cache.getDefault("STRUCT_FROM_PDB", true))
@@ -304,17 +312,17 @@ public class FormatAdapter extends AppletFormatAdapter
     return this.formatSequences(format, alignment, suffix);
   }
 
-  public Alignment readFile(String inFile, String type, String format)
+  public AlignmentI readFile(String inFile, String type, String format)
           throws java.io.IOException
   {
-    Alignment al = super.readFile(inFile, type, format);
+    AlignmentI al = super.readFile(inFile, type, format);
     return al;
   }
 
   public AlignmentI readFromFile(FileParse source, String format)
           throws java.io.IOException
   {
-    Alignment al = (Alignment) super.readFromFile(source, format);
+    AlignmentI al = super.readFromFile(source, format);
     return al;
   }
 
@@ -341,14 +349,19 @@ public class FormatAdapter extends AppletFormatAdapter
   }
 
   /**
-   * Create a flat file representation of a given view or selected region of a view
+   * Create a flat file representation of a given view or selected region of a
+   * view
+   * 
    * @param format
-   * @param av
+   * @param ap
+   *          alignment panel originating the view
    * @return String containing flat file
    */
-  public String formatSequences(String format, AlignViewportI av, boolean selectedOnly)
+  public String formatSequences(String format, AlignmentViewPanel ap,
+          boolean selectedOnly)
   {
-    return formatSequences(format, getCacheSuffixDefault(format), av, selectedOnly);
+    return formatSequences(format, getCacheSuffixDefault(format), ap,
+            selectedOnly);
   }
 
 
diff --git a/src/jalview/io/Gff3File.java b/src/jalview/io/Gff3File.java
new file mode 100644 (file)
index 0000000..1f8c3be
--- /dev/null
@@ -0,0 +1,154 @@
+package jalview.io;
+
+import jalview.api.AlignViewportI;
+import jalview.datamodel.AlignedCodonFrame;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * A GFF3 File parsing wrapper for the tangled mess that is FeaturesFile.
+ * 
+ * This class implements the methods relied on by FileLoader/FormatAdapter in
+ * order to allow them to load alignments directly from GFF2 and GFF3 files that
+ * contain sequence data and alignment information.
+ * 
+ * Major issues:
+ * 
+ * 1. GFF3 files commonly include mappings between DNA, RNA and Protein - so
+ * this class needs a dataset AlignmentI context to create alignment codon
+ * mappings.
+ * 
+ * 2. A single GFF3 file can generate many distinct alignments. Support will be
+ * needed to allow several AlignmentI instances to be generated from a single
+ * file.
+ * 
+ * 
+ * @author jprocter
+ *
+ */
+public class Gff3File extends FeaturesFile
+{
+
+  /**
+   * 
+   */
+  public Gff3File()
+  {
+    super();
+  }
+
+  /**
+   * @param source
+   * @throws IOException
+   */
+  public Gff3File(FileParse source) throws IOException
+  {
+    super(source);
+  }
+
+  /**
+   * @param inFile
+   * @param type
+   * @throws IOException
+   */
+  public Gff3File(String inFile, String type) throws IOException
+  {
+    super(inFile, type);
+  }
+
+  /**
+   * @param parseImmediately
+   * @param source
+   * @throws IOException
+   */
+  public Gff3File(boolean parseImmediately, FileParse source)
+          throws IOException
+  {
+    super(parseImmediately, source);
+  }
+
+  /**
+   * @param parseImmediately
+   * @param inFile
+   * @param type
+   * @throws IOException
+   */
+  public Gff3File(boolean parseImmediately, String inFile, String type)
+          throws IOException
+  {
+    super(parseImmediately, inFile, type);
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see jalview.io.FeaturesFile#print()
+   */
+  @Override
+  public String print()
+  {
+    // TODO GFF3 writer with sensible defaults for writing alignment data
+
+    // return super.printGFFFormat(seqs, visible);
+    return ("Not yet implemented.");
+  }
+
+  AlignmentI dataset;
+
+  List<AlignmentI> alignments;
+  @Override
+  public void parse()
+  {
+    AlignViewportI av = getViewport();
+    if (av != null)
+    {
+      if (av.getAlignment() != null)
+      {
+        dataset = av.getAlignment().getDataset();
+      }
+      if (dataset == null)
+      {
+        // working in the applet context ?
+        dataset = av.getAlignment();
+      }
+    }
+    else
+    {
+      dataset = new Alignment(new SequenceI[]
+      {});
+    }
+
+    boolean parseResult = parse(dataset, null, null, false, true);
+    if (!parseResult)
+    {
+      // pass error up somehow
+    }
+    if (av != null)
+    {
+      // update viewport with the dataset data ?
+    }
+    else
+    {
+      setSeqs(dataset.getSequencesArray());
+    }
+
+  }
+
+  @Override
+  public void addProperties(AlignmentI al)
+  {
+    super.addProperties(al);
+    if (dataset.getCodonFrames() != null)
+    {
+      AlignmentI ds = (al.getDataset() == null) ? al : al.getDataset();
+      for (AlignedCodonFrame codons : dataset.getCodonFrames())
+      {
+        ds.addCodonFrame(codons);
+      }
+    }
+  }
+}
index 73aa5d2..a4e9bf4 100644 (file)
@@ -22,6 +22,7 @@
 package jalview.io;
 
 import java.io.IOException;
+import java.io.StringReader;
 
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
@@ -66,18 +67,24 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile
   {
     try
     {
-      StringBuilder htmlData = new StringBuilder();
-      String currentLine;
-      while ((currentLine = nextLine()) != null)
-      {
-        htmlData.append(currentLine);
+      Element content = null;
+      Document doc = null;
+      try {
+         StringBuilder htmlData = new StringBuilder();
+          String currentLine;
+          while ((currentLine = nextLine()) != null)
+          {
+            htmlData.append(currentLine);
+          }
+
+          doc = Jsoup.parse(htmlData.toString());
+      } catch (OutOfMemoryError oom) {
+         errormessage = "Not enough memory to process HTML document";
+         throw new IOException(errormessage);
       }
-
-      Document doc = Jsoup.parse(htmlData.toString());
-      Element content = doc.getElementById("seqData");
-      String alignmentJsonString = content.val();
-
-      JSONFile jsonFile = new JSONFile().parse(alignmentJsonString);
+      content = doc.getElementById("seqData");
+      
+      JSONFile jsonFile = new JSONFile().parse(new StringReader(content.val()));
       this.seqs = jsonFile.getSeqs();
       this.seqGroups = jsonFile.getSeqGroups();
       this.annotations = jsonFile.getAnnotations();
@@ -87,7 +94,8 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile
       this.columnSelection = jsonFile.getColumnSelection();
     } catch (Exception e)
     {
-      e.printStackTrace();
+      errormessage = "Failed to extract data from HTML document.";
+      throw new IOException("Unexpected exception whilst extracting JSon from HTML.",e);
     }
   }
 
index db34c2f..7e02118 100644 (file)
@@ -1,10 +1,9 @@
 package jalview.io;
 
+import jalview.api.FeatureRenderer;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignViewport;
 import jalview.gui.AlignmentPanel;
-import jalview.gui.AnnotationPanel;
-import jalview.gui.FeatureRenderer;
 import jalview.gui.HTMLOptions;
 import jalview.math.AlignmentDimension;
 import jalview.util.MessageManager;
@@ -27,15 +26,12 @@ public class HtmlSvgOutput
   FeatureRenderer fr;
   AlignmentPanel ap;
 
-  AnnotationPanel annotationPanel;
 
   public HtmlSvgOutput(File file, AlignmentPanel ap)
   {
-
-      this.av = ap.av;
-      this.ap = ap;
-    av.setFeatureRenderer(new FeatureRenderer(ap));
-      this.annotationPanel = ap.getAnnotationPanel();
+    this.av = ap.av;
+    this.ap = ap;
+    fr = ap.cloneFeatureRenderer();
     generateHtmlSvgOutput(file);
   }
 
@@ -101,7 +97,7 @@ public class HtmlSvgOutput
 
       String titleSvgData = g1.getSVGDocument();
       String alignSvgData = g2.getSVGDocument();
-      String jsonData = JSONFile.getJSONData(av);
+      String jsonData = JSONFile.getJSONData(ap);
       String htmlData = getHtml(titleSvgData, alignSvgData, jsonData);
 
       out.write(htmlData.getBytes());
index f1089ec..27f08ae 100755 (executable)
@@ -30,6 +30,8 @@ import java.io.IOException;
  */
 public class IdentifyFile
 {
+  public static final String GFF3File = "GFF v2 or v3";
+
   /**
    * Identify a datasource's file content.
    *
@@ -130,7 +132,12 @@ public class IdentifyFile
         }
         data = data.toUpperCase();
 
-        if ((data.indexOf("# STOCKHOLM") > -1))
+        if (data.startsWith("##GFF-VERSION"))
+        {
+          reply = GFF3File;
+          break;
+        }
+        if (data.indexOf("# STOCKHOLM") > -1)
         {
           reply = "STH";
           break;
index d2b8412..ce70ea5 100644 (file)
 
 package jalview.io;
 
-import java.awt.Color;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-
-import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
 import jalview.api.ComplexAlignFile;
 import jalview.api.FeatureRenderer;
 import jalview.api.FeaturesDisplayedI;
@@ -55,6 +43,19 @@ import jalview.json.binding.v1.SequencePojo;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
 
+import java.awt.Color;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+
 public class JSONFile extends AlignFile implements ComplexAlignFile
 {
   private ColourSchemeI colourScheme;
@@ -79,8 +80,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
 
   private FeatureRenderer fr;
 
-  private JSONExportSettings jsonExportSettings;
-
   private List<int[]> hiddenColumns;
 
   private ColumnSelection columnSelection;
@@ -107,41 +106,16 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
   @Override
   public void parse() throws IOException
   {
-    StringBuilder jsonStringBuilder = new StringBuilder();
-    String currentLine;
-    while ((currentLine = nextLine()) != null)
-    {
-      jsonStringBuilder.append(currentLine);
-    }
-    parse(jsonStringBuilder.toString());
+    parse(getReader());
 
   }
-
   @Override
   public String print()
   {
     String jsonOutput = null;
     try
     {
-      if (getJsonExportSettings() == null)
-      {
-        jsonExportSettings = new JSONExportSettings();
-        jsonExportSettings.setExportAnnotations(true);
-        jsonExportSettings.setExportGroups(true);
-        jsonExportSettings.setExportJalviewSettings(true);
-        jsonExportSettings.setExportSequenceFeatures(true);
-      }
-
       AlignmentPojo jsonAlignmentPojo = new AlignmentPojo();
-      if (getViewport() != null)
-      {
-        globalColorScheme = ColourSchemeProperty
-                .getColourName(getViewport()
-                .getGlobalColourScheme());
-        setDisplayedFeatures(getViewport().getFeaturesDisplayed());
-        showSeqFeatures = getViewport().isShowSequenceFeatures();
-        fr = getViewport().getFeatureRenderer();
-      }
 
       int count = 0;
       for (SequenceI seq : seqs)
@@ -159,44 +133,46 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
         jsonAlignmentPojo.getSeqs().add(jsonSeqPojo);
       }
 
-      if (jsonExportSettings.isExportJalviewSettings())
+      jsonAlignmentPojo.setGlobalColorScheme(globalColorScheme);
+      jsonAlignmentPojo.getAppSettings().put("application", application);
+      jsonAlignmentPojo.getAppSettings().put("version", version);
+      jsonAlignmentPojo.getAppSettings().put("webStartUrl", webstartUrl);
+      jsonAlignmentPojo.getAppSettings().put("showSeqFeatures",
+              String.valueOf(showSeqFeatures));
+
+      String[] hiddenSections = getHiddenSections();
+      if (hiddenSections != null)
       {
-        jsonAlignmentPojo.setGlobalColorScheme(globalColorScheme);
-        jsonAlignmentPojo.getAppSettings().put("application", application);
-        jsonAlignmentPojo.getAppSettings().put("version", version);
-        jsonAlignmentPojo.getAppSettings().put("webStartUrl", webstartUrl);
-        jsonAlignmentPojo.getAppSettings().put("showSeqFeatures",
-                String.valueOf(showSeqFeatures));
-
-        String[] hiddenSections = exportHiddenSections();
-        if (hiddenSections != null && getViewport().isIncludeHiddenRegion())
+        if (hiddenSections[0] != null
+                && getExportSettings()
+                        .isExportHiddenColumns())
         {
-          if (hiddenSections[0] != null)
-          {
-            jsonAlignmentPojo.getAppSettings().put("hiddenCols",
-                    String.valueOf(hiddenSections[0]));
-          }
-          if (hiddenSections[1] != null)
-          {
-            jsonAlignmentPojo.getAppSettings().put("hiddenSeqs",
-                    String.valueOf(hiddenSections[1]));
-          }
+          jsonAlignmentPojo.getAppSettings().put("hiddenCols",
+                  String.valueOf(hiddenSections[0]));
+        }
+        if (hiddenSections[1] != null
+                && getExportSettings()
+                        .isExportHiddenSequences())
+        {
+          jsonAlignmentPojo.getAppSettings().put("hiddenSeqs",
+                  String.valueOf(hiddenSections[1]));
         }
       }
 
-      if (jsonExportSettings.isExportAnnotations())
+      if (getExportSettings().isExportAnnotations())
       {
         jsonAlignmentPojo
                 .setAlignAnnotation(annotationToJsonPojo(annotations));
       }
 
-      if (jsonExportSettings.isExportSequenceFeatures())
+      if (getExportSettings().isExportFeatures())
       {
         jsonAlignmentPojo
                 .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr));
       }
 
-      if (jsonExportSettings.isExportGroups() && seqGroups != null
+      if (getExportSettings().isExportGroups()
+              && seqGroups != null
               && seqGroups.size() > 0)
       {
         for (SequenceGroup seqGrp : seqGroups)
@@ -231,7 +207,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     return jsonOutput;
   }
 
-  public String[] exportHiddenSections()
+  public String[] getHiddenSections()
   {
     String[] hiddenSections = new String[2];
     if (getViewport() == null)
@@ -363,7 +339,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
   }
 
   @SuppressWarnings("unchecked")
-  public JSONFile parse(String jsonAlignmentString)
+  public JSONFile parse(Reader jsonAlignmentString)
   {
     try
     {
@@ -614,42 +590,48 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     this.displayedFeatures = displayedFeatures;
   }
 
-  public JSONExportSettings getJsonExportSettings()
-  {
-    return jsonExportSettings;
-  }
-
-  public void setJsonExportSettings(JSONExportSettings jsonExportSettings)
+  @Override
+  public void configureForView(AlignmentViewPanel avpanel)
   {
-    this.jsonExportSettings = jsonExportSettings;
-  }
-
+    super.configureForView(avpanel);
+    if (isExporting())
+    {
+      setViewport(avpanel.getAlignViewport());
+      seqGroups = avpanel.getAlignment().getGroups();
+      setDisplayedFeatures(getViewport().getFeaturesDisplayed());
+      fr = avpanel.cloneFeatureRenderer();
 
-  public static String getJSONData(AlignViewportI av)
-  {
-    JSONFile jsonFile = new JSONFile();
-    jsonFile.setViewport(av);
-    jsonFile.seqGroups = av.getAlignment().getGroups();
-    jsonFile.setDisplayedFeatures(av.getFeaturesDisplayed());
+      for (SequenceI seq : getViewport().getAlignment().getSequences())
+      {
+        seqs.add(seq);
+      }
 
-    for (SequenceI seq : av.getAlignment().getSequences())
-    {
-      jsonFile.seqs.add(seq);
-    }
-  
-    // Add non auto calculated annotation to AlignFile
-    for (AlignmentAnnotation annot : av.getAlignment()
-            .getAlignmentAnnotation())
-    {
-      if (annot != null && !annot.autoCalculated)
+      // Add non auto calculated annotation to AlignFile
+      for (AlignmentAnnotation annot : getViewport().getAlignment()
+              .getAlignmentAnnotation())
       {
-        if (annot.label.equals("PDB.CATempFactor"))
+        if (annot != null && !annot.autoCalculated)
         {
-          continue;
+          if (annot.label.equals("PDB.CATempFactor"))
+          {
+            continue;
+          }
+          annotations.add(annot);
         }
-        jsonFile.annotations.add(annot);
       }
+
+      globalColorScheme = ColourSchemeProperty.getColourName(getViewport()
+              .getGlobalColourScheme());
+      setDisplayedFeatures(getViewport().getFeaturesDisplayed());
+      showSeqFeatures = getViewport().isShowSequenceFeatures();
     }
+  }
+
+
+  public static String getJSONData(AlignmentViewPanel av)
+  {
+    JSONFile jsonFile = new JSONFile();
+    jsonFile.configureForView(av);
     String jsonString = jsonFile.print();
     return jsonString;
   }
index ce65eea..d7f6dbc 100644 (file)
@@ -3,7 +3,6 @@
  */
 package jalview.io;
 
-import jalview.datamodel.Alignment;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
@@ -171,13 +170,6 @@ public class PhylipFile extends AlignFile
         seqs.add(sequenceElements[i]);
       }
 
-      // create an alignment based on the sequences
-      Alignment a = new Alignment(sequenceElements);
-      // add annotations - although comments say addAnnotations
-      // is used by AppletFormatAdapter, it doesn't say other
-      // classes should/can not use it
-      addAnnotations(a);
-
     } catch (IOException e)
     {
       System.err.println("Exception parsing PHYLIP file " + e);
diff --git a/src/jalview/jbgui/GAlignExportSettings.java b/src/jalview/jbgui/GAlignExportSettings.java
new file mode 100644 (file)
index 0000000..15498c6
--- /dev/null
@@ -0,0 +1,156 @@
+package jalview.jbgui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+
+@SuppressWarnings("serial")
+public abstract class GAlignExportSettings extends JPanel
+{
+  protected JPanel hiddenRegionConfPanel = new JPanel();
+
+  protected JPanel complexExportPanel = new JPanel();
+
+  protected JPanel optionsPanel = new JPanel();
+
+  protected JPanel actionPanel = new JPanel();
+
+  protected BorderLayout hiddenRegionLayout = new BorderLayout();
+
+  protected BorderLayout complexExportLayout = new BorderLayout();
+
+  protected BorderLayout mainLayout = new BorderLayout();
+
+  protected JCheckBox chkAll = new JCheckBox("Check All");
+
+  protected JCheckBox chkHiddenSeqs = new JCheckBox(
+          "Export Hidden Sequences");
+
+  protected JCheckBox chkHiddenCols = new JCheckBox("Export Hidden Columns");
+
+  protected JCheckBox chkExportAnnots = new JCheckBox("Export Annotations");
+
+  protected JCheckBox chkExportFeats = new JCheckBox("Export Features");
+
+  protected JCheckBox chkExportGrps = new JCheckBox("Export Groups");
+
+  JButton btnOk = new JButton("Ok");
+
+  JButton btnCancel = new JButton("Cancel");
+
+  private boolean hasHiddenSeq, hasHiddenCols, isComplexAlignFile,
+          showDialog;
+
+  public GAlignExportSettings(boolean hasHiddenSeq, boolean hasHiddenCols,
+          String alignFileFormat)
+  {
+    this.hasHiddenSeq = hasHiddenSeq;
+    this.hasHiddenCols = hasHiddenCols;
+    String[] complexFormats =
+    { "JSON", "HTML" };
+
+    for (String format : complexFormats)
+    {
+      if (format.equalsIgnoreCase(alignFileFormat))
+      {
+        this.isComplexAlignFile = true;
+        break;
+      }
+    }
+    if (this.hasHiddenCols || this.hasHiddenSeq || this.isComplexAlignFile)
+    {
+      this.showDialog = true;
+    }
+    init();
+  }
+
+  public void init()
+  {
+    hiddenRegionConfPanel.setLayout(hiddenRegionLayout);
+    complexExportPanel.setLayout(complexExportLayout);
+    setLayout(mainLayout);
+
+    chkAll.addItemListener(new ItemListener()
+    {
+      public void itemStateChanged(ItemEvent e)
+      {
+        checkAllAction();
+      }
+    });
+
+    btnOk.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        ok_actionPerformed(e);
+      }
+    });
+
+    btnCancel.addActionListener(new ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        cancel_actionPerformed(e);
+      }
+    });
+
+    hiddenRegionConfPanel.add(chkAll, BorderLayout.NORTH);
+    hiddenRegionConfPanel.add(chkHiddenSeqs, BorderLayout.CENTER);
+    hiddenRegionConfPanel.add(chkHiddenCols, BorderLayout.SOUTH);
+    chkHiddenSeqs.setEnabled(hasHiddenSeq);
+    chkHiddenCols.setEnabled(hasHiddenCols);
+
+    complexExportPanel.add(chkExportAnnots, BorderLayout.NORTH);
+    complexExportPanel.add(chkExportFeats, BorderLayout.CENTER);
+    complexExportPanel.add(chkExportGrps, BorderLayout.SOUTH);
+
+    if (hasHiddenSeq || hasHiddenCols)
+    {
+      optionsPanel.add(hiddenRegionConfPanel);
+    }
+
+    if (this.isComplexAlignFile)
+    {
+      optionsPanel.add(complexExportPanel);
+    }
+    actionPanel.add(btnCancel);
+    actionPanel.add(btnOk);
+
+    add(optionsPanel, BorderLayout.NORTH);
+    add(actionPanel, BorderLayout.SOUTH);
+
+  }
+  
+  private void checkAllAction()
+  {
+    boolean isSelected = chkAll.isSelected();
+    chkHiddenSeqs.setSelected(chkHiddenSeqs.isEnabled() && isSelected);
+    chkHiddenCols.setSelected(chkHiddenCols.isEnabled() && isSelected);
+    chkExportAnnots.setSelected(isComplexAlignFile
+            && chkExportAnnots.isEnabled() && isSelected);
+    chkExportFeats.setSelected(isComplexAlignFile
+            && chkExportFeats.isEnabled() && isSelected);
+    chkExportGrps.setSelected(isComplexAlignFile
+            && chkExportGrps.isEnabled() && isSelected);
+  }
+
+  public boolean isShowDialog()
+  {
+    return showDialog;
+  }
+
+  public void setShowDialog(boolean showDialog)
+  {
+    this.showDialog = showDialog;
+  }
+
+  public abstract void ok_actionPerformed(ActionEvent e);
+
+  public abstract void cancel_actionPerformed(ActionEvent e);
+}
index 45a5957..0b2e6be 100755 (executable)
@@ -20,7 +20,7 @@
  */
 package jalview.jbgui;
 
-import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
 import jalview.io.FormatAdapter;
 import jalview.util.MessageManager;
 
@@ -211,7 +211,7 @@ public class GFinder extends JPanel
         public void run()
         {
           String str = textfield.getText();
-          Alignment al = null;
+          AlignmentI al = null;
           try
           {
             al = new FormatAdapter().readFile(str, "Paste", "FASTA");
index 2b8e4b5..e01bbd4 100644 (file)
@@ -1,4 +1,4 @@
-#Wed Jun 17 15:04:02 BST 2015
+#Fri Jun 26 14:22:47 BST 2015
 jalview.schemabinding.version2.ThresholdLine=jalview.schemabinding.version2.descriptors.ThresholdLineDescriptor
 jalview.schemabinding.version2.SequenceSetProperties=jalview.schemabinding.version2.descriptors.SequenceSetPropertiesDescriptor
 jalview.schemabinding.version2.StructureState=jalview.schemabinding.version2.descriptors.StructureStateDescriptor
index 9fc3384..cae3ec2 100644 (file)
@@ -29,13 +29,16 @@ implements java.io.Serializable
     //--------------------------/
 
     /**
-     * handle for the calculation which uses this parameter set
+     * handle for the calculation which uses
+     *  this parameter set
+     *  
      */
     private java.lang.String _calcId;
 
     /**
-     * should the calculation be performed immediately after
-     * loading in order to refresh results
+     * should the calculation be performed
+     *  immediately after loading in order to refresh results
+     *  
      */
     private boolean _needsUpdate = false;
 
@@ -45,7 +48,9 @@ implements java.io.Serializable
     private boolean _has_needsUpdate;
 
     /**
-     * should the calculation be automatically performed on edits
+     * should the calculation be automatically
+     *  performed on edits
+     *  
      */
     private boolean _autoUpdate;
 
@@ -85,7 +90,9 @@ implements java.io.Serializable
     /**
      * Returns the value of field 'autoUpdate'. The field
      * 'autoUpdate' has the following description: should the
-     * calculation be automatically performed on edits
+     * calculation be automatically
+     *  performed on edits
+     *  
      * 
      * @return the value of field 'AutoUpdate'.
      */
@@ -97,7 +104,9 @@ implements java.io.Serializable
     /**
      * Returns the value of field 'calcId'. The field 'calcId' has
      * the following description: handle for the calculation which
-     * uses this parameter set
+     * uses
+     *  this parameter set
+     *  
      * 
      * @return the value of field 'CalcId'.
      */
@@ -109,8 +118,9 @@ implements java.io.Serializable
     /**
      * Returns the value of field 'needsUpdate'. The field
      * 'needsUpdate' has the following description: should the
-     * calculation be performed immediately after loading in order
-     * to refresh results
+     * calculation be performed
+     *  immediately after loading in order to refresh results
+     *  
      * 
      * @return the value of field 'NeedsUpdate'.
      */
@@ -142,7 +152,9 @@ implements java.io.Serializable
     /**
      * Returns the value of field 'autoUpdate'. The field
      * 'autoUpdate' has the following description: should the
-     * calculation be automatically performed on edits
+     * calculation be automatically
+     *  performed on edits
+     *  
      * 
      * @return the value of field 'AutoUpdate'.
      */
@@ -154,8 +166,9 @@ implements java.io.Serializable
     /**
      * Returns the value of field 'needsUpdate'. The field
      * 'needsUpdate' has the following description: should the
-     * calculation be performed immediately after loading in order
-     * to refresh results
+     * calculation be performed
+     *  immediately after loading in order to refresh results
+     *  
      * 
      * @return the value of field 'NeedsUpdate'.
      */
@@ -214,7 +227,9 @@ implements java.io.Serializable
     /**
      * Sets the value of field 'autoUpdate'. The field 'autoUpdate'
      * has the following description: should the calculation be
-     * automatically performed on edits
+     * automatically
+     *  performed on edits
+     *  
      * 
      * @param autoUpdate the value of field 'autoUpdate'.
      */
@@ -227,7 +242,8 @@ implements java.io.Serializable
     /**
      * Sets the value of field 'calcId'. The field 'calcId' has the
      * following description: handle for the calculation which uses
-     * this parameter set
+     *  this parameter set
+     *  
      * 
      * @param calcId the value of field 'calcId'.
      */
@@ -239,8 +255,9 @@ implements java.io.Serializable
     /**
      * Sets the value of field 'needsUpdate'. The field
      * 'needsUpdate' has the following description: should the
-     * calculation be performed immediately after loading in order
-     * to refresh results
+     * calculation be performed
+     *  immediately after loading in order to refresh results
+     *  
      * 
      * @param needsUpdate the value of field 'needsUpdate'.
      */
index 86d789e..602473f 100644 (file)
@@ -198,7 +198,8 @@ public class JGroup implements java.io.Serializable {
 
     /**
      * Optional sequence group ID (only
-     *  needs to be unique for this
+     *  needs to be
+     *  unique for this
      *  alignment)
      *  
      */
@@ -452,7 +453,8 @@ public class JGroup implements java.io.Serializable {
     /**
      * Returns the value of field 'id'. The field 'id' has the
      * following description: Optional sequence group ID (only
-     *  needs to be unique for this
+     *  needs to be
+     *  unique for this
      *  alignment)
      *  
      * 
@@ -1027,7 +1029,8 @@ public class JGroup implements java.io.Serializable {
     /**
      * Sets the value of field 'id'. The field 'id' has the
      * following description: Optional sequence group ID (only
-     *  needs to be unique for this
+     *  needs to be
+     *  unique for this
      *  alignment)
      *  
      * 
index 5408c63..2c19f1f 100644 (file)
@@ -63,7 +63,8 @@ public class Setting implements java.io.Serializable {
 
     /**
      * Optional minimum colour
-     *  for graduated feature
+     *  for graduated
+     *  feature
      *  colour
      *  
      */
@@ -286,7 +287,8 @@ public class Setting implements java.io.Serializable {
      * Returns the value of field 'mincolour'. The field
      * 'mincolour' has the following description: Optional minimum
      * colour
-     *  for graduated feature
+     *  for graduated
+     *  feature
      *  colour
      *  
      * 
@@ -591,7 +593,8 @@ public class Setting implements java.io.Serializable {
     /**
      * Sets the value of field 'mincolour'. The field 'mincolour'
      * has the following description: Optional minimum colour
-     *  for graduated feature
+     *  for graduated
+     *  feature
      *  colour
      *  
      * 
index 82773a3..fe7c95d 100644 (file)
@@ -199,8 +199,17 @@ public class StructureState implements java.io.Serializable {
     private boolean _has_colourByJmol;
 
     /**
-     * An identifier for the viewer type, currently either
-     *  JMOL or CHIMERA
+     * An
+     *  identifier
+     *  for
+     *  the
+     *  viewer
+     *  type,
+     *  currently
+     *  either
+     *  JMOL
+     *  or
+     *  CHIMERA
      *  
      */
     private java.lang.String _type;
@@ -441,9 +450,17 @@ public class StructureState implements java.io.Serializable {
 
     /**
      * Returns the value of field 'type'. The field 'type' has the
-     * following description: An identifier for the viewer type,
-     * currently either
-     *  JMOL or CHIMERA
+     * following description: An
+     *  identifier
+     *  for
+     *  the
+     *  viewer
+     *  type,
+     *  currently
+     *  either
+     *  JMOL
+     *  or
+     *  CHIMERA
      *  
      * 
      * @return the value of field 'Type'.
@@ -929,9 +946,17 @@ public class StructureState implements java.io.Serializable {
 
     /**
      * Sets the value of field 'type'. The field 'type' has the
-     * following description: An identifier for the viewer type,
-     * currently either
-     *  JMOL or CHIMERA
+     * following description: An
+     *  identifier
+     *  for
+     *  the
+     *  viewer
+     *  type,
+     *  currently
+     *  either
+     *  JMOL
+     *  or
+     *  CHIMERA
      *  
      * 
      * @param type the value of field 'type'.
index 7fd6238..b147498 100644 (file)
@@ -113,7 +113,8 @@ public class Tree implements java.io.Serializable {
 
     /**
      * Tree ID added for binding tree
-     *  visualization settings to vamsas
+     *  visualization
+     *  settings to vamsas
      *  document trees in jalview 2.4.1
      *  
      */
@@ -330,7 +331,8 @@ public class Tree implements java.io.Serializable {
     /**
      * Returns the value of field 'id'. The field 'id' has the
      * following description: Tree ID added for binding tree
-     *  visualization settings to vamsas
+     *  visualization
+     *  settings to vamsas
      *  document trees in jalview 2.4.1
      *  
      * 
@@ -716,7 +718,8 @@ public class Tree implements java.io.Serializable {
     /**
      * Sets the value of field 'id'. The field 'id' has the
      * following description: Tree ID added for binding tree
-     *  visualization settings to vamsas
+     *  visualization
+     *  settings to vamsas
      *  document trees in jalview 2.4.1
      *  
      * 
index 7dcb3ee..136a3b3 100644 (file)
@@ -383,15 +383,16 @@ public class Viewport implements java.io.Serializable {
 
     /**
      * unique id used by jalview to
-     *  synchronize between stored and
+     *  synchronize
+     *  between stored and
      *  instantiated views
      *  
      */
     private java.lang.String _id;
 
     /**
-     * The viewport id of this viewport's (cdna/protein) coding
-     * complement, if any
+     * The viewport id of this viewport's
+     *  (cdna/protein) coding complement, if any
      *  
      */
     private java.lang.String _complementId;
@@ -882,8 +883,8 @@ public class Viewport implements java.io.Serializable {
     /**
      * Returns the value of field 'complementId'. The field
      * 'complementId' has the following description: The viewport
-     * id of this viewport's (cdna/protein) coding complement, if
-     * any
+     * id of this viewport's
+     *  (cdna/protein) coding complement, if any
      *  
      * 
      * @return the value of field 'ComplementId'.
@@ -1033,7 +1034,8 @@ public class Viewport implements java.io.Serializable {
     /**
      * Returns the value of field 'id'. The field 'id' has the
      * following description: unique id used by jalview to
-     *  synchronize between stored and
+     *  synchronize
+     *  between stored and
      *  instantiated views
      *  
      * 
@@ -2151,8 +2153,8 @@ public class Viewport implements java.io.Serializable {
     /**
      * Sets the value of field 'complementId'. The field
      * 'complementId' has the following description: The viewport
-     * id of this viewport's (cdna/protein) coding complement, if
-     * any
+     * id of this viewport's
+     *  (cdna/protein) coding complement, if any
      *  
      * 
      * @param complementId the value of field 'complementId'.
@@ -2299,7 +2301,8 @@ public class Viewport implements java.io.Serializable {
     /**
      * Sets the value of field 'id'. The field 'id' has the
      * following description: unique id used by jalview to
-     *  synchronize between stored and
+     *  synchronize
+     *  between stored and
      *  instantiated views
      *  
      * 
index 399347b..5617bcf 100644 (file)
  */
 package jalview.viewmodel;
 
-import java.awt.Color;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Deque;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.analysis.Conservation;
 import jalview.api.AlignCalcManagerI;
@@ -67,6 +56,17 @@ import jalview.workers.ComplementConsensusThread;
 import jalview.workers.ConsensusThread;
 import jalview.workers.StrucConsensusThread;
 
+import java.awt.Color;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Deque;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * base class holding visualization and analysis attributes and common logic for
  * an active alignment view displayed in the GUI
@@ -1055,18 +1055,12 @@ public abstract class AlignmentViewport implements AlignViewportI,
     // hasHiddenColumns = colSel.hasHiddenColumns();
   }
 
-  protected boolean hasHiddenRows = false;
-
   @Override
   public boolean hasHiddenRows()
   {
-    return hasHiddenRows;
+    return alignment.getHiddenSequences().getSize() > 0;
   }
 
-  public void setHasHiddenRows(boolean hasHiddenRows)
-  {
-    this.hasHiddenRows = hasHiddenRows;
-  }
 
   protected SequenceGroup selectionGroup;
 
@@ -1304,7 +1298,6 @@ public abstract class AlignmentViewport implements AlignViewportI,
         setSequenceAnnotationsVisible(seq, true);
       }
 
-      hasHiddenRows = false;
       hiddenRepSequences = null;
 
       firePropertyChange("alignment", null, alignment.getSequences());
@@ -1332,12 +1325,6 @@ public abstract class AlignmentViewport implements AlignViewportI,
         selectionGroup.addSequence(seq, false);
         setSequenceAnnotationsVisible(seq, true);
       }
-      // JBPNote: refactor: only update flag if we modified visiblity (used to
-      // do this regardless)
-      if (alignment.getHiddenSequences().getSize() < 1)
-      {
-        hasHiddenRows = false;
-      }
       firePropertyChange("alignment", null, alignment.getSequences());
       sendSelection();
     }
@@ -1366,7 +1353,6 @@ public abstract class AlignmentViewport implements AlignViewportI,
         alignment.getHiddenSequences().hideSequence(seq[i]);
         setSequenceAnnotationsVisible(seq[i], false);
       }
-      hasHiddenRows = true;
       firePropertyChange("alignment", null, alignment.getSequences());
     }
   }
index 57d57da..15d1da7 100644 (file)
@@ -2,7 +2,7 @@ package jalview.viewmodel.seqfeatures;
 
 import jalview.api.FeatureSettingsModelI;
 
-public class FeatureSettingsModel implements FeatureSettingsModelI
+public abstract class FeatureSettingsModel implements FeatureSettingsModelI
 {
 
 }
index e22aa12..3db663d 100644 (file)
@@ -587,7 +587,7 @@ public class DasSequenceFeatureFetcher
 
     if (af != null && af.featureSettings != null)
     {
-      af.featureSettings.setTableData();
+      af.featureSettings.discoverAllFeatureData();
     }
 
     if (getFeatSettings() != null)
index 45f4f7a..40e2193 100644 (file)
@@ -23,6 +23,7 @@ package jalview.ws.dbsources;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
+
 import jalview.ws.seqfetcher.DbSourceProxyImpl;
 
 public abstract class EbiFileRetrievedProxy extends DbSourceProxyImpl
@@ -36,7 +37,9 @@ public abstract class EbiFileRetrievedProxy extends DbSourceProxyImpl
   public StringBuffer getRawRecords()
   {
     if (file == null)
+    {
       return null;
+    }
     StringBuffer bf = null;
     try
     {
index 6a871ee..4c8f3ce 100644 (file)
  */
 package jalview.ws.dbsources;
 
-import java.io.File;
-import java.io.FileReader;
-import java.io.Reader;
-import java.util.Vector;
-
-import org.exolab.castor.xml.Unmarshaller;
-
-import com.stevesoft.pat.Regex;
-
-import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.DBRefSource;
@@ -42,6 +32,15 @@ import jalview.ws.ebi.EBIFetchClient;
 import jalview.ws.seqfetcher.DbSourceProxy;
 import jalview.ws.seqfetcher.DbSourceProxyImpl;
 
+import java.io.File;
+import java.io.FileReader;
+import java.io.Reader;
+import java.util.Vector;
+
+import org.exolab.castor.xml.Unmarshaller;
+
+import com.stevesoft.pat.Regex;
+
 /**
  * @author JimP
  * 
@@ -156,7 +155,7 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
     {
       queries = queries.toUpperCase().replaceAll(
               "(UNIPROT\\|?|UNIPROT_|UNIREF\\d+_|UNIREF\\d+\\|?)", "");
-      Alignment al = null;
+      AlignmentI al = null;
       EBIFetchClient ebi = new EBIFetchClient();
       // uniprotxml parameter required since december 2007
       // uniprotkb dbname changed introduced december 2008
@@ -245,7 +244,7 @@ public class Uniprot extends DbSourceProxyImpl implements DbSourceProxy
    * @param entries
    *          a list of n uniprot entries to be analysed.
    */
-  public void addUniprotXrefs(Alignment al, Vector<UniprotEntry> entries)
+  public void addUniprotXrefs(AlignmentI al, Vector<UniprotEntry> entries)
   {
     final String dbVersion = getDbVersion();
 
index 69d0ae4..62566cf 100644 (file)
@@ -24,6 +24,7 @@ import jalview.analysis.AlignSeq;
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
 import jalview.datamodel.AlignmentView;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.SequenceI;
@@ -103,7 +104,7 @@ class JPredThread extends JWS1Thread implements WSClientI
       {
         return null;
       }
-      Alignment al = null;
+      AlignmentI al = null;
       ColumnSelection alcsel = null;
       int FirstSeq = -1; // the position of the query sequence in Alignment al
 
@@ -279,7 +280,7 @@ class JPredThread extends JWS1Thread implements WSClientI
      * @param al
      * @param profileseq
      */
-    private void alignToProfileSeq(Alignment al, SequenceI profileseq)
+    private void alignToProfileSeq(AlignmentI al, SequenceI profileseq)
     {
       char gc = al.getGapCharacter();
       int[] gapMap = profileseq.gapMap();
index d0d0a6e..d2c1b38 100644 (file)
@@ -959,6 +959,7 @@ class MsaWSThread extends AWS2Thread implements WSClientI
     }
     else
     {
+      // TODO 2.9.x feature
       System.out.println("MERGE WITH OLD FRAME");
       // TODO: modify alignment in original frame, replacing old for new
       // alignment using the commands.EditCommand model to ensure the update can
@@ -987,17 +988,22 @@ class MsaWSThread extends AWS2Thread implements WSClientI
       addSortByMenuItems(af, alorders);
     }
 
+    // TODO: refactor retrieve and show as new splitFrame as Desktop method
+
     /*
      * If alignment was requested from one half of a SplitFrame, show in a
      * SplitFrame with the other pane similarly aligned.
      */
     AlignFrame requestedBy = getRequestingAlignFrame();
-    if (requestedBy != null && requestedBy.getSplitViewContainer() != null)
+    if (requestedBy != null && requestedBy.getSplitViewContainer() != null
+               && requestedBy.getSplitViewContainer().getComplement(requestedBy)!=null)
     {
       AlignmentI complement = requestedBy.getSplitViewContainer()
               .getComplement(requestedBy);
       String complementTitle = requestedBy.getSplitViewContainer()
               .getComplementTitle(requestedBy);
+      // becomes null if the alignment window was closed before the alignment
+      // job finished.
       AlignmentI copyComplement = new Alignment(complement);
       copyComplement.alignAs(al);
       if (copyComplement.getHeight() > 0)
index 719027f..0785dfa 100644 (file)
@@ -20,7 +20,7 @@
  */
 package jalview.ws.seqfetcher;
 
-import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
 import jalview.io.FormatAdapter;
 import jalview.io.IdentifyFile;
 
@@ -118,9 +118,9 @@ public abstract class DbSourceProxyImpl implements DbSourceProxy
    * @return null or a valid alignment
    * @throws Exception
    */
-  protected Alignment parseResult(String result) throws Exception
+  protected AlignmentI parseResult(String result) throws Exception
   {
-    Alignment sequences = null;
+    AlignmentI sequences = null;
     String format = new IdentifyFile().Identify(result, "Paste");
     if (FormatAdapter.isValidFormat(format))
     {
index 8c271b3..186ac03 100644 (file)
@@ -1,9 +1,9 @@
 package MCview;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertEquals;
 
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
 
 public class AtomTest
 {
@@ -54,7 +54,7 @@ public class AtomTest
     {
       new Atom(
               "ATOM    34N  NE2 GLN A  48      22.290   8.595  17.680  1.00 14.30           N");
-      fail("Expected exception");
+      Assert.fail("Expected exception");
     } catch (NumberFormatException e)
     {
       // expected
index 333bfce..6f701e2 100644 (file)
@@ -1,8 +1,8 @@
 package MCview;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class BondTest
 {
index 5be43b3..0df7851 100644 (file)
@@ -1,14 +1,9 @@
 package MCview;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.awt.Color;
-import java.util.Vector;
-
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.analysis.AlignSeq;
 import jalview.datamodel.AlignmentAnnotation;
@@ -18,9 +13,15 @@ import jalview.datamodel.SequenceI;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.TaylorColourScheme;
 
+import java.awt.Color;
+import java.util.Vector;
+
+import org.testng.annotations.Test;
+
 public class PDBChainTest
 {
   PDBChain c = new PDBChain("1GAQ", "A");
+
   Atom a1 = new Atom(1f, 2f, 3f);
 
   Atom a2 = new Atom(5f, 6f, 4f);
index 5d69a00..a4fd286 100644 (file)
@@ -1,10 +1,11 @@
 package MCview;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
@@ -15,8 +16,7 @@ import jalview.io.AppletFormatAdapter;
 
 import java.io.IOException;
 
-import org.junit.Ignore;
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class PDBfileTest
 {
@@ -247,8 +247,8 @@ public class PDBfileTest
    * 
    * @throws IOException
    */
-  @Test
-  @Ignore
+
+  @Test(enabled = false)
   public void testParse_withAnnotate3D() throws IOException
   {
     // TODO requires a mock for Annotate3D processing
index ed98c5b..b5ca0ed 100644 (file)
@@ -1,11 +1,11 @@
 package MCview;
 
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertSame;
 
 import java.util.Vector;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class ResidueTest
 {
index d91502e..ea07aa2 100644 (file)
@@ -1,11 +1,11 @@
 package com.stevesoft.pat;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
 
 import java.io.IOException;
 import java.io.StringWriter;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 /**
  * Test class refactored from RegexWriter main method
index 788e742..eb496bb 100644 (file)
@@ -1,13 +1,14 @@
 
 package jalview.analysis;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
+
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
 import java.util.Hashtable;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class AAFrequencyTest
 {
index c34bb68..606a840 100644 (file)
@@ -1,8 +1,14 @@
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceI;
+import jalview.io.AppletFormatAdapter;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -12,14 +18,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.junit.Before;
-import org.junit.Test;
-
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class AlignmentAnnotationUtilsTest
 {
@@ -118,7 +118,7 @@ public class AlignmentAnnotationUtilsTest
    * 
    * @throws IOException
    */
-  @Before
+  @BeforeMethod
   public void setUp() throws IOException
   {
     alignment = new jalview.io.FormatAdapter().readFile(TEST_DATA,
index 02955f1..d44a6bc 100644 (file)
  */
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.Alignment;
@@ -55,7 +43,20 @@ import jalview.io.FormatAdapter;
 import jalview.util.MapList;
 import jalview.util.MappingUtils;
 
-public class AlignmentUtilsTests 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.testng.annotations.Test;
+
+public class AlignmentUtilsTests
 {
   // @formatter:off
   private static final String TEST_DATA = 
@@ -264,7 +265,7 @@ public class AlignmentUtilsTests
    */
   protected AlignmentI loadAlignment(final String data, String format) throws IOException
   {
-    Alignment a = new FormatAdapter().readFile(data,
+    AlignmentI a = new FormatAdapter().readFile(data,
             AppletFormatAdapter.PASTE, format);
     a.setDataset(null);
     return a;
index 239eb4c..8c3489b 100644 (file)
@@ -1,6 +1,7 @@
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
+
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
@@ -11,8 +12,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class AnnotationSorterTest
 {
@@ -29,7 +30,7 @@ public class AnnotationSorterTest
   /*
    * Set up 6 sequences and 7 annotations.
    */
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     al = buildAlignment(NUM_SEQS);
index 0f235fb..e787ac3 100644 (file)
@@ -1,11 +1,11 @@
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.util.Arrays;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class CodingUtilsTest
 {
index 35606f0..095fc05 100644 (file)
@@ -1,12 +1,12 @@
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertSame;
 
 import jalview.datamodel.DBRefEntry;
 
+import org.testng.annotations.Test;
+
 public class CrossRefTest
 {
   @Test
index 01ed183..6371315 100644 (file)
@@ -1,8 +1,9 @@
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.api.AlignViewportI;
 import jalview.datamodel.AlignedCodon;
 import jalview.datamodel.Alignment;
@@ -14,7 +15,7 @@ import jalview.io.FormatAdapter;
 
 import java.io.IOException;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class DnaTest
 {
index 5c7a305..df04243 100644 (file)
@@ -10,8 +10,8 @@ import jalview.datamodel.SequenceI;
 import java.util.ArrayList;
 import java.util.Arrays;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
 
 public class GroupingTest
 {
@@ -64,17 +64,17 @@ public class GroupingTest
             alignment.getSequencesArray(), cs,
             Arrays.asList(new SequenceGroup[]
             { sg1, sg2 }));
-    Assert.assertEquals(seqgroupsString.length, seqgroupsColSel.length);
+    AssertJUnit.assertEquals(seqgroupsString.length, seqgroupsColSel.length);
     for (int p = 0; p < seqgroupsString.length; p++)
     {
-      Assert.assertEquals(seqgroupsString[p].getName(),
+      AssertJUnit.assertEquals(seqgroupsString[p].getName(),
               seqgroupsColSel[p].getName());
-      Assert.assertArrayEquals(
+      AssertJUnit.assertArrayEquals(
               seqgroupsString[p].getSequencesInOrder(alignment),
               seqgroupsColSel[p].getSequencesInOrder(alignment));
       if (seqgroupsString[p].getSequences().contains(s2))
       {
-        Assert.assertTrue(seqgroupsString[p].getSize() == 2);
+        AssertJUnit.assertTrue(seqgroupsString[p].getSize() == 2);
       }
     }
   }
index a01d255..90faedc 100644 (file)
@@ -1,18 +1,18 @@
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.util.List;
-
-import org.junit.Before;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
 
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
+import java.util.List;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
 public class ParsePropertiesTest
 {
 
@@ -23,7 +23,7 @@ public class ParsePropertiesTest
   /**
    * Construct an alignment with 4 sequences with varying description format
    */
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     SequenceI[] seqs = new SequenceI[]
index 4956bd8..81bcf86 100644 (file)
  */
 package jalview.analysis;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.io.PrintStream;
-
-import org.junit.Before;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
 
 import jalview.datamodel.Mapping;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
+import java.io.PrintStream;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
 /**
  * Test the alignment -> Mapping routines
  * 
@@ -46,7 +46,7 @@ public class TestAlignSeq
   /**
    * @throws java.lang.Exception
    */
-  @Before
+  @BeforeMethod
   public void setUp() throws Exception
   {
     s1 = new Sequence("Seq1", "ASDFAQQQRRRSSS");
index 1dbaa4a..5ab0bb0 100644 (file)
@@ -7,8 +7,8 @@ import jalview.gui.AlignFrame;
 import jalview.io.FileLoader;
 import jalview.io.FormatAdapter;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
 
 public class FeatureScoreModelTest
 {
@@ -29,8 +29,8 @@ public class FeatureScoreModelTest
     AlignFrame alf = new FileLoader(false).LoadFileWaitTillLoaded(alntestFile,
             FormatAdapter.PASTE);
     AlignmentI al = alf.getViewport().getAlignment();
-    Assert.assertEquals(4, al.getHeight());
-    Assert.assertEquals(5, al.getWidth());
+    AssertJUnit.assertEquals(4, al.getHeight());
+    AssertJUnit.assertEquals(5, al.getWidth());
     for (int i = 0; i < 4; i++)
     {
       SequenceI ds = al.getSequenceAt(i).getDatasetSequence();
@@ -55,18 +55,18 @@ public class FeatureScoreModelTest
     alf.getFeatureRenderer().setVisible("sf2");
     alf.getFeatureRenderer().setVisible("sf3");
     alf.getFeatureRenderer().findAllFeatures(true);
-    Assert.assertEquals("Number of feature types", 3, alf
+    AssertJUnit.assertEquals("Number of feature types", 3, alf
             .getFeatureRenderer().getDisplayedFeatureTypes().length);
-    Assert.assertTrue(alf.getCurrentView().areFeaturesDisplayed());
+    AssertJUnit.assertTrue(alf.getCurrentView().areFeaturesDisplayed());
     FeatureScoreModel fsm = new FeatureScoreModel();
-    Assert.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView()
+    AssertJUnit.assertTrue(fsm.configureFromAlignmentView(alf.getCurrentView()
             .getAlignPanel()));
     alf.selectAllSequenceMenuItem_actionPerformed(null);
     float[][] dm = fsm.findDistances(alf.getViewport().getAlignmentView(
             true));
-    Assert.assertTrue("FER1_MESCR should be identical with RAPSA (2)",
+    AssertJUnit.assertTrue("FER1_MESCR should be identical with RAPSA (2)",
             dm[0][2] == 0f);
-    Assert.assertTrue(
+    AssertJUnit.assertTrue(
             "FER1_MESCR should be further from SPIOL (1) than it is from RAPSA (2)",
             dm[0][1] > dm[0][2]);
 
index ec0b160..d9d3bb3 100644 (file)
  */
 package jalview.bin;
 
-import static org.junit.Assert.*;
-
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 public class CommandLineOperations
 {
@@ -131,16 +131,17 @@ public class CommandLineOperations
         System.out.println("Testing with Headless argument: '" + harg
                 + "'\n");
         Worker worker = jalviewDesktopRunner(withAwt, cmd, 9000);
-        assertTrue("Didn't create an output EPS file.[" + harg + "]",
-                new File("test_uniref50_out.eps").exists());
-        assertTrue("Didn't create an EPS file with any content[" + harg
-                + "]", new File("test_uniref50_out.eps").length() > 4096);
+        AssertJUnit.assertTrue("Didn't create an output EPS file.[" + harg
+                + "]", new File("test_uniref50_out.eps").exists());
+        AssertJUnit.assertTrue(
+                "Didn't create an EPS file with any content[" + harg + "]",
+                new File("test_uniref50_out.eps").length() > 4096);
         if (worker.exit == null)
         {
           worker.interrupt();
           Thread.currentThread().interrupt();
           worker.process.destroy();
-          fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms). ["
+          Assert.fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms). ["
                   + harg + "]");
         }
       } while (!withAwt);
index 6ea05e6..6c570d5 100644 (file)
@@ -1,7 +1,8 @@
 package jalview.commands;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertSame;
+
 import jalview.commands.EditCommand.Action;
 import jalview.commands.EditCommand.Edit;
 import jalview.datamodel.Alignment;
@@ -11,9 +12,8 @@ import jalview.datamodel.SequenceI;
 
 import java.util.Map;
 
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 /**
  * Unit tests for EditCommand
@@ -30,7 +30,7 @@ public class EditCommandTest
 
   private Alignment al;
 
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     testee = new EditCommand();
@@ -102,8 +102,7 @@ public class EditCommandTest
   /**
    * Test a Paste action, where this adds sequences to an alignment.
    */
-  @Test
-  @Ignore
+  @Test(enabled = false)
   // TODO fix so it works
   public void testPaste_addToAlignment()
   {
index 0e24bf6..63f6772 100644 (file)
@@ -1,12 +1,13 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
+
 import jalview.util.MapList;
 
 import java.util.Arrays;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class AlignedCodonFrameTest
 {
index 671c51d..65fe4bf 100644 (file)
@@ -1,13 +1,14 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+
 import jalview.util.MapList;
 
 import java.util.Iterator;
 
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
 
 /**
  * Unit tests for Mapping$AlignedCodonIterator
@@ -95,7 +96,7 @@ public class AlignedCodonIteratorTest
     try
     {
       codon = codons.next();
-      fail("expected exception");
+      Assert.fail("expected exception");
     } catch (IncompleteCodonException e)
     {
       // expected
index 60368b1..afa6169 100644 (file)
@@ -1,10 +1,10 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class AlignedCodonTest
 {
index 7c1aa81..4c9eabe 100644 (file)
@@ -1,13 +1,13 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
 
 import jalview.analysis.AlignSeq;
 import jalview.io.AppletFormatAdapter;
 
+import org.testng.annotations.Test;
+
 public class AlignmentAnnotationTests
 {
   @Test
index df98af9..036f2cf 100644 (file)
@@ -1,8 +1,9 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.io.AppletFormatAdapter;
 import jalview.io.FormatAdapter;
 import jalview.util.MapList;
@@ -10,8 +11,8 @@ import jalview.util.MapList;
 import java.io.IOException;
 import java.util.Iterator;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 /**
  * Unit tests for Alignment datamodel.
@@ -68,7 +69,7 @@ public class AlignmentTest
   protected AlignmentI loadAlignment(final String data, String format)
           throws IOException
   {
-    Alignment a = new FormatAdapter().readFile(data,
+    AlignmentI a = new FormatAdapter().readFile(data,
             AppletFormatAdapter.PASTE, format);
     a.setDataset(null);
     return a;
@@ -78,7 +79,7 @@ public class AlignmentTest
    * Read in Stockholm format test data including secondary structure
    * annotations.
    */
-  @Before
+  @BeforeMethod
   public void setUp() throws IOException
   {
     al = loadAlignment(TEST_DATA, "STH");
index 97ef079..2ffebe0 100644 (file)
@@ -1,10 +1,10 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
 
 import java.util.List;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class ColumnSelectionTest
 {
index 38c7f51..b5549f0 100644 (file)
@@ -1,10 +1,11 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.util.MapList;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class DBRefEntryTest
 {
index fe2ff59..378d708 100644 (file)
@@ -1,12 +1,12 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
 
-import java.util.Arrays;
+import jalview.util.MapList;
 
-import org.junit.Test;
+import java.util.Arrays;
 
-import jalview.util.MapList;
+import org.testng.annotations.Test;
 
 /**
  * Test class refactored from main method
index 01fb4a1..093702f 100644 (file)
@@ -1,20 +1,20 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertTrue;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class PDBEntryTest
 {
 
-  @Before
+  @BeforeMethod
   public void setUp() throws Exception
   {
   }
 
-  @After
+  @AfterMethod
   public void tearDown() throws Exception
   {
   }
index 15b0314..7f099c8 100644 (file)
@@ -1,8 +1,8 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class SearchResultsTest
 {
index fc0cb0e..b8748b6 100644 (file)
@@ -1,9 +1,9 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 /**
  * Unit tests for SeqCigar
@@ -125,6 +125,8 @@ public class SeqCigarTest
    *          String
    * @return String
    */
+
+
   protected void testCigar_string(Sequence seq, String ex_cs_gapped)
   {
     SeqCigar c_sgapped = new SeqCigar(seq);
@@ -133,6 +135,7 @@ public class SeqCigarTest
             cs_gapped);
   }
 
+
   protected void testSeqRecovery(SeqCigar gen_sgapped,
           SequenceI s_gapped)
   {
diff --git a/test/jalview/datamodel/SequenceDummyTest.java b/test/jalview/datamodel/SequenceDummyTest.java
new file mode 100644 (file)
index 0000000..2fc1934
--- /dev/null
@@ -0,0 +1,39 @@
+package jalview.datamodel;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class SequenceDummyTest
+{
+  /**
+   * test for become method
+   */
+  @Test
+  public void testBecome()
+  {
+    SequenceI seq = new Sequence("OrigSeq", "ASEQUENCE");
+    SequenceFeature ofeat = new SequenceFeature("NewFeat", "somedesc", 3,
+            12, 2.3f, "none");
+    
+    SequenceDummy dummySeq = new SequenceDummy("OrigSeq");
+    dummySeq.addSequenceFeature(ofeat);
+    dummySeq.become(seq);
+    Assert.assertFalse("Dummy sequence did not become a full sequence",
+            dummySeq.isDummy());
+    Assert.assertTrue("Sequence was not updated from template", seq
+            .getSequenceAsString().equals(dummySeq.getSequenceAsString()));
+    boolean found = false;
+    for (SequenceFeature sf : dummySeq.getSequenceFeatures())
+    {
+      if (sf == ofeat)
+      {
+        found = true;
+        break;
+      }
+    }
+    Assert.assertTrue("Didn't retain original sequence feature", found);
+
+    // todo - should test all aspect of copy constructor
+  }
+}
index 5e73bbc..b216b13 100644 (file)
@@ -1,21 +1,21 @@
 package jalview.datamodel;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.util.Arrays;
 import java.util.List;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class SequenceTest
 {
   SequenceI seq;
 
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     seq = new Sequence("FER1", "AKPNGVL");
index e89245c..2d9b713 100644 (file)
@@ -1,16 +1,16 @@
 package jalview.datamodel.xdb.embl;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.DBRefEntry;
 
 import java.io.StringReader;
 import java.util.Vector;
 
-import org.junit.Test;
-
-import jalview.datamodel.DBRefEntry;
+import org.testng.annotations.Test;
 
 public class EmblFileTest
 {
index ae50bdf..0627217 100644 (file)
  */
 package jalview.ext.jmol;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Vector;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import MCview.PDBfile;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.bin.Cache;
 import jalview.datamodel.Alignment;
@@ -38,6 +31,13 @@ import jalview.gui.AlignFrame;
 import jalview.io.AppletFormatAdapter;
 import jalview.io.FileLoader;
 
+import java.util.Vector;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import MCview.PDBfile;
+
 /**
  * @author jimp
  * 
@@ -50,7 +50,7 @@ public class PDBFileWithJmolTest
   // "./examples/DNMT1_MOUSE.pdb"
   // };
 
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     Cache.applicationProperties.setProperty("STRUCT_FROM_PDB",
index 3365c52..d8582af 100644 (file)
  */
 package jalview.ext.paradise;
 
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+import jalview.io.FastaFile;
+import jalview.io.FormatAdapter;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.Reader;
 import java.util.Iterator;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
 
 import MCview.PDBfile;
-import compbio.util.FileUtil;
 
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.SequenceI;
-import jalview.io.FastaFile;
-import jalview.io.FormatAdapter;
+import compbio.util.FileUtil;
 
 public class TestAnnotate3D
 {
 
-  @Test
+  @Test(enabled = false)
   public void test1GIDbyId() throws Exception
   {
     // use same ID as standard tests given at
@@ -51,7 +53,7 @@ public class TestAnnotate3D
     testRNAMLcontent(ids, null);
   }
 
-  @Test
+  @Test(enabled = false)
   public void testIdVsContent2GIS() throws Exception
   {
     Iterator<Reader> ids = Annotate3D.getRNAMLForPDBId("2GIS");
@@ -95,7 +97,7 @@ public class TestAnnotate3D
    * 
    * @throws Exception
    */
-  @Test
+  @Test(enabled = false)
   public void testPDBfileVsRNAML() throws Exception
   {
     PDBfile pdbf = new PDBfile(true, false, true, "examples/2GIS.pdb",
@@ -109,6 +111,7 @@ public class TestAnnotate3D
     testRNAMLcontent(readers, pdbf);
   }
 
+  @Test(enabled = false)
   private void testRNAMLcontent(Iterator<Reader> readers, PDBfile pdbf)
           throws Exception
   {
@@ -152,7 +155,7 @@ public class TestAnnotate3D
             }
             if (struseq == null)
             {
-              Assert.fail("Couldn't find this sequence in original input:\n"
+              AssertJUnit.fail("Couldn't find this sequence in original input:\n"
                       + new FastaFile().print(new SequenceI[]
                       { sq })
                       + "\n\nOriginal input:\n"
index 7dfbba1..e8b6b19 100644 (file)
@@ -1,7 +1,7 @@
 package jalview.ext.rbvi.chimera;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.awt.Color;
 import java.util.Arrays;
@@ -9,7 +9,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class ChimeraCommandsTest
 {
index de7235b..d40a43d 100644 (file)
@@ -1,9 +1,9 @@
 package jalview.ext.rbvi.chimera;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 import ext.edu.ucsf.rbvi.strucviz2.ChimeraManager;
 import ext.edu.ucsf.rbvi.strucviz2.StructureManager;
index 807d7bb..59a0fdb 100644 (file)
@@ -1,10 +1,6 @@
 package jalview.ext.rbvi.chimera;
 
-import static org.junit.Assert.assertTrue;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.datamodel.SequenceI;
@@ -13,6 +9,10 @@ import jalview.gui.StructureViewer;
 import jalview.gui.StructureViewer.ViewerType;
 import jalview.io.FormatAdapter;
 
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
 public class JalviewChimeraView
 {
 
index ac7d84d..a6e7ea0 100644 (file)
@@ -1,10 +1,7 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-
-import org.junit.Before;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertSame;
 
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
@@ -13,13 +10,16 @@ import jalview.datamodel.PDBEntry.Type;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
 public class AlignViewportTest
 {
 
   AlignmentI al;
   AlignViewport testee;
 
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     SequenceI seq1 = new Sequence("Seq1", "ABC");
index 33ffd32..3f56985 100644 (file)
@@ -1,8 +1,18 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.io.AppletFormatAdapter;
+import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
 import java.awt.Checkbox;
@@ -16,18 +26,8 @@ import java.util.List;
 import javax.swing.JButton;
 import javax.swing.JPanel;
 
-import org.junit.Before;
-import org.junit.Test;
-
-import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
-import jalview.bin.Cache;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
-import jalview.util.MessageManager;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 /**
  * Unit tests for AnnotationChooser
@@ -52,7 +52,7 @@ public class AnnotationChooserTest
 
   AlignFrame af;
 
-  @Before
+  @BeforeMethod
   public void setUp() throws IOException
   {
     // pin down annotation sort order for test
index 338a48f..646016c 100644 (file)
@@ -4,7 +4,7 @@ import java.awt.Canvas;
 import java.awt.Font;
 import java.awt.FontMetrics;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class FontChooserTest
 {
index e4068d7..f280797 100644 (file)
@@ -1,6 +1,7 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.gui.Help.HelpId;
 
 import java.net.URL;
@@ -9,7 +10,7 @@ import javax.help.HelpSet;
 import javax.help.HelpSetException;
 import javax.help.Map;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class HelpTest
 {
index b46a52f..4a17622 100644 (file)
@@ -35,10 +35,9 @@ import javax.swing.JMenu;
 import javax.swing.JMenuItem;
 import javax.swing.JTextArea;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 public class JAL1353bugdemo
 {
@@ -55,9 +54,7 @@ public class JAL1353bugdemo
 
   volatile boolean finish = false;
 
-  @Test
-  @Ignore
-  // comment out @Ignore to enable this test
+  @Test(enabled = false)
   public void test()
   {
     Cache.initLogger();
index 11e6ea5..1a16053 100644 (file)
@@ -1,10 +1,10 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
 
 import javax.swing.JScrollBar;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class JvSwingUtilsTest
 {
index 4595ad1..3a1c554 100644 (file)
@@ -1,24 +1,24 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import javax.swing.JInternalFrame;
 import javax.swing.JTextField;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class PDBSearchPanelTest
 {
 
-  @Before
+  @BeforeMethod
   public void setUp() throws Exception
   {
   }
 
-  @After
+  @AfterMethod
   public void tearDown() throws Exception
   {
   }
index 1da7c8c..adbf385 100644 (file)
@@ -1,8 +1,9 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.Alignment;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
@@ -14,20 +15,20 @@ import java.util.Map;
 
 import javax.swing.JPanel;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class PaintRefresherTest
 {
   // TODO would prefer PaintRefresher to be a single rather than static
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     PaintRefresher.components.clear();
   }
 
-  @After
+  @AfterMethod
   public void tearDown()
   {
     PaintRefresher.components.clear();
index e1f0708..ba1b275 100644 (file)
@@ -1,8 +1,15 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.SequenceI;
+import jalview.io.AppletFormatAdapter;
+import jalview.io.FormatAdapter;
 
 import java.awt.Component;
 import java.io.IOException;
@@ -14,15 +21,8 @@ import javax.swing.JMenuItem;
 import javax.swing.JPopupMenu;
 import javax.swing.JSeparator;
 
-import org.junit.Before;
-import org.junit.Test;
-
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.SequenceI;
-import jalview.io.AppletFormatAdapter;
-import jalview.io.FormatAdapter;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class PopupMenuTest
 {
@@ -41,7 +41,7 @@ public class PopupMenuTest
 
   PopupMenu testee = null;
 
-  @Before
+  @BeforeMethod
   public void setUp() throws IOException
   {
     alignment = new FormatAdapter().readFile(TEST_DATA,
@@ -130,7 +130,7 @@ public class PopupMenuTest
 
     testee.configureReferenceAnnotationsMenu(menu, seqs);
     assertTrue(menu.isEnabled());
-    String expected = "<html><table width=350 border=0><tr><td>Add annotations for<br/>JMOL/secondary structure<br/>PBD/Temp</td></tr></table></html>";
+    String expected = "<html><table width=350 border=0><tr><td align=justify>Add annotations for<br/>JMOL/secondary structure<br/>PBD/Temp</td></tr></table></html>";
     assertEquals(expected, menu.getToolTipText());
   }
 
@@ -151,7 +151,7 @@ public class PopupMenuTest
 
     testee.configureReferenceAnnotationsMenu(menu, seqs);
     assertTrue(menu.isEnabled());
-    String expected = "<html><table width=350 border=0><tr><td>Add annotations for<br/>JMOL/secondary structure<br/>PBD/Temp</td></tr></table></html>";
+    String expected = "<html><table width=350 border=0><tr><td align=justify>Add annotations for<br/>JMOL/secondary structure<br/>PBD/Temp</td></tr></table></html>";
     assertEquals(expected, menu.getToolTipText());
   }
 
index 2d3db68..281ed2d 100644 (file)
@@ -1,8 +1,7 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.awt.Component;
 import java.awt.FlowLayout;
@@ -11,7 +10,8 @@ import java.awt.GridLayout;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
 
 public class ProgressBarTest
 {
@@ -26,7 +26,7 @@ public class ProgressBarTest
     try
     {
       new ProgressBar(null, null);
-      fail("Expected exception");
+      Assert.fail("Expected exception");
     } catch (NullPointerException e)
     {
       // expected
@@ -41,7 +41,7 @@ public class ProgressBarTest
     try
     {
       new ProgressBar(statusPanel, null);
-      fail("expected exception");
+      Assert.fail("expected exception");
     } catch (IllegalArgumentException e)
     {
       // expected
index 3f8b96a..64d15b8 100644 (file)
@@ -1,6 +1,7 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
+
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Sequence;
@@ -9,7 +10,7 @@ import jalview.schemes.ZappoColourScheme;
 
 import java.awt.Color;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class SequenceRendererTest
 {
index 1e73d3e..44b51f2 100644 (file)
@@ -1,7 +1,8 @@
 package jalview.gui;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.Sequence;
@@ -9,15 +10,15 @@ import jalview.datamodel.SequenceI;
 
 import java.util.Vector;
 
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class StructureChooserTest
 {
   Sequence seq;
 
-  @Before
+  @BeforeMethod
   public void setUp() throws Exception
   {
     seq = new Sequence("PDB|4kqy|4KQY|A", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1,
@@ -39,7 +40,7 @@ public class StructureChooserTest
     seq.setPDBId(pdbIds);
   }
 
-  @After
+  @AfterMethod
   public void tearDown() throws Exception
   {
     seq = null;
index ef88ca5..1c6a489 100644 (file)
@@ -1,16 +1,8 @@
 package jalview.io;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
-
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.bin.Cache;
 import jalview.datamodel.AlignmentAnnotation;
@@ -23,6 +15,14 @@ import jalview.gui.Desktop;
 import jalview.structure.StructureMapping;
 import jalview.structure.StructureSelectionManager;
 
+import java.io.File;
+
+import org.junit.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
 public class AnnotatedPDBFileInputTest
 {
 
@@ -32,7 +32,7 @@ public class AnnotatedPDBFileInputTest
 
   String pdbId;
 
-  @Before
+  @BeforeMethod
   public void setup() throws Exception
   {
     Cache.applicationProperties.setProperty("STRUCT_FROM_PDB",
@@ -60,7 +60,7 @@ public class AnnotatedPDBFileInputTest
     {
       for (int q = p + 1; q < avec.length; q++)
       {
-        assertNotEquals(
+        Assert.assertNotEquals(
                 "Found a duplicate annotation row " + avec[p].label,
                 avec[p], avec[q]);
       }
index 0e066c2..d36a82b 100644 (file)
@@ -20,9 +20,9 @@
  */
 package jalview.io;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.ColumnSelection;
 import jalview.io.AnnotationFile.ViewDef;
@@ -30,7 +30,8 @@ import jalview.io.AnnotationFile.ViewDef;
 import java.io.File;
 import java.util.Hashtable;
 
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
 
 public class AnnotationFileIOTest
 {
@@ -84,7 +85,7 @@ public class AnnotationFileIOTest
     {
       e.printStackTrace();
     }
-    fail("Couln't read the alignment in file '" + f.toString() + "'");
+    Assert.fail("Couln't read the alignment in file '" + f.toString() + "'");
     return null;
   }
 
@@ -98,6 +99,8 @@ public class AnnotationFileIOTest
    *          - label for IO class used to write and read back in the data from
    *          f
    */
+
+  // @Test
   public static void testAnnotationFileIO(String testname, File f,
           File annotFile)
   {
@@ -150,7 +153,7 @@ public class AnnotationFileIOTest
     {
       e.printStackTrace();
     }
-    fail("Test "
+    Assert.fail("Test "
             + testname
             + "\nCouldn't complete Annotation file roundtrip input/output/input test for '"
             + annotFile + "'.");
index ac2b599..8440b6d 100644 (file)
@@ -11,8 +11,9 @@ import java.net.URL;
 import java.net.URLConnection;
 import java.util.TreeMap;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
 
 
 public class BioJsHTMLOutputTest
@@ -43,7 +44,7 @@ public class BioJsHTMLOutputTest
     Assert.assertNotNull(bjsTemplate);
   }
 
-  @Test(expected = NullPointerException.class)
+  @Test(expectedExceptions = NullPointerException.class)
   public void expectedNullPointerException()
   {
     try
@@ -51,7 +52,7 @@ public class BioJsHTMLOutputTest
       BioJsHTMLOutput.refreshBioJSVersionsInfo(null);
     } catch (URISyntaxException e)
     {
-      Assert.fail("Expception occured while testing!");
+      AssertJUnit.fail("Expception occured while testing!");
       e.printStackTrace();
     }
   }
@@ -67,11 +68,11 @@ public class BioJsHTMLOutputTest
       versions = BioJsHTMLOutput.getBioJsMSAVersions();
     } catch (URISyntaxException e)
     {
-      Assert.fail("Expception occured while testing!");
+      AssertJUnit.fail("Expception occured while testing!");
       e.printStackTrace();
     }
-    Assert.assertNotNull("No versions found", versions);
-    Assert.assertTrue("One or more Templates required", versions.size() > 0);
+    AssertJUnit.assertNotNull("No versions found", versions);
+    AssertJUnit.assertTrue("One or more Templates required", versions.size() > 0);
     System.out
             .println("Number of discovered versions : "
             + versions.size());
@@ -83,7 +84,7 @@ public class BioJsHTMLOutputTest
 
     System.out.println("\nCurrent latest version : "
             + BioJsHTMLOutput.getCurrentBJSTemplateFile());
-    Assert.assertNotNull("Latest BioJsMSA version NOT found!",
+    AssertJUnit.assertNotNull("Latest BioJsMSA version NOT found!",
             BioJsHTMLOutput.getCurrentBJSTemplateFile());
 
   }
@@ -92,9 +93,9 @@ public class BioJsHTMLOutputTest
   public void testBioJsUpdate()
   {
     String url = BioJsHTMLOutput.BJS_TEMPLATE_GIT_REPO;
-    Assert.assertTrue("URL not reacable : " + url, urlIsReachable(url));
+    AssertJUnit.assertTrue("URL not reacable : " + url, urlIsReachable(url));
     String response = BioJsHTMLOutput.getURLContentAsString(url);
-    Assert.assertNotNull("Null response read from url!", response);
+    AssertJUnit.assertNotNull("Null response read from url!", response);
     BioJSRepositoryPojo repository = new BioJSRepositoryPojo(response);
     System.out.println(">>> description : " + repository.getDescription());
     System.out
index e9165e2..6b7de77 100644 (file)
  */
 package jalview.io;
 
-import static org.junit.Assert.*;
-
 import java.io.File;
 import java.io.IOException;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.AssertJUnit;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 /**
  * @author jimp
@@ -68,9 +67,9 @@ public class FileIOTester
 
   private void assertValidFormat(String fmt, String src, FileParse fp)
   {
-    assertTrue("Couldn't resolve " + src + " as a valid file", fp.isValid());
+    AssertJUnit.assertTrue("Couldn't resolve " + src + " as a valid file", fp.isValid());
     String type = new IdentifyFile().Identify(fp);
-    assertTrue("Data from '" + src + "' Expected to be '" + fmt
+    AssertJUnit.assertTrue("Data from '" + src + "' Expected to be '" + fmt
             + "' identified as '" + type + "'", type.equalsIgnoreCase(fmt));
   }
 
diff --git a/test/jalview/io/Gff3tests.java b/test/jalview/io/Gff3tests.java
new file mode 100644 (file)
index 0000000..8df44df
--- /dev/null
@@ -0,0 +1,147 @@
+package jalview.io;
+
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceDummy;
+import jalview.datamodel.SequenceI;
+import jalview.gui.AlignFrame;
+
+import java.io.IOException;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class Gff3tests
+{
+
+  private static String exonerateSeqs = "examples/testdata/exonerateseqs.fa",
+          exonerateOutput = "examples/testdata/exonerateoutput.gff",
+          simpleGff3file = "examples/testdata/simpleGff3.gff";
+
+  @Test
+  public void testExonerateImport()
+  {
+    // exonerate does not tag sequences after features, so we have a more
+    // conventional annotation import test here
+
+    FileLoader loader = new FileLoader(false);
+
+    AlignFrame af = loader.LoadFileWaitTillLoaded(exonerateSeqs,
+            FormatAdapter.FILE);
+
+    Assert.assertEquals("Unexpected number of DNA protein associations", 0,
+            af.getViewport().getAlignment().getCodonFrames().size());
+
+    af.loadJalviewDataFile(exonerateOutput, FormatAdapter.FILE, null, null);
+
+    Assert.assertNotEquals("Expected at least one DNA protein association",
+            0, af.getViewport().getAlignment().getDataset()
+                    .getCodonFrames().size());
+
+  }
+
+  @Test
+  public void simpleGff3FileIdentify()
+  {
+    Assert.assertEquals("Didn't recognise file correctly.",
+            IdentifyFile.GFF3File,
+            new IdentifyFile().Identify(simpleGff3file, FormatAdapter.FILE));
+  }
+
+  @Test
+  public void simpleGff3FileClass() throws IOException
+  {
+    AlignmentI dataset = new Alignment(new SequenceI[]
+    {});
+    FeaturesFile ffile = new FeaturesFile(simpleGff3file,
+            FormatAdapter.FILE);
+
+    boolean parseResult = ffile.parse(dataset, null, null, false, false);
+    Assert.assertTrue("return result should be true", parseResult);
+    checkDatasetfromSimpleGff3(dataset);
+  }
+
+  @Test
+  public void simpleGff3FileLoader() throws IOException
+  {
+    AlignFrame af = new FileLoader(false).LoadFileWaitTillLoaded(
+            simpleGff3file, FormatAdapter.FILE);
+    Assert.assertTrue(
+            "Didn't read the alignment into an alignframe from Gff3 File",
+            af != null);
+    checkDatasetfromSimpleGff3(af.getViewport().getAlignment().getDataset());
+  }
+
+  @Test
+  public void simpleGff3RelaxedIdMatching() throws IOException
+  {
+    AlignmentI dataset = new Alignment(new SequenceI[]
+    {});
+    FeaturesFile ffile = new FeaturesFile(simpleGff3file,
+            FormatAdapter.FILE);
+
+    boolean parseResult = ffile.parse(dataset, null, null, false, true);
+    Assert.assertTrue("return result (relaxedID matching) should be true",
+            parseResult);
+    checkDatasetfromSimpleGff3(dataset);
+  }
+
+  @Test
+  public void readGff3File() throws IOException
+  {
+    Gff3File gff3reader = new Gff3File(simpleGff3file, FormatAdapter.FILE);
+    Alignment dataset = new Alignment(gff3reader.getSeqsAsArray());
+    gff3reader.addProperties(dataset);
+    checkDatasetfromSimpleGff3(dataset);
+
+  }
+
+  private void checkDatasetfromSimpleGff3(AlignmentI dataset)
+  {
+    Assert.assertEquals("no sequences extracted from GFF3 file", 2,
+            dataset.getHeight());
+
+    SequenceI seq1 = dataset.findName("seq1"), seq2 = dataset
+            .findName("seq2");
+    Assert.assertNotNull(seq1);
+    Assert.assertNotNull(seq2);
+    Assert.assertFalse(
+            "Failed to replace dummy seq1 with real sequence",
+            seq1 instanceof SequenceDummy
+                    && ((SequenceDummy) seq1).isDummy());
+    Assert.assertFalse(
+            "Failed to replace dummy seq2 with real sequence",
+            seq2 instanceof SequenceDummy
+                    && ((SequenceDummy) seq2).isDummy());
+    String placeholderseq = new SequenceDummy("foo").getSequenceAsString();
+    Assert.assertFalse("dummy replacement buggy for seq1",
+            placeholderseq.equals(seq1.getSequenceAsString()));
+    Assert.assertNotEquals("dummy replacement buggy for seq2",
+            placeholderseq.equals(seq2.getSequenceAsString()));
+    Assert.assertNotNull("No features added to seq1",
+            seq1.getSequenceFeatures());// != null);
+    Assert.assertEquals("Wrong number of features", 3,
+            seq1.getSequenceFeatures().length);
+    Assert.assertNull(seq2.getSequenceFeatures());
+    Assert.assertEquals("Wrong number of features", 0, seq2
+            .getSequenceFeatures() == null ? 0
+            : seq2.getSequenceFeatures().length);
+    Assert.assertTrue(
+            "Expected at least one CDNA/Protein mapping for seq1",
+            dataset.getCodonFrame(seq1) != null
+                    && dataset.getCodonFrame(seq1).size() > 0);
+
+  }
+  // @Test
+  // public final void testPrintGFFFormatSequenceIArrayMapOfStringObject()
+  // {
+  // fail("Not yet implemented");
+  // }
+  //
+  // @Test
+  // public final void testAlignFileBooleanStringString()
+  // {
+  // fail("Not yet implemented");
+  // }
+
+}
index 59a5b68..eca3984 100644 (file)
@@ -2,14 +2,12 @@ package jalview.io;
 
 import static org.junit.Assert.fail;
 
-import org.junit.Ignore;
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class HtmlFileTest
 {
 
-  @Test
-  @Ignore
+  @Test(enabled = false)
   public void test()
   {
     fail("Not yet implemented");
index 92b172c..2e28e3a 100644 (file)
@@ -1,8 +1,8 @@
 package jalview.io;
 
 
-import static org.junit.Assert.assertNotNull;
-import jalview.datamodel.Alignment;
+import static org.testng.AssertJUnit.assertNotNull;
+
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
@@ -19,10 +19,10 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.AssertJUnit;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class JSONFileTest
 {
@@ -43,7 +43,7 @@ public class JSONFileTest
   HashMap<String, AlignmentAnnotation> testAnnots = new HashMap<String, AlignmentAnnotation>();
   HashMap<String, SequenceGroup> testGrps = new HashMap<String, SequenceGroup>();
 
-  @Before
+  @BeforeMethod
   public void setup() throws Exception
   {
     // create and add sequences
@@ -146,7 +146,7 @@ public class JSONFileTest
     TEST_ANOT_HEIGHT = testAnnots.size();
   }
 
-  @After
+  @AfterMethod
   public void tearDown() throws Exception
   {
   }
@@ -156,7 +156,7 @@ public class JSONFileTest
   {
     String jsonFile = "examples/example.json";
     AppletFormatAdapter rf = new AppletFormatAdapter();
-    Alignment al = null;
+    AlignmentI al = null;
     try
     {
       al = rf.readFile(jsonFile, AppletFormatAdapter.FILE,
@@ -171,34 +171,34 @@ public class JSONFileTest
     for (SequenceI seq : al.getSequences())
     {
       SequenceI expectedSeq = testSeqs.get(seq.getName());
-      Assert.assertTrue("Failed Sequence Test  for >>> " + seq.getName(),
+      AssertJUnit.assertTrue("Failed Sequence Test  for >>> " + seq.getName(),
               isSeqMatched(expectedSeq, seq));
       passedCount++;
     }
-    Assert.assertEquals("Some Sequences did not pass the test",
+    AssertJUnit.assertEquals("Some Sequences did not pass the test",
             TEST_SEQ_HEIGHT, passedCount);
 
     passedCount = 0;
     for (SequenceGroup seqGrp : al.getGroups())
     {
       SequenceGroup expectedGrp = testGrps.get(seqGrp.getName());
-      Assert.assertTrue(
+      AssertJUnit.assertTrue(
               "Failed SequenceGroup Test for >>> " + seqGrp.getName(),
               isGroupMatched(expectedGrp, seqGrp));
       passedCount++;
     }
-    Assert.assertEquals("Some SequenceGroups did not pass the test",
+    AssertJUnit.assertEquals("Some SequenceGroups did not pass the test",
             TEST_GRP_HEIGHT, passedCount);
 
     passedCount = 0;
     for (AlignmentAnnotation annot : al.getAlignmentAnnotation())
     {
       AlignmentAnnotation expectedAnnot = testAnnots.get(annot.label);
-      Assert.assertTrue("Failed AlignmentAnnotation Test for >>> "
+      AssertJUnit.assertTrue("Failed AlignmentAnnotation Test for >>> "
               + annot.label, isAnnotationMatched(expectedAnnot, annot));
       passedCount++;
     }
-    Assert.assertEquals("Some Sequences did not pass the test",
+    AssertJUnit.assertEquals("Some Sequences did not pass the test",
             TEST_ANOT_HEIGHT, passedCount);
 
     // af = new AlignFrame(al, 700, 500);
index 771250b..7d24727 100644 (file)
  */
 package jalview.io;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.File;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.api.AlignmentViewPanel;
 import jalview.api.ViewStyleI;
@@ -41,6 +33,14 @@ import jalview.gui.Desktop;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.schemes.ColourSchemeI;
 
+import java.io.File;
+
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
 public class Jalview2xmlTests
 {
 
@@ -305,7 +305,7 @@ public class Jalview2xmlTests
           }
           catch (NullPointerException q)
           {
-            fail("Mismatch of alignment annotations at position " + p
+            Assert.fail("Mismatch of alignment annotations at position " + p
                     + " Ref seq ann: " + refan.annotations[p]
                     + " alignment " + alaa.annotations[p]);
           }
@@ -320,7 +320,7 @@ public class Jalview2xmlTests
   {
     AlignFrame af = new jalview.io.FileLoader().LoadFileWaitTillLoaded(
             "examples/exampleFile_2_7.jar", FormatAdapter.FILE);
-    Assert.assertTrue("Didn't read in the example file correctly.", af != null);
+    assertTrue("Didn't read in the example file correctly.", af != null);
     AlignmentViewPanel sps = null, groups = null;
     for (AlignmentViewPanel ap : af.alignPanel.alignFrame.getAlignPanels())
     {
@@ -338,10 +338,10 @@ public class Jalview2xmlTests
 
     ViewStyleI structureStyle = sps.getAlignViewport().getViewStyle();
     ViewStyleI groupStyle = groups.getAlignViewport().getViewStyle();
-    Assert.assertFalse(structureStyle.sameStyle(groupStyle));
+    AssertJUnit.assertFalse(structureStyle.sameStyle(groupStyle));
 
     groups.getAlignViewport().setViewStyle(structureStyle);
-    Assert.assertFalse(groupStyle.sameStyle(groups.getAlignViewport()
+    AssertJUnit.assertFalse(groupStyle.sameStyle(groups.getAlignViewport()
             .getViewStyle()));
     Assert.assertTrue(structureStyle.sameStyle(groups.getAlignViewport()
             .getViewStyle()));
index dd6567c..a016134 100644 (file)
  */
 package jalview.io;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.testng.ConversionUtils.wrapDataProvider;
+
+import jalview.analysis.NJTree;
+import jalview.analysis.SequenceIdMatcher;
+import jalview.datamodel.SequenceI;
+import jalview.datamodel.SequenceNode;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Vector;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
 import org.junit.runners.Parameterized.Parameters;
-
-import jalview.analysis.NJTree;
-import jalview.analysis.SequenceIdMatcher;
-import jalview.datamodel.SequenceI;
-import jalview.datamodel.SequenceNode;
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Factory;
+import org.testng.annotations.Test;
 
 /**
  * @author jimp
  * 
  */
-@RunWith(Parameterized.class)
 public class NewickFileTests
 {
 
+  @Factory
+  public static Object[] factoryData()
+  {
+    return wrapDataProvider(NewickFileTests.class, data());
+  }
+
   @Parameters
   public static Collection data()
   {
@@ -94,30 +99,30 @@ public class NewickFileTests
       System.out.println(treename + "\n" + testTree);
       NewickFile nf = new NewickFile(testTree, FormatAdapter.PASTE);
       nf.parse();
-      assertTrue(stage + "Invalid Tree '" + nf.getWarningMessage() + "'",
+      AssertJUnit.assertTrue(stage + "Invalid Tree '" + nf.getWarningMessage() + "'",
               nf.isValid());
       SequenceNode tree = nf.getTree();
-      assertTrue(stage + "Null Tree", tree != null);
+      AssertJUnit.assertTrue(stage + "Null Tree", tree != null);
       stage = "Creating newick file from testTree " + treename;
       String gentree = new NewickFile(tree).print(nf.HasBootstrap(),
               nf.HasDistances());
-      assertTrue(stage + "Empty string generated", gentree != null
+      AssertJUnit.assertTrue(stage + "Empty string generated", gentree != null
               && gentree.trim().length() > 0);
       stage = "Parsing regenerated testTree " + treename;
       NewickFile nf_regen = new NewickFile(gentree, FormatAdapter.PASTE);
       nf_regen.parse();
-      assertTrue(
+      AssertJUnit.assertTrue(
               stage + "Newick file is invalid ('"
                       + nf_regen.getWarningMessage() + "')",
               nf_regen.isValid());
       SequenceNode tree_regen = nf.getTree();
-      assertTrue(stage + "Null Tree", tree_regen != null);
+      AssertJUnit.assertTrue(stage + "Null Tree", tree_regen != null);
       stage = "Compare original and generated tree" + treename;
 
       Vector oseqs, nseqs;
       oseqs = new NJTree(new SequenceI[0], nf).findLeaves(nf.getTree(),
               new Vector());
-      assertTrue(stage + "No nodes in original tree.", oseqs.size() > 0);
+      AssertJUnit.assertTrue(stage + "No nodes in original tree.", oseqs.size() > 0);
       SequenceI[] olsqs = new SequenceI[oseqs.size()];
       for (int i = 0, iSize = oseqs.size(); i < iSize; i++)
       {
@@ -125,13 +130,13 @@ public class NewickFileTests
       }
       nseqs = new NJTree(new SequenceI[0], nf_regen).findLeaves(
               nf_regen.getTree(), new Vector());
-      assertTrue(stage + "No nodes in regerated tree.", nseqs.size() > 0);
+      AssertJUnit.assertTrue(stage + "No nodes in regerated tree.", nseqs.size() > 0);
       SequenceI[] nsqs = new SequenceI[nseqs.size()];
       for (int i = 0, iSize = nseqs.size(); i < iSize; i++)
       {
         nsqs[i] = (SequenceI) ((SequenceNode) nseqs.get(i)).element();
       }
-      assertTrue(stage + " Different number of leaves (original "
+      AssertJUnit.assertTrue(stage + " Different number of leaves (original "
               + olsqs.length + " and regen " + nsqs.length + ")",
               olsqs.length == nsqs.length);
       SequenceIdMatcher omatcher = new SequenceIdMatcher(olsqs), nmatcher = new SequenceIdMatcher(
@@ -156,7 +161,7 @@ public class NewickFileTests
 
       if (warns.length() > 0)
       {
-        fail(stage + warns);
+        Assert.fail(stage + warns);
       }
     } catch (Exception x)
     {
index e411272..d335731 100644 (file)
@@ -1,15 +1,16 @@
 package jalview.io;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import jalview.datamodel.Alignment;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 /**
  * Test file for {@link PhylipFile}.
@@ -105,7 +106,7 @@ public class PhylipFileTests
   private void testDataExtraction(String file) throws IOException
   {
     AppletFormatAdapter rf = new AppletFormatAdapter();
-    Alignment al = rf.readFile(file, AppletFormatAdapter.FILE,
+    AlignmentI al = rf.readFile(file, AppletFormatAdapter.FILE,
             PhylipFile.FILE_DESC);
     assertNotNull("Couldn't read supplied alignment data.", al);
 
@@ -150,13 +151,13 @@ public class PhylipFileTests
   public void testIO(String file) throws IOException
   {
     AppletFormatAdapter rf = new AppletFormatAdapter();
-    Alignment al = rf.readFile(file, AppletFormatAdapter.FILE,
+    AlignmentI al = rf.readFile(file, AppletFormatAdapter.FILE,
             PhylipFile.FILE_DESC);
     assertNotNull("Couldn't read supplied alignment data.", al);
 
     String outputfile = rf.formatSequences(PhylipFile.FILE_DESC, al, true);
 
-    Alignment al_input = new AppletFormatAdapter().readFile(outputfile,
+    AlignmentI al_input = new AppletFormatAdapter().readFile(outputfile,
             AppletFormatAdapter.PASTE, PhylipFile.FILE_DESC);
     assertNotNull("Couldn't parse reimported alignment data.", al_input);
 
index c7e6398..d684512 100644 (file)
@@ -22,9 +22,9 @@ package jalview.io;
 
 import java.io.File;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 public class RNAMLfileTest
 {
@@ -43,7 +43,7 @@ public class RNAMLfileTest
   public void testRnamlToStockholmIO()
   {
     StockholmFileTest.testFileIOwithFormat(new File(
-            "examples/rna-alignment.xml"), "STH", -1, -1);
+            "examples/testdata/rna-alignment.xml"), "STH", -1, -1);
 
   }
 
index 806e4dc..45de531 100644 (file)
  */
 package jalview.io;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import jalview.datamodel.Alignment;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
@@ -35,7 +35,7 @@ import java.util.BitSet;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class StockholmFileTest
 {
@@ -84,6 +84,7 @@ public class StockholmFileTest
    *          - label for IO class used to write and read back in the data from
    *          f
    */
+
   public static void testFileIOwithFormat(File f, String ioformat,
           int naliannot, int nminseqann)
   {
@@ -93,7 +94,7 @@ public class StockholmFileTest
     {
       AppletFormatAdapter rf = new AppletFormatAdapter();
 
-      Alignment al = rf.readFile(ff, AppletFormatAdapter.FILE,
+      AlignmentI al = rf.readFile(ff, AppletFormatAdapter.FILE,
               new IdentifyFile().Identify(ff, AppletFormatAdapter.FILE));
 
       assertNotNull("Couldn't read supplied alignment data.", al);
@@ -107,7 +108,7 @@ public class StockholmFileTest
       System.out.println("Output file in '" + ioformat + "':\n"
               + outputfile + "\n<<EOF\n");
       // test for consistency in io
-      Alignment al_input = new AppletFormatAdapter().readFile(outputfile,
+      AlignmentI al_input = new AppletFormatAdapter().readFile(outputfile,
               AppletFormatAdapter.PASTE, ioformat);
       assertNotNull("Couldn't parse reimported alignment data.", al_input);
 
@@ -350,9 +351,11 @@ public class StockholmFileTest
                 an_new.displayCharacter.trim())
                 || !("" + an_or.secondaryStructure).trim().equals(
                         ("" + an_new.secondaryStructure).trim())
-                || (an_or.description != an_new.description && (an_or.description == null
-                        || an_new.description == null || !an_or.description
-                          .equals(an_new.description))))
+                || (an_or.description != an_new.description && !((an_or.description == null && an_new.description
+                        .trim().length() == 0)
+                        || (an_new.description == null && an_or.description
+                                .trim().length() == 0) || an_or.description
+                        .trim().equals(an_new.description.trim()))))
         {
           System.err.println("Annotation Element Mismatch\nElement " + i
                   + " in original: " + annot_or.annotations[i].toString()
index edf7f20..b7da5e4 100644 (file)
@@ -20,7 +20,6 @@
  */
 package jalview.io;
 
-import static org.junit.Assert.*;
 import jalview.io.TCoffeeScoreFile.Block;
 import jalview.io.TCoffeeScoreFile.Header;
 
@@ -29,15 +28,8 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.List;
 
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.junit.Test;
-import org.xml.sax.SAXException;
-
-import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
-import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
-import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
-import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
 
 public class TCoffeeScoreFileTest
 {
@@ -54,23 +46,23 @@ public class TCoffeeScoreFileTest
 
     TCoffeeScoreFile scoreFile = new TCoffeeScoreFile(SCORE_FILE.getPath(),
             AppletFormatAdapter.FILE);
-    assertTrue(scoreFile.getWarningMessage(), scoreFile.isValid());
+    AssertJUnit.assertTrue(scoreFile.getWarningMessage(), scoreFile.isValid());
 
     Header header = scoreFile.header;
-    assertNotNull(header);
-    assertEquals(
+    AssertJUnit.assertNotNull(header);
+    AssertJUnit.assertEquals(
             "T-COFFEE, Version_9.02.r1228 (2012-02-16 18:15:12 - Revision 1228 - Build 336)",
             header.head);
-    assertEquals(90, header.score);
-    assertEquals(89, header.getScoreFor("1PHT"));
-    assertEquals(90, header.getScoreFor("1BB9"));
-    assertEquals(94, header.getScoreFor("1UHC"));
-    assertEquals(94, header.getScoreFor("1YCS"));
-    assertEquals(93, header.getScoreFor("1OOT"));
-    assertEquals(94, header.getScoreFor("1ABO"));
-    assertEquals(94, header.getScoreFor("1FYN"));
-    assertEquals(94, header.getScoreFor("1QCF"));
-    assertEquals(90, header.getScoreFor("cons"));
+    AssertJUnit.assertEquals(90, header.score);
+    AssertJUnit.assertEquals(89, header.getScoreFor("1PHT"));
+    AssertJUnit.assertEquals(90, header.getScoreFor("1BB9"));
+    AssertJUnit.assertEquals(94, header.getScoreFor("1UHC"));
+    AssertJUnit.assertEquals(94, header.getScoreFor("1YCS"));
+    AssertJUnit.assertEquals(93, header.getScoreFor("1OOT"));
+    AssertJUnit.assertEquals(94, header.getScoreFor("1ABO"));
+    AssertJUnit.assertEquals(94, header.getScoreFor("1FYN"));
+    AssertJUnit.assertEquals(94, header.getScoreFor("1QCF"));
+    AssertJUnit.assertEquals(90, header.getScoreFor("cons"));
   }
 
   @Test
@@ -80,10 +72,10 @@ public class TCoffeeScoreFileTest
     {
       TCoffeeScoreFile result = new TCoffeeScoreFile(ALIGN_FILE.getPath(),
               FormatAdapter.FILE);
-      assertFalse(result.isValid());
+      AssertJUnit.assertFalse(result.isValid());
     } catch (IOException x)
     {
-      assertTrue("File not found exception thrown",
+      AssertJUnit.assertTrue("File not found exception thrown",
               x instanceof FileNotFoundException);
     }
   }
@@ -93,9 +85,9 @@ public class TCoffeeScoreFileTest
   {
     TCoffeeScoreFile result = new TCoffeeScoreFile(SCORE_FILE.getPath(),
             FormatAdapter.FILE);
-    assertTrue(result.isValid());
-    assertEquals(8, result.getHeight());
-    assertEquals(83, result.getWidth());
+    AssertJUnit.assertTrue(result.isValid());
+    AssertJUnit.assertEquals(8, result.getHeight());
+    AssertJUnit.assertEquals(83, result.getWidth());
   }
 
   @Test
@@ -116,24 +108,24 @@ public class TCoffeeScoreFileTest
     FileParse source = new FileParse(BLOCK, FormatAdapter.PASTE);
     Block block = TCoffeeScoreFile.readBlock(source, 0);
 
-    assertNotNull(block);
-    assertEquals("999999999999999999999999998762112222543211112134",
+    AssertJUnit.assertNotNull(block);
+    AssertJUnit.assertEquals("999999999999999999999999998762112222543211112134",
             block.getScoresFor("1PHT"));
-    assertEquals("99999999999999999999999999987-------4322----2234",
+    AssertJUnit.assertEquals("99999999999999999999999999987-------4322----2234",
             block.getScoresFor("1BB9"));
-    assertEquals("99999999999999999999999999987-------5321----2246",
+    AssertJUnit.assertEquals("99999999999999999999999999987-------5321----2246",
             block.getScoresFor("1UHC"));
-    assertEquals("99999999999999999999999999986-------4321----1-35",
+    AssertJUnit.assertEquals("99999999999999999999999999986-------4321----1-35",
             block.getScoresFor("1YCS"));
-    assertEquals("999999999999999999999999999861-------3------1135",
+    AssertJUnit.assertEquals("999999999999999999999999999861-------3------1135",
             block.getScoresFor("1OOT"));
-    assertEquals("99999999999999999999999999986-------422-------34",
+    AssertJUnit.assertEquals("99999999999999999999999999986-------422-------34",
             block.getScoresFor("1ABO"));
-    assertEquals("99999999999999999999999999985-------32--------35",
+    AssertJUnit.assertEquals("99999999999999999999999999985-------32--------35",
             block.getScoresFor("1FYN"));
-    assertEquals("99999999999999999999999999974-------2---------24",
+    AssertJUnit.assertEquals("99999999999999999999999999974-------2---------24",
             block.getScoresFor("1QCF"));
-    assertEquals("999999999999999999999999999851000110321100001134",
+    AssertJUnit.assertEquals("999999999999999999999999999851000110321100001134",
             block.getConsensus());
   }
 
@@ -144,31 +136,31 @@ public class TCoffeeScoreFileTest
     TCoffeeScoreFile parser = new TCoffeeScoreFile(SCORE_FILE.getPath(),
             FormatAdapter.FILE);
 
-    assertEquals(
+    AssertJUnit.assertEquals(
             "999999999999999999999999998762112222543211112134----------5666642367889999999999889",
             parser.getScoresFor("1PHT"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999987-------4322----22341111111111676653-355679999999999889",
             parser.getScoresFor("1BB9"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999987-------5321----2246----------788774--66789999999999889",
             parser.getScoresFor("1UHC"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999986-------4321----1-35----------78777--356789999999999889",
             parser.getScoresFor("1YCS"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "999999999999999999999999999861-------3------1135----------78877--356789999999997-67",
             parser.getScoresFor("1OOT"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999986-------422-------34----------687774--56779999999999889",
             parser.getScoresFor("1ABO"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999985-------32--------35----------6888842356789999999999889",
             parser.getScoresFor("1FYN"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999974-------2---------24----------6878742356789999999999889",
             parser.getScoresFor("1QCF"));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999985100011032110000113400100000006877641356789999999999889",
             parser.getScoresFor("cons"));
   }
@@ -179,33 +171,33 @@ public class TCoffeeScoreFileTest
 
     TCoffeeScoreFile parser = new TCoffeeScoreFile(SCORE_FILE.getPath(),
             FormatAdapter.FILE);
-    assertTrue(parser.getWarningMessage(), parser.isValid());
+    AssertJUnit.assertTrue(parser.getWarningMessage(), parser.isValid());
     List<String> scores = parser.getScoresList();
-    assertEquals(
+    AssertJUnit.assertEquals(
             "999999999999999999999999998762112222543211112134----------5666642367889999999999889",
             scores.get(0));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999987-------4322----22341111111111676653-355679999999999889",
             scores.get(1));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999987-------5321----2246----------788774--66789999999999889",
             scores.get(2));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999986-------4321----1-35----------78777--356789999999999889",
             scores.get(3));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "999999999999999999999999999861-------3------1135----------78877--356789999999997-67",
             scores.get(4));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999986-------422-------34----------687774--56779999999999889",
             scores.get(5));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999985-------32--------35----------6888842356789999999999889",
             scores.get(6));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999974-------2---------24----------6878742356789999999999889",
             scores.get(7));
-    assertEquals(
+    AssertJUnit.assertEquals(
             "99999999999999999999999999985100011032110000113400100000006877641356789999999999889",
             scores.get(8));
 
@@ -217,28 +209,28 @@ public class TCoffeeScoreFileTest
 
     TCoffeeScoreFile parser = new TCoffeeScoreFile(SCORE_FILE.getPath(),
             FormatAdapter.FILE);
-    assertTrue(parser.getWarningMessage(), parser.isValid());
+    AssertJUnit.assertTrue(parser.getWarningMessage(), parser.isValid());
     byte[][] scores = parser.getScoresArray();
 
-    assertEquals(9, scores[0][0]);
-    assertEquals(9, scores[1][0]);
-    assertEquals(9, scores[2][0]);
-    assertEquals(9, scores[3][0]);
-    assertEquals(9, scores[4][0]);
-    assertEquals(9, scores[5][0]);
-    assertEquals(9, scores[6][0]);
-    assertEquals(9, scores[7][0]);
-    assertEquals(9, scores[8][0]);
-
-    assertEquals(5, scores[0][36]);
-    assertEquals(4, scores[1][36]);
-    assertEquals(5, scores[2][36]);
-    assertEquals(4, scores[3][36]);
-    assertEquals(-1, scores[4][36]);
-    assertEquals(4, scores[5][36]);
-    assertEquals(3, scores[6][36]);
-    assertEquals(2, scores[7][36]);
-    assertEquals(3, scores[8][36]);
+    AssertJUnit.assertEquals(9, scores[0][0]);
+    AssertJUnit.assertEquals(9, scores[1][0]);
+    AssertJUnit.assertEquals(9, scores[2][0]);
+    AssertJUnit.assertEquals(9, scores[3][0]);
+    AssertJUnit.assertEquals(9, scores[4][0]);
+    AssertJUnit.assertEquals(9, scores[5][0]);
+    AssertJUnit.assertEquals(9, scores[6][0]);
+    AssertJUnit.assertEquals(9, scores[7][0]);
+    AssertJUnit.assertEquals(9, scores[8][0]);
+
+    AssertJUnit.assertEquals(5, scores[0][36]);
+    AssertJUnit.assertEquals(4, scores[1][36]);
+    AssertJUnit.assertEquals(5, scores[2][36]);
+    AssertJUnit.assertEquals(4, scores[3][36]);
+    AssertJUnit.assertEquals(-1, scores[4][36]);
+    AssertJUnit.assertEquals(4, scores[5][36]);
+    AssertJUnit.assertEquals(3, scores[6][36]);
+    AssertJUnit.assertEquals(2, scores[7][36]);
+    AssertJUnit.assertEquals(3, scores[8][36]);
 
   }
 
@@ -247,9 +239,9 @@ public class TCoffeeScoreFileTest
   {
     String file = "test/jalview/io/tcoffee.score_ascii_with_residue_numbers";
     TCoffeeScoreFile result = new TCoffeeScoreFile(file, FormatAdapter.FILE);
-    assertTrue(result.isValid());
-    assertEquals(5, result.getHeight());
-    assertEquals(84, result.getWidth());
+    AssertJUnit.assertTrue(result.isValid());
+    AssertJUnit.assertEquals(5, result.getHeight());
+    AssertJUnit.assertEquals(84, result.getWidth());
   }
 
 }
index 42f17fd..75877ee 100644 (file)
  */
 package jalview.schemes;
 
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.util.Map;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class DnaCodonTests
 {
index b82d338..d7e0e0b 100644 (file)
@@ -1,12 +1,12 @@
 package jalview.schemes;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
 
 import java.util.Collections;
 import java.util.List;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class ResiduePropertiesTest
 {
index 89f9f8a..0b15b60 100644 (file)
@@ -24,7 +24,7 @@ import jalview.api.analysis.ScoreModelI;
 
 import java.util.Map;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class ScoreMatrixPrinter
 {
index cc8138c..db0ea49 100644 (file)
@@ -1,14 +1,7 @@
 package jalview.structure;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import MCview.PDBfile;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.Annotation;
@@ -18,6 +11,12 @@ import jalview.gui.AlignFrame;
 import jalview.io.FileLoader;
 import jalview.io.FormatAdapter;
 
+import org.testng.Assert;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
+
+import MCview.PDBfile;
+
 public class Mapping
 {
 
@@ -28,11 +27,10 @@ public class Mapping
    * 115 in PDB Res Numbering secondary structure numbers in jmol seem to be in
    * msd numbering, not pdb res numbering.
    */
-  @Test
-  @Ignore
+  @Test(enabled = false)
   public void pdbEntryPositionMap() throws Exception
   {
-    fail("This test intentionally left to fail");
+    Assert.fail("This test intentionally left to fail");
     for (int offset = 0; offset < 20; offset += 6)
     {
       // check we put the secondary structure in the right position
@@ -111,11 +109,10 @@ public class Mapping
     }
   }
 
-  @Test
-  @Ignore
+  @Test(enabled = false)
   public void testPDBentryMapping() throws Exception
   {
-    fail("This test intentionally left to fail");
+    Assert.fail("This test intentionally left to fail");
     Sequence sq = new Sequence(
             "1GAQ A subseq 126 to 219",
             "EIVKGVCSNFLCDLQPGDNVQITGPVGKEMLMPKDPNATIIMLATGTGIAPFRSFLWKMFFEKHDDYKFNGLGWLFLGVPTSSSLLYKEEFGKM");
@@ -228,7 +225,7 @@ public class Mapping
             jalview.io.FormatAdapter.FILE);
     if (pmap == null)
     {
-      Assert.fail("Couldn't make a mapping for 3W5V to FER1_MAIZE");
+      AssertJUnit.fail("Couldn't make a mapping for 3W5V to FER1_MAIZE");
     }
   }
 
index 487ef2c..589adde 100644 (file)
@@ -1,20 +1,21 @@
 package jalview.structure;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.AlignedCodonFrame;
 
 import java.util.HashSet;
 import java.util.Set;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class StructureSelectionManagerTest
 {
   private StructureSelectionManager ssm;
 
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     ssm = new StructureSelectionManager();
index 3db7f23..7871e77 100644 (file)
@@ -1,14 +1,8 @@
 package jalview.structures.models;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.junit.Before;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
@@ -21,6 +15,12 @@ import jalview.structure.AtomSpec;
 import jalview.structure.StructureSelectionManager;
 import jalview.structures.models.AAStructureBindingModel.SuperposeData;
 
+import java.util.Arrays;
+import java.util.List;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
 /**
  * Unit tests for non-abstract methods of abstract base class
  * 
@@ -57,7 +57,7 @@ public class AAStructureBindingModelTest
   /**
    * Set up test conditions with three aligned sequences,
    */
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     SequenceI seq1 = new Sequence("1YCS", "-VPSQK");
index 3bbcf27..ad6e6d0 100644 (file)
@@ -1,11 +1,11 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
 
 import java.awt.Color;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class ColorUtilsTest
 {
index 57d1ac1..837cbe6 100644 (file)
@@ -1,14 +1,14 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
+import org.testng.annotations.Test;
+
 public class ComparisonTest
 {
 
index 959c55d..036ad91 100644 (file)
@@ -1,10 +1,11 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.DBRefSource;
 import jalview.datamodel.Mapping;
@@ -12,7 +13,7 @@ import jalview.datamodel.PDBEntry;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceI;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class DBRefUtilsTest
 {
index bfb0837..5579efb 100644 (file)
@@ -1,16 +1,15 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class MapListTest
 {
@@ -48,7 +47,7 @@ public class MapListTest
   private static void testLocateFrom(MapList mldna, int i, int j, int[] ks)
   {
     int[] frm = mldna.locateInFrom(i, j);
-    Assert.assertEquals("Failed test locate from " + i + " to " + j,
+    assertEquals("Failed test locate from " + i + " to " + j,
             Arrays.toString(frm), Arrays.toString(ks));
   }
 
index ec9ace4..9985fb3 100644 (file)
@@ -1,22 +1,12 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
 
-import java.awt.Color;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertSame;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.api.AlignViewportI;
 import jalview.datamodel.AlignedCodonFrame;
-import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.SearchResults;
@@ -28,6 +18,16 @@ import jalview.gui.AlignViewport;
 import jalview.io.AppletFormatAdapter;
 import jalview.io.FormatAdapter;
 
+import java.awt.Color;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.testng.annotations.Test;
+
 public class MappingUtilsTest
 {
   private AlignViewportI dnaView;
@@ -248,7 +248,7 @@ public class MappingUtilsTest
   protected AlignmentI loadAlignment(final String data, String format)
           throws IOException
   {
-    Alignment a = new FormatAdapter().readFile(data,
+    AlignmentI a = new FormatAdapter().readFile(data,
             AppletFormatAdapter.PASTE, format);
     a.setDataset(null);
     return a;
index 2293163..7d10758 100644 (file)
@@ -1,13 +1,12 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.util.Arrays;
 
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 public class QuickSortTest
 {
@@ -24,7 +23,7 @@ public class QuickSortTest
   private final Object[] sortedThings = new Object[]
   { c4, c2, c1, c3 };
 
-  @Before
+  @BeforeMethod
   public void setUp()
   {
     things = new Object[]
@@ -82,8 +81,7 @@ public class QuickSortTest
   /**
    * Test whether sort is stable i.e. equal values retain their mutual ordering.
    */
-  @Test
-  @Ignore
+  @Test(enabled = false)
   public void testSort_withDuplicates()
   {
     int[] values = new int[]
index f680d6c..ea9b2e4 100644 (file)
@@ -1,12 +1,12 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
 
 import java.util.Arrays;
 import java.util.List;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class ShiftListTest
 {
index 6930e40..7442530 100644 (file)
@@ -1,12 +1,12 @@
 package jalview.util;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.util.Arrays;
 
-import org.junit.Test;
+import org.testng.annotations.Test;
 
 public class StringUtilsTest
 {
index 115c5d3..64b15a6 100644 (file)
@@ -1,15 +1,15 @@
 package jalview.viewmodel.styles;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
 
 import java.awt.Color;
 import java.lang.reflect.Field;
 import java.util.Random;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
 
 
 public class ViewStyleTest
@@ -137,7 +137,7 @@ public class ViewStyleTest
     }
     else
     {
-      Assert.fail("Unhandled field type (add to test): " + field.getName()
+      AssertJUnit.fail("Unhandled field type (add to test): " + field.getName()
               + ":" + type);
     }
   }
index 778fc18..ef03fd0 100644 (file)
  */
 package jalview.ws;
 
-import static org.junit.Assert.assertTrue;
-
-import java.util.List;
-
-import org.junit.Before;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.bin.Cache;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 import jalview.ws.seqfetcher.DbSourceProxy;
 
+import java.util.List;
+
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
 public class PDBSequenceFetcherTest
 {
 
   SequenceFetcher sf;
 
-  @Before
+  @BeforeMethod
   public void setUp() throws Exception
   {
     // ensure 'add annotation from structure' is selected
@@ -49,7 +49,7 @@ public class PDBSequenceFetcherTest
     sf = new SequenceFetcher(false);
   }
 
-  @Test
+  @Test(enabled = false)
   public void testRnaSeqRetrieve() throws Exception
   {
     List<DbSourceProxy> sps = sf.getSourceProxy("PDB");
index a97f3e0..3b3ef86 100644 (file)
@@ -1,8 +1,8 @@
 package jalview.ws.dbsources;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
 import jalview.ws.uimodel.PDBRestRequest;
 import jalview.ws.uimodel.PDBRestResponse;
@@ -20,9 +20,10 @@ import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 import com.sun.jersey.api.client.Client;
 import com.sun.jersey.api.client.ClientResponse;
@@ -33,12 +34,12 @@ import com.sun.jersey.api.client.config.DefaultClientConfig;
 public class PDBRestClientTest
 {
 
-  @Before
+  @BeforeMethod
   public void setUp() throws Exception
   {
   }
 
-  @After
+  @AfterMethod
   public void tearDown() throws Exception
   {
   }
@@ -67,7 +68,7 @@ public class PDBRestClientTest
     } catch (Exception e)
     {
       e.printStackTrace();
-      fail("Couldn't execute webservice call!");
+      Assert.fail("Couldn't execute webservice call!");
       return;
     }
     assertTrue(response.getNumberOfItemsFound() > 99);
@@ -130,7 +131,7 @@ public class PDBRestClientTest
     assertEquals(expectedErrorMsg, parsedErrorResponse);
   }
 
-  @Test(expected = Exception.class)
+  @Test(expectedExceptions = Exception.class)
   public void testForExpectedRuntimeException() throws Exception
   {
     List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
@@ -207,7 +208,7 @@ public class PDBRestClientTest
     // Check the response status and report exception if one occurs
     if (clientResponse.getStatus() != 200)
     {
-      fail("Webservice call failed!!!");
+      Assert.fail("Webservice call failed!!!");
     }
     else
     {
@@ -248,7 +249,7 @@ public class PDBRestClientTest
         }
       } catch (ParseException e)
       {
-        fail(">>>  Test failed due to exception while parsing pdb response json !!!");
+        Assert.fail(">>>  Test failed due to exception while parsing pdb response json !!!");
         e.printStackTrace();
       }
     }
index 7325527..9fba1cb 100644 (file)
@@ -1,17 +1,17 @@
 package jalview.ws.dbsources;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNull;
+
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.UniprotEntry;
 
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.Vector;
 
-import org.junit.Test;
-
-import jalview.datamodel.PDBEntry;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.UniprotEntry;
+import org.testng.annotations.Test;
 
 public class UniprotTest
 {
index 4c67d25..a3ae56d 100644 (file)
  */
 package jalview.ws.gui;
 
+import jalview.bin.Cache;
+import jalview.gui.WsJobParameters;
+import jalview.util.MessageManager;
+import jalview.ws.jabaws.JalviewJabawsTestUtils;
+import jalview.ws.jws2.JabaPreset;
+import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+
 import java.awt.BorderLayout;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
@@ -30,21 +38,12 @@ import java.util.List;
 import javax.swing.JFrame;
 import javax.swing.JPanel;
 
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 import compbio.metadata.Preset;
 import compbio.metadata.PresetManager;
 
-import jalview.bin.Cache;
-import jalview.gui.WsJobParameters;
-import jalview.util.MessageManager;
-import jalview.ws.jabaws.JalviewJabawsTestUtils;
-import jalview.ws.jws2.JabaPreset;
-import jalview.ws.jws2.Jws2Discoverer;
-import jalview.ws.jws2.jabaws2.Jws2Instance;
-
 public class Jws2ParamView
 {
   /**
@@ -74,8 +73,8 @@ public class Jws2ParamView
    * This test marked Ignore as it appears to need user action to complete
    * rather than hang
    */
-  @Test
-  @Ignore
+
+  @Test(enabled = false)
   public void testJws2Gui()
   {
     Iterator<String> presetEnum = presetTests.iterator();
index e561479..470c39b 100644 (file)
@@ -20,9 +20,9 @@
  */
 package jalview.ws.jabaws;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.io.AnnotationFile;
@@ -35,9 +35,10 @@ import jalview.ws.jws2.jabaws2.Jws2Instance;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 public class DisorderAnnotExportImport
 {
@@ -157,7 +158,7 @@ public class DisorderAnnotExportImport
     {
       e.printStackTrace();
     }
-    fail("Test "
+    Assert.fail("Test "
             + testname
             + "\nCouldn't complete Annotation file roundtrip input/output/input test.");
   }
index 72fa7a4..ec901da 100644 (file)
@@ -23,14 +23,13 @@ package jalview.ws.jabaws;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import java.util.Vector;
+import jalview.ws.jws2.Jws2Discoverer;
 
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import java.util.Vector;
 
-import jalview.ws.jws2.Jws2Discoverer;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 public class JalviewJabawsTestUtils
 {
@@ -52,8 +51,7 @@ public class JalviewJabawsTestUtils
   { "http://localhost:8080/jabaws",
       "http://www.compbio.dundee.ac.uk/jabaws" };
 
-  @Test
-  @Ignore
+  @Test(enabled = false)
   public void testAnnotExport()
   {
     fail("Not yet implemented");
index 7afaeed..49a3064 100644 (file)
  */
 package jalview.ws.jabaws;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.awt.Component;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import compbio.metadata.Argument;
-import compbio.metadata.WrongParameterException;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.datamodel.AlignmentI;
 import jalview.gui.Jalview2XML;
@@ -50,6 +35,21 @@ import jalview.ws.jws2.SequenceAnnotationWSClient;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.AutoCalcSetting;
 
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import compbio.metadata.Argument;
+import compbio.metadata.WrongParameterException;
+
 public class JpredJabaStructExportImport
 {
   public static String testseqs = "examples/uniref50.fa";
@@ -82,7 +82,7 @@ public class JpredJabaStructExportImport
 
     if (jpredws == null)
     {
-      fail("jpredws is null");
+      Assert.fail("jpredws is null");
     }
 
     jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
@@ -144,7 +144,7 @@ public class JpredJabaStructExportImport
         if (!success)
         {
           jpredClient.cancelCurrentJob();
-          fail("Jpred Client didn't run with hardwired default parameters.");
+          Assert.fail("Jpred Client didn't run with hardwired default parameters.");
         }
 
       } catch (InterruptedException x)
@@ -221,15 +221,15 @@ public class JpredJabaStructExportImport
     {
       e.printStackTrace();
     }
-    fail("Test "
+    Assert.fail("Test "
             + testname
             + "\nCouldn't complete Annotation file roundtrip input/output/input test.");
   }
 
-  // @Test
+  @Test
   public void testJpredwsSettingsRecovery()
   {
-    fail("not implemnented");
+    Assert.fail("not implemnented");
     List<compbio.metadata.Argument> opts = new ArrayList<compbio.metadata.Argument>();
     for (compbio.metadata.Argument rg : (List<compbio.metadata.Argument>) jpredws
             .getRunnerConfig().getArguments())
@@ -241,7 +241,7 @@ public class JpredJabaStructExportImport
           rg.setValue("292");
         } catch (WrongParameterException q)
         {
-          fail("Couldn't set the temperature parameter "
+          Assert.fail("Couldn't set the temperature parameter "
                   + q.getStackTrace());
         }
         opts.add(rg);
index 0c25cdb..0a50e47 100644 (file)
@@ -1,12 +1,12 @@
 package jalview.ws.jabaws;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertEquals;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.Test;
 
 import compbio.data.msa.MsaWS;
 import compbio.data.msa.RegistryWS;
@@ -15,7 +15,8 @@ import compbio.metadata.JobStatus;
 import compbio.ws.client.Jws2Client;
 import compbio.ws.client.Services;
 
-public class MinJabawsClientTests {
+public class MinJabawsClientTests
+{
 
        /**
         * simple test for the benefit of JAL-1338
@@ -39,7 +40,7 @@ public class MinJabawsClientTests {
                                }
                        }
                        if (msaservice == null) {
-                               fail("couldn't find a clustalO service on the public registry");
+                               Assert.fail("couldn't find a clustalO service on the public registry");
                        }
                        FastaSequence fsq = new FastaSequence("seqA",
                                        "SESESESESESESESSESESSESESESESESESESESESEEEEEESSESESESESSSSESESESESESESE");
index 1475b4e..5d9773a 100644 (file)
@@ -20,9 +20,9 @@
  */
 package jalview.ws.jabaws;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.gui.Jalview2XML;
@@ -42,10 +42,10 @@ import java.util.List;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
 
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 import compbio.metadata.WrongParameterException;
 
@@ -81,7 +81,7 @@ public class RNAStructExportImport
 
     if (rnaalifoldws == null)
     {
-      fail("no web service");
+      Assert.fail("no web service");
     }
 
     jalview.io.FileLoader fl = new jalview.io.FileLoader(false);
@@ -144,7 +144,9 @@ public class RNAStructExportImport
       {
         if (aa.isRNA())
         {
-          Assert.assertTrue("Did not create valid structure from RNAALiFold prediction", aa.isValidStruc());
+          assertTrue(
+                  "Did not create valid structure from RNAALiFold prediction",
+                  aa.isValidStruc());
         }
       }
     }
@@ -216,7 +218,7 @@ public class RNAStructExportImport
     {
       e.printStackTrace();
     }
-    fail("Test "
+    Assert.fail("Test "
             + testname
             + "\nCouldn't complete Annotation file roundtrip input/output/input test.");
   }
@@ -235,7 +237,7 @@ public class RNAStructExportImport
           rg.setValue("292");
         } catch (WrongParameterException q)
         {
-          fail("Couldn't set the temperature parameter "
+          Assert.fail("Couldn't set the temperature parameter "
                   + q.getStackTrace());
         }
         opts.add(rg);
index bf1b8ee..3403446 100644 (file)
  */
 package jalview.ws.jws2;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.bin.Cache;
+import jalview.ws.jabaws.JalviewJabawsTestUtils;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
 
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
 
 import compbio.metadata.Option;
 import compbio.metadata.Parameter;
@@ -37,10 +41,6 @@ import compbio.metadata.Preset;
 import compbio.metadata.PresetManager;
 import compbio.metadata.WrongParameterException;
 
-import jalview.bin.Cache;
-import jalview.ws.jabaws.JalviewJabawsTestUtils;
-import jalview.ws.jws2.jabaws2.Jws2Instance;
-
 public class ParameterUtilsTest
 {
   /*
index 66cdc42..70071a5 100644 (file)
@@ -1,12 +1,12 @@
 package jalview.ws.rest;
 
-import static org.junit.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertEquals;
 
-import java.util.Vector;
+import jalview.bin.Cache;
 
-import org.junit.Test;
+import java.util.Vector;
 
-import jalview.bin.Cache;
+import org.testng.annotations.Test;
 
 public class RestClientTest
 {
index c4430ad..99135d9 100644 (file)
  */
 package jalview.ws.rest;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
 
-import java.util.Map;
+import jalview.gui.AlignFrame;
 
-import org.junit.Test;
+import java.util.Map;
 
-import jalview.gui.AlignFrame;
-import jalview.util.StringUtils;
+import org.testng.annotations.Test;
 
 /**
  * @author jimp
index 7f82252..c830f23 100644 (file)
@@ -1,8 +1,7 @@
 package jalview.ws.seqfetcher;
 
-import static org.junit.Assert.*;
-
-import org.junit.Test;
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
 
 public class DasSequenceFetcher
 {
@@ -11,7 +10,7 @@ public class DasSequenceFetcher
   public void testDasRegistryContact()
   {
     jalview.bin.Cache.getDasSourceRegistry().refreshSources();
-    assertTrue(
+    AssertJUnit.assertTrue(
             "Expected to find at least one DAS source at the registry. Check config.",
             jalview.bin.Cache.getDasSourceRegistry().getSources().size() > 0);
   }
index 7540edf..d6bd4b0 100644 (file)
  */
 package jalview.ws.seqfetcher;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
 
 import jalview.analysis.CrossRef;
 import jalview.datamodel.AlignmentI;
@@ -38,6 +31,13 @@ import jalview.datamodel.DBRefSource;
 import jalview.util.DBRefUtils;
 import jalview.ws.SequenceFetcher;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
 /**
  * @author jimp
  * 
index 6699035..98747f7 100644 (file)
  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
-import java.io.*;
-import java.util.*;
+import java.io.DataInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Hashtable;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
@@ -140,6 +143,9 @@ public class getJavaVersion
       versions.put("48.0", "1.4");
       versions.put("49.0", "1.5");
       versions.put("50.0", "1.6");
+      versions.put("51.0", "1.7");
+      versions.put("52.0", "1.8");
+
     }
     String version = (String) versions.get(major + "."
             + minor);
@@ -149,6 +155,10 @@ public class getJavaVersion
       version = (String) versions.get(major + ".0");
     }
 //    System.err.println("Version "+version);
+    if (version == null)
+    {
+      versions.put(major + "." + minor, "Class v" + major + ".0");
+    }
     return version;
   }
 
diff --git a/utils/hamcrest-core-1.3.jar b/utils/hamcrest-core-1.3.jar
new file mode 100644 (file)
index 0000000..9d5fe16
Binary files /dev/null and b/utils/hamcrest-core-1.3.jar differ
diff --git a/utils/jalview_testng.xml b/utils/jalview_testng.xml
new file mode 100644 (file)
index 0000000..6ebda65
--- /dev/null
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
+<suite name="Suite" parallel="none">
+  <test verbose="2" name="Test">
+    <classes>
+      <class name="jalview.gui.AlignViewportTest"/>
+      <class name="jalview.util.ShiftListTest"/>
+      <class name="jalview.util.ColorUtilsTest"/>
+      <class name="jalview.gui.PDBSearchPanelTest"/>
+      <class name="MCview.PDBfileTest"/>
+      <class name="jalview.io.BioJsHTMLOutputTest"/>
+      <class name="jalview.io.JSONFileTest"/>
+      <class name="jalview.ext.jmol.PDBFileWithJmolTest"/>
+      <class name="jalview.ws.jabaws.RNAStructExportImport"/>
+      <class name="jalview.ext.paradise.TestAnnotate3D"/>
+      <class name="MCview.PDBChainTest"/>
+      <class name="jalview.io.StockholmFileTest"/>
+      <class name="jalview.schemes.ScoreMatrixPrinter"/>
+      <class name="jalview.datamodel.SearchResultsTest"/>
+      <class name="jalview.ws.seqfetcher.DasSequenceFetcher"/>
+      <class name="jalview.util.DBRefUtilsTest"/>
+      <class name="jalview.analysis.CrossRefTest"/>
+      <class name="jalview.ws.jabaws.MinJabawsClientTests"/>
+      <class name="jalview.datamodel.AlignedCodonTest"/>
+      <class name="MCview.AtomTest"/>
+      <class name="jalview.gui.PopupMenuTest"/>
+      <class name="jalview.viewmodel.styles.ViewStyleTest"/>
+      <class name="jalview.io.AnnotationFileIOTest"/>
+      <class name="jalview.ws.jws2.ParameterUtilsTest"/>
+      <class name="jalview.io.RNAMLfileTest"/>
+      <class name="jalview.analysis.AlignmentUtilsTests"/>
+      <class name="jalview.gui.SequenceRendererTest"/>
+      <class name="jalview.bin.CommandLineOperations"/>
+      <class name="jalview.gui.PaintRefresherTest"/>
+      <class name="jalview.ws.seqfetcher.DbRefFetcherTest"/>
+      <class name="jalview.datamodel.AlignmentAnnotationTests"/>
+      <class name="jalview.schemes.ResiduePropertiesTest"/>
+      <class name="jalview.ext.rbvi.chimera.ChimeraCommandsTest"/>
+      <class name="MCview.ResidueTest"/>
+      <class name="jalview.io.PhylipFileTests"/>
+      <class name="jalview.util.MappingUtilsTest"/>
+      <class name="jalview.ws.jabaws.DisorderAnnotExportImport"/>
+      <class name="jalview.analysis.GroupingTest"/>
+      <class name="jalview.analysis.AnnotationSorterTest"/>
+      <class name="jalview.io.FileIOTester"/>
+      <class name="jalview.util.MapListTest"/>
+      <class name="jalview.datamodel.ColumnSelectionTest"/>
+      <class name="jalview.ext.rbvi.chimera.ChimeraConnect"/>
+      <class name="jalview.gui.ProgressBarTest"/>
+      <class name="jalview.analysis.AlignmentAnnotationUtilsTest"/>
+      <class name="jalview.structure.StructureSelectionManagerTest"/>
+      <class name="jalview.io.TCoffeeScoreFileTest"/>
+      <class name="jalview.analysis.AAFrequencyTest"/>
+      <class name="jalview.ws.dbsources.PDBRestClientTest"/>
+      <class name="jalview.analysis.DnaTest"/>
+      <class name="jalview.util.StringUtilsTest"/>
+      <class name="jalview.structures.models.AAStructureBindingModelTest"/>
+      <class name="jalview.gui.JvSwingUtilsTest"/>
+      <class name="jalview.analysis.CodingUtilsTest"/>
+      <class name="jalview.io.AnnotatedPDBFileInputTest"/>
+      <class name="jalview.ws.rest.ShmmrRSBSService"/>
+      <class name="jalview.io.NewickFileTests"/>
+      <class name="jalview.analysis.ParsePropertiesTest"/>
+      <class name="MCview.BondTest"/>
+      <class name="jalview.commands.EditCommandTest"/>
+      <class name="jalview.ext.rbvi.chimera.JalviewChimeraView"/>
+      <class name="jalview.ws.jabaws.JpredJabaStructExportImport"/>
+      <class name="jalview.gui.HelpTest"/>
+      <class name="jalview.datamodel.AlignedCodonIteratorTest"/>
+      <class name="jalview.datamodel.xdb.embl.EmblFileTest"/>
+      <class name="jalview.util.ComparisonTest"/>
+      <class name="jalview.util.QuickSortTest"/>
+      <class name="jalview.ws.PDBSequenceFetcherTest"/>
+      <class name="jalview.analysis.scoremodels.FeatureScoreModelTest"/>
+      <class name="jalview.io.Jalview2xmlTests"/>
+      <class name="jalview.ws.rest.RestClientTest"/>
+      <class name="jalview.datamodel.AlignedCodonFrameTest"/>
+      <class name="jalview.datamodel.MappingTest"/>
+      <class name="jalview.datamodel.AlignmentTest"/>
+      <class name="jalview.ws.dbsources.UniprotTest"/>
+      <class name="jalview.gui.AnnotationChooserTest"/>
+      <class name="jalview.structure.Mapping"/>
+      <class name="jalview.datamodel.SequenceTest"/>
+      <class name="jalview.datamodel.PDBEntryTest"/>
+      <class name="jalview.gui.StructureChooserTest"/>
+      <class name="jalview.schemes.DnaCodonTests"/>
+      <class name="com.stevesoft.pat.RegexWriterTest"/>
+      <class name="jalview.datamodel.DBRefEntryTest"/>
+      <class name="jalview.gui.FontChooserTest"/>
+      <class name="jalview.analysis.TestAlignSeq"/>
+      <class name="jalview.datamodel.SeqCigarTest"/>
+      <class name="jalview.gui.JAL1353bugdemo"/>
+    </classes>
+  </test> <!-- Test -->
+</suite> <!-- Suite --> 
diff --git a/utils/junit-4.12.jar b/utils/junit-4.12.jar
new file mode 100644 (file)
index 0000000..3a7fc26
Binary files /dev/null and b/utils/junit-4.12.jar differ
diff --git a/utils/testnglibs/bsh-2.0b4.jar b/utils/testnglibs/bsh-2.0b4.jar
new file mode 100644 (file)
index 0000000..36fe03d
Binary files /dev/null and b/utils/testnglibs/bsh-2.0b4.jar differ
diff --git a/utils/testnglibs/guava-base-r03.jar b/utils/testnglibs/guava-base-r03.jar
new file mode 100644 (file)
index 0000000..2323db9
Binary files /dev/null and b/utils/testnglibs/guava-base-r03.jar differ
diff --git a/utils/testnglibs/guava-collections-r03.jar b/utils/testnglibs/guava-collections-r03.jar
new file mode 100644 (file)
index 0000000..e8f908d
Binary files /dev/null and b/utils/testnglibs/guava-collections-r03.jar differ
diff --git a/utils/testnglibs/jcommander.jar b/utils/testnglibs/jcommander.jar
new file mode 100644 (file)
index 0000000..ad0a12c
Binary files /dev/null and b/utils/testnglibs/jcommander.jar differ
diff --git a/utils/testnglibs/junit-4.12.jar b/utils/testnglibs/junit-4.12.jar
new file mode 100644 (file)
index 0000000..3a7fc26
Binary files /dev/null and b/utils/testnglibs/junit-4.12.jar differ
diff --git a/utils/testnglibs/snakeyaml.jar b/utils/testnglibs/snakeyaml.jar
new file mode 100644 (file)
index 0000000..fd314d3
Binary files /dev/null and b/utils/testnglibs/snakeyaml.jar differ
diff --git a/utils/testnglibs/testng-sources.jar b/utils/testnglibs/testng-sources.jar
new file mode 100644 (file)
index 0000000..7a80303
Binary files /dev/null and b/utils/testnglibs/testng-sources.jar differ
diff --git a/utils/testnglibs/testng.jar b/utils/testnglibs/testng.jar
new file mode 100644 (file)
index 0000000..e1f127e
Binary files /dev/null and b/utils/testnglibs/testng.jar differ