updated to jalview 2.1 and begun ArchiveClient/VamsasClient/VamsasStore updates.
[jalview.git] / src / jalview / appletgui / UserDefinedColours.java
index 71bcaca..3a3c7b9 100755 (executable)
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
- */\r
-\r
-package jalview.appletgui;\r
-\r
-import java.util.*;\r
-\r
-import java.awt.*;\r
-import java.awt.event.*;\r
-\r
-import jalview.datamodel.*;\r
-import jalview.schemes.*;\r
-\r
-public class UserDefinedColours\r
-    extends Panel\r
-{\r
-\r
-  AlignmentPanel ap;\r
-  SequenceGroup seqGroup;\r
-  Button selectedButton;\r
-  Vector oldColours = new Vector();\r
-  ColourSchemeI oldColourScheme;\r
-  Frame frame;\r
-  MCview.AppletPDBCanvas pdbcanvas;\r
-\r
-  int R = 0, G = 0, B = 0;\r
-\r
-  public ColourSchemeI loadDefaultColours()\r
-  {\r
-    // NOT IMPLEMENTED YET IN APPLET VERSION\r
-    return null;\r
-  }\r
-\r
-  public UserDefinedColours(AlignmentPanel ap, SequenceGroup sg)\r
-  {\r
-    this.ap = ap;\r
-    seqGroup = sg;\r
-\r
-    if (seqGroup != null)\r
-    {\r
-      oldColourScheme = seqGroup.cs;\r
-    }\r
-    else\r
-    {\r
-      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
-  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
-                 "", ResidueProperties.aa[i]);\r
-    }\r
-\r
-    makeButton("B", "B");\r
-    makeButton("Z", "Z");\r
-    makeButton("X", "X");\r
-    makeButton("Gap", "'.','-',' '");\r
-\r
-    validate();\r
-  }\r
-  protected void rText_actionPerformed(ActionEvent e)\r
-  {\r
-    try\r
-    {\r
-      int i = Integer.parseInt(rText.getText());\r
-      rScroller.setValue(i);\r
-      rScroller_adjustmentValueChanged(null);\r
-    }\r
-    catch (NumberFormatException ex)\r
-    {}\r
-  }\r
-\r
-  protected void gText_actionPerformed(ActionEvent e)\r
-  {\r
-    try\r
-    {\r
-      int i = Integer.parseInt(gText.getText());\r
-      gScroller.setValue(i);\r
-      gScroller_adjustmentValueChanged(null);\r
-    }\r
-    catch (NumberFormatException ex)\r
-    {}\r
-\r
-  }\r
-\r
-  protected void bText_actionPerformed(ActionEvent e)\r
-  {\r
-    try\r
-    {\r
-      int i = Integer.parseInt(bText.getText());\r
-      bScroller.setValue(i);\r
-      bScroller_adjustmentValueChanged(null);\r
-    }\r
-    catch (NumberFormatException ex)\r
-    {}\r
-\r
-  }\r
-\r
-  protected void rScroller_adjustmentValueChanged(AdjustmentEvent e)\r
-  {\r
-    R = rScroller.getValue();\r
-    rText.setText(R + "");\r
-    colourChanged();\r
-  }\r
-\r
-  protected void gScroller_adjustmentValueChanged(AdjustmentEvent e)\r
-  {\r
-    G = gScroller.getValue();\r
-    gText.setText(G + "");\r
-    colourChanged();\r
-  }\r
-\r
-  protected void bScroller_adjustmentValueChanged(AdjustmentEvent e)\r
-  {\r
-    B = bScroller.getValue();\r
-    bText.setText(B + "");\r
-    colourChanged();\r
-  }\r
-\r
-  public void colourChanged()\r
-  {\r
-    Color col = new Color(R, G, B);\r
-    target.setBackground(col);\r
-    target.repaint();\r
-\r
-    if (selectedButton != null)\r
-    {\r
-      selectedButton.setBackground(col);\r
-      selectedButton.repaint();\r
-    }\r
-  }\r
-\r
-  public void colourButtonPressed(MouseEvent e)\r
-  {\r
-    selectedButton = (Button) e.getSource();\r
-    Color col = selectedButton.getBackground();\r
-    R = col.getRed();\r
-    G = col.getGreen();\r
-    B = col.getBlue();\r
-    rScroller.setValue(R);\r
-    gScroller.setValue(G);\r
-    bScroller.setValue(B);\r
-    rText.setText(R + "");\r
-    gText.setText(G + "");\r
-    bText.setText(B + "");\r
-\r
-    colourChanged();\r
-  }\r
-\r
-  void makeButton(String label, String aa)\r
-  {\r
-    final Button button = new Button();\r
-    Color col = Color.white;\r
-\r
-    try\r
-    {\r
-      col = oldColourScheme.findColour(aa, -1);\r
-    }\r
-    catch (Exception ex)\r
-    {}\r
-\r
-    button.setBackground(col);\r
-    oldColours.addElement(col);\r
-    button.setLabel(label);\r
-    button.setForeground(col.darker().darker().darker());\r
-    button.setFont(new java.awt.Font("Verdana", 1, 10));\r
-    button.addMouseListener(new java.awt.event.MouseAdapter()\r
-    {\r
-      public void mousePressed(MouseEvent e)\r
-      {\r
-        colourButtonPressed(e);\r
-      }\r
-    });\r
-\r
-    buttonPanel.add(button, null);\r
-  }\r
-\r
-  protected void okButton_actionPerformed(ActionEvent e)\r
-  {\r
-    applyButton_actionPerformed(null);\r
-    frame.setVisible(false);\r
-  }\r
-\r
-  protected void applyButton_actionPerformed(ActionEvent e)\r
-  {\r
-    Color[] newColours = new Color[24];\r
-    for (int i = 0; i < 24; i++)\r
-    {\r
-      Button button = (Button) buttonPanel.getComponent(i);\r
-      newColours[i] = button.getBackground();\r
-    }\r
-\r
-    UserColourScheme ucs = new UserColourScheme(newColours);\r
-    if(ap!=null)\r
-      ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus());\r
-\r
-    if(ap!=null)\r
-    {\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 if(pdbcanvas!=null)\r
-    {\r
-      pdbcanvas.pdb.setColours(ucs);\r
-      pdbcanvas.updateSeqColours();\r
-    }\r
-  }\r
-\r
-\r
-  protected void cancelButton_actionPerformed(ActionEvent e)\r
-  {\r
-\r
-    Color[] newColours = new Color[24];\r
-    for (int i = 0; i < 24; i++)\r
-    {\r
-      newColours[i] = (Color) oldColours.elementAt(i);\r
-      buttonPanel.getComponent(i).setBackground(newColours[i]);\r
-    }\r
-\r
-    UserColourScheme ucs = new UserColourScheme(newColours);\r
-\r
-   if(ap!=null)\r
-    {\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 if(pdbcanvas!=null)\r
-    {\r
-      pdbcanvas.pdb.setColours(ucs);\r
-    }\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
-  protected Button okButton = new Button();\r
-  protected Button applyButton = new Button();\r
-  protected Button cancelButton = new Button();\r
-  protected Scrollbar rScroller = new Scrollbar();\r
-  Label label1 = new Label();\r
-  protected TextField rText = new TextField();\r
-  Label label4 = new Label();\r
-  protected Scrollbar gScroller = new Scrollbar();\r
-  protected TextField gText = new TextField();\r
-  Label label5 = new Label();\r
-  protected Scrollbar bScroller = new Scrollbar();\r
-  protected TextField bText = new TextField();\r
-  protected Panel target = new Panel();\r
-\r
-  private void jbInit() throws Exception {\r
-      this.setLayout(null);\r
-      buttonPanel.setLayout(gridLayout);\r
-      gridLayout.setColumns(6);\r
-      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
-      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
-      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
-      this.setBackground(new Color(212, 208, 223));\r
-      jPanel2.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
-      rScroller.setOrientation(0);\r
-      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
-  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
-  label4.setAlignment(Label.RIGHT);\r
-  label4.setText("G");\r
-  label4.setBounds(new Rectangle(15, 56, 20, 15));\r
-  gScroller.setMaximum(256);\r
-      gScroller.setMinimum(0);\r
-      gScroller.setOrientation(0);\r
-      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
-  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
-  label5.setAlignment(Label.RIGHT);\r
-  label5.setText("B");\r
-  label5.setBounds(new Rectangle(14, 82, 20, 15));\r
-  bScroller.setMaximum(256);\r
-      bScroller.setMinimum(0);\r
-      bScroller.setOrientation(0);\r
-      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
-  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
-  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(buttonPanel, null);\r
-  this.add(target, null);\r
-  this.add(gScroller);\r
-  this.add(rScroller);\r
-  this.add(bScroller);\r
-  this.add(label5);\r
-  this.add(label4);\r
-  this.add(label1);\r
-  this.add(gText);\r
-  this.add(rText);\r
-  this.add(bText);\r
-}\r
-\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer
+ * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ */
+
+package jalview.appletgui;
+
+import java.util.*;
+
+import java.awt.*;
+import java.awt.event.*;
+
+import jalview.datamodel.*;
+import jalview.schemes.*;
+
+public class UserDefinedColours
+    extends Panel implements ActionListener, AdjustmentListener
+{
+
+  AlignmentPanel ap;
+  SequenceGroup seqGroup;
+  Button selectedButton;
+  Vector oldColours = new Vector();
+  ColourSchemeI oldColourScheme;
+  Frame frame;
+  MCview.AppletPDBCanvas pdbcanvas;
+
+  Component caller;
+  String originalLabel;
+  Color originalColour;
+
+  int R = 0, G = 0, B = 0;
+
+  public ColourSchemeI loadDefaultColours()
+  {
+    // NOT IMPLEMENTED YET IN APPLET VERSION
+    return null;
+  }
+
+  public UserDefinedColours(AlignmentPanel ap, SequenceGroup sg)
+  {
+    this.ap = ap;
+    seqGroup = sg;
+
+    if (seqGroup != null)
+    {
+      oldColourScheme = seqGroup.cs;
+    }
+    else
+    {
+      oldColourScheme = ap.av.getGlobalColourScheme();
+    }
+
+    init();
+  }
+
+  public UserDefinedColours(MCview.AppletPDBCanvas pdb)
+  {
+    this.pdbcanvas = pdb;
+    init();
+  }
+
+  public UserDefinedColours(Component caller,
+                            String label,
+                            Color colour)
+  {
+    this.caller = caller;
+    originalColour = colour;
+    originalLabel = label;
+    init();
+    remove(buttonPanel);
+
+    setTargetColour(colour);
+
+    okcancelPanel.setBounds(new Rectangle(0, 113, 400, 35));
+    frame.setTitle("User Defined Colours - "+label);
+    frame.setSize(420, 200);
+  }
+
+  public void actionPerformed(ActionEvent evt)
+  {
+    if(evt.getSource()==okButton)
+     okButton_actionPerformed();
+   else if(evt.getSource()==applyButton)
+      applyButton_actionPerformed();
+   else if(evt.getSource()==cancelButton)
+     cancelButton_actionPerformed();
+   else if(evt.getSource()==rText)
+     rText_actionPerformed();
+   else if (evt.getSource() == gText)
+     gText_actionPerformed();
+   else if (evt.getSource() == bText)
+     bText_actionPerformed();
+}
+
+  public void adjustmentValueChanged(AdjustmentEvent evt)
+  {
+    if(evt.getSource()==rScroller)
+    rScroller_adjustmentValueChanged();
+  else if(evt.getSource()==gScroller)
+    gScroller_adjustmentValueChanged();
+  else if(evt.getSource()==bScroller)
+    bScroller_adjustmentValueChanged();
+}
+
+  void init()
+  {
+    try
+    {
+      jbInit();
+    }
+    catch (Exception e)
+    {
+      e.printStackTrace();
+    }
+    frame = new Frame();
+    frame.add(this);
+    jalview.bin.JalviewLite.addFrame(frame, "User defined colours", 420, 345);
+
+    if (seqGroup != null)
+    {
+      frame.setTitle(frame.getTitle() + " (" + seqGroup.getName() + ")");
+    }
+
+    for (int i = 0; i < 20; i++)
+    {
+      makeButton(ResidueProperties.aa2Triplet.get(ResidueProperties.aa[i]) +
+                 "", ResidueProperties.aa[i]);
+    }
+
+    makeButton("B", "B");
+    makeButton("Z", "Z");
+    makeButton("X", "X");
+    makeButton("Gap", "'.','-',' '");
+
+    validate();
+  }
+  protected void rText_actionPerformed()
+  {
+    try
+    {
+      int i = Integer.parseInt(rText.getText());
+      rScroller.setValue(i);
+      rScroller_adjustmentValueChanged();
+    }
+    catch (NumberFormatException ex)
+    {}
+  }
+
+  protected void gText_actionPerformed()
+  {
+    try
+    {
+      int i = Integer.parseInt(gText.getText());
+      gScroller.setValue(i);
+      gScroller_adjustmentValueChanged();
+    }
+    catch (NumberFormatException ex)
+    {}
+
+  }
+
+  protected void bText_actionPerformed()
+  {
+    try
+    {
+      int i = Integer.parseInt(bText.getText());
+      bScroller.setValue(i);
+      bScroller_adjustmentValueChanged();
+    }
+    catch (NumberFormatException ex)
+    {}
+
+  }
+
+  protected void rScroller_adjustmentValueChanged()
+  {
+    R = rScroller.getValue();
+    rText.setText(R + "");
+    colourChanged();
+  }
+
+  protected void gScroller_adjustmentValueChanged()
+  {
+    G = gScroller.getValue();
+    gText.setText(G + "");
+    colourChanged();
+  }
+
+  protected void bScroller_adjustmentValueChanged()
+  {
+    B = bScroller.getValue();
+    bText.setText(B + "");
+    colourChanged();
+  }
+
+  public void colourChanged()
+  {
+    Color col = new Color(R, G, B);
+    target.setBackground(col);
+    target.repaint();
+
+    if (selectedButton != null)
+    {
+      selectedButton.setBackground(col);
+      selectedButton.repaint();
+    }
+  }
+
+  void setTargetColour(Color col)
+  {
+    R = col.getRed();
+    G = col.getGreen();
+    B = col.getBlue();
+    rScroller.setValue(R);
+    gScroller.setValue(G);
+    bScroller.setValue(B);
+    rText.setText(R + "");
+    gText.setText(G + "");
+    bText.setText(B + "");
+    colourChanged();
+  }
+
+  public void colourButtonPressed(MouseEvent e)
+  {
+    selectedButton = (Button) e.getSource();
+    setTargetColour(selectedButton.getBackground());
+  }
+
+  void makeButton(String label, String aa)
+  {
+    final Button button = new Button();
+    Color col = Color.white;
+
+    try
+    {
+      col = oldColourScheme.findColour(aa, -1);
+    }
+    catch (Exception ex)
+    {}
+
+    button.setBackground(col);
+    oldColours.addElement(col);
+    button.setLabel(label);
+    button.setForeground(col.darker().darker().darker());
+    button.setFont(new java.awt.Font("Verdana", 1, 10));
+    button.addMouseListener(new java.awt.event.MouseAdapter()
+    {
+      public void mousePressed(MouseEvent e)
+      {
+        colourButtonPressed(e);
+      }
+    });
+
+    buttonPanel.add(button, null);
+  }
+
+  protected void okButton_actionPerformed()
+  {
+    applyButton_actionPerformed();
+    frame.setVisible(false);
+  }
+
+  protected void applyButton_actionPerformed()
+  {
+    if (caller != null)
+    {
+      if(caller instanceof FeatureSettings)
+        ((FeatureSettings)caller).setUserColour
+            (originalLabel, new Color(R,G,B));
+      else if(caller instanceof AnnotationColourChooser)
+      {
+        if (originalLabel.equals("Min Colour"))
+          ( (AnnotationColourChooser) caller).minColour_actionPerformed
+              (new Color(R, G, B));
+        else
+          ( (AnnotationColourChooser) caller).maxColour_actionPerformed
+              (new Color(R, G, B));
+      }
+      return;
+    }
+
+
+    Color[] newColours = new Color[24];
+    for (int i = 0; i < 24; i++)
+    {
+      Button button = (Button) buttonPanel.getComponent(i);
+      newColours[i] = button.getBackground();
+    }
+
+    UserColourScheme ucs = new UserColourScheme(newColours);
+    if(ap!=null)
+      ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus());
+
+    if(ap!=null)
+    {
+      if (seqGroup != null)
+      {
+        seqGroup.cs = ucs;
+      }
+      else
+      {
+        ap.av.setGlobalColourScheme(ucs);
+      }
+      ap.seqPanel.seqCanvas.img = null;
+      ap.repaint();
+    }
+    else if(pdbcanvas!=null)
+    {
+      pdbcanvas.pdb.setColours(ucs);
+      pdbcanvas.updateSeqColours();
+    }
+  }
+
+
+  protected void cancelButton_actionPerformed()
+  {
+    if (caller != null)
+    {
+      if(caller instanceof FeatureSettings)
+        ((FeatureSettings)caller).setUserColour
+            (originalLabel, originalColour);
+      else if (caller instanceof AnnotationColourChooser)
+      {
+        if (originalLabel.equals("Min Colour"))
+          ( (AnnotationColourChooser) caller).minColour_actionPerformed
+              (originalColour);
+        else
+          ( (AnnotationColourChooser) caller).maxColour_actionPerformed
+              (originalColour);
+      }
+      frame.setVisible(false);
+      return;
+    }
+
+    Color[] newColours = new Color[24];
+    for (int i = 0; i < 24; i++)
+    {
+      newColours[i] = (Color) oldColours.elementAt(i);
+      buttonPanel.getComponent(i).setBackground(newColours[i]);
+    }
+
+    UserColourScheme ucs = new UserColourScheme(newColours);
+
+   if(ap!=null)
+    {
+      if (seqGroup != null)
+      {
+        seqGroup.cs = ucs;
+      }
+      else
+      {
+        ap.av.setGlobalColourScheme(ucs);
+      }
+      ap.repaint();
+    }
+    else if(pdbcanvas!=null)
+    {
+      pdbcanvas.pdb.setColours(ucs);
+    }
+
+    frame.setVisible(false);
+  }
+
+
+  protected Panel buttonPanel = new Panel();
+  protected GridLayout gridLayout = new GridLayout();
+  Panel okcancelPanel = new Panel();
+  protected Button okButton = new Button();
+  protected Button applyButton = new Button();
+  protected Button cancelButton = new Button();
+  protected Scrollbar rScroller = new Scrollbar();
+  Label label1 = new Label();
+  protected TextField rText = new TextField();
+  Label label4 = new Label();
+  protected Scrollbar gScroller = new Scrollbar();
+  protected TextField gText = new TextField();
+  Label label5 = new Label();
+  protected Scrollbar bScroller = new Scrollbar();
+  protected TextField bText = new TextField();
+  protected Panel target = new Panel();
+
+  private void jbInit() throws Exception {
+      this.setLayout(null);
+      buttonPanel.setLayout(gridLayout);
+      gridLayout.setColumns(6);
+      gridLayout.setRows(4);
+      okButton.setFont(new java.awt.Font("Verdana", 0, 11));
+      okButton.setLabel("OK");
+      okButton.addActionListener(this);
+      applyButton.setFont(new java.awt.Font("Verdana", 0, 11));
+      applyButton.setLabel("Apply");
+      applyButton.addActionListener(this);
+      cancelButton.setFont(new java.awt.Font("Verdana", 0, 11));
+      cancelButton.setLabel("Cancel");
+      cancelButton.addActionListener(this);
+      this.setBackground(new Color(212, 208, 223));
+      okcancelPanel.setBounds(new Rectangle(0, 265, 400, 35));
+      buttonPanel.setBounds(new Rectangle(0, 123, 400, 142));
+      rScroller.setMaximum(256);
+      rScroller.setMinimum(0);
+      rScroller.setOrientation(0);
+      rScroller.setUnitIncrement(1);
+  rScroller.setVisibleAmount(1);
+  rScroller.setBounds(new Rectangle(36, 27, 119, 19));
+  rScroller.addAdjustmentListener(this);
+  label1.setAlignment(Label.RIGHT);
+  label1.setText("R");
+  label1.setBounds(new Rectangle(19, 30, 16, 15));
+  rText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));
+  rText.setText("0        ");
+  rText.setBounds(new Rectangle(156, 27, 53, 19));
+  rText.addActionListener(this);
+  label4.setAlignment(Label.RIGHT);
+  label4.setText("G");
+  label4.setBounds(new Rectangle(15, 56, 20, 15));
+  gScroller.setMaximum(256);
+      gScroller.setMinimum(0);
+      gScroller.setOrientation(0);
+      gScroller.setUnitIncrement(1);
+  gScroller.setVisibleAmount(1);
+  gScroller.setBounds(new Rectangle(35, 52, 120, 20));
+  gScroller.addAdjustmentListener(this);
+  gText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));
+  gText.setText("0        ");
+  gText.setBounds(new Rectangle(156, 52, 53, 20));
+  gText.addActionListener(this);
+  label5.setAlignment(Label.RIGHT);
+  label5.setText("B");
+  label5.setBounds(new Rectangle(14, 82, 20, 15));
+  bScroller.setMaximum(256);
+      bScroller.setMinimum(0);
+      bScroller.setOrientation(0);
+      bScroller.setUnitIncrement(1);
+  bScroller.setVisibleAmount(1);
+  bScroller.setBounds(new Rectangle(35, 78, 120, 20));
+  bScroller.addAdjustmentListener(this);
+  bText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));
+  bText.setText("0        ");
+  bText.setBounds(new Rectangle(157, 78, 52, 20));
+  bText.addActionListener(this);
+  target.setBackground(Color.black);
+      target.setBounds(new Rectangle(229, 26, 134, 79));
+      this.add(okcancelPanel, null);
+      okcancelPanel.add(okButton, null);
+      okcancelPanel.add(applyButton, null);
+      okcancelPanel.add(cancelButton, null);
+      this.add(buttonPanel, null);
+  this.add(target, null);
+  this.add(gScroller);
+  this.add(rScroller);
+  this.add(bScroller);
+  this.add(label5);
+  this.add(label4);
+  this.add(label1);
+  this.add(gText);
+  this.add(rText);
+  this.add(bText);
+}
+
+}