2 * Jalview - A Sequence Alignment Editor and Viewer
\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
\r
5 * This program is free software; you can redistribute it and/or
\r
6 * modify it under the terms of the GNU General Public License
\r
7 * as published by the Free Software Foundation; either version 2
\r
8 * of the License, or (at your option) any later version.
\r
10 * This program is distributed in the hope that it will be useful,
\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 * GNU General Public License for more details.
\r
15 * You should have received a copy of the GNU General Public License
\r
16 * along with this program; if not, write to the Free Software
\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
\r
20 package jalview.appletgui;
\r
25 import java.awt.event.*;
\r
27 import jalview.datamodel.*;
\r
28 import jalview.schemes.*;
\r
30 public class UserDefinedColours
\r
35 SequenceGroup seqGroup;
\r
36 Button selectedButton;
\r
37 Vector oldColours = new Vector();
\r
38 ColourSchemeI oldColourScheme;
\r
41 int R = 0, G = 0, B = 0;
\r
43 public ColourSchemeI loadDefaultColours()
\r
45 // NOT IMPLEMENTED YET IN APPLET VERSION
\r
49 public UserDefinedColours(AlignmentPanel ap, SequenceGroup sg)
\r
53 } catch (Exception e) {
\r
54 e.printStackTrace();
\r
56 frame = new Frame();
\r
58 jalview.bin.JalviewLite.addFrame(frame, "User defined colours", 420, 345);
\r
62 frame.setTitle(frame.getTitle() + " (" + sg.getName() + ")");
\r
68 if (seqGroup != null)
\r
70 oldColourScheme = seqGroup.cs;
\r
74 oldColourScheme = ap.av.getGlobalColourScheme();
\r
77 for (int i = 0; i < 20; i++)
\r
79 makeButton(ResidueProperties.aa2Triplet.get(ResidueProperties.aa[i]) +
\r
80 "", ResidueProperties.aa[i]);
\r
83 makeButton("B", "B");
\r
84 makeButton("Z", "Z");
\r
85 makeButton("X", "X");
\r
86 makeButton("Gap", "'.','-',' '");
\r
92 protected void rText_actionPerformed(ActionEvent e)
\r
96 int i = Integer.parseInt(rText.getText());
\r
97 rScroller.setValue(i);
\r
98 rScroller_adjustmentValueChanged(null);
\r
100 catch (NumberFormatException ex)
\r
104 protected void gText_actionPerformed(ActionEvent e)
\r
108 int i = Integer.parseInt(gText.getText());
\r
109 gScroller.setValue(i);
\r
110 gScroller_adjustmentValueChanged(null);
\r
112 catch (NumberFormatException ex)
\r
117 protected void bText_actionPerformed(ActionEvent e)
\r
121 int i = Integer.parseInt(bText.getText());
\r
122 bScroller.setValue(i);
\r
123 bScroller_adjustmentValueChanged(null);
\r
125 catch (NumberFormatException ex)
\r
130 protected void rScroller_adjustmentValueChanged(AdjustmentEvent e)
\r
132 R = rScroller.getValue();
\r
133 rText.setText(R + "");
\r
137 protected void gScroller_adjustmentValueChanged(AdjustmentEvent e)
\r
139 G = gScroller.getValue();
\r
140 gText.setText(G + "");
\r
144 protected void bScroller_adjustmentValueChanged(AdjustmentEvent e)
\r
146 B = bScroller.getValue();
\r
147 bText.setText(B + "");
\r
151 public void colourChanged()
\r
153 Color col = new Color(R, G, B);
\r
154 target.setBackground(col);
\r
157 if (selectedButton != null)
\r
159 selectedButton.setBackground(col);
\r
160 selectedButton.repaint();
\r
164 public void colourButtonPressed(MouseEvent e)
\r
166 selectedButton = (Button) e.getSource();
\r
167 Color col = selectedButton.getBackground();
\r
169 G = col.getGreen();
\r
171 rScroller.setValue(R);
\r
172 gScroller.setValue(G);
\r
173 bScroller.setValue(B);
\r
174 rText.setText(R + "");
\r
175 gText.setText(G + "");
\r
176 bText.setText(B + "");
\r
181 void makeButton(String label, String aa)
\r
183 final Button button = new Button();
\r
184 Color col = Color.white;
\r
188 col = oldColourScheme.findColour(aa, -1);
\r
190 catch (Exception ex)
\r
193 button.setBackground(col);
\r
194 oldColours.addElement(col);
\r
195 button.setLabel(label);
\r
196 button.setForeground(col.darker().darker().darker());
\r
197 button.setFont(new java.awt.Font("Verdana", 1, 10));
\r
198 button.addMouseListener(new java.awt.event.MouseAdapter()
\r
200 public void mousePressed(MouseEvent e)
\r
202 colourButtonPressed(e);
\r
206 buttonPanel.add(button, null);
\r
209 protected void okButton_actionPerformed(ActionEvent e)
\r
211 applyButton_actionPerformed(null);
\r
212 frame.setVisible(false);
\r
215 protected void applyButton_actionPerformed(ActionEvent e)
\r
218 Color[] newColours = new Color[24];
\r
219 for (int i = 0; i < 24; i++)
\r
221 Button button = (Button) buttonPanel.getComponent(i);
\r
222 newColours[i] = button.getBackground();
\r
225 UserColourScheme ucs = new UserColourScheme(newColours);
\r
226 ucs.setThreshold(0, ap.av.getIgnoreGapsConsensus());
\r
228 if (seqGroup != null)
\r
234 ap.av.setGlobalColourScheme(ucs);
\r
237 ap.seqPanel.seqCanvas.img = null;
\r
242 protected void cancelButton_actionPerformed(ActionEvent e)
\r
245 Color[] newColours = new Color[24];
\r
246 for (int i = 0; i < 24; i++)
\r
248 newColours[i] = (Color) oldColours.elementAt(i);
\r
249 buttonPanel.getComponent(i).setBackground(newColours[i]);
\r
252 UserColourScheme ucs = new UserColourScheme(newColours);
\r
254 if (seqGroup != null)
\r
260 ap.av.setGlobalColourScheme(ucs);
\r
265 frame.setVisible(false);
\r
269 protected Panel buttonPanel = new Panel();
\r
270 protected GridLayout gridLayout = new GridLayout();
\r
271 Panel jPanel2 = new Panel();
\r
272 protected Button okButton = new Button();
\r
273 protected Button applyButton = new Button();
\r
274 protected Button cancelButton = new Button();
\r
275 protected Scrollbar rScroller = new Scrollbar();
\r
276 Label label1 = new Label();
\r
277 protected TextField rText = new TextField();
\r
278 Label label4 = new Label();
\r
279 protected Scrollbar gScroller = new Scrollbar();
\r
280 protected TextField gText = new TextField();
\r
281 Label label5 = new Label();
\r
282 protected Scrollbar bScroller = new Scrollbar();
\r
283 protected TextField bText = new TextField();
\r
284 protected Panel target = new Panel();
\r
286 private void jbInit() throws Exception {
\r
287 this.setLayout(null);
\r
288 buttonPanel.setLayout(gridLayout);
\r
289 gridLayout.setColumns(6);
\r
290 gridLayout.setRows(4);
\r
291 okButton.setFont(new java.awt.Font("Verdana", 0, 11));
\r
292 okButton.setLabel("OK");
\r
293 okButton.addActionListener(new java.awt.event.ActionListener() {
\r
294 public void actionPerformed(ActionEvent e) {
\r
295 okButton_actionPerformed(e);
\r
298 applyButton.setFont(new java.awt.Font("Verdana", 0, 11));
\r
299 applyButton.setLabel("Apply");
\r
300 applyButton.addActionListener(new java.awt.event.ActionListener() {
\r
301 public void actionPerformed(ActionEvent e) {
\r
302 applyButton_actionPerformed(e);
\r
305 cancelButton.setFont(new java.awt.Font("Verdana", 0, 11));
\r
306 cancelButton.setLabel("Cancel");
\r
307 cancelButton.addActionListener(new java.awt.event.ActionListener() {
\r
308 public void actionPerformed(ActionEvent e) {
\r
309 cancelButton_actionPerformed(e);
\r
312 this.setBackground(new Color(212, 208, 223));
\r
313 jPanel2.setBounds(new Rectangle(0, 265, 400, 35));
\r
314 buttonPanel.setBounds(new Rectangle(0, 123, 400, 142));
\r
315 rScroller.setMaximum(256);
\r
316 rScroller.setMinimum(0);
\r
317 rScroller.setOrientation(0);
\r
318 rScroller.setUnitIncrement(1);
\r
319 rScroller.setVisibleAmount(1);
\r
320 rScroller.setBounds(new Rectangle(36, 27, 119, 19));
\r
321 rScroller.addAdjustmentListener(new java.awt.event.AdjustmentListener() {
\r
322 public void adjustmentValueChanged(AdjustmentEvent e) {
\r
323 rScroller_adjustmentValueChanged(e);
\r
326 label1.setAlignment(Label.RIGHT);
\r
327 label1.setText("R");
\r
328 label1.setBounds(new Rectangle(19, 30, 16, 15));
\r
329 rText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));
\r
330 rText.setText("0 ");
\r
331 rText.setBounds(new Rectangle(156, 27, 53, 19));
\r
332 rText.addActionListener(new java.awt.event.ActionListener() {
\r
333 public void actionPerformed(ActionEvent e) {
\r
334 rText_actionPerformed(e);
\r
337 label4.setAlignment(Label.RIGHT);
\r
338 label4.setText("G");
\r
339 label4.setBounds(new Rectangle(15, 56, 20, 15));
\r
340 gScroller.setMaximum(256);
\r
341 gScroller.setMinimum(0);
\r
342 gScroller.setOrientation(0);
\r
343 gScroller.setUnitIncrement(1);
\r
344 gScroller.setVisibleAmount(1);
\r
345 gScroller.setBounds(new Rectangle(35, 52, 120, 20));
\r
346 gScroller.addAdjustmentListener(new java.awt.event.AdjustmentListener() {
\r
347 public void adjustmentValueChanged(AdjustmentEvent e) {
\r
348 gScroller_adjustmentValueChanged(e);
\r
351 gText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));
\r
352 gText.setText("0 ");
\r
353 gText.setBounds(new Rectangle(156, 52, 53, 20));
\r
354 gText.addActionListener(new java.awt.event.ActionListener() {
\r
355 public void actionPerformed(ActionEvent e) {
\r
356 gText_actionPerformed(e);
\r
359 label5.setAlignment(Label.RIGHT);
\r
360 label5.setText("B");
\r
361 label5.setBounds(new Rectangle(14, 82, 20, 15));
\r
362 bScroller.setMaximum(256);
\r
363 bScroller.setMinimum(0);
\r
364 bScroller.setOrientation(0);
\r
365 bScroller.setUnitIncrement(1);
\r
366 bScroller.setVisibleAmount(1);
\r
367 bScroller.setBounds(new Rectangle(35, 78, 120, 20));
\r
368 bScroller.addAdjustmentListener(new java.awt.event.AdjustmentListener() {
\r
369 public void adjustmentValueChanged(AdjustmentEvent e) {
\r
370 bScroller_adjustmentValueChanged(e);
\r
373 bText.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));
\r
374 bText.setText("0 ");
\r
375 bText.setBounds(new Rectangle(157, 78, 52, 20));
\r
376 bText.addActionListener(new java.awt.event.ActionListener() {
\r
377 public void actionPerformed(ActionEvent e) {
\r
378 bText_actionPerformed(e);
\r
381 target.setBackground(Color.black);
\r
382 target.setBounds(new Rectangle(229, 26, 134, 79));
\r
383 this.add(jPanel2, null);
\r
384 jPanel2.add(okButton, null);
\r
385 jPanel2.add(applyButton, null);
\r
386 jPanel2.add(cancelButton, null);
\r
387 this.add(buttonPanel, null);
\r
388 this.add(target, null);
\r
389 this.add(gScroller);
\r
390 this.add(rScroller);
\r
391 this.add(bScroller);
\r