//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2019.06.07 at 02:21:15 PM BST 
//


package jalview.xml.binding.jalview;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;


/**
 * <p>Java class for anonymous complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType>
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element ref="{www.vamsas.ac.uk/jalview/version2}annotationElement" maxOccurs="unbounded" minOccurs="0"/>
 *         &lt;element name="label" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="thresholdLine" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;attribute name="label" type="{http://www.w3.org/2001/XMLSchema}string" />
 *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}float" />
 *                 &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *         &lt;element name="property" maxOccurs="unbounded" minOccurs="0">
 *           &lt;complexType>
 *             &lt;complexContent>
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *                 &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
 *                 &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
 *               &lt;/restriction>
 *             &lt;/complexContent>
 *           &lt;/complexType>
 *         &lt;/element>
 *       &lt;/sequence>
 *       &lt;attribute name="graph" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *       &lt;attribute name="graphType" type="{http://www.w3.org/2001/XMLSchema}int" />
 *       &lt;attribute name="sequenceRef" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="groupRef" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="graphColour" type="{http://www.w3.org/2001/XMLSchema}int" />
 *       &lt;attribute name="graphGroup" type="{http://www.w3.org/2001/XMLSchema}int" />
 *       &lt;attribute name="graphHeight" type="{http://www.w3.org/2001/XMLSchema}int" />
 *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="scoreOnly" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 *       &lt;attribute name="score" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="visible" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *       &lt;attribute name="centreColLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *       &lt;attribute name="scaleColLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *       &lt;attribute name="showAllColLabels" type="{http://www.w3.org/2001/XMLSchema}boolean" />
 *       &lt;attribute name="autoCalculated" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 *       &lt;attribute name="belowAlignment" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
 *       &lt;attribute name="calcId" type="{http://www.w3.org/2001/XMLSchema}string" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "annotationElement",
    "label",
    "description",
    "thresholdLine",
    "property"
})
@XmlRootElement(name = "Annotation")
public class Annotation {

    protected List<AnnotationElement> annotationElement;
    @XmlElement(required = true)
    protected String label;
    protected String description;
    protected Annotation.ThresholdLine thresholdLine;
    protected List<Annotation.Property> property;
    @XmlAttribute(name = "graph", required = true)
    protected boolean graph;
    @XmlAttribute(name = "graphType")
    protected Integer graphType;
    @XmlAttribute(name = "sequenceRef")
    protected String sequenceRef;
    @XmlAttribute(name = "groupRef")
    protected String groupRef;
    @XmlAttribute(name = "graphColour")
    protected Integer graphColour;
    @XmlAttribute(name = "graphGroup")
    protected Integer graphGroup;
    @XmlAttribute(name = "graphHeight")
    protected Integer graphHeight;
    @XmlAttribute(name = "id")
    protected String id;
    @XmlAttribute(name = "scoreOnly")
    protected Boolean scoreOnly;
    @XmlAttribute(name = "score")
    protected Double score;
    @XmlAttribute(name = "visible")
    protected Boolean visible;
    @XmlAttribute(name = "centreColLabels")
    protected Boolean centreColLabels;
    @XmlAttribute(name = "scaleColLabels")
    protected Boolean scaleColLabels;
    @XmlAttribute(name = "showAllColLabels")
    protected Boolean showAllColLabels;
    @XmlAttribute(name = "autoCalculated")
    protected Boolean autoCalculated;
    @XmlAttribute(name = "belowAlignment")
    protected Boolean belowAlignment;
    @XmlAttribute(name = "calcId")
    protected String calcId;

    /**
     * Gets the value of the annotationElement property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the annotationElement property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getAnnotationElement().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link AnnotationElement }
     * 
     * 
     */
    public List<AnnotationElement> getAnnotationElement() {
        if (annotationElement == null) {
            annotationElement = new ArrayList<AnnotationElement>();
        }
        return this.annotationElement;
    }

    /**
     * Gets the value of the label property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getLabel() {
        return label;
    }

    /**
     * Sets the value of the label property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setLabel(String value) {
        this.label = value;
    }

    /**
     * Gets the value of the description property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDescription() {
        return description;
    }

    /**
     * Sets the value of the description property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDescription(String value) {
        this.description = value;
    }

    /**
     * Gets the value of the thresholdLine property.
     * 
     * @return
     *     possible object is
     *     {@link Annotation.ThresholdLine }
     *     
     */
    public Annotation.ThresholdLine getThresholdLine() {
        return thresholdLine;
    }

    /**
     * Sets the value of the thresholdLine property.
     * 
     * @param value
     *     allowed object is
     *     {@link Annotation.ThresholdLine }
     *     
     */
    public void setThresholdLine(Annotation.ThresholdLine value) {
        this.thresholdLine = value;
    }

    /**
     * Gets the value of the property property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the property property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getProperty().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Annotation.Property }
     * 
     * 
     */
    public List<Annotation.Property> getProperty() {
        if (property == null) {
            property = new ArrayList<Annotation.Property>();
        }
        return this.property;
    }

    /**
     * Gets the value of the graph property.
     * 
     */
    public boolean isGraph() {
        return graph;
    }

    /**
     * Sets the value of the graph property.
     * 
     */
    public void setGraph(boolean value) {
        this.graph = value;
    }

    /**
     * Gets the value of the graphType property.
     * 
     * @return
     *     possible object is
     *     {@link Integer }
     *     
     */
    public Integer getGraphType() {
        return graphType;
    }

    /**
     * Sets the value of the graphType property.
     * 
     * @param value
     *     allowed object is
     *     {@link Integer }
     *     
     */
    public void setGraphType(Integer value) {
        this.graphType = value;
    }

    /**
     * Gets the value of the sequenceRef property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSequenceRef() {
        return sequenceRef;
    }

    /**
     * Sets the value of the sequenceRef property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSequenceRef(String value) {
        this.sequenceRef = value;
    }

    /**
     * Gets the value of the groupRef property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getGroupRef() {
        return groupRef;
    }

    /**
     * Sets the value of the groupRef property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setGroupRef(String value) {
        this.groupRef = value;
    }

    /**
     * Gets the value of the graphColour property.
     * 
     * @return
     *     possible object is
     *     {@link Integer }
     *     
     */
    public Integer getGraphColour() {
        return graphColour;
    }

    /**
     * Sets the value of the graphColour property.
     * 
     * @param value
     *     allowed object is
     *     {@link Integer }
     *     
     */
    public void setGraphColour(Integer value) {
        this.graphColour = value;
    }

    /**
     * Gets the value of the graphGroup property.
     * 
     * @return
     *     possible object is
     *     {@link Integer }
     *     
     */
    public Integer getGraphGroup() {
        return graphGroup;
    }

    /**
     * Sets the value of the graphGroup property.
     * 
     * @param value
     *     allowed object is
     *     {@link Integer }
     *     
     */
    public void setGraphGroup(Integer value) {
        this.graphGroup = value;
    }

    /**
     * Gets the value of the graphHeight property.
     * 
     * @return
     *     possible object is
     *     {@link Integer }
     *     
     */
    public Integer getGraphHeight() {
        return graphHeight;
    }

    /**
     * Sets the value of the graphHeight property.
     * 
     * @param value
     *     allowed object is
     *     {@link Integer }
     *     
     */
    public void setGraphHeight(Integer value) {
        this.graphHeight = value;
    }

    /**
     * Gets the value of the id property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getId() {
        return id;
    }

    /**
     * Sets the value of the id property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setId(String value) {
        this.id = value;
    }

    /**
     * Gets the value of the scoreOnly property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public boolean isScoreOnly() {
        if (scoreOnly == null) {
            return false;
        } else {
            return scoreOnly;
        }
    }

    /**
     * Sets the value of the scoreOnly property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setScoreOnly(Boolean value) {
        this.scoreOnly = value;
    }

    /**
     * Gets the value of the score property.
     * 
     * @return
     *     possible object is
     *     {@link Double }
     *     
     */
    public Double getScore() {
        return score;
    }

    /**
     * Sets the value of the score property.
     * 
     * @param value
     *     allowed object is
     *     {@link Double }
     *     
     */
    public void setScore(Double value) {
        this.score = value;
    }

    /**
     * Gets the value of the visible property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public Boolean isVisible() {
        return visible;
    }

    /**
     * Sets the value of the visible property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setVisible(Boolean value) {
        this.visible = value;
    }

    /**
     * Gets the value of the centreColLabels property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public Boolean isCentreColLabels() {
        return centreColLabels;
    }

    /**
     * Sets the value of the centreColLabels property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setCentreColLabels(Boolean value) {
        this.centreColLabels = value;
    }

    /**
     * Gets the value of the scaleColLabels property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public Boolean isScaleColLabels() {
        return scaleColLabels;
    }

    /**
     * Sets the value of the scaleColLabels property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setScaleColLabels(Boolean value) {
        this.scaleColLabels = value;
    }

    /**
     * Gets the value of the showAllColLabels property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public Boolean isShowAllColLabels() {
        return showAllColLabels;
    }

    /**
     * Sets the value of the showAllColLabels property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setShowAllColLabels(Boolean value) {
        this.showAllColLabels = value;
    }

    /**
     * Gets the value of the autoCalculated property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public boolean isAutoCalculated() {
        if (autoCalculated == null) {
            return false;
        } else {
            return autoCalculated;
        }
    }

    /**
     * Sets the value of the autoCalculated property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setAutoCalculated(Boolean value) {
        this.autoCalculated = value;
    }

    /**
     * Gets the value of the belowAlignment property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public boolean isBelowAlignment() {
        if (belowAlignment == null) {
            return true;
        } else {
            return belowAlignment;
        }
    }

    /**
     * Sets the value of the belowAlignment property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setBelowAlignment(Boolean value) {
        this.belowAlignment = value;
    }

    /**
     * Gets the value of the calcId property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCalcId() {
        return calcId;
    }

    /**
     * Sets the value of the calcId property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setCalcId(String value) {
        this.calcId = value;
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" />
     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}string" />
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class Property {

        @XmlAttribute(name = "name")
        protected String name;
        @XmlAttribute(name = "value")
        protected String value;

        /**
         * Gets the value of the name property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getName() {
            return name;
        }

        /**
         * Sets the value of the name property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setName(String value) {
            this.name = value;
        }

        /**
         * Gets the value of the value property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getValue() {
            return value;
        }

        /**
         * Sets the value of the value property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setValue(String value) {
            this.value = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType>
     *   &lt;complexContent>
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
     *       &lt;attribute name="label" type="{http://www.w3.org/2001/XMLSchema}string" />
     *       &lt;attribute name="value" type="{http://www.w3.org/2001/XMLSchema}float" />
     *       &lt;attribute name="colour" type="{http://www.w3.org/2001/XMLSchema}int" />
     *     &lt;/restriction>
     *   &lt;/complexContent>
     * &lt;/complexType>
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class ThresholdLine {

        @XmlAttribute(name = "label")
        protected String label;
        @XmlAttribute(name = "value")
        protected Float value;
        @XmlAttribute(name = "colour")
        protected Integer colour;

        /**
         * Gets the value of the label property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getLabel() {
            return label;
        }

        /**
         * Sets the value of the label property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setLabel(String value) {
            this.label = value;
        }

        /**
         * Gets the value of the value property.
         * 
         * @return
         *     possible object is
         *     {@link Float }
         *     
         */
        public Float getValue() {
            return value;
        }

        /**
         * Sets the value of the value property.
         * 
         * @param value
         *     allowed object is
         *     {@link Float }
         *     
         */
        public void setValue(Float value) {
            this.value = value;
        }

        /**
         * Gets the value of the colour property.
         * 
         * @return
         *     possible object is
         *     {@link Integer }
         *     
         */
        public Integer getColour() {
            return colour;
        }

        /**
         * Sets the value of the colour property.
         * 
         * @param value
         *     allowed object is
         *     {@link Integer }
         *     
         */
        public void setColour(Integer value) {
            this.colour = value;
        }

    }

}
