JAL-4353 re-used random color code
[jalview.git] / src / jalview / util / ColorUtils.java
index 60129fb..24128ea 100644 (file)
@@ -26,12 +26,14 @@ package jalview.util;
 
 import java.awt.Color;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Random;
 
 public class ColorUtils
 {
   private static final int MAX_CACHE_SIZE = 1729;
+
   /*
    * a cache for colours generated from text strings
    */
@@ -67,6 +69,18 @@ public class ColorUtils
   }
 
   /**
+   * 
+   * @return random color
+   */
+  public static final Color getARandomColor()
+  {
+
+    Color col = new Color((int) (Math.random() * 255),
+            (int) (Math.random() * 255), (int) (Math.random() * 255));
+    return col;
+  }
+
+  /**
    * Convert to Tk colour code format
    * 
    * @param colour
@@ -219,6 +233,12 @@ public class ColorUtils
     colour = colour.trim();
 
     Color col = null;
+
+    if ("random".equals(colour))
+    {
+      return generateRandomColor(null);
+    }
+
     try
     {
       int value = Integer.parseInt(colour, 16);
@@ -244,7 +264,8 @@ public class ColorUtils
           int b = Integer.parseInt(tokens[2].trim());
           col = new Color(r, g, b);
         }
-      } catch (Exception ex)
+      } catch (IllegalArgumentException ex) // IllegalArgumentException includes
+                                            // NumberFormatException
       {
         // non-numeric token or out of 0-255 range
       }
@@ -324,7 +345,7 @@ public class ColorUtils
       return null;
     }
     Color col = null;
-    name = name.toLowerCase();
+    name = name.toLowerCase(Locale.ROOT);
 
     // or make a static map; or use reflection on the field name
     switch (name)