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