JAL-1483 feature renderer settings for store/exchange of settings
authorj.procter@dundee.ac.uk <jprocter@Jims-MacBook-Pro-2.local>
Fri, 8 Aug 2014 16:37:41 +0000 (17:37 +0100)
committerj.procter@dundee.ac.uk <jprocter@Jims-MacBook-Pro-2.local>
Fri, 8 Aug 2014 16:37:41 +0000 (17:37 +0100)
src/jalview/viewmodel/seqfeatures/FeatureRendererSettings.java [new file with mode: 0644]

diff --git a/src/jalview/viewmodel/seqfeatures/FeatureRendererSettings.java b/src/jalview/viewmodel/seqfeatures/FeatureRendererSettings.java
new file mode 100644 (file)
index 0000000..6e85b83
--- /dev/null
@@ -0,0 +1,77 @@
+package jalview.viewmodel.seqfeatures;
+
+import jalview.schemes.GraduatedColor;
+
+import java.util.Arrays;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class FeatureRendererSettings implements Cloneable
+{
+  String[] renderOrder;
+
+  Map featureGroups;
+
+  Map featureColours;
+
+  float transparency;
+
+  Map featureOrder;
+
+  public FeatureRendererSettings(String[] renderOrder,
+          Hashtable featureGroups, Hashtable featureColours,
+          float transparency, Hashtable featureOrder)
+  {
+    super();
+    this.renderOrder = Arrays.copyOf(renderOrder,renderOrder.length);
+    this.featureGroups = new ConcurrentHashMap(featureGroups);
+    this.featureColours = new ConcurrentHashMap(featureColours);
+    this.transparency = transparency;
+    this.featureOrder = new ConcurrentHashMap(featureOrder);
+  }
+
+  /**
+   * create an independent instance of the feature renderer settings
+   * 
+   * @param fr
+   */
+  public FeatureRendererSettings(
+          jalview.viewmodel.seqfeatures.FeatureRendererModel fr)
+  {
+    renderOrder = null;
+    featureGroups = new ConcurrentHashMap();
+    featureColours = new ConcurrentHashMap();
+    featureOrder = new ConcurrentHashMap();
+    if (fr.renderOrder != null)
+    {
+      this.renderOrder = new String[fr.renderOrder.length];
+      System.arraycopy(fr.renderOrder, 0, renderOrder, 0,
+              fr.renderOrder.length);
+    }
+    if (fr.featureGroups != null)
+    {
+      this.featureGroups = new ConcurrentHashMap(fr.featureGroups);
+    }
+    if (fr.featureColours != null)
+    {
+      this.featureColours = new ConcurrentHashMap(fr.featureColours);
+    }
+    Iterator en = fr.featureColours.keySet().iterator();
+    while (en.hasNext())
+    {
+      Object next = en.next();
+      Object val = featureColours.get(next);
+      if (val instanceof GraduatedColor)
+      {
+        featureColours.put(next, new GraduatedColor((GraduatedColor) val));
+      }
+    }
+    this.transparency = fr.transparency;
+    if (fr.featureOrder != null)
+    {
+      this.featureOrder = new ConcurrentHashMap(fr.featureOrder);
+    }
+  }
+}
\ No newline at end of file