Sequence label colour stored for each sequence group
[jalview.git] / src / jalview / gui / FeatureRenderer.java
index 4c4be5c..b643efb 100755 (executable)
@@ -72,7 +72,44 @@ public class FeatureRenderer
     this.av = ap.av;
   }
 
-
+  public class FeatureRendererSettings implements Cloneable {
+    String[] renderOrder;
+    Hashtable featureGroups;
+    Hashtable featureColours;
+    float transparency;
+    Hashtable featureOrder;
+    public FeatureRendererSettings(String[] renderOrder,
+            Hashtable featureGroups, Hashtable featureColours,
+            float transparency, Hashtable featureOrder)
+    {
+      super();
+      this.renderOrder = renderOrder;
+      this.featureGroups = featureGroups;
+      this.featureColours = featureColours;
+      this.transparency = transparency;
+      this.featureOrder = featureOrder;
+    }
+    public FeatureRendererSettings(FeatureRenderer fr)
+    {
+      this.renderOrder = fr.renderOrder;
+      this.featureGroups = fr.featureGroups;
+      this.featureColours = fr.featureColours;
+      this.transparency = fr.transparency;
+      this.featureOrder = fr.featureOrder;
+    }
+  }
+  public FeatureRendererSettings getSettings()
+  {
+    return new FeatureRendererSettings(this);
+  }
+  public void transferSettings(FeatureRendererSettings fr)
+  {
+    this.renderOrder = fr.renderOrder;
+    this.featureGroups = fr.featureGroups;
+    this.featureColours = fr.featureColours;
+    this.transparency = fr.transparency;
+    this.featureOrder = fr.featureOrder;
+  }
   public void transferSettings(FeatureRenderer fr)
   {
     this.renderOrder = fr.renderOrder;
@@ -397,13 +434,16 @@ public class FeatureRenderer
    * them. Then fires a PropertyChangeEvent on the changeSupport object.
    *
    */
-  synchronized void findAllFeatures()
+  void findAllFeatures()
   {
-    findAllFeatures(true); // add all new features as visible
-    if (!firing) {
-      firing=true;
-      changeSupport.firePropertyChange("changeSupport",null,null);
-      firing=false;
+    synchronized (firing)
+    {
+        if (firing.equals(Boolean.FALSE)) {
+          firing=Boolean.TRUE;
+          findAllFeatures(true); // add all new features as visible
+          changeSupport.firePropertyChange("changeSupport",null,null);
+          firing=Boolean.FALSE;
+      }
     }
   }
   /**
@@ -463,8 +503,6 @@ public class FeatureRenderer
 
             if(!visible)
             {
-              System.out.println(features[index].featureGroup
-                                 +" not visible");
               index++;
               continue;
             }
@@ -496,7 +534,7 @@ public class FeatureRenderer
     updateRenderOrder(allfeatures);
     findingFeatures = false;
   }
-  protected boolean firing=false;
+  protected Boolean firing=Boolean.FALSE;
   /**
    * replaces the current renderOrder with the unordered features in allfeatures.
    * The ordering of any types in both renderOrder and allfeatures is preserved,