6e85b83348f7442175998c375214603a8461ca91
[jalview.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(
41           jalview.viewmodel.seqfeatures.FeatureRendererModel fr)
42   {
43     renderOrder = null;
44     featureGroups = new ConcurrentHashMap();
45     featureColours = new ConcurrentHashMap();
46     featureOrder = new ConcurrentHashMap();
47     if (fr.renderOrder != null)
48     {
49       this.renderOrder = new String[fr.renderOrder.length];
50       System.arraycopy(fr.renderOrder, 0, renderOrder, 0,
51               fr.renderOrder.length);
52     }
53     if (fr.featureGroups != null)
54     {
55       this.featureGroups = new ConcurrentHashMap(fr.featureGroups);
56     }
57     if (fr.featureColours != null)
58     {
59       this.featureColours = new ConcurrentHashMap(fr.featureColours);
60     }
61     Iterator en = fr.featureColours.keySet().iterator();
62     while (en.hasNext())
63     {
64       Object next = en.next();
65       Object val = featureColours.get(next);
66       if (val instanceof GraduatedColor)
67       {
68         featureColours.put(next, new GraduatedColor((GraduatedColor) val));
69       }
70     }
71     this.transparency = fr.transparency;
72     if (fr.featureOrder != null)
73     {
74       this.featureOrder = new ConcurrentHashMap(fr.featureOrder);
75     }
76   }
77 }