JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / src / jalview / viewmodel / seqfeatures / FeatureRendererSettings.java
1 package jalview.viewmodel.seqfeatures;
2
3 import jalview.schemes.GraduatedColor;
4
5 import java.util.Arrays;
6 import java.util.Hashtable;
7 import java.util.Iterator;
8 import java.util.Map;
9 import java.util.concurrent.ConcurrentHashMap;
10
11 public class FeatureRendererSettings implements Cloneable
12 {
13   String[] renderOrder;
14
15   Map featureGroups;
16
17   Map featureColours;
18
19   float transparency;
20
21   Map featureOrder;
22
23   public FeatureRendererSettings(String[] renderOrder,
24           Hashtable featureGroups, Hashtable featureColours,
25           float transparency, Hashtable featureOrder)
26   {
27     super();
28     this.renderOrder = Arrays.copyOf(renderOrder,renderOrder.length);
29     this.featureGroups = new ConcurrentHashMap(featureGroups);
30     this.featureColours = new ConcurrentHashMap(featureColours);
31     this.transparency = transparency;
32     this.featureOrder = new ConcurrentHashMap(featureOrder);
33   }
34
35   /**
36    * create an independent instance of the feature renderer settings
37    * 
38    * @param fr
39    */
40   public FeatureRendererSettings(FeatureRendererModel fr)
41   {
42     renderOrder = null;
43     featureGroups = new ConcurrentHashMap();
44     featureColours = new ConcurrentHashMap();
45     featureOrder = new ConcurrentHashMap();
46     if (fr.renderOrder != null)
47     {
48       this.renderOrder = new String[fr.renderOrder.length];
49       System.arraycopy(fr.renderOrder, 0, renderOrder, 0,
50               fr.renderOrder.length);
51     }
52     if (fr.featureGroups != null)
53     {
54       this.featureGroups = new ConcurrentHashMap(fr.featureGroups);
55     }
56     if (fr.featureColours != null)
57     {
58       this.featureColours = new ConcurrentHashMap(fr.featureColours);
59     }
60     Iterator en = fr.featureColours.keySet().iterator();
61     while (en.hasNext())
62     {
63       Object next = en.next();
64       Object val = featureColours.get(next);
65       if (val instanceof GraduatedColor)
66       {
67         featureColours.put(next, new GraduatedColor((GraduatedColor) val));
68       }
69     }
70     this.transparency = fr.transparency;
71     if (fr.featureOrder != null)
72     {
73       this.featureOrder = new ConcurrentHashMap(fr.featureOrder);
74     }
75   }
76 }