JAL-1767 schema and Castor changes for Save PCA in project
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 4 May 2018 14:49:22 +0000 (15:49 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 4 May 2018 14:49:22 +0000 (15:49 +0100)
33 files changed:
schemas/jalview.xsd
src/jalview/gui/Jalview2XML.java
src/jalview/schemabinding/version2/.castor.cdr
src/jalview/schemabinding/version2/Axis.java [new file with mode: 0644]
src/jalview/schemabinding/version2/DoubleMatrix.java [new file with mode: 0644]
src/jalview/schemabinding/version2/DoubleVector.java [new file with mode: 0644]
src/jalview/schemabinding/version2/EigenMatrix.java [new file with mode: 0644]
src/jalview/schemabinding/version2/EigenMatrixD.java [new file with mode: 0644]
src/jalview/schemabinding/version2/EigenMatrixE.java [new file with mode: 0644]
src/jalview/schemabinding/version2/JalviewModelSequence.java
src/jalview/schemabinding/version2/PairwiseMatrix.java [new file with mode: 0644]
src/jalview/schemabinding/version2/PcaData.java [new file with mode: 0644]
src/jalview/schemabinding/version2/PcaDataType.java [new file with mode: 0644]
src/jalview/schemabinding/version2/PcaViewer.java [new file with mode: 0644]
src/jalview/schemabinding/version2/Row.java [new file with mode: 0644]
src/jalview/schemabinding/version2/SeqPointMax.java [new file with mode: 0644]
src/jalview/schemabinding/version2/SeqPointMin.java [new file with mode: 0644]
src/jalview/schemabinding/version2/SequencePoint.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/AxisDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/DoubleMatrixDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/DoubleVectorDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/EigenMatrixDDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/EigenMatrixDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/EigenMatrixEDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/JalviewModelSequenceDescriptor.java
src/jalview/schemabinding/version2/descriptors/PairwiseMatrixDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/PcaDataDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/PcaDataTypeDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/PcaViewerDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/RowDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/SeqPointMaxDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/SeqPointMinDescriptor.java [new file with mode: 0644]
src/jalview/schemabinding/version2/descriptors/SequencePointDescriptor.java [new file with mode: 0644]

index e5058c6..109b83b 100755 (executable)
                                                <xs:attribute name="linkToAllViews" use="optional" default="false" type="xs:boolean" />
                                        </xs:complexType>
                                </xs:element>
+                               <xs:element name="PcaViewer" minOccurs="0" maxOccurs="unbounded">
+                                       <xs:complexType>
+                                               <xs:sequence>
+                                                       <xs:element name="sequencePoint" minOccurs="1" maxOccurs="unbounded">
+                                                               <xs:complexType>
+                                                                       <xs:attribute name="sequenceRef" type="xs:string" />
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="axis" minOccurs="3" maxOccurs="3">
+                                                               <xs:annotation>
+                                                                       <xs:documentation>
+                                                                               endpoints of X, Y and Z axes in that order
+                                                                       </xs:documentation>
+                                                               </xs:annotation>
+                                                               <xs:complexType>
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="seqPointMin">
+                                                               <xs:complexType>
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="seqPointMax">
+                                                               <xs:complexType>
+                                                                       <xs:attributeGroup ref="jv:position" />
+                                                               </xs:complexType>
+                                                       </xs:element>
+                                                       <xs:element name="pcaData" type="jv:PcaDataType" />
+                                               </xs:sequence>
+                                               <xs:attribute name="title" type="xs:string" />
+                                               <xs:attribute name="scoreModelName" type="xs:string" />
+                                               <xs:attribute name="xDim" type="xs:int" />
+                                               <xs:attribute name="yDim" type="xs:int" />
+                                               <xs:attribute name="zDim" type="xs:int" />
+                                               <xs:attribute name="bgColour" type="xs:int" />
+                                               <xs:attribute name="scaleFactor" type="xs:float" />
+                                               <xs:attribute name="showLabels" type="xs:boolean" />
+                                               <xs:attribute name="linkToAllViews" type="xs:boolean" />
+                                               <xs:attributeGroup ref="jv:SimilarityParams" />
+                                               <xs:attributeGroup ref="jv:swingwindow" />
+                                       </xs:complexType>
+                               </xs:element>
                                <xs:element name="FeatureSettings" minOccurs="0">
                                        <xs:complexType>
                                                <xs:sequence>
                <xs:attribute name="predefinedColours" type="xs:boolean"
                        use="optional" />
        </xs:complexType>
-
+       <xs:attributeGroup name="SimilarityParams">
+               <xs:annotation>
+                       <xs:documentation>
+                               parameters that condition a similarity score calculation
+                       </xs:documentation>
+               </xs:annotation>
+               <xs:attribute name="includeGaps" type="xs:boolean" />
+               <xs:attribute name="matchGaps" type="xs:boolean" />
+               <xs:attribute name="includeGappedColumns" type="xs:boolean" />
+               <xs:attribute name="denominateByShortestLength" type="xs:boolean" />
+       </xs:attributeGroup>
+       <xs:attributeGroup name="position">
+               <xs:attribute name="xPos" type="xs:float" />
+               <xs:attribute name="yPos" type="xs:float" />
+               <xs:attribute name="zPos" type="xs:float" />
+       </xs:attributeGroup>
+       <xs:complexType name="PcaDataType">
+               <xs:annotation>
+                       <xs:documentation>
+                               The results of a PCA calculation
+                       </xs:documentation>
+               </xs:annotation>
+               <xs:sequence>
+                       <xs:element name="details" type="xs:string">
+                               <xs:annotation>
+                                       <xs:documentation>
+                                               The text report of the calculation
+                                       </xs:documentation>
+                               </xs:annotation>
+                       </xs:element>
+                       <xs:element name="pairwiseMatrix" type="jv:DoubleMatrix" />
+                       <xs:element name="eigenMatrix" type="jv:DoubleMatrix" />
+                       <xs:element name="eigenMatrixD" type="jv:DoubleVector" />
+                       <xs:element name="eigenMatrixE" type="jv:DoubleVector" />
+               </xs:sequence>
+       </xs:complexType>
+       <xs:complexType name="DoubleVector">
+               <xs:sequence>
+                       <xs:element name="d" type="xs:double" minOccurs="0" maxOccurs="unbounded" />
+               </xs:sequence>
+       </xs:complexType>
+       <xs:complexType name="DoubleMatrix">
+               <xs:sequence>
+                       <xs:element name="row" type="jv:DoubleVector" minOccurs="0" maxOccurs="unbounded" />
+               </xs:sequence>
+               <xs:attribute name="rows"  type="xs:int" />
+               <xs:attribute name="columns" type="xs:int" />
+       </xs:complexType>
 </xs:schema>
index ffa8301..2b3e5ce 100644 (file)
  */
 package jalview.gui;
 
+import static jalview.math.RotatableMatrix.Axis.X;
+import static jalview.math.RotatableMatrix.Axis.Y;
+import static jalview.math.RotatableMatrix.Axis.Z;
+
 import jalview.analysis.Conservation;
+import jalview.analysis.PCA;
+import jalview.analysis.scoremodels.ScoreModels;
+import jalview.analysis.scoremodels.SimilarityParams;
 import jalview.api.FeatureColourI;
 import jalview.api.ViewStyleI;
+import jalview.api.analysis.ScoreModelI;
+import jalview.api.analysis.SimilarityParamsI;
 import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.datamodel.AlignedCodonFrame;
@@ -31,6 +40,7 @@ import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.GraphLine;
 import jalview.datamodel.PDBEntry;
+import jalview.datamodel.Point;
 import jalview.datamodel.RnaViewerModel;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceGroup;
@@ -45,15 +55,22 @@ import jalview.ext.varna.RnaModel;
 import jalview.gui.StructureViewer.ViewerType;
 import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
+import jalview.math.Matrix;
+import jalview.math.MatrixI;
 import jalview.renderer.ResidueShaderI;
 import jalview.schemabinding.version2.AlcodMap;
 import jalview.schemabinding.version2.AlcodonFrame;
 import jalview.schemabinding.version2.Annotation;
 import jalview.schemabinding.version2.AnnotationColours;
 import jalview.schemabinding.version2.AnnotationElement;
+import jalview.schemabinding.version2.Axis;
 import jalview.schemabinding.version2.CalcIdParam;
 import jalview.schemabinding.version2.CompoundMatcher;
 import jalview.schemabinding.version2.DBRef;
+import jalview.schemabinding.version2.DoubleMatrix;
+import jalview.schemabinding.version2.EigenMatrix;
+import jalview.schemabinding.version2.EigenMatrixD;
+import jalview.schemabinding.version2.EigenMatrixE;
 import jalview.schemabinding.version2.Features;
 import jalview.schemabinding.version2.Group;
 import jalview.schemabinding.version2.HiddenColumns;
@@ -68,12 +85,19 @@ import jalview.schemabinding.version2.MappingChoice;
 import jalview.schemabinding.version2.MatchCondition;
 import jalview.schemabinding.version2.MatcherSet;
 import jalview.schemabinding.version2.OtherData;
+import jalview.schemabinding.version2.PairwiseMatrix;
+import jalview.schemabinding.version2.PcaData;
+import jalview.schemabinding.version2.PcaViewer;
 import jalview.schemabinding.version2.PdbentryItem;
 import jalview.schemabinding.version2.Pdbids;
 import jalview.schemabinding.version2.Property;
 import jalview.schemabinding.version2.RnaViewer;
+import jalview.schemabinding.version2.Row;
 import jalview.schemabinding.version2.SecondaryStructure;
+import jalview.schemabinding.version2.SeqPointMax;
+import jalview.schemabinding.version2.SeqPointMin;
 import jalview.schemabinding.version2.Sequence;
+import jalview.schemabinding.version2.SequencePoint;
 import jalview.schemabinding.version2.SequenceSet;
 import jalview.schemabinding.version2.SequenceSetProperties;
 import jalview.schemabinding.version2.Setting;
@@ -100,6 +124,7 @@ import jalview.util.StringUtils;
 import jalview.util.jarInputStreamProvider;
 import jalview.util.matcher.Condition;
 import jalview.viewmodel.AlignmentViewport;
+import jalview.viewmodel.PCAModel;
 import jalview.viewmodel.ViewportRanges;
 import jalview.viewmodel.seqfeatures.FeatureRendererSettings;
 import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
@@ -1131,6 +1156,24 @@ public class Jalview2XML
       }
     }
 
+    /*
+     * save PCA viewers
+     */
+    if (!storeDS && Desktop.desktop != null)
+    {
+      for (JInternalFrame frame : Desktop.desktop.getAllFrames())
+      {
+        if (frame instanceof PCAPanel)
+        {
+          PCAPanel panel = (PCAPanel) frame;
+          if (panel.av.getAlignment() == jal)
+          {
+            savePCA(panel, jms);
+          }
+        }
+      }
+    }
+
     // SAVE ANNOTATIONS
     /**
      * store forward refs from an annotationRow to any groups
@@ -1508,6 +1551,122 @@ public class Jalview2XML
   }
 
   /**
+   * Writes PCA viewer attributes and computed values to an XML model object and adds it to the JalviewModel. Any exceptions are reported by logging.
+   */
+  protected void savePCA(PCAPanel panel, JalviewModelSequence jms)
+  {
+    try
+    {
+      PcaViewer viewer = new PcaViewer();
+      viewer.setHeight(panel.getHeight());
+      viewer.setWidth(panel.getWidth());
+      viewer.setXpos(panel.getX());
+      viewer.setYpos(panel.getY());
+      viewer.setTitle(panel.getTitle());
+      PCAModel pcaModel = panel.pcaModel;
+      viewer.setScoreModelName(pcaModel.getScoreModelName());
+      viewer.setXDim(panel.getSelectedDimensionIndex(X));
+      viewer.setYDim(panel.getSelectedDimensionIndex(Y));
+      viewer.setZDim(panel.getSelectedDimensionIndex(Z));
+      viewer.setBgColour(panel.rc.getBackgroundColour().getRGB());
+      viewer.setScaleFactor(panel.rc.scaleFactor);
+      float[] spMin = panel.rc.getSeqMin();
+      SeqPointMin spmin = new SeqPointMin();
+      spmin.setXPos(spMin[0]);
+      spmin.setYPos(spMin[1]);
+      spmin.setZPos(spMin[2]);
+      viewer.setSeqPointMin(spmin);
+      float[] spMax = panel.rc.getSeqMax();
+      SeqPointMax spmax = new SeqPointMax();
+      spmax.setXPos(spMax[0]);
+      spmax.setYPos(spMax[1]);
+      spmax.setZPos(spMax[2]);
+      viewer.setSeqPointMax(spmax);
+      viewer.setShowLabels(panel.rc.showLabels);
+      viewer.setLinkToAllViews(panel.rc.applyToAllViews);
+      SimilarityParamsI sp = pcaModel.getSimilarityParameters();
+      viewer.setIncludeGaps(sp.includeGaps());
+      viewer.setMatchGaps(sp.matchGaps());
+      viewer.setIncludeGappedColumns(sp.includeGappedColumns());
+      viewer.setDenominateByShortestLength(sp.denominateByShortestLength());
+
+      /*
+       * sequence points on display
+       */
+      for (jalview.datamodel.SequencePoint spt : pcaModel
+              .getSequencePoints())
+      {
+        SequencePoint point = new SequencePoint();
+        point.setSequenceRef(seqHash(spt.getSequence()));
+        point.setXPos(spt.coord.x);
+        point.setYPos(spt.coord.y);
+        point.setZPos(spt.coord.z);
+        viewer.addSequencePoint(point);
+      }
+
+      /*
+       * (end points of) axes on display
+       */
+      for (Point p : panel.rc.axisEndPoints)
+      {
+        Axis axis = new Axis();
+        axis.setXPos(p.x);
+        axis.setYPos(p.y);
+        axis.setZPos(p.z);
+        viewer.addAxis(axis);
+      }
+
+      /*
+       * raw PCA data
+       */
+      PcaData data = new PcaData();
+      viewer.setPcaData(data);
+      PCA pca = pcaModel.getPcaData();
+      data.setDetails(pca.getDetails());
+      MatrixI m = pca.getEigenmatrix();
+      EigenMatrix eigenMatrix = new EigenMatrix();
+      eigenMatrix.setRows(m.height());
+      eigenMatrix.setColumns(m.width());
+      data.setEigenMatrix(eigenMatrix);
+      for (int i = 0; i < m.height(); i++)
+      {
+        Row row = new Row();
+        for (int j = 0; j < m.width(); j++)
+        {
+          row.addD(m.getValue(i, j));
+        }
+        eigenMatrix.addRow(row);
+      }
+      EigenMatrixD eigenMatrixD = new EigenMatrixD();
+      eigenMatrixD.setD(m.getD());
+      data.setEigenMatrixD(eigenMatrixD);
+      EigenMatrixE eigenMatrixE = new EigenMatrixE();
+      eigenMatrixE.setD(m.getE());
+      data.setEigenMatrixE(eigenMatrixE);
+
+      PairwiseMatrix pm = new PairwiseMatrix();
+      m = pca.getPairwiseScores();
+      pm.setRows(m.height());
+      pm.setColumns(m.width());
+      data.setPairwiseMatrix(pm);
+      for (int i = 0; i < m.height(); i++)
+      {
+        Row row = new Row();
+        for (int j = 0; j < m.width(); j++)
+        {
+          row.addD(m.getValue(i, j));
+        }
+        pm.addRow(row);
+      }
+
+      jms.addPcaViewer(viewer);
+    } catch (Throwable t)
+    {
+      Cache.log.error("Error saving PCA: " + t.getMessage());
+    }
+  }
+
+  /**
    * Save any Varna viewers linked to this sequence. Writes an rnaViewer element
    * for each viewer, with
    * <ul>
@@ -3621,6 +3780,7 @@ public class Jalview2XML
     if (loadTreesAndStructures)
     {
       loadTrees(jms, view, af, av, ap);
+      loadPCAViewers(jms, ap);
       loadPDBStructures(jprovider, jseqs, af, ap);
       loadRnaViewers(jprovider, jseqs, ap);
     }
@@ -3763,9 +3923,7 @@ public class Jalview2XML
           tp.setTitle(tree.getTitle());
           tp.setBounds(new Rectangle(tree.getXpos(), tree.getYpos(),
                   tree.getWidth(), tree.getHeight()));
-          tp.av = av; // af.viewport; // TODO: verify 'associate with all
-          // views'
-          // works still
+          tp.av = av;
           tp.treeCanvas.av = av; // af.viewport;
           tp.treeCanvas.ap = ap; // af.alignPanel;
 
@@ -5714,6 +5872,138 @@ public class Jalview2XML
   }
 
   /**
+   * Loads any saved PCA viewers
+   * 
+   * @param jms
+   * @param ap
+   */
+  protected void loadPCAViewers(JalviewModelSequence jms, AlignmentPanel ap)
+  {
+    try
+    {
+      for (int t = 0; t < jms.getPcaViewerCount(); t++)
+      {
+        PcaViewer viewer = jms.getPcaViewer(t);
+        String modelName = viewer.getScoreModelName();
+        SimilarityParamsI params = new SimilarityParams(
+                viewer.isIncludeGappedColumns(),
+                viewer.isMatchGaps(), viewer.isIncludeGaps(),
+                viewer.isDenominateByShortestLength());
+
+        /*
+         * create the panel (without computing the PCA)
+         */
+        PCAPanel panel = new PCAPanel(ap, modelName, params);
+
+        panel.setTitle(viewer.getTitle());
+        panel.setBounds(new Rectangle(viewer.getXpos(), viewer.getYpos(),
+                viewer.getWidth(), viewer.getHeight()));
+  
+        boolean showLabels = viewer.isShowLabels();
+        panel.setShowLabels(showLabels);
+        panel.rc.showLabels = showLabels;
+        panel.rc.bgColour = new Color(viewer.getBgColour());
+        panel.rc.applyToAllViews = viewer.isLinkToAllViews();
+
+        /*
+         * load PCA output data
+         */
+        ScoreModelI scoreModel = ScoreModels.getInstance()
+                .getScoreModel(modelName, ap);
+        PCA pca = new PCA(null, scoreModel, params);
+        PcaData pcaData = viewer.getPcaData();
+        pca.setDetails(pcaData.getDetails());
+        MatrixI pairwise = loadMatrix(pcaData.getPairwiseMatrix());
+        pca.setPairwiseScores(pairwise);
+        MatrixI result = loadMatrix(pcaData.getEigenMatrix());
+        result.setD(pcaData.getEigenMatrixD().getD());
+        result.setE(pcaData.getEigenMatrixE().getD());
+        pca.setEigenmatrix(result);
+        panel.pcaModel.setPCA(pca);
+
+        /*
+         * add the sequence points for the PCA display
+         */
+        List<jalview.datamodel.SequencePoint> seqPoints = new ArrayList<>();
+        for (SequencePoint sp : viewer.getSequencePoint())
+        {
+          String seqId = sp.getSequenceRef();
+          SequenceI seq = seqRefIds.get(seqId);
+          if (seq == null)
+          {
+            throw new IllegalStateException(
+                    "Unmatched seqref for PCA: " + seqId);
+          }
+          Point pt = new Point(sp.getXPos(), sp.getYPos(), sp.getZPos());
+          jalview.datamodel.SequencePoint seqPoint = new jalview.datamodel.SequencePoint(
+                  seq, pt);
+          seqPoints.add(seqPoint);
+        }
+        panel.rc.setPoints(seqPoints, seqPoints.size());
+
+        /*
+         * set min-max ranges and scale after setPoints (which recomputes them)
+         */
+        panel.rc.scaleFactor = viewer.getScaleFactor();
+        SeqPointMin spMin = viewer.getSeqPointMin();
+        float[] min = new float[] { spMin.getXPos(), spMin.getYPos(),
+            spMin.getZPos() };
+        SeqPointMax spMax = viewer.getSeqPointMax();
+        float[] max = new float[] { spMax.getXPos(), spMax.getYPos(),
+            spMax.getZPos() };
+        panel.rc.setSeqMinMax(min, max);
+
+        // todo: hold points list in PCAModel only
+        panel.pcaModel.setSequencePoints(seqPoints);
+
+        panel.setSelectedDimensionIndex(viewer.getXDim(), X);
+        panel.setSelectedDimensionIndex(viewer.getYDim(), Y);
+        panel.setSelectedDimensionIndex(viewer.getZDim(), Z);
+
+        // is this duplication needed?
+        panel.top = seqPoints.size() - 1;
+        panel.pcaModel.setTop(seqPoints.size() - 1);
+
+        /*
+         * add the axes' end points for the display
+         */
+        for (int i = 0; i < 3; i++)
+        {
+          Axis axis = viewer.getAxis(i);
+          panel.rc.axisEndPoints[i] = new Point(axis.getXPos(),
+                  axis.getYPos(), axis.getZPos());
+        }
+
+        Desktop.addInternalFrame(panel, MessageManager.formatMessage(
+                "label.calc_title", "PCA", modelName), 475, 450);
+      }
+    } catch (Exception ex)
+    {
+      Cache.log.error("Error loading PCA: " + ex.toString());
+    }
+  }
+
+  /**
+   * Loads XML matrix data into a new Matrix object
+   * 
+   * @param mData
+   * @return
+   */
+  protected MatrixI loadMatrix(DoubleMatrix mData)
+  {
+    int rows = mData.getRows();
+    double[][] vals = new double[rows][];
+
+    for (int i = 0; i < rows; i++)
+    {
+      vals[i] = mData.getRow(i).getD();
+    }
+
+    MatrixI m = new Matrix(vals);
+    return m;
+  }
+
+  /**
    * Populates an XML model of the feature colour scheme for one feature type
    * 
    * @param featureType
index e1100a8..4248a04 100644 (file)
@@ -1,4 +1,5 @@
-#Thu Dec 14 09:10:14 GMT 2017
+#Fri May 04 15:18:48 BST 2018
+jalview.schemabinding.version2.SeqPointMax=jalview.schemabinding.version2.descriptors.SeqPointMaxDescriptor
 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
@@ -6,11 +7,15 @@ jalview.schemabinding.version2.CalcIdParam=jalview.schemabinding.version2.descri
 jalview.schemabinding.version2.Tree=jalview.schemabinding.version2.descriptors.TreeDescriptor
 jalview.schemabinding.version2.JalviewModel=jalview.schemabinding.version2.descriptors.JalviewModelDescriptor
 jalview.schemabinding.version2.SequenceType=jalview.schemabinding.version2.descriptors.SequenceTypeDescriptor
+jalview.schemabinding.version2.SequencePoint=jalview.schemabinding.version2.descriptors.SequencePointDescriptor
 jalview.schemabinding.version2.OtherData=jalview.schemabinding.version2.descriptors.OtherDataDescriptor
 jalview.schemabinding.version2.Setting=jalview.schemabinding.version2.descriptors.SettingDescriptor
+jalview.schemabinding.version2.Axis=jalview.schemabinding.version2.descriptors.AxisDescriptor
 jalview.schemabinding.version2.AlcodonFrame=jalview.schemabinding.version2.descriptors.AlcodonFrameDescriptor
 jalview.schemabinding.version2.AnnotationElement=jalview.schemabinding.version2.descriptors.AnnotationElementDescriptor
+jalview.schemabinding.version2.Row=jalview.schemabinding.version2.descriptors.RowDescriptor
 jalview.schemabinding.version2.FeatureMatcherSet=jalview.schemabinding.version2.descriptors.FeatureMatcherSetDescriptor
+jalview.schemabinding.version2.EigenMatrix=jalview.schemabinding.version2.descriptors.EigenMatrixDescriptor
 jalview.schemabinding.version2.SecondaryStructure=jalview.schemabinding.version2.descriptors.SecondaryStructureDescriptor
 jalview.schemabinding.version2.MatchCondition=jalview.schemabinding.version2.descriptors.MatchConditionDescriptor
 jalview.schemabinding.version2.SequenceSet=jalview.schemabinding.version2.descriptors.SequenceSetDescriptor
@@ -19,19 +24,24 @@ jalview.schemabinding.version2.RnaViewer=jalview.schemabinding.version2.descript
 jalview.schemabinding.version2.MapListType=jalview.schemabinding.version2.descriptors.MapListTypeDescriptor
 jalview.schemabinding.version2.Property=jalview.schemabinding.version2.descriptors.PropertyDescriptor
 jalview.schemabinding.version2.UserColourScheme=jalview.schemabinding.version2.descriptors.UserColourSchemeDescriptor
+jalview.schemabinding.version2.DoubleMatrix=jalview.schemabinding.version2.descriptors.DoubleMatrixDescriptor
 jalview.schemabinding.version2.DBRef=jalview.schemabinding.version2.descriptors.DBRefDescriptor
 jalview.schemabinding.version2.AlcodMap=jalview.schemabinding.version2.descriptors.AlcodMapDescriptor
+jalview.schemabinding.version2.SymmMatrix=jalview.schemabinding.version2.descriptors.SymmMatrixDescriptor
 jalview.schemabinding.version2.Annotation=jalview.schemabinding.version2.descriptors.AnnotationDescriptor
+jalview.schemabinding.version2.SeqPointMin=jalview.schemabinding.version2.descriptors.SeqPointMinDescriptor
 jalview.schemabinding.version2.JSeq=jalview.schemabinding.version2.descriptors.JSeqDescriptor
 jalview.schemabinding.version2.MatcherSet=jalview.schemabinding.version2.descriptors.MatcherSetDescriptor
 jalview.schemabinding.version2.Sequence=jalview.schemabinding.version2.descriptors.SequenceDescriptor
+jalview.schemabinding.version2.Filter=jalview.schemabinding.version2.descriptors.FilterDescriptor
 jalview.schemabinding.version2.WebServiceParameterSet=jalview.schemabinding.version2.descriptors.WebServiceParameterSetDescriptor
 jalview.schemabinding.version2.Alcodon=jalview.schemabinding.version2.descriptors.AlcodonDescriptor
-jalview.schemabinding.version2.Filter=jalview.schemabinding.version2.descriptors.FilterDescriptor
 jalview.schemabinding.version2.AnnotationColours=jalview.schemabinding.version2.descriptors.AnnotationColoursDescriptor
 jalview.schemabinding.version2.Pdbids=jalview.schemabinding.version2.descriptors.PdbidsDescriptor
 jalview.schemabinding.version2.AnnotationColourScheme=jalview.schemabinding.version2.descriptors.AnnotationColourSchemeDescriptor
 jalview.schemabinding.version2.Mapping=jalview.schemabinding.version2.descriptors.MappingDescriptor
+jalview.schemabinding.version2.PcaData=jalview.schemabinding.version2.descriptors.PcaDataDescriptor
+jalview.schemabinding.version2.PcaViewer=jalview.schemabinding.version2.descriptors.PcaViewerDescriptor
 jalview.schemabinding.version2.CompoundMatcher=jalview.schemabinding.version2.descriptors.CompoundMatcherDescriptor
 jalview.schemabinding.version2.JalviewModelSequence=jalview.schemabinding.version2.descriptors.JalviewModelSequenceDescriptor
 jalview.schemabinding.version2.Group=jalview.schemabinding.version2.descriptors.GroupDescriptor
@@ -46,8 +56,13 @@ jalview.schemabinding.version2.JGroup=jalview.schemabinding.version2.descriptors
 jalview.schemabinding.version2.MapListTo=jalview.schemabinding.version2.descriptors.MapListToDescriptor
 jalview.schemabinding.version2.JalviewUserColours=jalview.schemabinding.version2.descriptors.JalviewUserColoursDescriptor
 jalview.schemabinding.version2.VamsasModel=jalview.schemabinding.version2.descriptors.VamsasModelDescriptor
+jalview.schemabinding.version2.PcaDataType=jalview.schemabinding.version2.descriptors.PcaDataTypeDescriptor
 jalview.schemabinding.version2.Pdbentry=jalview.schemabinding.version2.descriptors.PdbentryDescriptor
 jalview.schemabinding.version2.HiddenColumns=jalview.schemabinding.version2.descriptors.HiddenColumnsDescriptor
+jalview.schemabinding.version2.EigenMatrixE=jalview.schemabinding.version2.descriptors.EigenMatrixEDescriptor
 jalview.schemabinding.version2.Features=jalview.schemabinding.version2.descriptors.FeaturesDescriptor
+jalview.schemabinding.version2.EigenMatrixD=jalview.schemabinding.version2.descriptors.EigenMatrixDDescriptor
+jalview.schemabinding.version2.PairwiseMatrix=jalview.schemabinding.version2.descriptors.PairwiseMatrixDescriptor
 jalview.schemabinding.version2.VAMSAS=jalview.schemabinding.version2.descriptors.VAMSASDescriptor
+jalview.schemabinding.version2.DoubleVector=jalview.schemabinding.version2.descriptors.DoubleVectorDescriptor
 jalview.schemabinding.version2.FeatureMatcher=jalview.schemabinding.version2.descriptors.FeatureMatcherDescriptor
diff --git a/src/jalview/schemabinding/version2/Axis.java b/src/jalview/schemabinding/version2/Axis.java
new file mode 100644 (file)
index 0000000..9fe9660
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * endpoints of X, Y and Z axes in that order
+ * 
+ * 
+ * @version $Revision$ $Date$
+ */
+public class Axis implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _xPos.
+   */
+  private float _xPos;
+
+  /**
+   * keeps track of state for field: _xPos
+   */
+  private boolean _has_xPos;
+
+  /**
+   * Field _yPos.
+   */
+  private float _yPos;
+
+  /**
+   * keeps track of state for field: _yPos
+   */
+  private boolean _has_yPos;
+
+  /**
+   * Field _zPos.
+   */
+  private float _zPos;
+
+  /**
+   * keeps track of state for field: _zPos
+   */
+  private boolean _has_zPos;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public Axis()
+  {
+    super();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   */
+  public void deleteXPos()
+  {
+    this._has_xPos = false;
+  }
+
+  /**
+   */
+  public void deleteYPos()
+  {
+    this._has_yPos = false;
+  }
+
+  /**
+   */
+  public void deleteZPos()
+  {
+    this._has_zPos = false;
+  }
+
+  /**
+   * Returns the value of field 'xPos'.
+   * 
+   * @return the value of field 'XPos'.
+   */
+  public float getXPos()
+  {
+    return this._xPos;
+  }
+
+  /**
+   * Returns the value of field 'yPos'.
+   * 
+   * @return the value of field 'YPos'.
+   */
+  public float getYPos()
+  {
+    return this._yPos;
+  }
+
+  /**
+   * Returns the value of field 'zPos'.
+   * 
+   * @return the value of field 'ZPos'.
+   */
+  public float getZPos()
+  {
+    return this._zPos;
+  }
+
+  /**
+   * 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;
+  }
+
+  /**
+   * Method hasZPos.
+   * 
+   * @return true if at least one ZPos has been added
+   */
+  public boolean hasZPos()
+  {
+    return this._has_zPos;
+  }
+
+  /**
+   * 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 'xPos'.
+   * 
+   * @param xPos
+   *          the value of field 'xPos'.
+   */
+  public void setXPos(final float 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 float yPos)
+  {
+    this._yPos = yPos;
+    this._has_yPos = true;
+  }
+
+  /**
+   * Sets the value of field 'zPos'.
+   * 
+   * @param zPos
+   *          the value of field 'zPos'.
+   */
+  public void setZPos(final float zPos)
+  {
+    this._zPos = zPos;
+    this._has_zPos = 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.schemabinding.version2.Axis
+   */
+  public static jalview.schemabinding.version2.Axis unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.Axis) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.Axis.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/DoubleMatrix.java b/src/jalview/schemabinding/version2/DoubleMatrix.java
new file mode 100644 (file)
index 0000000..ab21019
--- /dev/null
@@ -0,0 +1,388 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class DoubleMatrix.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class DoubleMatrix implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _rows.
+   */
+  private int _rows;
+
+  /**
+   * keeps track of state for field: _rows
+   */
+  private boolean _has_rows;
+
+  /**
+   * Field _columns.
+   */
+  private int _columns;
+
+  /**
+   * keeps track of state for field: _columns
+   */
+  private boolean _has_columns;
+
+  /**
+   * Field _rowList.
+   */
+  private java.util.Vector _rowList;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public DoubleMatrix()
+  {
+    super();
+    this._rowList = new java.util.Vector();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * 
+   * 
+   * @param vRow
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addRow(final jalview.schemabinding.version2.Row vRow)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._rowList.addElement(vRow);
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vRow
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addRow(final int index,
+          final jalview.schemabinding.version2.Row vRow)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._rowList.add(index, vRow);
+  }
+
+  /**
+   */
+  public void deleteColumns()
+  {
+    this._has_columns = false;
+  }
+
+  /**
+   */
+  public void deleteRows()
+  {
+    this._has_rows = false;
+  }
+
+  /**
+   * Method enumerateRow.
+   * 
+   * @return an Enumeration over all jalview.schemabinding.version2.Row elements
+   */
+  public java.util.Enumeration enumerateRow()
+  {
+    return this._rowList.elements();
+  }
+
+  /**
+   * Returns the value of field 'columns'.
+   * 
+   * @return the value of field 'Columns'.
+   */
+  public int getColumns()
+  {
+    return this._columns;
+  }
+
+  /**
+   * Method getRow.
+   * 
+   * @param index
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   * @return the value of the jalview.schemabinding.version2.Row at the given
+   *         index
+   */
+  public jalview.schemabinding.version2.Row getRow(final int index)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._rowList.size())
+    {
+      throw new IndexOutOfBoundsException("getRow: Index value '" + index
+              + "' not in range [0.." + (this._rowList.size() - 1) + "]");
+    }
+
+    return (jalview.schemabinding.version2.Row) _rowList.get(index);
+  }
+
+  /**
+   * Method getRow.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.schemabinding.version2.Row[] getRow()
+  {
+    jalview.schemabinding.version2.Row[] array = new jalview.schemabinding.version2.Row[0];
+    return (jalview.schemabinding.version2.Row[]) this._rowList
+            .toArray(array);
+  }
+
+  /**
+   * Method getRowCount.
+   * 
+   * @return the size of this collection
+   */
+  public int getRowCount()
+  {
+    return this._rowList.size();
+  }
+
+  /**
+   * Returns the value of field 'rows'.
+   * 
+   * @return the value of field 'Rows'.
+   */
+  public int getRows()
+  {
+    return this._rows;
+  }
+
+  /**
+   * Method hasColumns.
+   * 
+   * @return true if at least one Columns has been added
+   */
+  public boolean hasColumns()
+  {
+    return this._has_columns;
+  }
+
+  /**
+   * Method hasRows.
+   * 
+   * @return true if at least one Rows has been added
+   */
+  public boolean hasRows()
+  {
+    return this._has_rows;
+  }
+
+  /**
+   * 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 removeAllRow()
+  {
+    this._rowList.clear();
+  }
+
+  /**
+   * Method removeRow.
+   * 
+   * @param vRow
+   * @return true if the object was removed from the collection.
+   */
+  public boolean removeRow(final jalview.schemabinding.version2.Row vRow)
+  {
+    boolean removed = _rowList.remove(vRow);
+    return removed;
+  }
+
+  /**
+   * Method removeRowAt.
+   * 
+   * @param index
+   * @return the element removed from the collection
+   */
+  public jalview.schemabinding.version2.Row removeRowAt(final int index)
+  {
+    java.lang.Object obj = this._rowList.remove(index);
+    return (jalview.schemabinding.version2.Row) obj;
+  }
+
+  /**
+   * Sets the value of field 'columns'.
+   * 
+   * @param columns
+   *          the value of field 'columns'.
+   */
+  public void setColumns(final int columns)
+  {
+    this._columns = columns;
+    this._has_columns = true;
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vRow
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void setRow(final int index,
+          final jalview.schemabinding.version2.Row vRow)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._rowList.size())
+    {
+      throw new IndexOutOfBoundsException("setRow: Index value '" + index
+              + "' not in range [0.." + (this._rowList.size() - 1) + "]");
+    }
+
+    this._rowList.set(index, vRow);
+  }
+
+  /**
+   * 
+   * 
+   * @param vRowArray
+   */
+  public void setRow(final jalview.schemabinding.version2.Row[] vRowArray)
+  {
+    // -- copy array
+    _rowList.clear();
+
+    for (int i = 0; i < vRowArray.length; i++)
+    {
+      this._rowList.add(vRowArray[i]);
+    }
+  }
+
+  /**
+   * Sets the value of field 'rows'.
+   * 
+   * @param rows
+   *          the value of field 'rows'.
+   */
+  public void setRows(final int rows)
+  {
+    this._rows = rows;
+    this._has_rows = 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.schemabinding.version2.DoubleMatrix
+   */
+  public static jalview.schemabinding.version2.DoubleMatrix unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.DoubleMatrix) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.DoubleMatrix.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/DoubleVector.java b/src/jalview/schemabinding/version2/DoubleVector.java
new file mode 100644 (file)
index 0000000..75597ab
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class DoubleVector.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class DoubleVector implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _dList.
+   */
+  private java.util.Vector _dList;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public DoubleVector()
+  {
+    super();
+    this._dList = new java.util.Vector();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * 
+   * 
+   * @param vD
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addD(final double vD)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._dList.addElement(new java.lang.Double(vD));
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vD
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addD(final int index, final double vD)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._dList.add(index, new java.lang.Double(vD));
+  }
+
+  /**
+   * Method enumerateD.
+   * 
+   * @return an Enumeration over all double elements
+   */
+  public java.util.Enumeration enumerateD()
+  {
+    return this._dList.elements();
+  }
+
+  /**
+   * Method getD.
+   * 
+   * @param index
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   * @return the value of the double at the given index
+   */
+  public double getD(final int index)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._dList.size())
+    {
+      throw new IndexOutOfBoundsException("getD: Index value '" + index
+              + "' not in range [0.." + (this._dList.size() - 1) + "]");
+    }
+
+    return ((java.lang.Double) _dList.get(index)).doubleValue();
+  }
+
+  /**
+   * Method getD.Returns the contents of the collection in an Array.
+   * 
+   * @return this collection as an Array
+   */
+  public double[] getD()
+  {
+    int size = this._dList.size();
+    double[] array = new double[size];
+    java.util.Iterator iter = _dList.iterator();
+    for (int index = 0; index < size; index++)
+    {
+      array[index] = ((java.lang.Double) iter.next()).doubleValue();
+    }
+    return array;
+  }
+
+  /**
+   * Method getDCount.
+   * 
+   * @return the size of this collection
+   */
+  public int getDCount()
+  {
+    return this._dList.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 removeAllD()
+  {
+    this._dList.clear();
+  }
+
+  /**
+   * Method removeD.
+   * 
+   * @param vD
+   * @return true if the object was removed from the collection.
+   */
+  public boolean removeD(final double vD)
+  {
+    boolean removed = _dList.remove(new java.lang.Double(vD));
+    return removed;
+  }
+
+  /**
+   * Method removeDAt.
+   * 
+   * @param index
+   * @return the element removed from the collection
+   */
+  public double removeDAt(final int index)
+  {
+    java.lang.Object obj = this._dList.remove(index);
+    return ((java.lang.Double) obj).doubleValue();
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vD
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void setD(final int index, final double vD)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._dList.size())
+    {
+      throw new IndexOutOfBoundsException("setD: Index value '" + index
+              + "' not in range [0.." + (this._dList.size() - 1) + "]");
+    }
+
+    this._dList.set(index, new java.lang.Double(vD));
+  }
+
+  /**
+   * 
+   * 
+   * @param vDArray
+   */
+  public void setD(final double[] vDArray)
+  {
+    // -- copy array
+    _dList.clear();
+
+    for (int i = 0; i < vDArray.length; i++)
+    {
+      this._dList.add(new java.lang.Double(vDArray[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.schemabinding.version2.DoubleVector
+   */
+  public static jalview.schemabinding.version2.DoubleVector unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.DoubleVector) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.DoubleVector.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/EigenMatrix.java b/src/jalview/schemabinding/version2/EigenMatrix.java
new file mode 100644 (file)
index 0000000..b04a50c
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class EigenMatrix.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class EigenMatrix extends DoubleMatrix
+        implements java.io.Serializable
+{
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public EigenMatrix()
+  {
+    super();
+  }
+
+  // -----------/
+  // - 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;
+    }
+    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 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.schemabinding.version2.DoubleMatrix
+   */
+  public static jalview.schemabinding.version2.DoubleMatrix unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.DoubleMatrix) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.EigenMatrix.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/EigenMatrixD.java b/src/jalview/schemabinding/version2/EigenMatrixD.java
new file mode 100644 (file)
index 0000000..16d8729
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class EigenMatrixD.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class EigenMatrixD extends DoubleVector
+        implements java.io.Serializable
+{
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public EigenMatrixD()
+  {
+    super();
+  }
+
+  // -----------/
+  // - 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;
+    }
+    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 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.schemabinding.version2.DoubleVector
+   */
+  public static jalview.schemabinding.version2.DoubleVector unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.DoubleVector) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.EigenMatrixD.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/EigenMatrixE.java b/src/jalview/schemabinding/version2/EigenMatrixE.java
new file mode 100644 (file)
index 0000000..1086d85
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class EigenMatrixE.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class EigenMatrixE extends DoubleVector
+        implements java.io.Serializable
+{
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public EigenMatrixE()
+  {
+    super();
+  }
+
+  // -----------/
+  // - 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;
+    }
+    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 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.schemabinding.version2.DoubleVector
+   */
+  public static jalview.schemabinding.version2.DoubleVector unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.DoubleVector) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.EigenMatrixE.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 c7c02c5..932ba14 100644 (file)
@@ -52,6 +52,11 @@ public class JalviewModelSequence implements java.io.Serializable
   private java.util.Vector _treeList;
 
   /**
+   * Field _pcaViewerList.
+   */
+  private java.util.Vector _pcaViewerList;
+
+  /**
    * Field _featureSettings.
    */
   private jalview.schemabinding.version2.FeatureSettings _featureSettings;
@@ -68,6 +73,7 @@ public class JalviewModelSequence implements java.io.Serializable
     this._viewportList = new java.util.Vector();
     this._userColoursList = new java.util.Vector();
     this._treeList = new java.util.Vector();
+    this._pcaViewerList = new java.util.Vector();
   }
 
   // -----------/
@@ -133,6 +139,35 @@ public class JalviewModelSequence implements java.io.Serializable
   /**
    * 
    * 
+   * @param vPcaViewer
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addPcaViewer(
+          final jalview.schemabinding.version2.PcaViewer vPcaViewer)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._pcaViewerList.addElement(vPcaViewer);
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vPcaViewer
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addPcaViewer(final int index,
+          final jalview.schemabinding.version2.PcaViewer vPcaViewer)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._pcaViewerList.add(index, vPcaViewer);
+  }
+
+  /**
+   * 
+   * 
    * @param vTree
    * @throws java.lang.IndexOutOfBoundsException
    *           if the index given is outside the bounds of the collection
@@ -239,6 +274,17 @@ public class JalviewModelSequence implements java.io.Serializable
   }
 
   /**
+   * Method enumeratePcaViewer.
+   * 
+   * @return an Enumeration over all jalview.schemabinding.version2.PcaViewer
+   *         elements
+   */
+  public java.util.Enumeration enumeratePcaViewer()
+  {
+    return this._pcaViewerList.elements();
+  }
+
+  /**
    * Method enumerateTree.
    * 
    * @return an Enumeration over all jalview.schemabinding.version2.Tree
@@ -296,9 +342,9 @@ public class JalviewModelSequence implements java.io.Serializable
     // 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) + "]");
+      throw new IndexOutOfBoundsException(
+              "getJGroup: Index value '" + index + "' not in range [0.."
+                      + (this._JGroupList.size() - 1) + "]");
     }
 
     return (jalview.schemabinding.version2.JGroup) _JGroupList.get(index);
@@ -379,6 +425,56 @@ public class JalviewModelSequence implements java.io.Serializable
   }
 
   /**
+   * Method getPcaViewer.
+   * 
+   * @param index
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   * @return the value of the jalview.schemabinding.version2.PcaViewer at the
+   *         given index
+   */
+  public jalview.schemabinding.version2.PcaViewer getPcaViewer(
+          final int index) throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._pcaViewerList.size())
+    {
+      throw new IndexOutOfBoundsException(
+              "getPcaViewer: Index value '" + index + "' not in range [0.."
+                      + (this._pcaViewerList.size() - 1) + "]");
+    }
+
+    return (jalview.schemabinding.version2.PcaViewer) _pcaViewerList
+            .get(index);
+  }
+
+  /**
+   * Method getPcaViewer.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.schemabinding.version2.PcaViewer[] getPcaViewer()
+  {
+    jalview.schemabinding.version2.PcaViewer[] array = new jalview.schemabinding.version2.PcaViewer[0];
+    return (jalview.schemabinding.version2.PcaViewer[]) this._pcaViewerList
+            .toArray(array);
+  }
+
+  /**
+   * Method getPcaViewerCount.
+   * 
+   * @return the size of this collection
+   */
+  public int getPcaViewerCount()
+  {
+    return this._pcaViewerList.size();
+  }
+
+  /**
    * Method getTree.
    * 
    * @param index
@@ -485,15 +581,15 @@ public class JalviewModelSequence implements java.io.Serializable
    * @return the value of the jalview.schemabinding.version2.Viewport at the
    *         given index
    */
-  public jalview.schemabinding.version2.Viewport getViewport(final int index)
-          throws java.lang.IndexOutOfBoundsException
+  public jalview.schemabinding.version2.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) + "]");
+      throw new IndexOutOfBoundsException(
+              "getViewport: Index value '" + index + "' not in range [0.."
+                      + (this._viewportList.size() - 1) + "]");
     }
 
     return (jalview.schemabinding.version2.Viewport) _viewportList
@@ -581,35 +677,42 @@ public class JalviewModelSequence implements java.io.Serializable
   }
 
   /**
-     */
+   */
   public void removeAllJGroup()
   {
     this._JGroupList.clear();
   }
 
   /**
-     */
+   */
   public void removeAllJSeq()
   {
     this._JSeqList.clear();
   }
 
   /**
-     */
+   */
+  public void removeAllPcaViewer()
+  {
+    this._pcaViewerList.clear();
+  }
+
+  /**
+   */
   public void removeAllTree()
   {
     this._treeList.clear();
   }
 
   /**
-     */
+   */
   public void removeAllUserColours()
   {
     this._userColoursList.clear();
   }
 
   /**
-     */
+   */
   public void removeAllViewport()
   {
     this._viewportList.clear();
@@ -666,6 +769,32 @@ public class JalviewModelSequence implements java.io.Serializable
   }
 
   /**
+   * Method removePcaViewer.
+   * 
+   * @param vPcaViewer
+   * @return true if the object was removed from the collection.
+   */
+  public boolean removePcaViewer(
+          final jalview.schemabinding.version2.PcaViewer vPcaViewer)
+  {
+    boolean removed = _pcaViewerList.remove(vPcaViewer);
+    return removed;
+  }
+
+  /**
+   * Method removePcaViewerAt.
+   * 
+   * @param index
+   * @return the element removed from the collection
+   */
+  public jalview.schemabinding.version2.PcaViewer removePcaViewerAt(
+          final int index)
+  {
+    java.lang.Object obj = this._pcaViewerList.remove(index);
+    return (jalview.schemabinding.version2.PcaViewer) obj;
+  }
+
+  /**
    * Method removeTree.
    * 
    * @param vTree
@@ -768,9 +897,9 @@ public class JalviewModelSequence implements java.io.Serializable
     // 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) + "]");
+      throw new IndexOutOfBoundsException(
+              "setJGroup: Index value '" + index + "' not in range [0.."
+                      + (this._JGroupList.size() - 1) + "]");
     }
 
     this._JGroupList.set(index, vJGroup);
@@ -820,7 +949,8 @@ public class JalviewModelSequence implements java.io.Serializable
    * 
    * @param vJSeqArray
    */
-  public void setJSeq(final jalview.schemabinding.version2.JSeq[] vJSeqArray)
+  public void setJSeq(
+          final jalview.schemabinding.version2.JSeq[] vJSeqArray)
   {
     // -- copy array
     _JSeqList.clear();
@@ -835,6 +965,46 @@ public class JalviewModelSequence implements java.io.Serializable
    * 
    * 
    * @param index
+   * @param vPcaViewer
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void setPcaViewer(final int index,
+          final jalview.schemabinding.version2.PcaViewer vPcaViewer)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._pcaViewerList.size())
+    {
+      throw new IndexOutOfBoundsException(
+              "setPcaViewer: Index value '" + index + "' not in range [0.."
+                      + (this._pcaViewerList.size() - 1) + "]");
+    }
+
+    this._pcaViewerList.set(index, vPcaViewer);
+  }
+
+  /**
+   * 
+   * 
+   * @param vPcaViewerArray
+   */
+  public void setPcaViewer(
+          final jalview.schemabinding.version2.PcaViewer[] vPcaViewerArray)
+  {
+    // -- copy array
+    _pcaViewerList.clear();
+
+    for (int i = 0; i < vPcaViewerArray.length; i++)
+    {
+      this._pcaViewerList.add(vPcaViewerArray[i]);
+    }
+  }
+
+  /**
+   * 
+   * 
+   * @param index
    * @param vTree
    * @throws java.lang.IndexOutOfBoundsException
    *           if the index given is outside the bounds of the collection
@@ -858,7 +1028,8 @@ public class JalviewModelSequence implements java.io.Serializable
    * 
    * @param vTreeArray
    */
-  public void setTree(final jalview.schemabinding.version2.Tree[] vTreeArray)
+  public void setTree(
+          final jalview.schemabinding.version2.Tree[] vTreeArray)
   {
     // -- copy array
     _treeList.clear();
@@ -924,9 +1095,9 @@ public class JalviewModelSequence implements java.io.Serializable
     // 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) + "]");
+      throw new IndexOutOfBoundsException(
+              "setViewport: Index value '" + index + "' not in range [0.."
+                      + (this._viewportList.size() - 1) + "]");
     }
 
     this._viewportList.set(index, vViewport);
diff --git a/src/jalview/schemabinding/version2/PairwiseMatrix.java b/src/jalview/schemabinding/version2/PairwiseMatrix.java
new file mode 100644 (file)
index 0000000..3906111
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class PairwiseMatrix.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PairwiseMatrix extends DoubleMatrix
+        implements java.io.Serializable
+{
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PairwiseMatrix()
+  {
+    super();
+  }
+
+  // -----------/
+  // - 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;
+    }
+    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 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.schemabinding.version2.DoubleMatrix
+   */
+  public static jalview.schemabinding.version2.DoubleMatrix unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.DoubleMatrix) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.PairwiseMatrix.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/PcaData.java b/src/jalview/schemabinding/version2/PcaData.java
new file mode 100644 (file)
index 0000000..dfce269
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class PcaData.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PcaData extends PcaDataType implements java.io.Serializable
+{
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PcaData()
+  {
+    super();
+  }
+
+  // -----------/
+  // - 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;
+    }
+    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 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.schemabinding.version2.PcaDataType
+   */
+  public static jalview.schemabinding.version2.PcaDataType unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.PcaDataType) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.PcaData.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/PcaDataType.java b/src/jalview/schemabinding/version2/PcaDataType.java
new file mode 100644 (file)
index 0000000..0335b44
--- /dev/null
@@ -0,0 +1,269 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * The results of a PCA calculation
+ * 
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PcaDataType implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * The text report of the calculation
+   * 
+   */
+  private java.lang.String _details;
+
+  /**
+   * Field _pairwiseMatrix.
+   */
+  private jalview.schemabinding.version2.PairwiseMatrix _pairwiseMatrix;
+
+  /**
+   * Field _eigenMatrix.
+   */
+  private jalview.schemabinding.version2.EigenMatrix _eigenMatrix;
+
+  /**
+   * Field _eigenMatrixD.
+   */
+  private jalview.schemabinding.version2.EigenMatrixD _eigenMatrixD;
+
+  /**
+   * Field _eigenMatrixE.
+   */
+  private jalview.schemabinding.version2.EigenMatrixE _eigenMatrixE;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PcaDataType()
+  {
+    super();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Returns the value of field 'details'. The field 'details' has the following
+   * description: The text report of the calculation
+   * 
+   * 
+   * @return the value of field 'Details'.
+   */
+  public java.lang.String getDetails()
+  {
+    return this._details;
+  }
+
+  /**
+   * Returns the value of field 'eigenMatrix'.
+   * 
+   * @return the value of field 'EigenMatrix'.
+   */
+  public jalview.schemabinding.version2.EigenMatrix getEigenMatrix()
+  {
+    return this._eigenMatrix;
+  }
+
+  /**
+   * Returns the value of field 'eigenMatrixD'.
+   * 
+   * @return the value of field 'EigenMatrixD'.
+   */
+  public jalview.schemabinding.version2.EigenMatrixD getEigenMatrixD()
+  {
+    return this._eigenMatrixD;
+  }
+
+  /**
+   * Returns the value of field 'eigenMatrixE'.
+   * 
+   * @return the value of field 'EigenMatrixE'.
+   */
+  public jalview.schemabinding.version2.EigenMatrixE getEigenMatrixE()
+  {
+    return this._eigenMatrixE;
+  }
+
+  /**
+   * Returns the value of field 'pairwiseMatrix'.
+   * 
+   * @return the value of field 'PairwiseMatrix'.
+   */
+  public jalview.schemabinding.version2.PairwiseMatrix getPairwiseMatrix()
+  {
+    return this._pairwiseMatrix;
+  }
+
+  /**
+   * 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 'details'. The field 'details' has the following
+   * description: The text report of the calculation
+   * 
+   * 
+   * @param details
+   *          the value of field 'details'.
+   */
+  public void setDetails(final java.lang.String details)
+  {
+    this._details = details;
+  }
+
+  /**
+   * Sets the value of field 'eigenMatrix'.
+   * 
+   * @param eigenMatrix
+   *          the value of field 'eigenMatrix'.
+   */
+  public void setEigenMatrix(
+          final jalview.schemabinding.version2.EigenMatrix eigenMatrix)
+  {
+    this._eigenMatrix = eigenMatrix;
+  }
+
+  /**
+   * Sets the value of field 'eigenMatrixD'.
+   * 
+   * @param eigenMatrixD
+   *          the value of field 'eigenMatrixD'.
+   */
+  public void setEigenMatrixD(
+          final jalview.schemabinding.version2.EigenMatrixD eigenMatrixD)
+  {
+    this._eigenMatrixD = eigenMatrixD;
+  }
+
+  /**
+   * Sets the value of field 'eigenMatrixE'.
+   * 
+   * @param eigenMatrixE
+   *          the value of field 'eigenMatrixE'.
+   */
+  public void setEigenMatrixE(
+          final jalview.schemabinding.version2.EigenMatrixE eigenMatrixE)
+  {
+    this._eigenMatrixE = eigenMatrixE;
+  }
+
+  /**
+   * Sets the value of field 'pairwiseMatrix'.
+   * 
+   * @param pairwiseMatrix
+   *          the value of field 'pairwiseMatrix'.
+   */
+  public void setPairwiseMatrix(
+          final jalview.schemabinding.version2.PairwiseMatrix pairwiseMatrix)
+  {
+    this._pairwiseMatrix = pairwiseMatrix;
+  }
+
+  /**
+   * 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.schemabinding.version2.PcaDataType
+   */
+  public static jalview.schemabinding.version2.PcaDataType unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.PcaDataType) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.PcaDataType.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/PcaViewer.java b/src/jalview/schemabinding/version2/PcaViewer.java
new file mode 100644 (file)
index 0000000..3fce2d5
--- /dev/null
@@ -0,0 +1,1403 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class PcaViewer.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PcaViewer implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _title.
+   */
+  private java.lang.String _title;
+
+  /**
+   * Field _scoreModelName.
+   */
+  private java.lang.String _scoreModelName;
+
+  /**
+   * Field _xDim.
+   */
+  private int _xDim;
+
+  /**
+   * keeps track of state for field: _xDim
+   */
+  private boolean _has_xDim;
+
+  /**
+   * Field _yDim.
+   */
+  private int _yDim;
+
+  /**
+   * keeps track of state for field: _yDim
+   */
+  private boolean _has_yDim;
+
+  /**
+   * Field _zDim.
+   */
+  private int _zDim;
+
+  /**
+   * keeps track of state for field: _zDim
+   */
+  private boolean _has_zDim;
+
+  /**
+   * Field _bgColour.
+   */
+  private int _bgColour;
+
+  /**
+   * keeps track of state for field: _bgColour
+   */
+  private boolean _has_bgColour;
+
+  /**
+   * Field _scaleFactor.
+   */
+  private float _scaleFactor;
+
+  /**
+   * keeps track of state for field: _scaleFactor
+   */
+  private boolean _has_scaleFactor;
+
+  /**
+   * Field _showLabels.
+   */
+  private boolean _showLabels;
+
+  /**
+   * keeps track of state for field: _showLabels
+   */
+  private boolean _has_showLabels;
+
+  /**
+   * Field _linkToAllViews.
+   */
+  private boolean _linkToAllViews;
+
+  /**
+   * keeps track of state for field: _linkToAllViews
+   */
+  private boolean _has_linkToAllViews;
+
+  /**
+   * Field _includeGaps.
+   */
+  private boolean _includeGaps;
+
+  /**
+   * keeps track of state for field: _includeGaps
+   */
+  private boolean _has_includeGaps;
+
+  /**
+   * Field _matchGaps.
+   */
+  private boolean _matchGaps;
+
+  /**
+   * keeps track of state for field: _matchGaps
+   */
+  private boolean _has_matchGaps;
+
+  /**
+   * Field _includeGappedColumns.
+   */
+  private boolean _includeGappedColumns;
+
+  /**
+   * keeps track of state for field: _includeGappedColumns
+   */
+  private boolean _has_includeGappedColumns;
+
+  /**
+   * Field _denominateByShortestLength.
+   */
+  private boolean _denominateByShortestLength;
+
+  /**
+   * keeps track of state for field: _denominateByShortestLength
+   */
+  private boolean _has_denominateByShortestLength;
+
+  /**
+   * 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 _sequencePointList.
+   */
+  private java.util.Vector _sequencePointList;
+
+  /**
+   * endpoints of X, Y and Z axes in that order
+   * 
+   */
+  private java.util.Vector _axisList;
+
+  /**
+   * Field _seqPointMin.
+   */
+  private jalview.schemabinding.version2.SeqPointMin _seqPointMin;
+
+  /**
+   * Field _seqPointMax.
+   */
+  private jalview.schemabinding.version2.SeqPointMax _seqPointMax;
+
+  /**
+   * Field _pcaData.
+   */
+  private jalview.schemabinding.version2.PcaData _pcaData;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PcaViewer()
+  {
+    super();
+    this._sequencePointList = new java.util.Vector();
+    this._axisList = new java.util.Vector();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * 
+   * 
+   * @param vAxis
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addAxis(final jalview.schemabinding.version2.Axis vAxis)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check for the maximum size
+    if (this._axisList.size() >= 3)
+    {
+      throw new IndexOutOfBoundsException("addAxis has a maximum of 3");
+    }
+
+    this._axisList.addElement(vAxis);
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vAxis
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addAxis(final int index,
+          final jalview.schemabinding.version2.Axis vAxis)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check for the maximum size
+    if (this._axisList.size() >= 3)
+    {
+      throw new IndexOutOfBoundsException("addAxis has a maximum of 3");
+    }
+
+    this._axisList.add(index, vAxis);
+  }
+
+  /**
+   * 
+   * 
+   * @param vSequencePoint
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addSequencePoint(
+          final jalview.schemabinding.version2.SequencePoint vSequencePoint)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._sequencePointList.addElement(vSequencePoint);
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vSequencePoint
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addSequencePoint(final int index,
+          final jalview.schemabinding.version2.SequencePoint vSequencePoint)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    this._sequencePointList.add(index, vSequencePoint);
+  }
+
+  /**
+   */
+  public void deleteBgColour()
+  {
+    this._has_bgColour = false;
+  }
+
+  /**
+   */
+  public void deleteDenominateByShortestLength()
+  {
+    this._has_denominateByShortestLength = false;
+  }
+
+  /**
+   */
+  public void deleteHeight()
+  {
+    this._has_height = false;
+  }
+
+  /**
+   */
+  public void deleteIncludeGappedColumns()
+  {
+    this._has_includeGappedColumns = false;
+  }
+
+  /**
+   */
+  public void deleteIncludeGaps()
+  {
+    this._has_includeGaps = false;
+  }
+
+  /**
+   */
+  public void deleteLinkToAllViews()
+  {
+    this._has_linkToAllViews = false;
+  }
+
+  /**
+   */
+  public void deleteMatchGaps()
+  {
+    this._has_matchGaps = false;
+  }
+
+  /**
+   */
+  public void deleteScaleFactor()
+  {
+    this._has_scaleFactor = false;
+  }
+
+  /**
+   */
+  public void deleteShowLabels()
+  {
+    this._has_showLabels = false;
+  }
+
+  /**
+   */
+  public void deleteWidth()
+  {
+    this._has_width = false;
+  }
+
+  /**
+   */
+  public void deleteXDim()
+  {
+    this._has_xDim = false;
+  }
+
+  /**
+   */
+  public void deleteXpos()
+  {
+    this._has_xpos = false;
+  }
+
+  /**
+   */
+  public void deleteYDim()
+  {
+    this._has_yDim = false;
+  }
+
+  /**
+   */
+  public void deleteYpos()
+  {
+    this._has_ypos = false;
+  }
+
+  /**
+   */
+  public void deleteZDim()
+  {
+    this._has_zDim = false;
+  }
+
+  /**
+   * Method enumerateAxis.
+   * 
+   * @return an Enumeration over all jalview.schemabinding.version2.Axis
+   *         elements
+   */
+  public java.util.Enumeration enumerateAxis()
+  {
+    return this._axisList.elements();
+  }
+
+  /**
+   * Method enumerateSequencePoint.
+   * 
+   * @return an Enumeration over all
+   *         jalview.schemabinding.version2.SequencePoint elements
+   */
+  public java.util.Enumeration enumerateSequencePoint()
+  {
+    return this._sequencePointList.elements();
+  }
+
+  /**
+   * Method getAxis.
+   * 
+   * @param index
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   * @return the value of the jalview.schemabinding.version2.Axis at the given
+   *         index
+   */
+  public jalview.schemabinding.version2.Axis getAxis(final int index)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._axisList.size())
+    {
+      throw new IndexOutOfBoundsException("getAxis: Index value '" + index
+              + "' not in range [0.." + (this._axisList.size() - 1) + "]");
+    }
+
+    return (jalview.schemabinding.version2.Axis) _axisList.get(index);
+  }
+
+  /**
+   * Method getAxis.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.schemabinding.version2.Axis[] getAxis()
+  {
+    jalview.schemabinding.version2.Axis[] array = new jalview.schemabinding.version2.Axis[0];
+    return (jalview.schemabinding.version2.Axis[]) this._axisList
+            .toArray(array);
+  }
+
+  /**
+   * Method getAxisCount.
+   * 
+   * @return the size of this collection
+   */
+  public int getAxisCount()
+  {
+    return this._axisList.size();
+  }
+
+  /**
+   * Returns the value of field 'bgColour'.
+   * 
+   * @return the value of field 'BgColour'.
+   */
+  public int getBgColour()
+  {
+    return this._bgColour;
+  }
+
+  /**
+   * Returns the value of field 'denominateByShortestLength'.
+   * 
+   * @return the value of field 'DenominateByShortestLength'.
+   */
+  public boolean getDenominateByShortestLength()
+  {
+    return this._denominateByShortestLength;
+  }
+
+  /**
+   * Returns the value of field 'height'.
+   * 
+   * @return the value of field 'Height'.
+   */
+  public int getHeight()
+  {
+    return this._height;
+  }
+
+  /**
+   * Returns the value of field 'includeGappedColumns'.
+   * 
+   * @return the value of field 'IncludeGappedColumns'.
+   */
+  public boolean getIncludeGappedColumns()
+  {
+    return this._includeGappedColumns;
+  }
+
+  /**
+   * Returns the value of field 'includeGaps'.
+   * 
+   * @return the value of field 'IncludeGaps'.
+   */
+  public boolean getIncludeGaps()
+  {
+    return this._includeGaps;
+  }
+
+  /**
+   * Returns the value of field 'linkToAllViews'.
+   * 
+   * @return the value of field 'LinkToAllViews'.
+   */
+  public boolean getLinkToAllViews()
+  {
+    return this._linkToAllViews;
+  }
+
+  /**
+   * Returns the value of field 'matchGaps'.
+   * 
+   * @return the value of field 'MatchGaps'.
+   */
+  public boolean getMatchGaps()
+  {
+    return this._matchGaps;
+  }
+
+  /**
+   * Returns the value of field 'pcaData'.
+   * 
+   * @return the value of field 'PcaData'.
+   */
+  public jalview.schemabinding.version2.PcaData getPcaData()
+  {
+    return this._pcaData;
+  }
+
+  /**
+   * Returns the value of field 'scaleFactor'.
+   * 
+   * @return the value of field 'ScaleFactor'.
+   */
+  public float getScaleFactor()
+  {
+    return this._scaleFactor;
+  }
+
+  /**
+   * Returns the value of field 'scoreModelName'.
+   * 
+   * @return the value of field 'ScoreModelName'.
+   */
+  public java.lang.String getScoreModelName()
+  {
+    return this._scoreModelName;
+  }
+
+  /**
+   * Returns the value of field 'seqPointMax'.
+   * 
+   * @return the value of field 'SeqPointMax'.
+   */
+  public jalview.schemabinding.version2.SeqPointMax getSeqPointMax()
+  {
+    return this._seqPointMax;
+  }
+
+  /**
+   * Returns the value of field 'seqPointMin'.
+   * 
+   * @return the value of field 'SeqPointMin'.
+   */
+  public jalview.schemabinding.version2.SeqPointMin getSeqPointMin()
+  {
+    return this._seqPointMin;
+  }
+
+  /**
+   * Method getSequencePoint.
+   * 
+   * @param index
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   * @return the value of the jalview.schemabinding.version2.SequencePoint at
+   *         the given index
+   */
+  public jalview.schemabinding.version2.SequencePoint getSequencePoint(
+          final int index) throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._sequencePointList.size())
+    {
+      throw new IndexOutOfBoundsException("getSequencePoint: Index value '"
+              + index + "' not in range [0.."
+              + (this._sequencePointList.size() - 1) + "]");
+    }
+
+    return (jalview.schemabinding.version2.SequencePoint) _sequencePointList
+            .get(index);
+  }
+
+  /**
+   * Method getSequencePoint.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.schemabinding.version2.SequencePoint[] getSequencePoint()
+  {
+    jalview.schemabinding.version2.SequencePoint[] array = new jalview.schemabinding.version2.SequencePoint[0];
+    return (jalview.schemabinding.version2.SequencePoint[]) this._sequencePointList
+            .toArray(array);
+  }
+
+  /**
+   * Method getSequencePointCount.
+   * 
+   * @return the size of this collection
+   */
+  public int getSequencePointCount()
+  {
+    return this._sequencePointList.size();
+  }
+
+  /**
+   * Returns the value of field 'showLabels'.
+   * 
+   * @return the value of field 'ShowLabels'.
+   */
+  public boolean getShowLabels()
+  {
+    return this._showLabels;
+  }
+
+  /**
+   * 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 'xDim'.
+   * 
+   * @return the value of field 'XDim'.
+   */
+  public int getXDim()
+  {
+    return this._xDim;
+  }
+
+  /**
+   * Returns the value of field 'xpos'.
+   * 
+   * @return the value of field 'Xpos'.
+   */
+  public int getXpos()
+  {
+    return this._xpos;
+  }
+
+  /**
+   * Returns the value of field 'yDim'.
+   * 
+   * @return the value of field 'YDim'.
+   */
+  public int getYDim()
+  {
+    return this._yDim;
+  }
+
+  /**
+   * Returns the value of field 'ypos'.
+   * 
+   * @return the value of field 'Ypos'.
+   */
+  public int getYpos()
+  {
+    return this._ypos;
+  }
+
+  /**
+   * Returns the value of field 'zDim'.
+   * 
+   * @return the value of field 'ZDim'.
+   */
+  public int getZDim()
+  {
+    return this._zDim;
+  }
+
+  /**
+   * Method hasBgColour.
+   * 
+   * @return true if at least one BgColour has been added
+   */
+  public boolean hasBgColour()
+  {
+    return this._has_bgColour;
+  }
+
+  /**
+   * Method hasDenominateByShortestLength.
+   * 
+   * @return true if at least one DenominateByShortestLength has been added
+   */
+  public boolean hasDenominateByShortestLength()
+  {
+    return this._has_denominateByShortestLength;
+  }
+
+  /**
+   * Method hasHeight.
+   * 
+   * @return true if at least one Height has been added
+   */
+  public boolean hasHeight()
+  {
+    return this._has_height;
+  }
+
+  /**
+   * Method hasIncludeGappedColumns.
+   * 
+   * @return true if at least one IncludeGappedColumns has been added
+   */
+  public boolean hasIncludeGappedColumns()
+  {
+    return this._has_includeGappedColumns;
+  }
+
+  /**
+   * Method hasIncludeGaps.
+   * 
+   * @return true if at least one IncludeGaps has been added
+   */
+  public boolean hasIncludeGaps()
+  {
+    return this._has_includeGaps;
+  }
+
+  /**
+   * Method hasLinkToAllViews.
+   * 
+   * @return true if at least one LinkToAllViews has been added
+   */
+  public boolean hasLinkToAllViews()
+  {
+    return this._has_linkToAllViews;
+  }
+
+  /**
+   * Method hasMatchGaps.
+   * 
+   * @return true if at least one MatchGaps has been added
+   */
+  public boolean hasMatchGaps()
+  {
+    return this._has_matchGaps;
+  }
+
+  /**
+   * Method hasScaleFactor.
+   * 
+   * @return true if at least one ScaleFactor has been added
+   */
+  public boolean hasScaleFactor()
+  {
+    return this._has_scaleFactor;
+  }
+
+  /**
+   * Method hasShowLabels.
+   * 
+   * @return true if at least one ShowLabels has been added
+   */
+  public boolean hasShowLabels()
+  {
+    return this._has_showLabels;
+  }
+
+  /**
+   * Method hasWidth.
+   * 
+   * @return true if at least one Width has been added
+   */
+  public boolean hasWidth()
+  {
+    return this._has_width;
+  }
+
+  /**
+   * Method hasXDim.
+   * 
+   * @return true if at least one XDim has been added
+   */
+  public boolean hasXDim()
+  {
+    return this._has_xDim;
+  }
+
+  /**
+   * Method hasXpos.
+   * 
+   * @return true if at least one Xpos has been added
+   */
+  public boolean hasXpos()
+  {
+    return this._has_xpos;
+  }
+
+  /**
+   * Method hasYDim.
+   * 
+   * @return true if at least one YDim has been added
+   */
+  public boolean hasYDim()
+  {
+    return this._has_yDim;
+  }
+
+  /**
+   * Method hasYpos.
+   * 
+   * @return true if at least one Ypos has been added
+   */
+  public boolean hasYpos()
+  {
+    return this._has_ypos;
+  }
+
+  /**
+   * Method hasZDim.
+   * 
+   * @return true if at least one ZDim has been added
+   */
+  public boolean hasZDim()
+  {
+    return this._has_zDim;
+  }
+
+  /**
+   * Returns the value of field 'denominateByShortestLength'.
+   * 
+   * @return the value of field 'DenominateByShortestLength'.
+   */
+  public boolean isDenominateByShortestLength()
+  {
+    return this._denominateByShortestLength;
+  }
+
+  /**
+   * Returns the value of field 'includeGappedColumns'.
+   * 
+   * @return the value of field 'IncludeGappedColumns'.
+   */
+  public boolean isIncludeGappedColumns()
+  {
+    return this._includeGappedColumns;
+  }
+
+  /**
+   * Returns the value of field 'includeGaps'.
+   * 
+   * @return the value of field 'IncludeGaps'.
+   */
+  public boolean isIncludeGaps()
+  {
+    return this._includeGaps;
+  }
+
+  /**
+   * Returns the value of field 'linkToAllViews'.
+   * 
+   * @return the value of field 'LinkToAllViews'.
+   */
+  public boolean isLinkToAllViews()
+  {
+    return this._linkToAllViews;
+  }
+
+  /**
+   * Returns the value of field 'matchGaps'.
+   * 
+   * @return the value of field 'MatchGaps'.
+   */
+  public boolean isMatchGaps()
+  {
+    return this._matchGaps;
+  }
+
+  /**
+   * Returns the value of field 'showLabels'.
+   * 
+   * @return the value of field 'ShowLabels'.
+   */
+  public boolean isShowLabels()
+  {
+    return this._showLabels;
+  }
+
+  /**
+   * 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 removeAllAxis()
+  {
+    this._axisList.clear();
+  }
+
+  /**
+   */
+  public void removeAllSequencePoint()
+  {
+    this._sequencePointList.clear();
+  }
+
+  /**
+   * Method removeAxis.
+   * 
+   * @param vAxis
+   * @return true if the object was removed from the collection.
+   */
+  public boolean removeAxis(final jalview.schemabinding.version2.Axis vAxis)
+  {
+    boolean removed = _axisList.remove(vAxis);
+    return removed;
+  }
+
+  /**
+   * Method removeAxisAt.
+   * 
+   * @param index
+   * @return the element removed from the collection
+   */
+  public jalview.schemabinding.version2.Axis removeAxisAt(final int index)
+  {
+    java.lang.Object obj = this._axisList.remove(index);
+    return (jalview.schemabinding.version2.Axis) obj;
+  }
+
+  /**
+   * Method removeSequencePoint.
+   * 
+   * @param vSequencePoint
+   * @return true if the object was removed from the collection.
+   */
+  public boolean removeSequencePoint(
+          final jalview.schemabinding.version2.SequencePoint vSequencePoint)
+  {
+    boolean removed = _sequencePointList.remove(vSequencePoint);
+    return removed;
+  }
+
+  /**
+   * Method removeSequencePointAt.
+   * 
+   * @param index
+   * @return the element removed from the collection
+   */
+  public jalview.schemabinding.version2.SequencePoint removeSequencePointAt(
+          final int index)
+  {
+    java.lang.Object obj = this._sequencePointList.remove(index);
+    return (jalview.schemabinding.version2.SequencePoint) obj;
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vAxis
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void setAxis(final int index,
+          final jalview.schemabinding.version2.Axis vAxis)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._axisList.size())
+    {
+      throw new IndexOutOfBoundsException("setAxis: Index value '" + index
+              + "' not in range [0.." + (this._axisList.size() - 1) + "]");
+    }
+
+    this._axisList.set(index, vAxis);
+  }
+
+  /**
+   * 
+   * 
+   * @param vAxisArray
+   */
+  public void setAxis(
+          final jalview.schemabinding.version2.Axis[] vAxisArray)
+  {
+    // -- copy array
+    _axisList.clear();
+
+    for (int i = 0; i < vAxisArray.length; i++)
+    {
+      this._axisList.add(vAxisArray[i]);
+    }
+  }
+
+  /**
+   * Sets the value of field 'bgColour'.
+   * 
+   * @param bgColour
+   *          the value of field 'bgColour'.
+   */
+  public void setBgColour(final int bgColour)
+  {
+    this._bgColour = bgColour;
+    this._has_bgColour = true;
+  }
+
+  /**
+   * Sets the value of field 'denominateByShortestLength'.
+   * 
+   * @param denominateByShortestLength
+   *          the value of field 'denominateByShortestLength'.
+   */
+  public void setDenominateByShortestLength(
+          final boolean denominateByShortestLength)
+  {
+    this._denominateByShortestLength = denominateByShortestLength;
+    this._has_denominateByShortestLength = 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 'includeGappedColumns'.
+   * 
+   * @param includeGappedColumns
+   *          the value of field 'includeGappedColumns'.
+   */
+  public void setIncludeGappedColumns(final boolean includeGappedColumns)
+  {
+    this._includeGappedColumns = includeGappedColumns;
+    this._has_includeGappedColumns = true;
+  }
+
+  /**
+   * Sets the value of field 'includeGaps'.
+   * 
+   * @param includeGaps
+   *          the value of field 'includeGaps'.
+   */
+  public void setIncludeGaps(final boolean includeGaps)
+  {
+    this._includeGaps = includeGaps;
+    this._has_includeGaps = true;
+  }
+
+  /**
+   * Sets the value of field 'linkToAllViews'.
+   * 
+   * @param linkToAllViews
+   *          the value of field 'linkToAllViews'.
+   */
+  public void setLinkToAllViews(final boolean linkToAllViews)
+  {
+    this._linkToAllViews = linkToAllViews;
+    this._has_linkToAllViews = true;
+  }
+
+  /**
+   * Sets the value of field 'matchGaps'.
+   * 
+   * @param matchGaps
+   *          the value of field 'matchGaps'.
+   */
+  public void setMatchGaps(final boolean matchGaps)
+  {
+    this._matchGaps = matchGaps;
+    this._has_matchGaps = true;
+  }
+
+  /**
+   * Sets the value of field 'pcaData'.
+   * 
+   * @param pcaData
+   *          the value of field 'pcaData'.
+   */
+  public void setPcaData(
+          final jalview.schemabinding.version2.PcaData pcaData)
+  {
+    this._pcaData = pcaData;
+  }
+
+  /**
+   * Sets the value of field 'scaleFactor'.
+   * 
+   * @param scaleFactor
+   *          the value of field 'scaleFactor'.
+   */
+  public void setScaleFactor(final float scaleFactor)
+  {
+    this._scaleFactor = scaleFactor;
+    this._has_scaleFactor = true;
+  }
+
+  /**
+   * Sets the value of field 'scoreModelName'.
+   * 
+   * @param scoreModelName
+   *          the value of field 'scoreModelName'.
+   */
+  public void setScoreModelName(final java.lang.String scoreModelName)
+  {
+    this._scoreModelName = scoreModelName;
+  }
+
+  /**
+   * Sets the value of field 'seqPointMax'.
+   * 
+   * @param seqPointMax
+   *          the value of field 'seqPointMax'.
+   */
+  public void setSeqPointMax(
+          final jalview.schemabinding.version2.SeqPointMax seqPointMax)
+  {
+    this._seqPointMax = seqPointMax;
+  }
+
+  /**
+   * Sets the value of field 'seqPointMin'.
+   * 
+   * @param seqPointMin
+   *          the value of field 'seqPointMin'.
+   */
+  public void setSeqPointMin(
+          final jalview.schemabinding.version2.SeqPointMin seqPointMin)
+  {
+    this._seqPointMin = seqPointMin;
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vSequencePoint
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void setSequencePoint(final int index,
+          final jalview.schemabinding.version2.SequencePoint vSequencePoint)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._sequencePointList.size())
+    {
+      throw new IndexOutOfBoundsException("setSequencePoint: Index value '"
+              + index + "' not in range [0.."
+              + (this._sequencePointList.size() - 1) + "]");
+    }
+
+    this._sequencePointList.set(index, vSequencePoint);
+  }
+
+  /**
+   * 
+   * 
+   * @param vSequencePointArray
+   */
+  public void setSequencePoint(
+          final jalview.schemabinding.version2.SequencePoint[] vSequencePointArray)
+  {
+    // -- copy array
+    _sequencePointList.clear();
+
+    for (int i = 0; i < vSequencePointArray.length; i++)
+    {
+      this._sequencePointList.add(vSequencePointArray[i]);
+    }
+  }
+
+  /**
+   * Sets the value of field 'showLabels'.
+   * 
+   * @param showLabels
+   *          the value of field 'showLabels'.
+   */
+  public void setShowLabels(final boolean showLabels)
+  {
+    this._showLabels = showLabels;
+    this._has_showLabels = 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 'xDim'.
+   * 
+   * @param xDim
+   *          the value of field 'xDim'.
+   */
+  public void setXDim(final int xDim)
+  {
+    this._xDim = xDim;
+    this._has_xDim = 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 'yDim'.
+   * 
+   * @param yDim
+   *          the value of field 'yDim'.
+   */
+  public void setYDim(final int yDim)
+  {
+    this._yDim = yDim;
+    this._has_yDim = 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;
+  }
+
+  /**
+   * Sets the value of field 'zDim'.
+   * 
+   * @param zDim
+   *          the value of field 'zDim'.
+   */
+  public void setZDim(final int zDim)
+  {
+    this._zDim = zDim;
+    this._has_zDim = 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.schemabinding.version2.PcaViewer
+   */
+  public static jalview.schemabinding.version2.PcaViewer unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.PcaViewer) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.PcaViewer.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/Row.java b/src/jalview/schemabinding/version2/Row.java
new file mode 100644 (file)
index 0000000..d351d1d
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class Row.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class Row extends DoubleVector implements java.io.Serializable
+{
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public Row()
+  {
+    super();
+  }
+
+  // -----------/
+  // - 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;
+    }
+    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 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.schemabinding.version2.DoubleVector
+   */
+  public static jalview.schemabinding.version2.DoubleVector unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.DoubleVector) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.Row.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/SeqPointMax.java b/src/jalview/schemabinding/version2/SeqPointMax.java
new file mode 100644 (file)
index 0000000..3ca78a2
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class SeqPointMax.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class SeqPointMax implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _xPos.
+   */
+  private float _xPos;
+
+  /**
+   * keeps track of state for field: _xPos
+   */
+  private boolean _has_xPos;
+
+  /**
+   * Field _yPos.
+   */
+  private float _yPos;
+
+  /**
+   * keeps track of state for field: _yPos
+   */
+  private boolean _has_yPos;
+
+  /**
+   * Field _zPos.
+   */
+  private float _zPos;
+
+  /**
+   * keeps track of state for field: _zPos
+   */
+  private boolean _has_zPos;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public SeqPointMax()
+  {
+    super();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   */
+  public void deleteXPos()
+  {
+    this._has_xPos = false;
+  }
+
+  /**
+   */
+  public void deleteYPos()
+  {
+    this._has_yPos = false;
+  }
+
+  /**
+   */
+  public void deleteZPos()
+  {
+    this._has_zPos = false;
+  }
+
+  /**
+   * Returns the value of field 'xPos'.
+   * 
+   * @return the value of field 'XPos'.
+   */
+  public float getXPos()
+  {
+    return this._xPos;
+  }
+
+  /**
+   * Returns the value of field 'yPos'.
+   * 
+   * @return the value of field 'YPos'.
+   */
+  public float getYPos()
+  {
+    return this._yPos;
+  }
+
+  /**
+   * Returns the value of field 'zPos'.
+   * 
+   * @return the value of field 'ZPos'.
+   */
+  public float getZPos()
+  {
+    return this._zPos;
+  }
+
+  /**
+   * 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;
+  }
+
+  /**
+   * Method hasZPos.
+   * 
+   * @return true if at least one ZPos has been added
+   */
+  public boolean hasZPos()
+  {
+    return this._has_zPos;
+  }
+
+  /**
+   * 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 'xPos'.
+   * 
+   * @param xPos
+   *          the value of field 'xPos'.
+   */
+  public void setXPos(final float 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 float yPos)
+  {
+    this._yPos = yPos;
+    this._has_yPos = true;
+  }
+
+  /**
+   * Sets the value of field 'zPos'.
+   * 
+   * @param zPos
+   *          the value of field 'zPos'.
+   */
+  public void setZPos(final float zPos)
+  {
+    this._zPos = zPos;
+    this._has_zPos = 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.schemabinding.version2.SeqPointMax
+   */
+  public static jalview.schemabinding.version2.SeqPointMax unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.SeqPointMax) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.SeqPointMax.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/SeqPointMin.java b/src/jalview/schemabinding/version2/SeqPointMin.java
new file mode 100644 (file)
index 0000000..4ce9fab
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class SeqPointMin.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class SeqPointMin implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _xPos.
+   */
+  private float _xPos;
+
+  /**
+   * keeps track of state for field: _xPos
+   */
+  private boolean _has_xPos;
+
+  /**
+   * Field _yPos.
+   */
+  private float _yPos;
+
+  /**
+   * keeps track of state for field: _yPos
+   */
+  private boolean _has_yPos;
+
+  /**
+   * Field _zPos.
+   */
+  private float _zPos;
+
+  /**
+   * keeps track of state for field: _zPos
+   */
+  private boolean _has_zPos;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public SeqPointMin()
+  {
+    super();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   */
+  public void deleteXPos()
+  {
+    this._has_xPos = false;
+  }
+
+  /**
+   */
+  public void deleteYPos()
+  {
+    this._has_yPos = false;
+  }
+
+  /**
+   */
+  public void deleteZPos()
+  {
+    this._has_zPos = false;
+  }
+
+  /**
+   * Returns the value of field 'xPos'.
+   * 
+   * @return the value of field 'XPos'.
+   */
+  public float getXPos()
+  {
+    return this._xPos;
+  }
+
+  /**
+   * Returns the value of field 'yPos'.
+   * 
+   * @return the value of field 'YPos'.
+   */
+  public float getYPos()
+  {
+    return this._yPos;
+  }
+
+  /**
+   * Returns the value of field 'zPos'.
+   * 
+   * @return the value of field 'ZPos'.
+   */
+  public float getZPos()
+  {
+    return this._zPos;
+  }
+
+  /**
+   * 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;
+  }
+
+  /**
+   * Method hasZPos.
+   * 
+   * @return true if at least one ZPos has been added
+   */
+  public boolean hasZPos()
+  {
+    return this._has_zPos;
+  }
+
+  /**
+   * 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 'xPos'.
+   * 
+   * @param xPos
+   *          the value of field 'xPos'.
+   */
+  public void setXPos(final float 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 float yPos)
+  {
+    this._yPos = yPos;
+    this._has_yPos = true;
+  }
+
+  /**
+   * Sets the value of field 'zPos'.
+   * 
+   * @param zPos
+   *          the value of field 'zPos'.
+   */
+  public void setZPos(final float zPos)
+  {
+    this._zPos = zPos;
+    this._has_zPos = 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.schemabinding.version2.SeqPointMin
+   */
+  public static jalview.schemabinding.version2.SeqPointMin unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.SeqPointMin) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.SeqPointMin.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/SequencePoint.java b/src/jalview/schemabinding/version2/SequencePoint.java
new file mode 100644 (file)
index 0000000..191c4dd
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import org.exolab.castor.xml.Marshaller;
+import org.exolab.castor.xml.Unmarshaller;
+
+/**
+ * Class SequencePoint.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class SequencePoint implements java.io.Serializable
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _sequenceRef.
+   */
+  private java.lang.String _sequenceRef;
+
+  /**
+   * Field _xPos.
+   */
+  private float _xPos;
+
+  /**
+   * keeps track of state for field: _xPos
+   */
+  private boolean _has_xPos;
+
+  /**
+   * Field _yPos.
+   */
+  private float _yPos;
+
+  /**
+   * keeps track of state for field: _yPos
+   */
+  private boolean _has_yPos;
+
+  /**
+   * Field _zPos.
+   */
+  private float _zPos;
+
+  /**
+   * keeps track of state for field: _zPos
+   */
+  private boolean _has_zPos;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public SequencePoint()
+  {
+    super();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   */
+  public void deleteXPos()
+  {
+    this._has_xPos = false;
+  }
+
+  /**
+   */
+  public void deleteYPos()
+  {
+    this._has_yPos = false;
+  }
+
+  /**
+   */
+  public void deleteZPos()
+  {
+    this._has_zPos = false;
+  }
+
+  /**
+   * Returns the value of field 'sequenceRef'.
+   * 
+   * @return the value of field 'SequenceRef'.
+   */
+  public java.lang.String getSequenceRef()
+  {
+    return this._sequenceRef;
+  }
+
+  /**
+   * Returns the value of field 'xPos'.
+   * 
+   * @return the value of field 'XPos'.
+   */
+  public float getXPos()
+  {
+    return this._xPos;
+  }
+
+  /**
+   * Returns the value of field 'yPos'.
+   * 
+   * @return the value of field 'YPos'.
+   */
+  public float getYPos()
+  {
+    return this._yPos;
+  }
+
+  /**
+   * Returns the value of field 'zPos'.
+   * 
+   * @return the value of field 'ZPos'.
+   */
+  public float getZPos()
+  {
+    return this._zPos;
+  }
+
+  /**
+   * 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;
+  }
+
+  /**
+   * Method hasZPos.
+   * 
+   * @return true if at least one ZPos has been added
+   */
+  public boolean hasZPos()
+  {
+    return this._has_zPos;
+  }
+
+  /**
+   * 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 'sequenceRef'.
+   * 
+   * @param sequenceRef
+   *          the value of field 'sequenceRef'.
+   */
+  public void setSequenceRef(final java.lang.String sequenceRef)
+  {
+    this._sequenceRef = sequenceRef;
+  }
+
+  /**
+   * Sets the value of field 'xPos'.
+   * 
+   * @param xPos
+   *          the value of field 'xPos'.
+   */
+  public void setXPos(final float 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 float yPos)
+  {
+    this._yPos = yPos;
+    this._has_yPos = true;
+  }
+
+  /**
+   * Sets the value of field 'zPos'.
+   * 
+   * @param zPos
+   *          the value of field 'zPos'.
+   */
+  public void setZPos(final float zPos)
+  {
+    this._zPos = zPos;
+    this._has_zPos = 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.schemabinding.version2.SequencePoint
+   */
+  public static jalview.schemabinding.version2.SequencePoint unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.schemabinding.version2.SequencePoint) Unmarshaller
+            .unmarshal(jalview.schemabinding.version2.SequencePoint.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);
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/AxisDescriptor.java b/src/jalview/schemabinding/version2/descriptors/AxisDescriptor.java
new file mode 100644 (file)
index 0000000..16444be
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.Axis;
+
+/**
+ * Class AxisDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class AxisDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public AxisDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "axis";
+    _elementDefinition = true;
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- _xPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_xPos", "xPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        Axis target = (Axis) object;
+        if (!target.hasXPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getXPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          Axis target = (Axis) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteXPos();
+            return;
+          }
+          target.setXPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _xPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _yPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_yPos", "yPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        Axis target = (Axis) object;
+        if (!target.hasYPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getYPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          Axis target = (Axis) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteYPos();
+            return;
+          }
+          target.setYPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _yPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _zPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_zPos", "zPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        Axis target = (Axis) object;
+        if (!target.hasZPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getZPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          Axis target = (Axis) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteZPos();
+            return;
+          }
+          target.setZPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _zPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- initialize element descriptors
+
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.Axis.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/DoubleMatrixDescriptor.java b/src/jalview/schemabinding/version2/descriptors/DoubleMatrixDescriptor.java
new file mode 100644 (file)
index 0000000..79245bc
--- /dev/null
@@ -0,0 +1,322 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.DoubleMatrix;
+
+/**
+ * Class DoubleMatrixDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class DoubleMatrixDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public DoubleMatrixDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "DoubleMatrix";
+    _elementDefinition = false;
+
+    // -- set grouping compositor
+    setCompositorAsSequence();
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- _rows
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_rows", "rows",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        DoubleMatrix target = (DoubleMatrix) object;
+        if (!target.hasRows())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getRows());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          DoubleMatrix target = (DoubleMatrix) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteRows();
+            return;
+          }
+          target.setRows(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _rows
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _columns
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_columns", "columns",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        DoubleMatrix target = (DoubleMatrix) object;
+        if (!target.hasColumns())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getColumns());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          DoubleMatrix target = (DoubleMatrix) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteColumns();
+            return;
+          }
+          target.setColumns(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _columns
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- initialize element descriptors
+
+    // -- _rowList
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.Row.class, "_rowList", "row",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        DoubleMatrix target = (DoubleMatrix) object;
+        return target.getRow();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          DoubleMatrix target = (DoubleMatrix) object;
+          target.addRow((jalview.schemabinding.version2.Row) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          DoubleMatrix target = (DoubleMatrix) object;
+          target.removeAllRow();
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.Row();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setMultivalued(true);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _rowList
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(0);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.DoubleMatrix.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/DoubleVectorDescriptor.java b/src/jalview/schemabinding/version2/descriptors/DoubleVectorDescriptor.java
new file mode 100644 (file)
index 0000000..3d8c315
--- /dev/null
@@ -0,0 +1,223 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.DoubleVector;
+
+/**
+ * Class DoubleVectorDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class DoubleVectorDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public DoubleVectorDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "DoubleVector";
+    _elementDefinition = false;
+
+    // -- set grouping compositor
+    setCompositorAsSequence();
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- initialize element descriptors
+
+    // -- _dList
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Double.TYPE, "_dList", "d",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        DoubleVector target = (DoubleVector) object;
+        return target.getD();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          DoubleVector target = (DoubleVector) object;
+          // ignore null values for non optional primitives
+          if (value == null)
+          {
+            return;
+          }
+
+          target.addD(((java.lang.Double) value).doubleValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          DoubleVector target = (DoubleVector) object;
+          target.removeAllD();
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setMultivalued(true);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _dList
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(0);
+    { // -- local scope
+      org.exolab.castor.xml.validators.DoubleValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.DoubleValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-1.7976931348623157E308);
+      typeValidator.setMaxInclusive(1.7976931348623157E308);
+    }
+    desc.setValidator(fieldValidator);
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.DoubleVector.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/EigenMatrixDDescriptor.java b/src/jalview/schemabinding/version2/descriptors/EigenMatrixDDescriptor.java
new file mode 100644 (file)
index 0000000..b9ca070
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.EigenMatrixD;
+
+/**
+ * Class EigenMatrixDDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class EigenMatrixDDescriptor extends
+        jalview.schemabinding.version2.descriptors.DoubleVectorDescriptor
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public EigenMatrixDDescriptor()
+  {
+    super();
+    setExtendsWithoutFlatten(
+            new jalview.schemabinding.version2.descriptors.DoubleVectorDescriptor());
+    _nsURI = "www.jalview.org";
+    _xmlName = "eigenMatrixD";
+    _elementDefinition = true;
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.EigenMatrixD.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/EigenMatrixDescriptor.java b/src/jalview/schemabinding/version2/descriptors/EigenMatrixDescriptor.java
new file mode 100644 (file)
index 0000000..92e2414
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.EigenMatrix;
+
+/**
+ * Class EigenMatrixDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class EigenMatrixDescriptor extends
+        jalview.schemabinding.version2.descriptors.DoubleMatrixDescriptor
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public EigenMatrixDescriptor()
+  {
+    super();
+    setExtendsWithoutFlatten(
+            new jalview.schemabinding.version2.descriptors.DoubleMatrixDescriptor());
+    _nsURI = "www.jalview.org";
+    _xmlName = "eigenMatrix";
+    _elementDefinition = true;
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.EigenMatrix.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/EigenMatrixEDescriptor.java b/src/jalview/schemabinding/version2/descriptors/EigenMatrixEDescriptor.java
new file mode 100644 (file)
index 0000000..25e7fea
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.EigenMatrixE;
+
+/**
+ * Class EigenMatrixEDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class EigenMatrixEDescriptor extends
+        jalview.schemabinding.version2.descriptors.DoubleVectorDescriptor
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public EigenMatrixEDescriptor()
+  {
+    super();
+    setExtendsWithoutFlatten(
+            new jalview.schemabinding.version2.descriptors.DoubleVectorDescriptor());
+    _nsURI = "www.jalview.org";
+    _xmlName = "eigenMatrixE";
+    _elementDefinition = true;
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.EigenMatrixE.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
index e8c4ef4..af40425 100644 (file)
@@ -18,8 +18,8 @@ import jalview.schemabinding.version2.JalviewModelSequence;
  * 
  * @version $Revision$ $Date$
  */
-public class JalviewModelSequenceDescriptor extends
-        org.exolab.castor.xml.util.XMLClassDescriptorImpl
+public class JalviewModelSequenceDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
 {
 
   // --------------------------/
@@ -91,8 +91,8 @@ public class JalviewModelSequenceDescriptor extends
         }
       }
 
-      public void resetValue(Object object) throws IllegalStateException,
-              IllegalArgumentException
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
       {
         try
         {
@@ -146,8 +146,8 @@ public class JalviewModelSequenceDescriptor extends
         }
       }
 
-      public void resetValue(Object object) throws IllegalStateException,
-              IllegalArgumentException
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
       {
         try
         {
@@ -194,15 +194,16 @@ public class JalviewModelSequenceDescriptor extends
         try
         {
           JalviewModelSequence target = (JalviewModelSequence) object;
-          target.addViewport((jalview.schemabinding.version2.Viewport) value);
+          target.addViewport(
+                  (jalview.schemabinding.version2.Viewport) value);
         } catch (java.lang.Exception ex)
         {
           throw new IllegalStateException(ex.toString());
         }
       }
 
-      public void resetValue(Object object) throws IllegalStateException,
-              IllegalArgumentException
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
       {
         try
         {
@@ -250,15 +251,16 @@ public class JalviewModelSequenceDescriptor extends
         try
         {
           JalviewModelSequence target = (JalviewModelSequence) object;
-          target.addUserColours((jalview.schemabinding.version2.UserColours) value);
+          target.addUserColours(
+                  (jalview.schemabinding.version2.UserColours) value);
         } catch (java.lang.Exception ex)
         {
           throw new IllegalStateException(ex.toString());
         }
       }
 
-      public void resetValue(Object object) throws IllegalStateException,
-              IllegalArgumentException
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
       {
         try
         {
@@ -312,8 +314,8 @@ public class JalviewModelSequenceDescriptor extends
         }
       }
 
-      public void resetValue(Object object) throws IllegalStateException,
-              IllegalArgumentException
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
       {
         try
         {
@@ -341,6 +343,63 @@ public class JalviewModelSequenceDescriptor extends
     { // -- local scope
     }
     desc.setValidator(fieldValidator);
+    // -- _pcaViewerList
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.PcaViewer.class,
+            "_pcaViewerList", "PcaViewer",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        JalviewModelSequence target = (JalviewModelSequence) object;
+        return target.getPcaViewer();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          JalviewModelSequence target = (JalviewModelSequence) object;
+          target.addPcaViewer(
+                  (jalview.schemabinding.version2.PcaViewer) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          JalviewModelSequence target = (JalviewModelSequence) object;
+          target.removeAllPcaViewer();
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.PcaViewer();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setMultivalued(true);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _pcaViewerList
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(0);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
     // -- _featureSettings
     desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
             jalview.schemabinding.version2.FeatureSettings.class,
@@ -361,7 +420,8 @@ public class JalviewModelSequenceDescriptor extends
         try
         {
           JalviewModelSequence target = (JalviewModelSequence) object;
-          target.setFeatureSettings((jalview.schemabinding.version2.FeatureSettings) value);
+          target.setFeatureSettings(
+                  (jalview.schemabinding.version2.FeatureSettings) value);
         } catch (java.lang.Exception ex)
         {
           throw new IllegalStateException(ex.toString());
diff --git a/src/jalview/schemabinding/version2/descriptors/PairwiseMatrixDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PairwiseMatrixDescriptor.java
new file mode 100644 (file)
index 0000000..9520f58
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.PairwiseMatrix;
+
+/**
+ * Class PairwiseMatrixDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PairwiseMatrixDescriptor extends
+        jalview.schemabinding.version2.descriptors.DoubleMatrixDescriptor
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PairwiseMatrixDescriptor()
+  {
+    super();
+    setExtendsWithoutFlatten(
+            new jalview.schemabinding.version2.descriptors.DoubleMatrixDescriptor());
+    _nsURI = "www.jalview.org";
+    _xmlName = "pairwiseMatrix";
+    _elementDefinition = true;
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.PairwiseMatrix.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/PcaDataDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PcaDataDescriptor.java
new file mode 100644 (file)
index 0000000..29b551c
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.PcaData;
+
+/**
+ * Class PcaDataDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PcaDataDescriptor extends
+        jalview.schemabinding.version2.descriptors.PcaDataTypeDescriptor
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PcaDataDescriptor()
+  {
+    super();
+    setExtendsWithoutFlatten(
+            new jalview.schemabinding.version2.descriptors.PcaDataTypeDescriptor());
+    _nsURI = "www.jalview.org";
+    _xmlName = "pcaData";
+    _elementDefinition = true;
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.PcaData.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/PcaDataTypeDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PcaDataTypeDescriptor.java
new file mode 100644 (file)
index 0000000..6508ee2
--- /dev/null
@@ -0,0 +1,385 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.PcaDataType;
+
+/**
+ * Class PcaDataTypeDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PcaDataTypeDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PcaDataTypeDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "PcaDataType";
+    _elementDefinition = false;
+
+    // -- set grouping compositor
+    setCompositorAsSequence();
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- initialize element descriptors
+
+    // -- _details
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.String.class, "_details", "details",
+            org.exolab.castor.xml.NodeType.Element);
+    desc.setImmutable(true);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaDataType target = (PcaDataType) object;
+        return target.getDetails();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaDataType target = (PcaDataType) object;
+          target.setDetails((java.lang.String) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _details
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+      org.exolab.castor.xml.validators.StringValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.StringValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setWhiteSpace("preserve");
+    }
+    desc.setValidator(fieldValidator);
+    // -- _pairwiseMatrix
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.PairwiseMatrix.class,
+            "_pairwiseMatrix", "pairwiseMatrix",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaDataType target = (PcaDataType) object;
+        return target.getPairwiseMatrix();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaDataType target = (PcaDataType) object;
+          target.setPairwiseMatrix(
+                  (jalview.schemabinding.version2.PairwiseMatrix) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.PairwiseMatrix();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _pairwiseMatrix
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+    // -- _eigenMatrix
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.EigenMatrix.class,
+            "_eigenMatrix", "eigenMatrix",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaDataType target = (PcaDataType) object;
+        return target.getEigenMatrix();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaDataType target = (PcaDataType) object;
+          target.setEigenMatrix(
+                  (jalview.schemabinding.version2.EigenMatrix) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.EigenMatrix();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _eigenMatrix
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+    // -- _eigenMatrixD
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.EigenMatrixD.class,
+            "_eigenMatrixD", "eigenMatrixD",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaDataType target = (PcaDataType) object;
+        return target.getEigenMatrixD();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaDataType target = (PcaDataType) object;
+          target.setEigenMatrixD(
+                  (jalview.schemabinding.version2.EigenMatrixD) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.EigenMatrixD();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _eigenMatrixD
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+    // -- _eigenMatrixE
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.EigenMatrixE.class,
+            "_eigenMatrixE", "eigenMatrixE",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaDataType target = (PcaDataType) object;
+        return target.getEigenMatrixE();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaDataType target = (PcaDataType) object;
+          target.setEigenMatrixE(
+                  (jalview.schemabinding.version2.EigenMatrixE) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.EigenMatrixE();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _eigenMatrixE
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.PcaDataType.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/PcaViewerDescriptor.java b/src/jalview/schemabinding/version2/descriptors/PcaViewerDescriptor.java
new file mode 100644 (file)
index 0000000..630ae9a
--- /dev/null
@@ -0,0 +1,1320 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.PcaViewer;
+
+/**
+ * Class PcaViewerDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class PcaViewerDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public PcaViewerDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "PcaViewer";
+    _elementDefinition = true;
+
+    // -- set grouping compositor
+    setCompositorAsSequence();
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- _title
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.String.class, "_title", "title",
+            org.exolab.castor.xml.NodeType.Attribute);
+    desc.setImmutable(true);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        return target.getTitle();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.setTitle((java.lang.String) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _title
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.StringValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.StringValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setWhiteSpace("preserve");
+    }
+    desc.setValidator(fieldValidator);
+    // -- _scoreModelName
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.String.class, "_scoreModelName", "scoreModelName",
+            org.exolab.castor.xml.NodeType.Attribute);
+    desc.setImmutable(true);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        return target.getScoreModelName();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.setScoreModelName((java.lang.String) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _scoreModelName
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.StringValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.StringValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setWhiteSpace("preserve");
+    }
+    desc.setValidator(fieldValidator);
+    // -- _xDim
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_xDim", "xDim",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasXDim())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getXDim());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteXDim();
+            return;
+          }
+          target.setXDim(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _xDim
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _yDim
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_yDim", "yDim",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasYDim())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getYDim());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteYDim();
+            return;
+          }
+          target.setYDim(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _yDim
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _zDim
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_zDim", "zDim",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasZDim())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getZDim());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteZDim();
+            return;
+          }
+          target.setZDim(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _zDim
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _bgColour
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_bgColour", "bgColour",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasBgColour())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getBgColour());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteBgColour();
+            return;
+          }
+          target.setBgColour(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _bgColour
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _scaleFactor
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_scaleFactor", "scaleFactor",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasScaleFactor())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getScaleFactor());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteScaleFactor();
+            return;
+          }
+          target.setScaleFactor(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _scaleFactor
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _showLabels
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Boolean.TYPE, "_showLabels", "showLabels",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasShowLabels())
+        {
+          return null;
+        }
+        return (target.getShowLabels() ? java.lang.Boolean.TRUE
+                : java.lang.Boolean.FALSE);
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteShowLabels();
+            return;
+          }
+          target.setShowLabels(((java.lang.Boolean) value).booleanValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _showLabels
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+      fieldValidator.setValidator(typeValidator);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _linkToAllViews
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Boolean.TYPE, "_linkToAllViews", "linkToAllViews",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasLinkToAllViews())
+        {
+          return null;
+        }
+        return (target.getLinkToAllViews() ? java.lang.Boolean.TRUE
+                : java.lang.Boolean.FALSE);
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteLinkToAllViews();
+            return;
+          }
+          target.setLinkToAllViews(
+                  ((java.lang.Boolean) value).booleanValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _linkToAllViews
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+      fieldValidator.setValidator(typeValidator);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _includeGaps
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Boolean.TYPE, "_includeGaps", "includeGaps",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasIncludeGaps())
+        {
+          return null;
+        }
+        return (target.getIncludeGaps() ? java.lang.Boolean.TRUE
+                : java.lang.Boolean.FALSE);
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteIncludeGaps();
+            return;
+          }
+          target.setIncludeGaps(((java.lang.Boolean) value).booleanValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _includeGaps
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+      fieldValidator.setValidator(typeValidator);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _matchGaps
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Boolean.TYPE, "_matchGaps", "matchGaps",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasMatchGaps())
+        {
+          return null;
+        }
+        return (target.getMatchGaps() ? java.lang.Boolean.TRUE
+                : java.lang.Boolean.FALSE);
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteMatchGaps();
+            return;
+          }
+          target.setMatchGaps(((java.lang.Boolean) value).booleanValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _matchGaps
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+      fieldValidator.setValidator(typeValidator);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _includeGappedColumns
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Boolean.TYPE, "_includeGappedColumns",
+            "includeGappedColumns",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasIncludeGappedColumns())
+        {
+          return null;
+        }
+        return (target.getIncludeGappedColumns() ? java.lang.Boolean.TRUE
+                : java.lang.Boolean.FALSE);
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteIncludeGappedColumns();
+            return;
+          }
+          target.setIncludeGappedColumns(
+                  ((java.lang.Boolean) value).booleanValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _includeGappedColumns
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+      fieldValidator.setValidator(typeValidator);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _denominateByShortestLength
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Boolean.TYPE, "_denominateByShortestLength",
+            "denominateByShortestLength",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasDenominateByShortestLength())
+        {
+          return null;
+        }
+        return (target.getDenominateByShortestLength()
+                ? java.lang.Boolean.TRUE
+                : java.lang.Boolean.FALSE);
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteDenominateByShortestLength();
+            return;
+          }
+          target.setDenominateByShortestLength(
+                  ((java.lang.Boolean) value).booleanValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _denominateByShortestLength
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.BooleanValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.BooleanValidator();
+      fieldValidator.setValidator(typeValidator);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _width
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_width", "width",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasWidth())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getWidth());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteWidth();
+            return;
+          }
+          target.setWidth(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _width
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _height
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_height", "height",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasHeight())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getHeight());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteHeight();
+            return;
+          }
+          target.setHeight(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _height
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _xpos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_xpos", "xpos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasXpos())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getXpos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteXpos();
+            return;
+          }
+          target.setXpos(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _xpos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _ypos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Integer.TYPE, "_ypos", "ypos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        if (!target.hasYpos())
+        {
+          return null;
+        }
+        return new java.lang.Integer(target.getYpos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteYpos();
+            return;
+          }
+          target.setYpos(((java.lang.Integer) value).intValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _ypos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.IntValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.IntValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive(-2147483648);
+      typeValidator.setMaxInclusive(2147483647);
+    }
+    desc.setValidator(fieldValidator);
+    // -- initialize element descriptors
+
+    // -- _sequencePointList
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.SequencePoint.class,
+            "_sequencePointList", "sequencePoint",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        return target.getSequencePoint();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.addSequencePoint(
+                  (jalview.schemabinding.version2.SequencePoint) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.removeAllSequencePoint();
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.SequencePoint();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(true);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _sequencePointList
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+    // -- _axisList
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.Axis.class, "_axisList", "axis",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        return target.getAxis();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.addAxis((jalview.schemabinding.version2.Axis) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public void resetValue(Object object)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.removeAllAxis();
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.Axis();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(true);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _axisList
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(3);
+    fieldValidator.setMaxOccurs(3);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+    // -- _seqPointMin
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.SeqPointMin.class,
+            "_seqPointMin", "seqPointMin",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        return target.getSeqPointMin();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.setSeqPointMin(
+                  (jalview.schemabinding.version2.SeqPointMin) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.SeqPointMin();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _seqPointMin
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+    // -- _seqPointMax
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.SeqPointMax.class,
+            "_seqPointMax", "seqPointMax",
+            org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        return target.getSeqPointMax();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.setSeqPointMax(
+                  (jalview.schemabinding.version2.SeqPointMax) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.SeqPointMax();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _seqPointMax
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+    // -- _pcaData
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            jalview.schemabinding.version2.PcaData.class, "_pcaData",
+            "pcaData", org.exolab.castor.xml.NodeType.Element);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        PcaViewer target = (PcaViewer) object;
+        return target.getPcaData();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          PcaViewer target = (PcaViewer) object;
+          target.setPcaData((jalview.schemabinding.version2.PcaData) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return new jalview.schemabinding.version2.PcaData();
+      }
+    };
+    desc.setHandler(handler);
+    desc.setNameSpaceURI("www.jalview.org");
+    desc.setRequired(true);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _pcaData
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    fieldValidator.setMinOccurs(1);
+    { // -- local scope
+    }
+    desc.setValidator(fieldValidator);
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.PcaViewer.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/RowDescriptor.java b/src/jalview/schemabinding/version2/descriptors/RowDescriptor.java
new file mode 100644 (file)
index 0000000..f9ca1a6
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.Row;
+
+/**
+ * Class RowDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class RowDescriptor extends
+        jalview.schemabinding.version2.descriptors.DoubleVectorDescriptor
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public RowDescriptor()
+  {
+    super();
+    setExtendsWithoutFlatten(
+            new jalview.schemabinding.version2.descriptors.DoubleVectorDescriptor());
+    _nsURI = "www.jalview.org";
+    _xmlName = "row";
+    _elementDefinition = true;
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.Row.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/SeqPointMaxDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SeqPointMaxDescriptor.java
new file mode 100644 (file)
index 0000000..18f0cb7
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.SeqPointMax;
+
+/**
+ * Class SeqPointMaxDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class SeqPointMaxDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public SeqPointMaxDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "seqPointMax";
+    _elementDefinition = true;
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- _xPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_xPos", "xPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SeqPointMax target = (SeqPointMax) object;
+        if (!target.hasXPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getXPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SeqPointMax target = (SeqPointMax) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteXPos();
+            return;
+          }
+          target.setXPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _xPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _yPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_yPos", "yPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SeqPointMax target = (SeqPointMax) object;
+        if (!target.hasYPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getYPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SeqPointMax target = (SeqPointMax) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteYPos();
+            return;
+          }
+          target.setYPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _yPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _zPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_zPos", "zPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SeqPointMax target = (SeqPointMax) object;
+        if (!target.hasZPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getZPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SeqPointMax target = (SeqPointMax) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteZPos();
+            return;
+          }
+          target.setZPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _zPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- initialize element descriptors
+
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.SeqPointMax.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/SeqPointMinDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SeqPointMinDescriptor.java
new file mode 100644 (file)
index 0000000..fbf978e
--- /dev/null
@@ -0,0 +1,319 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.SeqPointMin;
+
+/**
+ * Class SeqPointMinDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class SeqPointMinDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public SeqPointMinDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "seqPointMin";
+    _elementDefinition = true;
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- _xPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_xPos", "xPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SeqPointMin target = (SeqPointMin) object;
+        if (!target.hasXPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getXPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SeqPointMin target = (SeqPointMin) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteXPos();
+            return;
+          }
+          target.setXPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _xPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _yPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_yPos", "yPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SeqPointMin target = (SeqPointMin) object;
+        if (!target.hasYPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getYPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SeqPointMin target = (SeqPointMin) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteYPos();
+            return;
+          }
+          target.setYPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _yPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _zPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_zPos", "zPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SeqPointMin target = (SeqPointMin) object;
+        if (!target.hasZPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getZPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SeqPointMin target = (SeqPointMin) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteZPos();
+            return;
+          }
+          target.setZPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _zPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- initialize element descriptors
+
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.SeqPointMin.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}
diff --git a/src/jalview/schemabinding/version2/descriptors/SequencePointDescriptor.java b/src/jalview/schemabinding/version2/descriptors/SequencePointDescriptor.java
new file mode 100644 (file)
index 0000000..0d48052
--- /dev/null
@@ -0,0 +1,364 @@
+/*
+ * This class was automatically generated with 
+ * <a href="http://www.castor.org">Castor 1.1</a>, using an XML
+ * Schema.
+ * $Id$
+ */
+
+package jalview.schemabinding.version2.descriptors;
+
+//---------------------------------/
+//- Imported classes and packages -/
+//---------------------------------/
+
+import jalview.schemabinding.version2.SequencePoint;
+
+/**
+ * Class SequencePointDescriptor.
+ * 
+ * @version $Revision$ $Date$
+ */
+public class SequencePointDescriptor
+        extends org.exolab.castor.xml.util.XMLClassDescriptorImpl
+{
+
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
+
+  /**
+   * Field _elementDefinition.
+   */
+  private boolean _elementDefinition;
+
+  /**
+   * Field _nsPrefix.
+   */
+  private java.lang.String _nsPrefix;
+
+  /**
+   * Field _nsURI.
+   */
+  private java.lang.String _nsURI;
+
+  /**
+   * Field _xmlName.
+   */
+  private java.lang.String _xmlName;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public SequencePointDescriptor()
+  {
+    super();
+    _nsURI = "www.jalview.org";
+    _xmlName = "sequencePoint";
+    _elementDefinition = true;
+    org.exolab.castor.xml.util.XMLFieldDescriptorImpl desc = null;
+    org.exolab.castor.mapping.FieldHandler handler = null;
+    org.exolab.castor.xml.FieldValidator fieldValidator = null;
+    // -- initialize attribute descriptors
+
+    // -- _sequenceRef
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.String.class, "_sequenceRef", "sequenceRef",
+            org.exolab.castor.xml.NodeType.Attribute);
+    desc.setImmutable(true);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SequencePoint target = (SequencePoint) object;
+        return target.getSequenceRef();
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SequencePoint target = (SequencePoint) object;
+          target.setSequenceRef((java.lang.String) value);
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _sequenceRef
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.StringValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.StringValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setWhiteSpace("preserve");
+    }
+    desc.setValidator(fieldValidator);
+    // -- _xPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_xPos", "xPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SequencePoint target = (SequencePoint) object;
+        if (!target.hasXPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getXPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SequencePoint target = (SequencePoint) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteXPos();
+            return;
+          }
+          target.setXPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _xPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _yPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_yPos", "yPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SequencePoint target = (SequencePoint) object;
+        if (!target.hasYPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getYPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SequencePoint target = (SequencePoint) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteYPos();
+            return;
+          }
+          target.setYPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _yPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- _zPos
+    desc = new org.exolab.castor.xml.util.XMLFieldDescriptorImpl(
+            java.lang.Float.TYPE, "_zPos", "zPos",
+            org.exolab.castor.xml.NodeType.Attribute);
+    handler = new org.exolab.castor.xml.XMLFieldHandler()
+    {
+      public java.lang.Object getValue(java.lang.Object object)
+              throws IllegalStateException
+      {
+        SequencePoint target = (SequencePoint) object;
+        if (!target.hasZPos())
+        {
+          return null;
+        }
+        return new java.lang.Float(target.getZPos());
+      }
+
+      public void setValue(java.lang.Object object, java.lang.Object value)
+              throws IllegalStateException, IllegalArgumentException
+      {
+        try
+        {
+          SequencePoint target = (SequencePoint) object;
+          // if null, use delete method for optional primitives
+          if (value == null)
+          {
+            target.deleteZPos();
+            return;
+          }
+          target.setZPos(((java.lang.Float) value).floatValue());
+        } catch (java.lang.Exception ex)
+        {
+          throw new IllegalStateException(ex.toString());
+        }
+      }
+
+      public java.lang.Object newInstance(java.lang.Object parent)
+      {
+        return null;
+      }
+    };
+    desc.setHandler(handler);
+    desc.setMultivalued(false);
+    addFieldDescriptor(desc);
+
+    // -- validation code for: _zPos
+    fieldValidator = new org.exolab.castor.xml.FieldValidator();
+    { // -- local scope
+      org.exolab.castor.xml.validators.FloatValidator typeValidator;
+      typeValidator = new org.exolab.castor.xml.validators.FloatValidator();
+      fieldValidator.setValidator(typeValidator);
+      typeValidator.setMinInclusive((float) -3.4028235E38);
+      typeValidator.setMaxInclusive((float) 3.4028235E38);
+    }
+    desc.setValidator(fieldValidator);
+    // -- initialize element descriptors
+
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * Method getAccessMode.
+   * 
+   * @return the access mode specified for this class.
+   */
+  public org.exolab.castor.mapping.AccessMode getAccessMode()
+  {
+    return null;
+  }
+
+  /**
+   * Method getIdentity.
+   * 
+   * @return the identity field, null if this class has no identity.
+   */
+  public org.exolab.castor.mapping.FieldDescriptor getIdentity()
+  {
+    return super.getIdentity();
+  }
+
+  /**
+   * Method getJavaClass.
+   * 
+   * @return the Java class represented by this descriptor.
+   */
+  public java.lang.Class getJavaClass()
+  {
+    return jalview.schemabinding.version2.SequencePoint.class;
+  }
+
+  /**
+   * Method getNameSpacePrefix.
+   * 
+   * @return the namespace prefix to use when marshaling as XML.
+   */
+  public java.lang.String getNameSpacePrefix()
+  {
+    return _nsPrefix;
+  }
+
+  /**
+   * Method getNameSpaceURI.
+   * 
+   * @return the namespace URI used when marshaling and unmarshaling as XML.
+   */
+  public java.lang.String getNameSpaceURI()
+  {
+    return _nsURI;
+  }
+
+  /**
+   * Method getValidator.
+   * 
+   * @return a specific validator for the class described by this
+   *         ClassDescriptor.
+   */
+  public org.exolab.castor.xml.TypeValidator getValidator()
+  {
+    return this;
+  }
+
+  /**
+   * Method getXMLName.
+   * 
+   * @return the XML Name for the Class being described.
+   */
+  public java.lang.String getXMLName()
+  {
+    return _xmlName;
+  }
+
+  /**
+   * Method isElementDefinition.
+   * 
+   * @return true if XML schema definition of this Class is that of a global
+   *         element or element with anonymous type definition.
+   */
+  public boolean isElementDefinition()
+  {
+    return _elementDefinition;
+  }
+
+}