/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 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
import jalview.schemes.*;\r
\r
public class UserDefinedColours\r
- extends Panel\r
+ extends Panel implements ActionListener, AdjustmentListener\r
{\r
\r
AlignmentPanel ap;\r
ColourSchemeI oldColourScheme;\r
Frame frame;\r
MCview.AppletPDBCanvas pdbcanvas;\r
+ AppletJmol jmol;\r
+\r
+ Dialog dialog;\r
+ Object caller;\r
+ String originalLabel;\r
+ Color originalColour;\r
\r
int R = 0, G = 0, B = 0;\r
\r
init();\r
}\r
\r
+ public UserDefinedColours(AppletJmol jmol)\r
+ {\r
+ this.jmol = jmol;\r
+ init();\r
+ }\r
+\r
+ public UserDefinedColours(FeatureRenderer fr, Frame alignframe)\r
+ {\r
+ caller = fr;\r
+ originalColour = fr.colourPanel.getBackground();\r
+ originalLabel = "Feature Colour";\r
+ setForDialog("Select Feature Colour", alignframe);\r
+ setTargetColour(fr.colourPanel.getBackground());\r
+ dialog.setVisible(true);\r
+ }\r
+\r
+ public UserDefinedColours(Component caller,\r
+ Color col1,\r
+ Frame alignframe)\r
+ {\r
+ this.caller = caller;\r
+ originalColour = col1;\r
+ originalLabel = "Select Colour";\r
+ setForDialog("Select Colour", alignframe);\r
+ setTargetColour(col1);\r
+ dialog.setVisible(true);\r
+ }\r
+\r
+\r
+ public UserDefinedColours(Object 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
+ void setForDialog(String title, Frame alignframe)\r
+ {\r
+ init();\r
+ frame.setVisible(false);\r
+ remove(buttonPanel);\r
+ dialog = new Dialog(alignframe, title, true);\r
+\r
+ dialog.add(this);\r
+ this.setSize(400,123);\r
+ okcancelPanel.setBounds(new Rectangle(0, 123, 400, 35));\r
+ int height = 160 + alignframe.getInsets().top + getInsets().bottom;\r
+ int width = 400;\r
+\r
+ dialog.setBounds(alignframe.getBounds().x\r
+ + (alignframe.getSize().width - width) / 2,\r
+ alignframe.getBounds().y\r
+ + (alignframe.getSize().height - height) / 2,\r
+ width, height);\r
+\r
+ }\r
+\r
+ public void actionPerformed(ActionEvent evt)\r
+ {\r
+ if (evt.getSource() == okButton)\r
+ {\r
+ okButton_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == applyButton)\r
+ {\r
+ applyButton_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == cancelButton)\r
+ {\r
+ cancelButton_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == rText)\r
+ {\r
+ rText_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == gText)\r
+ {\r
+ gText_actionPerformed();\r
+ }\r
+ else if (evt.getSource() == bText)\r
+ {\r
+ bText_actionPerformed();\r
+ }\r
+ }\r
+\r
+ public void adjustmentValueChanged(AdjustmentEvent evt)\r
+ {\r
+ if (evt.getSource() == rScroller)\r
+ {\r
+ rScroller_adjustmentValueChanged();\r
+ }\r
+ else if (evt.getSource() == gScroller)\r
+ {\r
+ gScroller_adjustmentValueChanged();\r
+ }\r
+ else if (evt.getSource() == bScroller)\r
+ {\r
+ bScroller_adjustmentValueChanged();\r
+ }\r
+ }\r
+\r
void init()\r
{\r
try\r
\r
validate();\r
}\r
- protected void rText_actionPerformed(ActionEvent e)\r
+\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
}\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
+\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
+ 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
\r
try\r
{\r
- col = oldColourScheme.findColour(aa, -1);\r
+ col = oldColourScheme.findColour(aa.charAt(0), -1);\r
}\r
catch (Exception ex)\r
{}\r
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
+ if (dialog != null)\r
+ dialog.setVisible(false);\r
+\r
frame.setVisible(false);\r
}\r
\r
- protected void applyButton_actionPerformed(ActionEvent e)\r
+ public Color getColor()\r
{\r
+ return new Color(R, G, B);\r
+ }\r
+\r
+ protected void applyButton_actionPerformed()\r
+ {\r
+ if (caller != null)\r
+ {\r
+ if (caller instanceof FeatureSettings)\r
+ {\r
+ ( (FeatureSettings) caller).setUserColour\r
+ (originalLabel, getColor());\r
+ }\r
+ else if (caller instanceof AnnotationColourChooser)\r
+ {\r
+ if (originalLabel.equals("Min Colour"))\r
+ {\r
+ ( (AnnotationColourChooser) caller).minColour_actionPerformed\r
+ (getColor());\r
+ }\r
+ else\r
+ {\r
+ ( (AnnotationColourChooser) caller).maxColour_actionPerformed\r
+ (getColor());\r
+ }\r
+ }\r
+ else if(caller instanceof FeatureRenderer)\r
+ {\r
+ ((FeatureRenderer)caller).colourPanel.setBackground(getColor());\r
+ }\r
+\r
+ return;\r
+ }\r
+\r
Color[] newColours = new Color[24];\r
for (int i = 0; i < 24; i++)\r
{\r
}\r
\r
UserColourScheme ucs = new UserColourScheme(newColours);\r
- if(ap!=null)\r
+ if (ap != null)\r
+ {\r
ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus());\r
+ }\r
\r
- if(ap!=null)\r
+ if (ap != null)\r
{\r
if (seqGroup != null)\r
{\r
ap.av.setGlobalColourScheme(ucs);\r
}\r
ap.seqPanel.seqCanvas.img = null;\r
- ap.repaint();\r
+ ap.paintAlignment(true);\r
}\r
- else if(pdbcanvas!=null)\r
+ else if(jmol!=null)\r
{\r
- pdbcanvas.pdb.setColours(ucs);\r
- pdbcanvas.updateSeqColours();\r
+ jmol.setJalviewColourScheme(ucs);\r
+ }\r
+ else if (pdbcanvas != null)\r
+ {\r
+ pdbcanvas.setColours(ucs);\r
}\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
+ {\r
+ ( (FeatureSettings) caller).setUserColour\r
+ (originalLabel, originalColour);\r
+ }\r
+ else if (caller instanceof AnnotationColourChooser)\r
+ {\r
+ if (originalLabel.equals("Min Colour"))\r
+ {\r
+ ( (AnnotationColourChooser) caller).minColour_actionPerformed\r
+ (originalColour);\r
+ }\r
+ else\r
+ {\r
+ ( (AnnotationColourChooser) caller).maxColour_actionPerformed\r
+ (originalColour);\r
+ }\r
+ }\r
+ else if (caller instanceof FeatureRenderer)\r
+ {\r
+ ( (FeatureRenderer) caller).colourPanel.setBackground(originalColour);\r
+\r
+ }\r
+\r
+ if(dialog!=null)\r
+ dialog.setVisible(false);\r
+\r
+ frame.setVisible(false);\r
+ return;\r
+ }\r
\r
Color[] newColours = new Color[24];\r
for (int i = 0; i < 24; i++)\r
\r
UserColourScheme ucs = new UserColourScheme(newColours);\r
\r
- if(ap!=null)\r
+ if (ap != null)\r
{\r
if (seqGroup != null)\r
{\r
{\r
ap.av.setGlobalColourScheme(ucs);\r
}\r
- ap.repaint();\r
+ ap.paintAlignment(true);\r
}\r
- else if(pdbcanvas!=null)\r
+ else if(jmol !=null)\r
+ {\r
+ jmol.setJalviewColourScheme(ucs);\r
+ }\r
+ else if (pdbcanvas != null)\r
{\r
pdbcanvas.pdb.setColours(ucs);\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
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
+ private void jbInit()\r
+ throws Exception\r
+ {\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(this);\r
+ applyButton.setFont(new java.awt.Font("Verdana", 0, 11));\r
+ applyButton.setLabel("Apply");\r
+ applyButton.addActionListener(this);\r
+ cancelButton.setFont(new java.awt.Font("Verdana", 0, 11));\r
+ cancelButton.setLabel("Cancel");\r
+ cancelButton.addActionListener(this);\r
+ this.setBackground(new Color(212, 208, 223));\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
+ rScroller.setOrientation(0);\r
+ rScroller.setUnitIncrement(1);\r
+ rScroller.setVisibleAmount(1);\r
+ rScroller.setBounds(new Rectangle(36, 27, 119, 19));\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(this);\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(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(this);\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(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(this);\r
+ target.setBackground(Color.black);\r
+ target.setBounds(new Rectangle(229, 26, 134, 79));\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
+ 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