3 import jalview.jbgui.GUserDefinedColours;
\r
4 import jalview.datamodel.*;
\r
6 import javax.swing.*;
\r
8 import java.awt.event.*;
\r
9 import javax.swing.event.*;
\r
10 import jalview.schemes.*;
\r
15 public class UserDefinedColours extends GUserDefinedColours implements ChangeListener
\r
19 SequenceGroup seqGroup;
\r
20 JButton selectedButton;
\r
21 Vector oldColours = new Vector();
\r
22 ColourSchemeI oldColourScheme;
\r
23 JInternalFrame frame;
\r
26 public UserDefinedColours(AlignmentPanel ap, SequenceGroup sg)
\r
29 frame = new JInternalFrame();
\r
30 frame.setContentPane(this);
\r
31 Desktop.addInternalFrame(frame, "User Defined Colours", 450,530, false );
\r
32 if(System.getProperty("os.name").startsWith("Mac"))
\r
33 frame.setSize(450,560);
\r
36 frame.setTitle( frame.getTitle()+ " ("+sg.getName()+")");
\r
38 colorChooser.getSelectionModel().addChangeListener(this);
\r
44 if (seqGroup != null)
\r
45 oldColourScheme = seqGroup.cs;
\r
47 oldColourScheme = ap.av.getGlobalColourScheme();
\r
49 for (int i = 0; i < 20; i++)
\r
50 makeButton(ResidueProperties.aa2Triplet.get(ResidueProperties.aa[i]) +
\r
51 "", ResidueProperties.aa[i]);
\r
53 makeButton("B", "B");
\r
54 makeButton("Z", "Z");
\r
55 makeButton("X", "X");
\r
56 makeButton("Gap", "'.','-',' '");
\r
58 if(jalview.bin.Cache.getProperty("USER_DEFINED_COLOUR")!=null)
\r
60 loadColours(jalview.bin.Cache.getProperty("USER_DEFINED_COLOUR"));
\r
64 public void stateChanged(ChangeEvent evt)
\r
66 if(selectedButton!=null)
\r
67 selectedButton.setBackground( colorChooser.getColor() );
\r
70 public void colourButtonPressed(MouseEvent e)
\r
72 selectedButton = (JButton)e.getSource();
\r
73 colorChooser.setColor(selectedButton.getBackground());
\r
76 void makeButton(String label, String aa)
\r
78 final JButton button = new JButton();
\r
79 Color col = Color.white;
\r
83 col = oldColourScheme.findColour(aa, -1);
\r
84 }catch(Exception ex){}
\r
86 button.setBackground( col );
\r
87 oldColours.addElement( col );
\r
88 button.setText( label );
\r
89 button.setForeground( col.darker().darker().darker() );
\r
90 button.setFont(new java.awt.Font("Verdana", 1, 10));
\r
91 button.addMouseListener(new java.awt.event.MouseAdapter()
\r
93 public void mouseClicked(MouseEvent e)
\r
95 colourButtonPressed(e);
\r
99 buttonPanel.add(button, null);
\r
103 protected void okButton_actionPerformed(ActionEvent e)
\r
105 applyButton_actionPerformed(null);
\r
107 frame.setClosed(true);
\r
108 }catch(Exception ex){}
\r
111 protected void applyButton_actionPerformed(ActionEvent e)
\r
113 Color [] newColours = new Color[24];
\r
114 for(int i=0; i<24; i++)
\r
116 JButton button = (JButton)buttonPanel.getComponent(i);
\r
117 newColours[i] = button.getBackground();
\r
120 UserColourScheme ucs = new UserColourScheme(newColours);
\r
121 ucs.setThreshold(0);
\r
129 ap.alignFrame.changeColour(ucs);
\r
133 protected void loadbutton_actionPerformed(ActionEvent e)
\r
135 JalviewFileChooser chooser = new JalviewFileChooser(
\r
136 jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
\r
137 new String[]{"jc"},
\r
138 new String[]{"Jalview User Colours"},
\r
139 "Jalview User Colours");
\r
140 chooser.setFileView(new jalview.io.JalviewFileView());
\r
141 chooser.setDialogTitle("Load colour scheme");
\r
142 chooser.setToolTipText("Load");
\r
143 int value = chooser.showOpenDialog(this);
\r
144 if (value == JalviewFileChooser.APPROVE_OPTION)
\r
146 File choice = chooser.getSelectedFile();
\r
147 jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice.getParent());
\r
148 jalview.bin.Cache.setProperty("USER_DEFINED_COLOUR", choice.getPath());
\r
149 Color[] colors = loadColours(choice.getAbsolutePath());
\r
150 for (int i = 0; i < colors.length; i++)
\r
152 JButton button = (JButton) buttonPanel.getComponent(i);
\r
153 button.setBackground(colors[i]);
\r
159 public static UserColourScheme loadDefaultColours()
\r
161 if(jalview.bin.Cache.getProperty("USER_DEFINED_COLOUR")!=null)
\r
162 return loadDefaultColours(jalview.bin.Cache.getProperty("USER_DEFINED_COLOUR"));
\r
167 public static UserColourScheme loadDefaultColours(String file)
\r
169 UserColourScheme ucs = null;
\r
170 Color cols[] = loadColours(file);
\r
173 ucs = new UserColourScheme(cols);
\r
174 ucs.setThreshold(0);
\r
179 static Color [] loadColours(String file)
\r
181 Color [] newColours=null;
\r
184 InputStreamReader in = new InputStreamReader(
\r
185 new FileInputStream(file), "UTF-8");
\r
187 jalview.binding.JalviewUserColours ucs = new jalview.binding.JalviewUserColours();
\r
188 ucs = (jalview.binding.JalviewUserColours)ucs.unmarshal(in);
\r
190 newColours = new Color[ucs.getColourCount()];
\r
191 for (int i = 0; i < 24; i++)
\r
192 newColours[i] = new Color(Integer.parseInt(ucs.getColour(i).getRGB(), 16));
\r
195 catch (Exception ex)
\r
196 {System.out.println("Error loading UserColourFile "+file);}
\r
201 protected void savebutton_actionPerformed(ActionEvent e)
\r
203 JalviewFileChooser chooser = new JalviewFileChooser(
\r
204 jalview.bin.Cache.getProperty("LAST_DIRECTORY"),
\r
205 new String[]{"jc"},
\r
206 new String[]{"Jalview User Colours"},
\r
207 "Jalview User Colours");
\r
209 chooser.setFileView(new jalview.io.JalviewFileView());
\r
210 chooser.setDialogTitle("Save colour scheme");
\r
211 chooser.setToolTipText("Save");
\r
212 int value = chooser.showSaveDialog(this);
\r
213 if (value == JalviewFileChooser.APPROVE_OPTION)
\r
215 String choice = chooser.getSelectedFile().getPath();
\r
216 jalview.bin.Cache.setProperty("USER_DEFINED_COLOUR", choice);
\r
217 jalview.binding.JalviewUserColours ucs = new jalview.binding.JalviewUserColours();
\r
220 PrintWriter out = new PrintWriter(new OutputStreamWriter(
\r
221 new FileOutputStream(choice), "UTF-8"));
\r
222 for(int i=0; i<24; i++)
\r
224 JButton button = (JButton)buttonPanel.getComponent(i);
\r
225 jalview.binding.Colour col = new jalview.binding.Colour();
\r
226 col.setName(button.getText());
\r
227 col.setRGB( jalview.util.Format.getHexString( button.getBackground() ));
\r
228 ucs.addColour(col);
\r
234 catch(Exception ex)
\r
235 {ex.printStackTrace();}
\r
240 protected void cancelButton_actionPerformed(ActionEvent e)
\r
243 Color [] newColours = new Color[24];
\r
244 for(int i=0; i<24; i++)
\r
246 newColours[i] = (Color)oldColours.elementAt(i);
\r
247 buttonPanel.getComponent(i).setBackground(newColours[i]);
\r
250 UserColourScheme ucs = new UserColourScheme( newColours );
\r
252 if (seqGroup != null)
\r
255 ap.av.setGlobalColourScheme(ucs);
\r
260 frame.setClosed(true);
\r
261 }catch(Exception ex){}
\r