If mac, use the fillRoundRect
[jalview.git] / src / jalview / appletgui / UserDefinedColours.java
index 7cd0391..eb454d7 100755 (executable)
@@ -28,7 +28,7 @@ import jalview.datamodel.*;
 import jalview.schemes.*;\r
 \r
 public class UserDefinedColours\r
-    extends Panel\r
+    extends Panel implements ActionListener, AdjustmentListener\r
 {\r
 \r
   AlignmentPanel ap;\r
@@ -37,6 +37,11 @@ public class UserDefinedColours
   Vector oldColours = new Vector();\r
   ColourSchemeI oldColourScheme;\r
   Frame frame;\r
+  MCview.AppletPDBCanvas pdbcanvas;\r
+\r
+  Component caller;\r
+  String originalLabel;\r
+  Color originalColour;\r
 \r
   int R = 0, G = 0, B = 0;\r
 \r
@@ -48,20 +53,6 @@ public class UserDefinedColours
 \r
   public UserDefinedColours(AlignmentPanel ap, SequenceGroup sg)\r
   {\r
-    try {\r
-        jbInit();\r
-    } catch (Exception e) {\r
-        e.printStackTrace();\r
-      }\r
-    frame = new Frame();\r
-    frame.add(this);\r
-    jalview.bin.JalviewLite.addFrame(frame, "User defined colours", 420, 345);\r
-\r
-    if (sg != null)\r
-    {\r
-      frame.setTitle(frame.getTitle() + " (" + sg.getName() + ")");\r
-    }\r
-\r
     this.ap = ap;\r
     seqGroup = sg;\r
 \r
@@ -74,6 +65,77 @@ public class UserDefinedColours
       oldColourScheme = ap.av.getGlobalColourScheme();\r
     }\r
 \r
+    init();\r
+  }\r
+\r
+  public UserDefinedColours(MCview.AppletPDBCanvas pdb)\r
+  {\r
+    this.pdbcanvas = pdb;\r
+    init();\r
+  }\r
+\r
+  public UserDefinedColours(Component caller,\r
+                            String label,\r
+                            Color colour)\r
+  {\r
+    this.caller = caller;\r
+    originalColour = colour;\r
+    originalLabel = label;\r
+    init();\r
+    remove(buttonPanel);\r
+\r
+    setTargetColour(colour);\r
+\r
+    okcancelPanel.setBounds(new Rectangle(0, 113, 400, 35));\r
+    frame.setTitle("User Defined Colours - "+label);\r
+    frame.setSize(420, 200);\r
+  }\r
+\r
+  public void actionPerformed(ActionEvent evt)\r
+  {\r
+    if(evt.getSource()==okButton)\r
+     okButton_actionPerformed();\r
+   else if(evt.getSource()==applyButton)\r
+      applyButton_actionPerformed();\r
+   else if(evt.getSource()==cancelButton)\r
+     cancelButton_actionPerformed();\r
+   else if(evt.getSource()==rText)\r
+     rText_actionPerformed();\r
+   else if (evt.getSource() == gText)\r
+     gText_actionPerformed();\r
+   else if (evt.getSource() == bText)\r
+     bText_actionPerformed();\r
+}\r
+\r
+  public void adjustmentValueChanged(AdjustmentEvent evt)\r
+  {\r
+    if(evt.getSource()==rScroller)\r
+    rScroller_adjustmentValueChanged();\r
+  else if(evt.getSource()==gScroller)\r
+    gScroller_adjustmentValueChanged();\r
+  else if(evt.getSource()==bScroller)\r
+    bScroller_adjustmentValueChanged();\r
+}\r
+\r
+  void init()\r
+  {\r
+    try\r
+    {\r
+      jbInit();\r
+    }\r
+    catch (Exception e)\r
+    {\r
+      e.printStackTrace();\r
+    }\r
+    frame = new Frame();\r
+    frame.add(this);\r
+    jalview.bin.JalviewLite.addFrame(frame, "User defined colours", 420, 345);\r
+\r
+    if (seqGroup != null)\r
+    {\r
+      frame.setTitle(frame.getTitle() + " (" + seqGroup.getName() + ")");\r
+    }\r
+\r
     for (int i = 0; i < 20; i++)\r
     {\r
       makeButton(ResidueProperties.aa2Triplet.get(ResidueProperties.aa[i]) +\r
@@ -86,62 +148,60 @@ public class UserDefinedColours
     makeButton("Gap", "'.','-',' '");\r
 \r
     validate();\r
-\r
   }\r
-\r
-  protected void rText_actionPerformed(ActionEvent e)\r
+  protected void rText_actionPerformed()\r
   {\r
     try\r
     {\r
       int i = Integer.parseInt(rText.getText());\r
       rScroller.setValue(i);\r
-      rScroller_adjustmentValueChanged(null);\r
+      rScroller_adjustmentValueChanged();\r
     }\r
     catch (NumberFormatException ex)\r
     {}\r
   }\r
 \r
-  protected void gText_actionPerformed(ActionEvent e)\r
+  protected void gText_actionPerformed()\r
   {\r
     try\r
     {\r
       int i = Integer.parseInt(gText.getText());\r
       gScroller.setValue(i);\r
-      gScroller_adjustmentValueChanged(null);\r
+      gScroller_adjustmentValueChanged();\r
     }\r
     catch (NumberFormatException ex)\r
     {}\r
 \r
   }\r
 \r
-  protected void bText_actionPerformed(ActionEvent e)\r
+  protected void bText_actionPerformed()\r
   {\r
     try\r
     {\r
       int i = Integer.parseInt(bText.getText());\r
       bScroller.setValue(i);\r
-      bScroller_adjustmentValueChanged(null);\r
+      bScroller_adjustmentValueChanged();\r
     }\r
     catch (NumberFormatException ex)\r
     {}\r
 \r
   }\r
 \r
-  protected void rScroller_adjustmentValueChanged(AdjustmentEvent e)\r
+  protected void rScroller_adjustmentValueChanged()\r
   {\r
     R = rScroller.getValue();\r
     rText.setText(R + "");\r
     colourChanged();\r
   }\r
 \r
-  protected void gScroller_adjustmentValueChanged(AdjustmentEvent e)\r
+  protected void gScroller_adjustmentValueChanged()\r
   {\r
     G = gScroller.getValue();\r
     gText.setText(G + "");\r
     colourChanged();\r
   }\r
 \r
-  protected void bScroller_adjustmentValueChanged(AdjustmentEvent e)\r
+  protected void bScroller_adjustmentValueChanged()\r
   {\r
     B = bScroller.getValue();\r
     bText.setText(B + "");\r
@@ -161,10 +221,8 @@ public class UserDefinedColours
     }\r
   }\r
 \r
-  public void colourButtonPressed(MouseEvent e)\r
+  void setTargetColour(Color col)\r
   {\r
-    selectedButton = (Button) e.getSource();\r
-    Color col = selectedButton.getBackground();\r
     R = col.getRed();\r
     G = col.getGreen();\r
     B = col.getBlue();\r
@@ -174,10 +232,15 @@ public class UserDefinedColours
     rText.setText(R + "");\r
     gText.setText(G + "");\r
     bText.setText(B + "");\r
-\r
     colourChanged();\r
   }\r
 \r
+  public void colourButtonPressed(MouseEvent e)\r
+  {\r
+    selectedButton = (Button) e.getSource();\r
+    setTargetColour(selectedButton.getBackground());\r
+  }\r
+\r
   void makeButton(String label, String aa)\r
   {\r
     final Button button = new Button();\r
@@ -206,14 +269,31 @@ public class UserDefinedColours
     buttonPanel.add(button, null);\r
   }\r
 \r
-  protected void okButton_actionPerformed(ActionEvent e)\r
+  protected void okButton_actionPerformed()\r
   {\r
-    applyButton_actionPerformed(null);\r
+    applyButton_actionPerformed();\r
     frame.setVisible(false);\r
   }\r
 \r
-  protected void applyButton_actionPerformed(ActionEvent e)\r
+  protected void applyButton_actionPerformed()\r
   {\r
+    if (caller != null)\r
+    {\r
+      if(caller instanceof FeatureSettings)\r
+        ((FeatureSettings)caller).setUserColour\r
+            (originalLabel, new Color(R,G,B));\r
+      else if(caller instanceof AnnotationColourChooser)\r
+      {\r
+        if (originalLabel.equals("Min Colour"))\r
+          ( (AnnotationColourChooser) caller).minColour_actionPerformed\r
+              (new Color(R, G, B));\r
+        else\r
+          ( (AnnotationColourChooser) caller).maxColour_actionPerformed\r
+              (new Color(R, G, B));\r
+      }\r
+      return;\r
+    }\r
+\r
 \r
     Color[] newColours = new Color[24];\r
     for (int i = 0; i < 24; i++)\r
@@ -223,24 +303,49 @@ public class UserDefinedColours
     }\r
 \r
     UserColourScheme ucs = new UserColourScheme(newColours);\r
-    ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus());\r
+    if(ap!=null)\r
+      ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus());\r
 \r
-    if (seqGroup != null)\r
+    if(ap!=null)\r
     {\r
-      seqGroup.cs = ucs;\r
+      if (seqGroup != null)\r
+      {\r
+        seqGroup.cs = ucs;\r
+      }\r
+      else\r
+      {\r
+        ap.av.setGlobalColourScheme(ucs);\r
+      }\r
+      ap.seqPanel.seqCanvas.img = null;\r
+      ap.repaint();\r
     }\r
-    else\r
+    else if(pdbcanvas!=null)\r
     {\r
-      ap.av.setGlobalColourScheme(ucs);\r
+      pdbcanvas.pdb.setColours(ucs);\r
+      pdbcanvas.updateSeqColours();\r
     }\r
-\r
-    ap.seqPanel.seqCanvas.img = null;\r
-    ap.repaint();\r
   }\r
 \r
 \r
-  protected void cancelButton_actionPerformed(ActionEvent e)\r
+  protected void cancelButton_actionPerformed()\r
   {\r
+    if (caller != null)\r
+    {\r
+      if(caller instanceof FeatureSettings)\r
+        ((FeatureSettings)caller).setUserColour\r
+            (originalLabel, originalColour);\r
+      else if (caller instanceof AnnotationColourChooser)\r
+      {\r
+        if (originalLabel.equals("Min Colour"))\r
+          ( (AnnotationColourChooser) caller).minColour_actionPerformed\r
+              (originalColour);\r
+        else\r
+          ( (AnnotationColourChooser) caller).maxColour_actionPerformed\r
+              (originalColour);\r
+      }\r
+      frame.setVisible(false);\r
+      return;\r
+    }\r
 \r
     Color[] newColours = new Color[24];\r
     for (int i = 0; i < 24; i++)\r
@@ -251,24 +356,30 @@ public class UserDefinedColours
 \r
     UserColourScheme ucs = new UserColourScheme(newColours);\r
 \r
-    if (seqGroup != null)\r
+   if(ap!=null)\r
     {\r
-      seqGroup.cs = ucs;\r
+      if (seqGroup != null)\r
+      {\r
+        seqGroup.cs = ucs;\r
+      }\r
+      else\r
+      {\r
+        ap.av.setGlobalColourScheme(ucs);\r
+      }\r
+      ap.repaint();\r
     }\r
-    else\r
+    else if(pdbcanvas!=null)\r
     {\r
-      ap.av.setGlobalColourScheme(ucs);\r
+      pdbcanvas.pdb.setColours(ucs);\r
     }\r
 \r
-    ap.repaint();\r
-\r
     frame.setVisible(false);\r
   }\r
 \r
 \r
   protected Panel buttonPanel = new Panel();\r
   protected GridLayout gridLayout = new GridLayout();\r
-  Panel jPanel2 = new Panel();\r
+  Panel okcancelPanel = new Panel();\r
   protected Button okButton = new Button();\r
   protected Button applyButton = new Button();\r
   protected Button cancelButton = new Button();\r
@@ -290,27 +401,15 @@ public class UserDefinedColours
       gridLayout.setRows(4);\r
       okButton.setFont(new java.awt.Font("Verdana", 0, 11));\r
       okButton.setLabel("OK");\r
-      okButton.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  okButton_actionPerformed(e);\r
-              }\r
-          });\r
+      okButton.addActionListener(this);\r
       applyButton.setFont(new java.awt.Font("Verdana", 0, 11));\r
       applyButton.setLabel("Apply");\r
-      applyButton.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  applyButton_actionPerformed(e);\r
-              }\r
-          });\r
+      applyButton.addActionListener(this);\r
       cancelButton.setFont(new java.awt.Font("Verdana", 0, 11));\r
       cancelButton.setLabel("Cancel");\r
-      cancelButton.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  cancelButton_actionPerformed(e);\r
-              }\r
-          });\r
+      cancelButton.addActionListener(this);\r
       this.setBackground(new Color(212, 208, 223));\r
-      jPanel2.setBounds(new Rectangle(0, 265, 400, 35));\r
+      okcancelPanel.setBounds(new Rectangle(0, 265, 400, 35));\r
       buttonPanel.setBounds(new Rectangle(0, 123, 400, 142));\r
       rScroller.setMaximum(256);\r
       rScroller.setMinimum(0);\r
@@ -318,22 +417,14 @@ public class UserDefinedColours
       rScroller.setUnitIncrement(1);\r
   rScroller.setVisibleAmount(1);\r
   rScroller.setBounds(new Rectangle(36, 27, 119, 19));\r
-  rScroller.addAdjustmentListener(new java.awt.event.AdjustmentListener() {\r
-              public void adjustmentValueChanged(AdjustmentEvent e) {\r
-                  rScroller_adjustmentValueChanged(e);\r
-              }\r
-          });\r
+  rScroller.addAdjustmentListener(this);\r
   label1.setAlignment(Label.RIGHT);\r
   label1.setText("R");\r
   label1.setBounds(new Rectangle(19, 30, 16, 15));\r
   rText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));\r
   rText.setText("0        ");\r
   rText.setBounds(new Rectangle(156, 27, 53, 19));\r
-  rText.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  rText_actionPerformed(e);\r
-              }\r
-          });\r
+  rText.addActionListener(this);\r
   label4.setAlignment(Label.RIGHT);\r
   label4.setText("G");\r
   label4.setBounds(new Rectangle(15, 56, 20, 15));\r
@@ -343,19 +434,11 @@ public class UserDefinedColours
       gScroller.setUnitIncrement(1);\r
   gScroller.setVisibleAmount(1);\r
   gScroller.setBounds(new Rectangle(35, 52, 120, 20));\r
-  gScroller.addAdjustmentListener(new java.awt.event.AdjustmentListener() {\r
-              public void adjustmentValueChanged(AdjustmentEvent e) {\r
-                  gScroller_adjustmentValueChanged(e);\r
-              }\r
-          });\r
+  gScroller.addAdjustmentListener(this);\r
   gText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));\r
   gText.setText("0        ");\r
   gText.setBounds(new Rectangle(156, 52, 53, 20));\r
-  gText.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  gText_actionPerformed(e);\r
-              }\r
-          });\r
+  gText.addActionListener(this);\r
   label5.setAlignment(Label.RIGHT);\r
   label5.setText("B");\r
   label5.setBounds(new Rectangle(14, 82, 20, 15));\r
@@ -365,25 +448,17 @@ public class UserDefinedColours
       bScroller.setUnitIncrement(1);\r
   bScroller.setVisibleAmount(1);\r
   bScroller.setBounds(new Rectangle(35, 78, 120, 20));\r
-  bScroller.addAdjustmentListener(new java.awt.event.AdjustmentListener() {\r
-              public void adjustmentValueChanged(AdjustmentEvent e) {\r
-                  bScroller_adjustmentValueChanged(e);\r
-              }\r
-          });\r
+  bScroller.addAdjustmentListener(this);\r
   bText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));\r
   bText.setText("0        ");\r
   bText.setBounds(new Rectangle(157, 78, 52, 20));\r
-  bText.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  bText_actionPerformed(e);\r
-              }\r
-          });\r
+  bText.addActionListener(this);\r
   target.setBackground(Color.black);\r
       target.setBounds(new Rectangle(229, 26, 134, 79));\r
-      this.add(jPanel2, null);\r
-      jPanel2.add(okButton, null);\r
-      jPanel2.add(applyButton, null);\r
-      jPanel2.add(cancelButton, null);\r
+      this.add(okcancelPanel, null);\r
+      okcancelPanel.add(okButton, null);\r
+      okcancelPanel.add(applyButton, null);\r
+      okcancelPanel.add(cancelButton, null);\r
       this.add(buttonPanel, null);\r
   this.add(target, null);\r
   this.add(gScroller);\r