Jalview 2.8 Source Header
[jalview.git] / src / jalview / gui / FeatureRenderer.java
index d613a30..9df0b28 100755 (executable)
@@ -1,13 +1,13 @@
 /*
- * 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.8)
+ * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- * 
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
@@ -18,6 +18,7 @@
 package jalview.gui;
 
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 import java.awt.*;
 import java.awt.event.*;
@@ -53,11 +54,11 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
 
   int charOffset;
 
-  Hashtable featureColours = new Hashtable();
+  Map featureColours = new ConcurrentHashMap();
 
   // A higher level for grouping features of a
   // particular type
-  Hashtable featureGroups = new Hashtable();
+  Map featureGroups = new ConcurrentHashMap();
 
   // This is actually an Integer held in the hashtable,
   // Retrieved using the key feature type
@@ -85,13 +86,13 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
   {
     String[] renderOrder;
 
-    Hashtable featureGroups;
+    Map featureGroups;
 
-    Hashtable featureColours;
+    Map featureColours;
 
     float transparency;
 
-    Hashtable featureOrder;
+    Map featureOrder;
 
     public FeatureRendererSettings(String[] renderOrder,
             Hashtable featureGroups, Hashtable featureColours,
@@ -113,27 +114,27 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     public FeatureRendererSettings(FeatureRenderer fr)
     {
       renderOrder = null;
-      featureGroups = new Hashtable();
-      featureColours = new Hashtable();
-      featureOrder = new Hashtable();
+      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,
-                renderOrder.length);
+                fr.renderOrder.length);
       }
       if (fr.featureGroups != null)
       {
-        this.featureGroups = new Hashtable(fr.featureGroups);
+        this.featureGroups = new ConcurrentHashMap(fr.featureGroups);
       }
       if (fr.featureColours != null)
       {
-        this.featureColours = new Hashtable(fr.featureColours);
+        this.featureColours = new ConcurrentHashMap(fr.featureColours);
       }
-      Enumeration en = fr.featureColours.keys();
-      while (en.hasMoreElements())
+      Iterator en = fr.featureColours.keySet().iterator();
+      while (en.hasNext())
       {
-        Object next = en.nextElement();
+        Object next = en.next();
         Object val = featureColours.get(next);
         if (val instanceof GraduatedColor)
         {
@@ -144,7 +145,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
       this.transparency = fr.transparency;
       if (fr.featureOrder != null)
       {
-        this.featureOrder = new Hashtable(fr.featureOrder);
+        this.featureOrder = new ConcurrentHashMap(fr.featureOrder);
       }
     }
   }
@@ -171,7 +172,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     this.featureColours = frs.featureColours;
     this.transparency = frs.transparency;
     this.featureOrder = frs.featureOrder;
-    if (av != null && av!=fr.av)
+    if (av != null && av != fr.av)
     {
       // copy over the displayed feature settings
       if (fr.av != null)
@@ -195,7 +196,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
           }
         }
       }
-  }
+    }
   }
 
   BufferedImage offscreenImage;
@@ -211,7 +212,8 @@ 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 synchronized int findFeatureColour(int initialCol, SequenceI seq, int column)
+  public synchronized int findFeatureColour(int initialCol, SequenceI seq,
+          int column)
   {
     if (!av.showSequenceFeatures)
     {
@@ -255,7 +257,8 @@ 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.
+    // TODO: non-threadsafe - each rendering thread needs its own instance of
+    // the feature renderer - or this should be synchronized.
     offscreenRender = true;
 
     if (offscreenImage != null)
@@ -685,9 +688,10 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     {
       minmax = new Hashtable();
     }
-    for (int i = 0; i < av.alignment.getHeight(); i++)
+    AlignmentI alignment = av.getAlignment();
+    for (int i = 0; i < alignment.getHeight(); i++)
     {
-      SequenceFeature[] features = av.alignment.getSequenceAt(i)
+      SequenceFeature[] features = alignment.getSequenceAt(i)
               .getDatasetSequence().getSequenceFeatures();
 
       if (features == null)
@@ -1122,7 +1126,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));
 
@@ -1402,7 +1406,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
 
   }
 
-  Hashtable featureOrder = null;
+  Map featureOrder = null;
 
   /**
    * analogous to colour - store a normalized ordering for all feature types in