JAL-1793 update spike branch to latest
[jalview.git] / src / jalview / binding / Colour.java
old mode 100755 (executable)
new mode 100644 (file)
index 488ff98..f51e9af
@@ -7,8 +7,8 @@
 
 package jalview.binding;
 
-  //---------------------------------/
- //- Imported classes and packages -/
+//---------------------------------/
+//- Imported classes and packages -/
 //---------------------------------/
 
 import org.exolab.castor.xml.Marshaller;
@@ -19,151 +19,689 @@ import org.exolab.castor.xml.Unmarshaller;
  * 
  * @version $Revision$ $Date$
  */
-public class Colour implements java.io.Serializable {
+public class Colour implements java.io.Serializable
+{
 
+  // --------------------------/
+  // - Class/Member Variables -/
+  // --------------------------/
 
-      //--------------------------/
-     //- Class/Member Variables -/
-    //--------------------------/
+  /**
+   * Single letter residue code for an alignment colour scheme, or feature type
+   * for a feature colour scheme
+   */
+  private java.lang.String _name;
 
-    /**
-     * Field _name.
-     */
-    private java.lang.String _name;
+  /**
+   * Field _RGB.
+   */
+  private java.lang.String _RGB;
 
-    /**
-     * Field _RGB.
-     */
-    private java.lang.String _RGB;
+  /**
+   * Field _minRGB.
+   */
+  private java.lang.String _minRGB;
 
+  /**
+   * Field _noValueColour.
+   */
+  private jalview.binding.types.NoValueColour _noValueColour = jalview.binding.types.NoValueColour
+          .valueOf("Min");
 
-      //----------------/
-     //- Constructors -/
-    //----------------/
+  /**
+   * Field _threshType.
+   */
+  private jalview.binding.types.ColourThreshTypeType _threshType;
 
-    public Colour() {
-        super();
-    }
+  /**
+   * Field _threshold.
+   */
+  private float _threshold;
 
+  /**
+   * keeps track of state for field: _threshold
+   */
+  private boolean _has_threshold;
 
-      //-----------/
-     //- Methods -/
-    //-----------/
+  /**
+   * Field _max.
+   */
+  private float _max;
 
-    /**
-     * Returns the value of field 'name'.
-     * 
-     * @return the value of field 'Name'.
-     */
-    public java.lang.String getName(
-    ) {
-        return this._name;
-    }
+  /**
+   * keeps track of state for field: _max
+   */
+  private boolean _has_max;
 
-    /**
-     * Returns the value of field 'RGB'.
-     * 
-     * @return the value of field 'RGB'.
-     */
-    public java.lang.String getRGB(
-    ) {
-        return this._RGB;
-    }
+  /**
+   * Field _min.
+   */
+  private float _min;
 
-    /**
-     * 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;
-    }
+  /**
+   * keeps track of state for field: _min
+   */
+  private boolean _has_min;
+
+  /**
+   * Field _colourByLabel.
+   */
+  private boolean _colourByLabel;
+
+  /**
+   * keeps track of state for field: _colourByLabel
+   */
+  private boolean _has_colourByLabel;
+
+  /**
+   * Field _autoScale.
+   */
+  private boolean _autoScale;
 
-    /**
-     * 
-     * 
-     * @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);
+  /**
+   * keeps track of state for field: _autoScale
+   */
+  private boolean _has_autoScale;
+
+  /**
+   * name of feature attribute to colour by, or attribute and sub-attribute
+   */
+  private java.util.Vector _attributeNameList;
+
+  // ----------------/
+  // - Constructors -/
+  // ----------------/
+
+  public Colour()
+  {
+    super();
+    setNoValueColour(jalview.binding.types.NoValueColour.valueOf("Min"));
+    this._attributeNameList = new java.util.Vector();
+  }
+
+  // -----------/
+  // - Methods -/
+  // -----------/
+
+  /**
+   * 
+   * 
+   * @param vAttributeName
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addAttributeName(final java.lang.String vAttributeName)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check for the maximum size
+    if (this._attributeNameList.size() >= 2)
+    {
+      throw new IndexOutOfBoundsException(
+              "addAttributeName has a maximum of 2");
     }
 
-    /**
-     * 
-     * 
-     * @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);
+    this._attributeNameList.addElement(vAttributeName);
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vAttributeName
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void addAttributeName(final int index,
+          final java.lang.String vAttributeName)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check for the maximum size
+    if (this._attributeNameList.size() >= 2)
+    {
+      throw new IndexOutOfBoundsException(
+              "addAttributeName has a maximum of 2");
     }
 
-    /**
-     * Sets the value of field 'name'.
-     * 
-     * @param name the value of field 'name'.
-     */
-    public void setName(
-            final java.lang.String name) {
-        this._name = name;
+    this._attributeNameList.add(index, vAttributeName);
+  }
+
+  /**
+   */
+  public void deleteAutoScale()
+  {
+    this._has_autoScale = false;
+  }
+
+  /**
+   */
+  public void deleteColourByLabel()
+  {
+    this._has_colourByLabel = false;
+  }
+
+  /**
+   */
+  public void deleteMax()
+  {
+    this._has_max = false;
+  }
+
+  /**
+   */
+  public void deleteMin()
+  {
+    this._has_min = false;
+  }
+
+  /**
+   */
+  public void deleteThreshold()
+  {
+    this._has_threshold = false;
+  }
+
+  /**
+   * Method enumerateAttributeName.
+   * 
+   * @return an Enumeration over all java.lang.String elements
+   */
+  public java.util.Enumeration enumerateAttributeName()
+  {
+    return this._attributeNameList.elements();
+  }
+
+  /**
+   * Method getAttributeName.
+   * 
+   * @param index
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   * @return the value of the java.lang.String at the given index
+   */
+  public java.lang.String getAttributeName(final int index)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._attributeNameList.size())
+    {
+      throw new IndexOutOfBoundsException("getAttributeName: Index value '"
+              + index + "' not in range [0.."
+              + (this._attributeNameList.size() - 1) + "]");
     }
 
-    /**
-     * Sets the value of field 'RGB'.
-     * 
-     * @param RGB the value of field 'RGB'.
-     */
-    public void setRGB(
-            final java.lang.String RGB) {
-        this._RGB = RGB;
+    return (java.lang.String) _attributeNameList.get(index);
+  }
+
+  /**
+   * Method getAttributeName.Returns the contents of the collection in an Array.
+   * <p>
+   * Note: Just in case the collection contents are changing in another thread,
+   * we pass a 0-length Array of the correct type into the API call. This way we
+   * <i>know</i> that the Array returned is of exactly the correct length.
+   * 
+   * @return this collection as an Array
+   */
+  public java.lang.String[] getAttributeName()
+  {
+    java.lang.String[] array = new java.lang.String[0];
+    return (java.lang.String[]) this._attributeNameList.toArray(array);
+  }
+
+  /**
+   * Method getAttributeNameCount.
+   * 
+   * @return the size of this collection
+   */
+  public int getAttributeNameCount()
+  {
+    return this._attributeNameList.size();
+  }
+
+  /**
+   * Returns the value of field 'autoScale'.
+   * 
+   * @return the value of field 'AutoScale'.
+   */
+  public boolean getAutoScale()
+  {
+    return this._autoScale;
+  }
+
+  /**
+   * Returns the value of field 'colourByLabel'.
+   * 
+   * @return the value of field 'ColourByLabel'.
+   */
+  public boolean getColourByLabel()
+  {
+    return this._colourByLabel;
+  }
+
+  /**
+   * Returns the value of field 'max'.
+   * 
+   * @return the value of field 'Max'.
+   */
+  public float getMax()
+  {
+    return this._max;
+  }
+
+  /**
+   * Returns the value of field 'min'.
+   * 
+   * @return the value of field 'Min'.
+   */
+  public float getMin()
+  {
+    return this._min;
+  }
+
+  /**
+   * Returns the value of field 'minRGB'.
+   * 
+   * @return the value of field 'MinRGB'.
+   */
+  public java.lang.String getMinRGB()
+  {
+    return this._minRGB;
+  }
+
+  /**
+   * Returns the value of field 'name'. The field 'name' has the following
+   * description: Single letter residue code for an alignment colour scheme, or
+   * feature type for a feature colour scheme
+   * 
+   * @return the value of field 'Name'.
+   */
+  public java.lang.String getName()
+  {
+    return this._name;
+  }
+
+  /**
+   * Returns the value of field 'noValueColour'.
+   * 
+   * @return the value of field 'NoValueColour'.
+   */
+  public jalview.binding.types.NoValueColour getNoValueColour()
+  {
+    return this._noValueColour;
+  }
+
+  /**
+   * Returns the value of field 'RGB'.
+   * 
+   * @return the value of field 'RGB'.
+   */
+  public java.lang.String getRGB()
+  {
+    return this._RGB;
+  }
+
+  /**
+   * Returns the value of field 'threshType'.
+   * 
+   * @return the value of field 'ThreshType'.
+   */
+  public jalview.binding.types.ColourThreshTypeType getThreshType()
+  {
+    return this._threshType;
+  }
+
+  /**
+   * Returns the value of field 'threshold'.
+   * 
+   * @return the value of field 'Threshold'.
+   */
+  public float getThreshold()
+  {
+    return this._threshold;
+  }
+
+  /**
+   * Method hasAutoScale.
+   * 
+   * @return true if at least one AutoScale has been added
+   */
+  public boolean hasAutoScale()
+  {
+    return this._has_autoScale;
+  }
+
+  /**
+   * Method hasColourByLabel.
+   * 
+   * @return true if at least one ColourByLabel has been added
+   */
+  public boolean hasColourByLabel()
+  {
+    return this._has_colourByLabel;
+  }
+
+  /**
+   * Method hasMax.
+   * 
+   * @return true if at least one Max has been added
+   */
+  public boolean hasMax()
+  {
+    return this._has_max;
+  }
+
+  /**
+   * Method hasMin.
+   * 
+   * @return true if at least one Min has been added
+   */
+  public boolean hasMin()
+  {
+    return this._has_min;
+  }
+
+  /**
+   * Method hasThreshold.
+   * 
+   * @return true if at least one Threshold has been added
+   */
+  public boolean hasThreshold()
+  {
+    return this._has_threshold;
+  }
+
+  /**
+   * Returns the value of field 'autoScale'.
+   * 
+   * @return the value of field 'AutoScale'.
+   */
+  public boolean isAutoScale()
+  {
+    return this._autoScale;
+  }
+
+  /**
+   * Returns the value of field 'colourByLabel'.
+   * 
+   * @return the value of field 'ColourByLabel'.
+   */
+  public boolean isColourByLabel()
+  {
+    return this._colourByLabel;
+  }
+
+  /**
+   * Method isValid.
+   * 
+   * @return true if this object is valid according to the schema
+   */
+  public boolean isValid()
+  {
+    try
+    {
+      validate();
+    } catch (org.exolab.castor.xml.ValidationException vex)
+    {
+      return false;
     }
+    return true;
+  }
+
+  /**
+   * 
+   * 
+   * @param out
+   * @throws org.exolab.castor.xml.MarshalException
+   *           if object is null or if any SAXException is thrown during
+   *           marshaling
+   * @throws org.exolab.castor.xml.ValidationException
+   *           if this object is an invalid instance according to the schema
+   */
+  public void marshal(final java.io.Writer out)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    Marshaller.marshal(this, out);
+  }
+
+  /**
+   * 
+   * 
+   * @param handler
+   * @throws java.io.IOException
+   *           if an IOException occurs during marshaling
+   * @throws org.exolab.castor.xml.ValidationException
+   *           if this object is an invalid instance according to the schema
+   * @throws org.exolab.castor.xml.MarshalException
+   *           if object is null or if any SAXException is thrown during
+   *           marshaling
+   */
+  public void marshal(final org.xml.sax.ContentHandler handler)
+          throws java.io.IOException,
+          org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    Marshaller.marshal(this, handler);
+  }
+
+  /**
+   */
+  public void removeAllAttributeName()
+  {
+    this._attributeNameList.clear();
+  }
+
+  /**
+   * Method removeAttributeName.
+   * 
+   * @param vAttributeName
+   * @return true if the object was removed from the collection.
+   */
+  public boolean removeAttributeName(final java.lang.String vAttributeName)
+  {
+    boolean removed = _attributeNameList.remove(vAttributeName);
+    return removed;
+  }
 
-    /**
-     * Method unmarshal.
-     * 
-     * @param reader
-     * @throws org.exolab.castor.xml.MarshalException if object is
-     * null or if any SAXException is thrown during marshaling
-     * @throws org.exolab.castor.xml.ValidationException if this
-     * object is an invalid instance according to the schema
-     * @return the unmarshaled jalview.binding.Colour
-     */
-    public static jalview.binding.Colour unmarshal(
-            final java.io.Reader reader)
-    throws org.exolab.castor.xml.MarshalException, org.exolab.castor.xml.ValidationException {
-        return (jalview.binding.Colour) Unmarshaller.unmarshal(jalview.binding.Colour.class, reader);
+  /**
+   * Method removeAttributeNameAt.
+   * 
+   * @param index
+   * @return the element removed from the collection
+   */
+  public java.lang.String removeAttributeNameAt(final int index)
+  {
+    java.lang.Object obj = this._attributeNameList.remove(index);
+    return (java.lang.String) obj;
+  }
+
+  /**
+   * 
+   * 
+   * @param index
+   * @param vAttributeName
+   * @throws java.lang.IndexOutOfBoundsException
+   *           if the index given is outside the bounds of the collection
+   */
+  public void setAttributeName(final int index,
+          final java.lang.String vAttributeName)
+          throws java.lang.IndexOutOfBoundsException
+  {
+    // check bounds for index
+    if (index < 0 || index >= this._attributeNameList.size())
+    {
+      throw new IndexOutOfBoundsException("setAttributeName: Index value '"
+              + index + "' not in range [0.."
+              + (this._attributeNameList.size() - 1) + "]");
     }
 
-    /**
-     * 
-     * 
-     * @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);
+    this._attributeNameList.set(index, vAttributeName);
+  }
+
+  /**
+   * 
+   * 
+   * @param vAttributeNameArray
+   */
+  public void setAttributeName(final java.lang.String[] vAttributeNameArray)
+  {
+    // -- copy array
+    _attributeNameList.clear();
+
+    for (int i = 0; i < vAttributeNameArray.length; i++)
+    {
+      this._attributeNameList.add(vAttributeNameArray[i]);
     }
+  }
+
+  /**
+   * Sets the value of field 'autoScale'.
+   * 
+   * @param autoScale
+   *          the value of field 'autoScale'.
+   */
+  public void setAutoScale(final boolean autoScale)
+  {
+    this._autoScale = autoScale;
+    this._has_autoScale = true;
+  }
+
+  /**
+   * Sets the value of field 'colourByLabel'.
+   * 
+   * @param colourByLabel
+   *          the value of field 'colourByLabel'.
+   */
+  public void setColourByLabel(final boolean colourByLabel)
+  {
+    this._colourByLabel = colourByLabel;
+    this._has_colourByLabel = true;
+  }
+
+  /**
+   * Sets the value of field 'max'.
+   * 
+   * @param max
+   *          the value of field 'max'.
+   */
+  public void setMax(final float max)
+  {
+    this._max = max;
+    this._has_max = true;
+  }
+
+  /**
+   * Sets the value of field 'min'.
+   * 
+   * @param min
+   *          the value of field 'min'.
+   */
+  public void setMin(final float min)
+  {
+    this._min = min;
+    this._has_min = true;
+  }
+
+  /**
+   * Sets the value of field 'minRGB'.
+   * 
+   * @param minRGB
+   *          the value of field 'minRGB'.
+   */
+  public void setMinRGB(final java.lang.String minRGB)
+  {
+    this._minRGB = minRGB;
+  }
+
+  /**
+   * Sets the value of field 'name'. The field 'name' has the following
+   * description: Single letter residue code for an alignment colour scheme, or
+   * feature type for a feature colour scheme
+   * 
+   * @param name
+   *          the value of field 'name'.
+   */
+  public void setName(final java.lang.String name)
+  {
+    this._name = name;
+  }
+
+  /**
+   * Sets the value of field 'noValueColour'.
+   * 
+   * @param noValueColour
+   *          the value of field 'noValueColour'.
+   */
+  public void setNoValueColour(
+          final jalview.binding.types.NoValueColour noValueColour)
+  {
+    this._noValueColour = noValueColour;
+  }
+
+  /**
+   * Sets the value of field 'RGB'.
+   * 
+   * @param RGB
+   *          the value of field 'RGB'.
+   */
+  public void setRGB(final java.lang.String RGB)
+  {
+    this._RGB = RGB;
+  }
+
+  /**
+   * Sets the value of field 'threshType'.
+   * 
+   * @param threshType
+   *          the value of field 'threshType'.
+   */
+  public void setThreshType(
+          final jalview.binding.types.ColourThreshTypeType threshType)
+  {
+    this._threshType = threshType;
+  }
+
+  /**
+   * Sets the value of field 'threshold'.
+   * 
+   * @param threshold
+   *          the value of field 'threshold'.
+   */
+  public void setThreshold(final float threshold)
+  {
+    this._threshold = threshold;
+    this._has_threshold = true;
+  }
+
+  /**
+   * Method unmarshal.
+   * 
+   * @param reader
+   * @throws org.exolab.castor.xml.MarshalException
+   *           if object is null or if any SAXException is thrown during
+   *           marshaling
+   * @throws org.exolab.castor.xml.ValidationException
+   *           if this object is an invalid instance according to the schema
+   * @return the unmarshaled jalview.binding.Colour
+   */
+  public static jalview.binding.Colour unmarshal(
+          final java.io.Reader reader)
+          throws org.exolab.castor.xml.MarshalException,
+          org.exolab.castor.xml.ValidationException
+  {
+    return (jalview.binding.Colour) Unmarshaller
+            .unmarshal(jalview.binding.Colour.class, reader);
+  }
+
+  /**
+   * 
+   * 
+   * @throws org.exolab.castor.xml.ValidationException
+   *           if this object is an invalid instance according to the schema
+   */
+  public void validate() throws org.exolab.castor.xml.ValidationException
+  {
+    org.exolab.castor.xml.Validator validator = new org.exolab.castor.xml.Validator();
+    validator.validate(this);
+  }
 
 }