From 051515cc3b1535d13147725217632caa27653194 Mon Sep 17 00:00:00 2001 From: "j.procter@dundee.ac.uk" Date: Fri, 8 Aug 2014 17:37:41 +0100 Subject: [PATCH] JAL-1483 feature renderer settings for store/exchange of settings --- .../seqfeatures/FeatureRendererSettings.java | 77 ++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/jalview/viewmodel/seqfeatures/FeatureRendererSettings.java 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 -- 1.7.10.2