selection removed, now SelectionGroup does same job as id select and residue select
[jalview.git] / src / jalview / gui / UserDefinedColours.java
1 package jalview.gui;\r
2 \r
3 import jalview.jbgui.GUserDefinedColours;\r
4 import jalview.datamodel.*;\r
5 import javax.swing.*;\r
6 import java.awt.*;\r
7 import java.awt.event.*;\r
8 import javax.swing.event.*;\r
9 import jalview.schemes.*;\r
10 import java.io.*;\r
11 import java.util.*;\r
12 \r
13 \r
14 public class UserDefinedColours extends GUserDefinedColours implements ChangeListener\r
15 {\r
16 \r
17   AlignmentPanel ap;\r
18   SequenceGroup seqGroup;\r
19   JButton selectedButton;\r
20   Vector oldColours = new Vector();\r
21   ColourSchemeI oldColourScheme;\r
22   JInternalFrame frame;\r
23 \r
24 \r
25   public UserDefinedColours(JInternalFrame f, AlignmentPanel ap, SequenceGroup sg)\r
26   {\r
27     super();\r
28     colorChooser.getSelectionModel().addChangeListener(this);\r
29     this.ap = ap;\r
30     frame = f;\r
31     seqGroup = sg;\r
32 \r
33 \r
34       if (seqGroup != null)\r
35         oldColourScheme = seqGroup.cs;\r
36       else\r
37         oldColourScheme = ap.av.getGlobalColourScheme();\r
38 \r
39       for (int i = 0; i < 20; i++)\r
40         makeButton(ResidueProperties.aa2Triplet.get(ResidueProperties.aa[i]) +\r
41                    "", ResidueProperties.aa[i]);\r
42 \r
43       makeButton("B", "B");\r
44       makeButton("Z", "Z");\r
45       makeButton("X", "X");\r
46       makeButton("'.','-',' '", "-");\r
47 \r
48       if(jalview.bin.Cache.getProperty("USER_DEFINED_COLOUR")!=null)\r
49       {\r
50         loadColour(jalview.bin.Cache.getProperty("USER_DEFINED_COLOUR"));\r
51       }\r
52 \r
53 \r
54   }\r
55 \r
56  public void stateChanged(ChangeEvent evt)\r
57  {\r
58    if(selectedButton!=null)\r
59      selectedButton.setBackground( colorChooser.getColor() );\r
60  }\r
61 \r
62   public void colourButtonPressed(MouseEvent e)\r
63   {\r
64      selectedButton = (JButton)e.getSource();\r
65      colorChooser.setColor(selectedButton.getBackground());\r
66   }\r
67 \r
68   void makeButton(String label, String aa)\r
69   {\r
70     final JButton button = new JButton();\r
71     Color col = Color.white;\r
72 \r
73 \r
74     try{\r
75       col = oldColourScheme.findColour(aa, -1, null);\r
76     }catch(Exception ex){}\r
77 \r
78     button.setBackground(  col );\r
79     oldColours.addElement( col );\r
80     button.setText( label );\r
81     button.setForeground( col.darker().darker().darker() );\r
82     button.setFont(new java.awt.Font("Verdana", 1, 10));\r
83     button.addMouseListener(new java.awt.event.MouseAdapter()\r
84     {\r
85       public void mouseClicked(MouseEvent e)\r
86       {\r
87         colourButtonPressed(e);\r
88       }\r
89     });\r
90 \r
91     buttonPanel.add(button);\r
92   }\r
93 \r
94 \r
95   protected void okButton_actionPerformed(ActionEvent e)\r
96   {\r
97     applyButton_actionPerformed(null);\r
98     try{\r
99       frame.setClosed(true);\r
100     }catch(Exception ex){}\r
101   }\r
102 \r
103   protected void applyButton_actionPerformed(ActionEvent e)\r
104   {\r
105     UserColourScheme ucs = new UserColourScheme();\r
106     Color [] newColours = new Color[24];\r
107     for(int i=0; i<24; i++)\r
108     {\r
109           JButton button = (JButton)buttonPanel.getComponent(i);\r
110           newColours[i] = button.getBackground();\r
111     }\r
112 \r
113     ucs.setThreshold(0);\r
114     ucs.setColourScheme( newColours );\r
115 \r
116     if(seqGroup!=null)\r
117       seqGroup.cs = ucs;\r
118     else\r
119       ap.av.setGlobalColourScheme(ucs);\r
120 \r
121     ap.RefreshPanels();\r
122   }\r
123 \r
124   protected void loadbutton_actionPerformed(ActionEvent e)\r
125   {\r
126     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY"));\r
127     chooser.setFileView(new jalview.io.JalviewFileView());\r
128     chooser.setDialogTitle("Load colour scheme");\r
129     chooser.setToolTipText("Load");\r
130     int value = chooser.showOpenDialog(this);\r
131     if (value == JFileChooser.APPROVE_OPTION)\r
132     {\r
133       String choice = chooser.getSelectedFile().getPath();\r
134       jalview.bin.Cache.setProperty("LAST_DIRECTORY",  choice);\r
135       loadColour(choice);\r
136     }\r
137 \r
138   }\r
139 \r
140   void loadColour(String file)\r
141   {\r
142     try\r
143     {\r
144       BufferedReader in = new BufferedReader(new FileReader(file));\r
145       for (int i = 0; i < 24; i++)\r
146       {\r
147         JButton button = (JButton) buttonPanel.getComponent(i);\r
148         Color c = new Color(Integer.parseInt(in.readLine()));\r
149         button.setBackground(c);\r
150       }\r
151     }\r
152     catch (Exception ex)\r
153     {}\r
154 \r
155   }\r
156 \r
157   protected void savebutton_actionPerformed(ActionEvent e)\r
158   {\r
159     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY"));\r
160     chooser.setFileView(new jalview.io.JalviewFileView());\r
161     chooser.setDialogTitle("Save colour scheme");\r
162     chooser.setToolTipText("Save");\r
163     int value = chooser.showSaveDialog(this);\r
164     if (value == JFileChooser.APPROVE_OPTION)\r
165     {\r
166       String choice = chooser.getSelectedFile().getPath();\r
167       jalview.bin.Cache.setProperty("USER_DEFINED_COLOUR", choice);\r
168 \r
169       try{\r
170         PrintWriter out = new PrintWriter(new FileWriter(choice));\r
171         for(int i=0; i<24; i++)\r
172         {\r
173           JButton button = (JButton)buttonPanel.getComponent(i);\r
174           out.println(button.getBackground().getRGB() + "");\r
175         }\r
176 \r
177         out.close();\r
178       }\r
179       catch(Exception ex)\r
180       {ex.printStackTrace();}\r
181     }\r
182 \r
183   }\r
184 \r
185   protected void cancelButton_actionPerformed(ActionEvent e)\r
186   {\r
187     UserColourScheme ucs = new UserColourScheme();\r
188     Color [] newColours = new Color[24];\r
189     for(int i=0; i<24; i++)\r
190     {\r
191           newColours[i] = (Color)oldColours.elementAt(i);\r
192           buttonPanel.getComponent(i).setBackground(newColours[i]);\r
193     }\r
194 \r
195     ucs.setColourScheme( newColours );\r
196     if (seqGroup != null)\r
197       seqGroup.cs = ucs;\r
198     else\r
199       ap.av.setGlobalColourScheme(ucs);\r
200 \r
201     ap.RefreshPanels();\r
202 \r
203   }\r
204 \r
205 \r
206 }\r