Merge branch 'develop' into feature/JAL-3551Pymol
[jalview.git] / srcjar / fr / orsay / lri / varna / models / rna / ModeleBackbone.java
diff --git a/srcjar/fr/orsay/lri/varna/models/rna/ModeleBackbone.java b/srcjar/fr/orsay/lri/varna/models/rna/ModeleBackbone.java
new file mode 100644 (file)
index 0000000..caa4b5f
--- /dev/null
@@ -0,0 +1,75 @@
+package fr.orsay.lri.varna.models.rna;
+
+import java.awt.Color;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Hashtable;
+
+import javax.xml.transform.sax.TransformerHandler;
+
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+
+import fr.orsay.lri.varna.models.rna.ModeleBackboneElement.BackboneType;
+import fr.orsay.lri.varna.utils.XMLUtils;
+
+public class ModeleBackbone  implements Serializable{
+
+       /**
+        * 
+        */
+       private Hashtable<Integer,ModeleBackboneElement> elems = new Hashtable<Integer,ModeleBackboneElement>();
+       
+       private static final long serialVersionUID = -614968737102943216L;
+
+       
+       
+       public static String XML_ELEMENT_NAME = "backbone";
+       
+       public void toXML(TransformerHandler hd) throws SAXException
+       {
+               AttributesImpl atts = new AttributesImpl();
+               hd.startElement("","",XML_ELEMENT_NAME,atts);
+               for (ModeleBackboneElement bck:elems.values())
+               {
+                       bck.toXML(hd);
+               }
+               hd.endElement("","",XML_ELEMENT_NAME);
+               atts.clear();
+       }
+
+       public void addElement(ModeleBackboneElement mbe)
+       {
+               elems.put(mbe.getIndex(),mbe);
+       }
+
+        public BackboneType getTypeBefore(int indexBase)
+        {
+                return getTypeAfter(indexBase-1);
+        }
+       
+        public BackboneType getTypeAfter(int indexBase)
+        {
+                if (elems.containsKey(indexBase))
+                        return elems.get(indexBase).getType();
+                else
+                        return BackboneType.SOLID_TYPE;
+        }
+
+        public Color getColorBefore(int indexBase, Color defCol)
+        {
+                return getColorAfter(indexBase-1,defCol);
+        }
+       
+        public Color getColorAfter(int indexBase, Color defCol)
+        {
+                if (elems.containsKey(indexBase))
+                {
+                        Color c = elems.get(indexBase).getColor();
+                        if (c != null)
+                                return c;
+                }
+                return defCol;
+        }
+        
+}