X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2Fseqfeatures%2FFeatureRendererSettings.java;fp=src%2Fjalview%2Fviewmodel%2Fseqfeatures%2FFeatureRendererSettings.java;h=6e85b83348f7442175998c375214603a8461ca91;hb=051515cc3b1535d13147725217632caa27653194;hp=0000000000000000000000000000000000000000;hpb=552a68778a21f29fe5a05fd6840f7f3864e544b1;p=jalview.git diff --git a/src/jalview/viewmodel/seqfeatures/FeatureRendererSettings.java b/src/jalview/viewmodel/seqfeatures/FeatureRendererSettings.java new file mode 100644 index 0000000..6e85b83 --- /dev/null +++ b/src/jalview/viewmodel/seqfeatures/FeatureRendererSettings.java @@ -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