Create random colour only if Colour is not specified
authoramwaterhouse <Andrew Waterhouse>
Wed, 7 Jun 2006 12:57:38 +0000 (12:57 +0000)
committeramwaterhouse <Andrew Waterhouse>
Wed, 7 Jun 2006 12:57:38 +0000 (12:57 +0000)
src/jalview/gui/FeatureRenderer.java

index fdbd7eb..591fa79 100755 (executable)
@@ -332,7 +332,7 @@ public class FeatureRenderer
       }\r
     }\r
 \r
-    void findAllFeatures()\r
+    synchronized void findAllFeatures()\r
     {\r
       av.featuresDisplayed = new Hashtable();\r
       Vector allfeatures = new Vector();\r
@@ -349,9 +349,19 @@ public class FeatureRenderer
         {\r
           if (!av.featuresDisplayed.containsKey(features[index].getType()))\r
           {\r
-            av.featuresDisplayed.put(features[index].getType(),\r
-                                  new Integer( getColour(features[index].getType()).getRGB()) );\r
-            allfeatures.addElement(features[index].getType());\r
+            if(!(features[index].begin == 0 && features[index].end ==0))\r
+            {\r
+              // If beginning and end are 0, the feature is for the whole sequence\r
+              // and we don't want to render the feature in the normal way\r
+\r
+              if (getColour(features[index].getType()) == null)\r
+                createRandomColour(features[index].getType());\r
+\r
+              av.featuresDisplayed.put(features[index].getType(),\r
+                                       new Integer(getColour(features[index].\r
+                  getType()).getRGB()));\r
+              allfeatures.addElement(features[index].getType());\r
+            }\r
           }\r
           index++;\r
         }\r
@@ -369,9 +379,11 @@ public class FeatureRenderer
 \r
     public Color getColour(String featureType)\r
     {\r
-      return (Color)featureColours.get(featureType);\r
+      Color colour = (Color)featureColours.get(featureType);\r
+      return colour;\r
     }\r
 \r
+\r
     public void addNewFeature(String name, Color col, String group)\r
     {\r
 \r
@@ -470,4 +482,16 @@ public class FeatureRenderer
       featureColours.put("zinc finger region", new Color(0, 65, 255));\r
     }\r
 \r
+    public Color createRandomColour(String name)\r
+    {\r
+      Random rg = new Random(System.currentTimeMillis());\r
+      Color color = new Color( (int) (Math.random() * 255),\r
+                                         (int) (Math.random() * 255),\r
+                                         (int) (Math.random() * 255));\r
+      featureColours.put(name, color); // java 1.2 here ?\r
+\r
+      return color;\r
+    }\r
+\r
+\r
 }\r