setcolour in seqpanel now needs to know about conservation
[jalview.git] / src / jalview / gui / UserDefinedColours.java
1 package jalview.gui;\r
2 \r
3 import jalview.jbgui.GUserDefinedColours;\r
4 import javax.swing.*;\r
5 import java.awt.*;\r
6 import java.awt.event.*;\r
7 import javax.swing.event.*;\r
8 import jalview.schemes.*;\r
9 import java.io.*;\r
10 import java.util.*;\r
11 \r
12 \r
13 public class UserDefinedColours extends GUserDefinedColours implements ChangeListener\r
14 {\r
15 \r
16   SeqPanel seqPanel;\r
17   ColourSchemeI colourScheme;\r
18   JButton selectedButton;\r
19   Vector oldColours = new Vector();\r
20   JInternalFrame frame;\r
21 \r
22   public UserDefinedColours(JInternalFrame f, SeqPanel sp)\r
23   {\r
24     super();\r
25     colorChooser.getSelectionModel().addChangeListener(this);\r
26     seqPanel = sp;\r
27     frame = f;\r
28     colourScheme = seqPanel.getColourScheme();\r
29    // colourScheme.\r
30 \r
31     for(int i=0; i<20; i++)\r
32       makeButton(ResidueProperties.aa2Triplet.get( ResidueProperties.aa[i] )+"", ResidueProperties.aa[i]);\r
33 \r
34     makeButton("B","B");\r
35     makeButton("Z","Z");\r
36     makeButton("X","X");\r
37     makeButton("'.','-',' '", "-");\r
38 \r
39   }\r
40 \r
41  public void stateChanged(ChangeEvent evt)\r
42  {\r
43    if(selectedButton!=null)\r
44      selectedButton.setBackground( colorChooser.getColor() );\r
45  }\r
46 \r
47   public void colourButtonPressed(MouseEvent e)\r
48   {\r
49      selectedButton = (JButton)e.getSource();\r
50      colorChooser.setColor(selectedButton.getBackground());\r
51   }\r
52 \r
53   void makeButton(String label, String aa)\r
54   {\r
55     final JButton button = new JButton();\r
56     button.setBackground( colourScheme.findColour(null,aa,-1,null) );\r
57     oldColours.addElement( colourScheme.findColour(null,aa,-1,null) );\r
58     button.setText( label );\r
59     button.setFont(new java.awt.Font("Verdana", 1, 10));\r
60     button.addMouseListener(new java.awt.event.MouseAdapter()\r
61     {\r
62       public void mouseClicked(MouseEvent e)\r
63       {\r
64         colourButtonPressed(e);\r
65       }\r
66     });\r
67 \r
68     buttonPanel.add(button);\r
69   }\r
70 \r
71 \r
72   protected void okButton_actionPerformed(ActionEvent e)\r
73   {\r
74     applyButton_actionPerformed(null);\r
75     try{\r
76       frame.setClosed(true);\r
77     }catch(Exception ex){}\r
78   }\r
79 \r
80   protected void applyButton_actionPerformed(ActionEvent e)\r
81   {\r
82     UserColourScheme ucs = new UserColourScheme();\r
83     Color [] newColours = new Color[24];\r
84     for(int i=0; i<24; i++)\r
85     {\r
86           JButton button = (JButton)buttonPanel.getComponent(i);\r
87           newColours[i] = button.getBackground();\r
88     }\r
89 \r
90     ucs.setThreshold(0);\r
91     ucs.setColourScheme( newColours );\r
92     seqPanel.setColourScheme( ucs, false );\r
93   }\r
94 \r
95   protected void loadbutton_actionPerformed(ActionEvent e)\r
96   {\r
97     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.LAST_DIRECTORY);\r
98     chooser.setDialogTitle("Load colour scheme");\r
99     chooser.setToolTipText("Load");\r
100     int value = chooser.showOpenDialog(this);\r
101     if (value == JFileChooser.APPROVE_OPTION)\r
102     {\r
103       String choice = chooser.getSelectedFile().getPath();\r
104       jalview.bin.Cache.LAST_DIRECTORY = choice;\r
105 \r
106       try{\r
107         BufferedReader in = new BufferedReader(new FileReader(choice));\r
108         for(int i=0; i<24; i++)\r
109         {\r
110           JButton button = (JButton)buttonPanel.getComponent(i);\r
111           Color c = new Color(Integer.parseInt(in.readLine()));\r
112           button.setBackground(c);\r
113         }\r
114 \r
115       }\r
116       catch(Exception ex)\r
117       {}\r
118     }\r
119 \r
120   }\r
121 \r
122   protected void savebutton_actionPerformed(ActionEvent e)\r
123   {\r
124     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.LAST_DIRECTORY);\r
125     chooser.setDialogTitle("Save colour scheme");\r
126     chooser.setToolTipText("Save");\r
127     int value = chooser.showSaveDialog(this);\r
128     if (value == JFileChooser.APPROVE_OPTION)\r
129     {\r
130       String choice = chooser.getSelectedFile().getPath();\r
131       jalview.bin.Cache.LAST_DIRECTORY = choice;\r
132 \r
133       try{\r
134         PrintWriter out = new PrintWriter(new FileWriter(choice));\r
135         for(int i=0; i<24; i++)\r
136         {\r
137           JButton button = (JButton)buttonPanel.getComponent(i);\r
138           out.println(button.getBackground().getRGB() + "");\r
139         }\r
140 \r
141         out.close();\r
142       }\r
143       catch(Exception ex)\r
144       {ex.printStackTrace();}\r
145     }\r
146 \r
147   }\r
148 \r
149   protected void cancelButton_actionPerformed(ActionEvent e)\r
150   {\r
151     UserColourScheme ucs = new UserColourScheme();\r
152     Color [] newColours = new Color[24];\r
153     for(int i=0; i<24; i++)\r
154     {\r
155           newColours[i] = (Color)oldColours.elementAt(i);\r
156           buttonPanel.getComponent(i).setBackground(newColours[i]);\r
157     }\r
158 \r
159     ucs.setColourScheme( newColours );\r
160     seqPanel.setColourScheme( ucs, false );\r
161 \r
162   }\r
163 \r
164 \r
165 }\r