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