28f0474ed408d90f4aad0d3ed70c308cc5bd10c3
[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   JInternalFrame frame;\r
22 \r
23   public UserDefinedColours(JInternalFrame f, AlignmentPanel ap, SequenceGroup sg)\r
24   {\r
25     super();\r
26     colorChooser.getSelectionModel().addChangeListener(this);\r
27     this.ap = ap;\r
28     frame = f;\r
29    seqGroup = sg;\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     Color col = Color.white;\r
57     ColourSchemeI cs = null;\r
58     if(seqGroup!=null)\r
59       cs = seqGroup.cs;\r
60     else\r
61       cs = ap.av.getGlobalColourScheme();\r
62 \r
63     if(cs!=null)\r
64       col = cs.findColour( aa, -1, null);\r
65 \r
66     button.setBackground(  col );\r
67     oldColours.addElement( col );\r
68     button.setText( label );\r
69     button.setFont(new java.awt.Font("Verdana", 1, 10));\r
70     button.addMouseListener(new java.awt.event.MouseAdapter()\r
71     {\r
72       public void mouseClicked(MouseEvent e)\r
73       {\r
74         colourButtonPressed(e);\r
75       }\r
76     });\r
77 \r
78     buttonPanel.add(button);\r
79   }\r
80 \r
81 \r
82   protected void okButton_actionPerformed(ActionEvent e)\r
83   {\r
84     applyButton_actionPerformed(null);\r
85     try{\r
86       frame.setClosed(true);\r
87     }catch(Exception ex){}\r
88   }\r
89 \r
90   protected void applyButton_actionPerformed(ActionEvent e)\r
91   {\r
92     UserColourScheme ucs = new UserColourScheme();\r
93     Color [] newColours = new Color[24];\r
94     for(int i=0; i<24; i++)\r
95     {\r
96           JButton button = (JButton)buttonPanel.getComponent(i);\r
97           newColours[i] = button.getBackground();\r
98     }\r
99 \r
100     ucs.setThreshold(0);\r
101     ucs.setColourScheme( newColours );\r
102 \r
103     if(seqGroup!=null)\r
104       seqGroup.cs = ucs;\r
105     else\r
106       ap.av.setGlobalColourScheme(ucs);\r
107 \r
108     ap.RefreshPanels();\r
109   }\r
110 \r
111   protected void loadbutton_actionPerformed(ActionEvent e)\r
112   {\r
113     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.LAST_DIRECTORY);\r
114     chooser.setDialogTitle("Load colour scheme");\r
115     chooser.setToolTipText("Load");\r
116     int value = chooser.showOpenDialog(this);\r
117     if (value == JFileChooser.APPROVE_OPTION)\r
118     {\r
119       String choice = chooser.getSelectedFile().getPath();\r
120       jalview.bin.Cache.LAST_DIRECTORY = choice;\r
121 \r
122       try{\r
123         BufferedReader in = new BufferedReader(new FileReader(choice));\r
124         for(int i=0; i<24; i++)\r
125         {\r
126           JButton button = (JButton)buttonPanel.getComponent(i);\r
127           Color c = new Color(Integer.parseInt(in.readLine()));\r
128           button.setBackground(c);\r
129         }\r
130 \r
131       }\r
132       catch(Exception ex)\r
133       {}\r
134     }\r
135 \r
136   }\r
137 \r
138   protected void savebutton_actionPerformed(ActionEvent e)\r
139   {\r
140     JFileChooser chooser = new JFileChooser(jalview.bin.Cache.LAST_DIRECTORY);\r
141     chooser.setDialogTitle("Save colour scheme");\r
142     chooser.setToolTipText("Save");\r
143     int value = chooser.showSaveDialog(this);\r
144     if (value == JFileChooser.APPROVE_OPTION)\r
145     {\r
146       String choice = chooser.getSelectedFile().getPath();\r
147       jalview.bin.Cache.LAST_DIRECTORY = choice;\r
148 \r
149       try{\r
150         PrintWriter out = new PrintWriter(new FileWriter(choice));\r
151         for(int i=0; i<24; i++)\r
152         {\r
153           JButton button = (JButton)buttonPanel.getComponent(i);\r
154           out.println(button.getBackground().getRGB() + "");\r
155         }\r
156 \r
157         out.close();\r
158       }\r
159       catch(Exception ex)\r
160       {ex.printStackTrace();}\r
161     }\r
162 \r
163   }\r
164 \r
165   protected void cancelButton_actionPerformed(ActionEvent e)\r
166   {\r
167     UserColourScheme ucs = new UserColourScheme();\r
168     Color [] newColours = new Color[24];\r
169     for(int i=0; i<24; i++)\r
170     {\r
171           newColours[i] = (Color)oldColours.elementAt(i);\r
172           buttonPanel.getComponent(i).setBackground(newColours[i]);\r
173     }\r
174 \r
175     ucs.setColourScheme( newColours );\r
176     if (seqGroup != null)\r
177       seqGroup.cs = ucs;\r
178     else\r
179       ap.av.setGlobalColourScheme(ucs);\r
180 \r
181     ap.RefreshPanels();\r
182 \r
183   }\r
184 \r
185 \r
186 }\r