popup menu toggles between graduated colour and single colour feature style
[jalview.git] / src / jalview / appletgui / UserDefinedColours.java
index 5da1fbf..23a290f 100755 (executable)
@@ -52,7 +52,7 @@ public class UserDefinedColours extends Panel implements ActionListener,
 
   String originalLabel;
 
-  Color originalColour;
+  Object originalColour;
 
   int R = 0, G = 0, B = 0;
 
@@ -100,11 +100,26 @@ public class UserDefinedColours extends Panel implements ActionListener,
     setTargetColour(fr.colourPanel.getBackground());
     dialog.setVisible(true);
   }
+
   public UserDefinedColours(Component caller, Color col1, Frame alignframe)
   {
     this(caller, col1, alignframe, "Select Colour");
   }
-  public UserDefinedColours(Component caller, Color col1, Container alignframe, String title)
+
+  /**
+   * Makes a dialog to choose the colour
+   * 
+   * @param caller
+   *          - handles events
+   * @param col1
+   *          - original colour
+   * @param alignframe
+   *          - the parent Frame for the dialog
+   * @param title
+   *          - window title
+   */
+  public UserDefinedColours(Component caller, Color col1, Frame alignframe,
+          String title)
   {
     this.caller = caller;
     originalColour = col1;
@@ -114,10 +129,36 @@ public class UserDefinedColours extends Panel implements ActionListener,
     dialog.setVisible(true);
   }
 
+  /**
+   * feature colour chooser
+   * 
+   * @param caller
+   * @param label
+   * @param colour
+   */
   public UserDefinedColours(Object caller, String label, Color colour)
   {
+    this(caller, label, colour, colour);
+  }
+
+  /**
+   * feature colour chooser when changing style to single color
+   * 
+   * @param me
+   * @param type
+   * @param graduatedColor
+   */
+  public UserDefinedColours(FeatureSettings me, String type,
+          GraduatedColor graduatedColor)
+  {
+    this(me, type, graduatedColor, graduatedColor.getMaxColor());
+  }
+
+  private UserDefinedColours(Object caller, String label, Object ocolour,
+          Color colour)
+  {
     this.caller = caller;
-    originalColour = colour;
+    originalColour = ocolour;
     originalLabel = label;
     init();
     remove(buttonPanel);
@@ -136,12 +177,14 @@ public class UserDefinedColours extends Panel implements ActionListener,
     remove(buttonPanel);
     if (alignframe instanceof Frame)
     {
-      dialog = new Dialog((Frame)alignframe, title, true);
+      dialog = new Dialog((Frame) alignframe, title, true);
     }
-    else 
-    if (alignframe instanceof JVDialog){
-      dialog = new Dialog(((JVDialog)alignframe), title, true);
-    } else {
+    else
+    {
+      // if (alignframe instanceof JVDialog){
+      // // not 1.1 compatible!
+      // dialog = new Dialog(((JVDialog)alignframe), title, true);
+      // } else {
       throw new Error("Unsupported owner for User Colour scheme dialog.");
     }
 
@@ -332,14 +375,14 @@ public class UserDefinedColours extends Panel implements ActionListener,
   {
     final Button button = new Button();
     Color col = Color.white;
-    if (oldColourScheme!=null)
-    {
-    try
-    {
-      col = oldColourScheme.findColour(aa.charAt(0), -1);
-    } catch (Exception ex)
+    if (oldColourScheme != null)
     {
-    }
+      try
+      {
+        col = oldColourScheme.findColour(aa.charAt(0), -1);
+      } catch (Exception ex)
+      {
+      }
     }
     button.setBackground(col);
     oldColours.addElement(col);
@@ -398,11 +441,15 @@ public class UserDefinedColours extends Panel implements ActionListener,
       }
       else if (caller instanceof FeatureColourChooser)
       {
-        if (originalLabel.indexOf("inimum")>-1)
+        if (originalLabel.indexOf("inimum") > -1)
+        {
+          ((FeatureColourChooser) caller)
+                  .minColour_actionPerformed(getColor());
+        }
+        else
         {
-          ((FeatureColourChooser) caller).minColour_actionPerformed(getColor());
-        } else {
-          ((FeatureColourChooser) caller).maxColour_actionPerformed(getColor());
+          ((FeatureColourChooser) caller)
+                  .maxColour_actionPerformed(getColor());
         }
       }
 
@@ -459,12 +506,12 @@ public class UserDefinedColours extends Panel implements ActionListener,
         if (originalLabel.equals("Min Colour"))
         {
           ((AnnotationColourChooser) caller)
-                  .minColour_actionPerformed(originalColour);
+                  .minColour_actionPerformed((Color) originalColour);
         }
         else
         {
           ((AnnotationColourChooser) caller)
-                  .maxColour_actionPerformed(originalColour);
+                  .maxColour_actionPerformed((Color) originalColour);
         }
       }
       else if (caller instanceof FeatureRenderer)
@@ -475,11 +522,15 @@ public class UserDefinedColours extends Panel implements ActionListener,
 
       else if (caller instanceof FeatureColourChooser)
       {
-        if (originalLabel.indexOf("inimum")>-1)
+        if (originalLabel.indexOf("inimum") > -1)
+        {
+          ((FeatureColourChooser) caller)
+                  .minColour_actionPerformed((Color) originalColour);
+        }
+        else
         {
-          ((FeatureColourChooser) caller).minColour_actionPerformed(originalColour);
-        } else {
-          ((FeatureColourChooser) caller).maxColour_actionPerformed(originalColour);
+          ((FeatureColourChooser) caller)
+                  .maxColour_actionPerformed((Color) originalColour);
         }
       }
       if (dialog != null)