FeatureRenderer synchronized featuresAdded method
authoramwaterhouse <Andrew Waterhouse>
Thu, 15 Jun 2006 12:53:37 +0000 (12:53 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 15 Jun 2006 12:53:37 +0000 (12:53 +0000)
src/jalview/gui/AlignmentPanel.java
src/jalview/gui/FeatureRenderer.java

index 4a7a05d..8e02a9c 100755 (executable)
@@ -250,8 +250,15 @@ public class AlignmentPanel extends GAlignmentPanel
 \r
   public void newFeatures(FeatureEvent evt)\r
   {\r
-    seqPanel.seqCanvas.fr.findAllFeatures();\r
-    repaint();\r
+    if (evt.getFeatures().length > 0)\r
+    {\r
+      seqPanel.seqCanvas.fr.featuresAdded();\r
+      repaint();\r
+    }\r
+    else\r
+    {\r
+      System.out.println("No Features found for "+evt.getDasSource().getNickname());\r
+    }\r
   }\r
 \r
   /**\r
index 628de4e..b06cace 100755 (executable)
@@ -54,6 +54,8 @@ public class FeatureRenderer
 \r
     String [] renderOrder;\r
 \r
+    boolean newFeatureAdded = false;\r
+\r
 \r
     /**\r
      * Creates a new FeatureRenderer object.\r
@@ -175,7 +177,9 @@ public class FeatureRenderer
         fm = g.getFontMetrics();\r
 \r
 \r
-      if (av.featuresDisplayed == null || renderOrder==null)\r
+      if (av.featuresDisplayed == null\r
+          || renderOrder==null\r
+          || newFeatureAdded)\r
        {\r
          findAllFeatures();\r
          if(av.featuresDisplayed.size()<1)\r
@@ -212,6 +216,7 @@ public class FeatureRenderer
       for(int renderIndex=0; renderIndex<renderOrder.length; renderIndex++)\r
        {\r
         type =  renderOrder[renderIndex];\r
+\r
         if(!av.featuresDisplayed.containsKey(type))\r
           continue;\r
 \r
@@ -333,12 +338,24 @@ public class FeatureRenderer
       }\r
     }\r
 \r
-    synchronized void findAllFeatures()\r
+    int count = 0;\r
+    synchronized public void featuresAdded()\r
     {\r
+      newFeatureAdded = true;\r
+      findAllFeatures();\r
+      newFeatureAdded = false;\r
+    }\r
+\r
+   synchronized void findAllFeatures()\r
+   {\r
       jalview.schemes.UserColourScheme ucs = new\r
           jalview.schemes.UserColourScheme();\r
 \r
-          av.featuresDisplayed = new Hashtable();\r
+      if(av.featuresDisplayed==null)\r
+        av.featuresDisplayed = new Hashtable();\r
+\r
+      av.featuresDisplayed.clear();\r
+\r
       Vector allfeatures = new Vector();\r
       for (int i = 0; i < av.alignment.getHeight(); i++)\r
       {\r