update author list in license for (JAL-826)
[jalview.git] / src / jalview / gui / FeatureRenderer.java
index 38d6f0c..8d194f3 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
  * 
  * This file is part of Jalview.
  * 
@@ -165,11 +165,37 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
 
   public void transferSettings(FeatureRenderer fr)
   {
-    this.renderOrder = fr.renderOrder;
-    this.featureGroups = fr.featureGroups;
-    this.featureColours = fr.featureColours;
-    this.transparency = fr.transparency;
-    this.featureOrder = fr.featureOrder;
+    FeatureRendererSettings frs = new FeatureRendererSettings(fr);
+    this.renderOrder = frs.renderOrder;
+    this.featureGroups = frs.featureGroups;
+    this.featureColours = frs.featureColours;
+    this.transparency = frs.transparency;
+    this.featureOrder = frs.featureOrder;
+    if (av != null && av!=fr.av)
+    {
+      // copy over the displayed feature settings
+      if (fr.av != null)
+      {
+        if (fr.av.featuresDisplayed != null)
+        {
+          // update display settings
+          if (av.featuresDisplayed == null)
+          {
+            av.featuresDisplayed = new Hashtable(fr.av.featuresDisplayed);
+          }
+          else
+          {
+            av.featuresDisplayed.clear();
+            Enumeration en = fr.av.featuresDisplayed.keys();
+            while (en.hasMoreElements())
+            {
+              av.featuresDisplayed.put(en.nextElement(), Boolean.TRUE);
+            }
+
+          }
+        }
+      }
+  }
   }
 
   BufferedImage offscreenImage;
@@ -185,7 +211,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
    * This is used by the Molecule Viewer and Overview to get the accurate
    * colourof the rendered sequence
    */
-  public int findFeatureColour(int initialCol, SequenceI seq, int column)
+  public synchronized int findFeatureColour(int initialCol, SequenceI seq, int column)
   {
     if (!av.showSequenceFeatures)
     {
@@ -229,7 +255,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     }
 
     currentColour = null;
-
+    // TODO: non-threadsafe - each rendering thread needs its own instance of the feature renderer - or this should be synchronized.
     offscreenRender = true;
 
     if (offscreenImage != null)
@@ -1096,7 +1122,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
 
     panel = new JPanel();
     panel.add(new JLabel("Description: ", JLabel.RIGHT));
-    description.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
+    description.setFont(JvSwingUtils.getTextAreaFont());
     description.setLineWrap(true);
     panel.add(new JScrollPane(description));