-* Jalview - A Sequence Alignment Editor and Viewer
-* Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-*/\r
-package jalview.datamodel;\r
-\r
-import java.awt.*;\r
-\r
-\r
-/**\r
- * DOCUMENT ME!\r
- *\r
- * @author $author$\r
- * @version $Revision$\r
- */\r
-public class Annotation\r
-{\r
- /** DOCUMENT ME!! */\r
- public String displayCharacter = "";\r
-\r
- /** DOCUMENT ME!! */\r
- public String description = ""; // currently used as mouse over\r
-\r
- /** DOCUMENT ME!! */\r
- public char secondaryStructure = ' '; // recognises H and E\r
-\r
- /** DOCUMENT ME!! */\r
- public float value;\r
-\r
- // add visual cues here\r
-\r
- /** DOCUMENT ME!! */\r
- public Color colour = Color.black;\r
-\r
- /**\r
- * Creates a new Annotation object.\r
- *\r
- * @param displayChar DOCUMENT ME!\r
- * @param desc DOCUMENT ME!\r
- * @param ss DOCUMENT ME!\r
- * @param val DOCUMENT ME!\r
- */\r
- public Annotation(String displayChar, String desc, char ss, float val)\r
- {\r
- displayCharacter = displayChar;\r
- description = desc;\r
- secondaryStructure = ss;\r
- value = val;\r
- }\r
-\r
- /**\r
- * Creates a new Annotation object.\r
- *\r
- * @param displayChar DOCUMENT ME!\r
- * @param desc DOCUMENT ME!\r
- * @param ss DOCUMENT ME!\r
- * @param val DOCUMENT ME!\r
- * @param colour DOCUMENT ME!\r
- */\r
- public Annotation(String displayChar, String desc, char ss, float val,\r
- Color colour)\r
- {\r
- this(displayChar, desc, ss, val);\r
- this.colour = colour;\r
- }\r
-}\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2)
+ * Copyright (C) 2015 The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.datamodel;
+
+import java.awt.Color;
+
+/**
+ * Holds all annotation values for a position in an AlignmentAnnotation row
+ *
+ * @author $author$
+ * @version $Revision$
+ */
+public class Annotation
+{
+ /** Character label - also shown below histogram */
+ public String displayCharacter = "";
+
+ /**
+ * Text label for position: shown in mouse over and displayed on secondary
+ * structure glyphs
+ */
+ public String description = "";
+
+ /**
+ * Secondary structure symbol: Protein symbols are H, E and S(?), RNA are
+ * WUSS/Vienna plus extended pseudoknot symbols
+ */
+ public char secondaryStructure = ' ';
+
+ /** Score for the position - used in histograms, line graphs and for shading */
+ public float value;
+
+ /** Colour for position */
+ public Color colour;
+
+ /**
+ * Creates a new Annotation object.
+ *
+ * @param displayChar
+ * DOCUMENT ME!
+ * @param desc
+ * DOCUMENT ME!
+ * @param ss
+ * DOCUMENT ME!
+ * @param val
+ * DOCUMENT ME!
+ */
+ public Annotation(String displayChar, String desc, char ss, float val)
+ {
+ displayCharacter = displayChar;
+ description = desc;
+ secondaryStructure = ss;
+ value = val;
+
+ }
+
+ /**
+ * Creates a new Annotation object.
+ *
+ * @param displayChar
+ * DOCUMENT ME!
+ * @param desc
+ * DOCUMENT ME!
+ * @param ss
+ * DOCUMENT ME!
+ * @param val
+ * DOCUMENT ME!
+ * @param colour
+ * DOCUMENT ME!
+ */
+ public Annotation(String displayChar, String desc, char ss, float val,
+ Color colour)
+ {
+ this(displayChar, desc, ss, val);
+ this.colour = colour;
+ }
+
+ /**
+ * Copy constructor New annotation takes on the same (or duplicated)
+ * attributes as the given template
+ *
+ * @param that
+ * template annotation
+ */
+ public Annotation(Annotation that)
+ {
+ if (that == null || this == that)
+ {
+ return;
+ }
+ if (that.displayCharacter != null)
+ {
+ displayCharacter = new String(that.displayCharacter);
+ }
+ if (that.description != null)
+ {
+ description = new String(that.description);
+ }
+ secondaryStructure = that.secondaryStructure;
+ value = that.value;
+ colour = that.colour;
+
+ }
+
+ /**
+ * Value only annotation.
+ *
+ * @param val
+ * value at this annotation position
+ */
+ public Annotation(float val)
+ {
+ this(null, null, ' ', val, null);
+ }
+
+ /**
+ * human readable representation of an annotation row element.
+ *
+ * Format is 'display Char','secondary Structure
+ * Char',"description",score,[colourstring]
+ *
+ * fields may be missing if they are null, whitespace, or equivalent to
+ * Float.NaN
+ */
+ @Override
+ public String toString()
+ {
+ StringBuffer sb = new StringBuffer();
+ if (displayCharacter != null)
+ {
+ sb.append("\'");
+ sb.append(displayCharacter);
+ sb.append("\'");
+ }
+ {
+ sb.append(",");
+ }
+ if (secondaryStructure != 0
+ && !("" + displayCharacter).equals("" + secondaryStructure))
+ {
+ sb.append("\'");
+ sb.append(secondaryStructure);
+ sb.append("\'");
+ }
+ {
+ sb.append(",");
+ }
+ if (description != null && description.length() > 0)
+ {
+ sb.append("\"");
+ sb.append(description);
+ sb.append("\"");
+ }
+ {
+ sb.append(",");
+ }
+ if (!Float.isNaN(value))
+ {
+ sb.append(value);
+ }
+ if (colour != null)
+ {
+ if (sb.length() > 0)
+ {
+ sb.append(",");
+ }
+ sb.append("[");
+ sb.append(colour.getRed());
+ sb.append(",");
+ sb.append(colour.getGreen());
+ sb.append(",");
+ sb.append(colour.getBlue());
+ sb.append("]");
+ }
+ return sb.toString();
+ }
+}