1b2b06927d4b8412657771a634f93b167a06a75d
[jalview.git] / src / jalview / jbgui / GUserDefinedColours.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.jbgui;
22
23 import jalview.bin.Jalview;
24 import jalview.gui.JvSwingUtils;
25 import jalview.util.MessageManager;
26
27 import java.awt.BorderLayout;
28 import java.awt.Color;
29 import java.awt.Dimension;
30 import java.awt.FlowLayout;
31 import java.awt.Font;
32 import java.awt.GridBagLayout;
33 import java.awt.GridLayout;
34 import java.awt.event.ActionEvent;
35 import java.awt.event.ActionListener;
36 import java.util.ArrayList;
37 import java.util.List;
38
39 import javax.swing.JButton;
40 import javax.swing.JCheckBox;
41 import javax.swing.JColorChooser;
42 import javax.swing.JLabel;
43 import javax.swing.JPanel;
44 import javax.swing.JTextField;
45 import javax.swing.SwingConstants;
46 import javax.swing.colorchooser.AbstractColorChooserPanel;
47
48 /**
49  * DOCUMENT ME!
50  * 
51  * @author $author$
52  * @version $Revision$
53  */
54 public class GUserDefinedColours extends JPanel
55 {
56   protected JColorChooser colorChooser = new JColorChooser();
57
58   protected JPanel buttonPanel = new JPanel();
59
60   protected GridLayout gridLayout = new GridLayout();
61
62   JPanel lowerPanel = new JPanel();
63
64   protected JButton okButton = new JButton();
65
66   protected JButton applyButton = new JButton();
67
68   protected JButton loadbutton = new JButton();
69
70   protected JButton savebutton = new JButton();
71
72   protected JButton cancelButton = new JButton();
73
74   JPanel namePanel = new JPanel();
75
76   JLabel jLabel1 = new JLabel();
77
78   protected JTextField schemeName = new JTextField();
79
80   BorderLayout borderLayout1 = new BorderLayout();
81
82   JPanel panel1 = new JPanel();
83
84   JPanel okCancelPanel = new JPanel();
85
86   JPanel saveLoadPanel = new JPanel();
87
88   BorderLayout borderLayout3 = new BorderLayout();
89
90   GridBagLayout gridBagLayout1 = new GridBagLayout();
91
92   BorderLayout borderLayout2 = new BorderLayout();
93
94   FlowLayout flowLayout1 = new FlowLayout();
95
96   BorderLayout borderLayout4 = new BorderLayout();
97
98   JPanel jPanel4 = new JPanel();
99
100   BorderLayout borderLayout5 = new BorderLayout();
101
102   JLabel label = new JLabel();
103
104   protected JPanel casePanel = new JPanel();
105
106   protected JCheckBox caseSensitive = new JCheckBox();
107
108   protected JCheckBox lcaseColour = new JCheckBox();
109
110   protected List<JButton> selectedButtons;
111
112   /**
113    * Creates a new GUserDefinedColours object.
114    */
115   public GUserDefinedColours()
116   {
117     try
118     {
119       jbInit();
120     } catch (Exception e)
121     {
122       e.printStackTrace();
123     }
124
125   }
126
127   /**
128    * DOCUMENT ME!
129    * 
130    * @throws Exception
131    *           DOCUMENT ME!
132    */
133   private void jbInit() throws Exception
134   {
135     this.setLayout(borderLayout4);
136     buttonPanel.setLayout(gridLayout);
137     gridLayout.setColumns(4);
138     gridLayout.setRows(5);
139     okButton.setFont(new java.awt.Font("Verdana", 0, 11));
140     okButton.setText(MessageManager.getString("action.ok"));
141     okButton.addActionListener(new ActionListener()
142     {
143       @Override
144       public void actionPerformed(ActionEvent e)
145       {
146         okButton_actionPerformed();
147       }
148     });
149     applyButton.setFont(new java.awt.Font("Verdana", 0, 11));
150     applyButton.setText(MessageManager.getString("action.apply"));
151     applyButton.addActionListener(new ActionListener()
152     {
153       @Override
154       public void actionPerformed(ActionEvent e)
155       {
156         applyButton_actionPerformed();
157       }
158     });
159     loadbutton.setFont(new java.awt.Font("Verdana", 0, 11));
160     loadbutton.setText(MessageManager.getString("action.load_scheme"));
161     loadbutton.addActionListener(new ActionListener()
162     {
163       @Override
164       public void actionPerformed(ActionEvent e)
165       {
166         loadbutton_actionPerformed();
167       }
168     });
169     savebutton.setFont(new java.awt.Font("Verdana", 0, 11));
170     savebutton.setText(MessageManager.getString("action.save_scheme"));
171     savebutton.addActionListener(new ActionListener()
172     {
173       @Override
174       public void actionPerformed(ActionEvent e)
175       {
176         savebutton_actionPerformed();
177       }
178     });
179     cancelButton.setFont(JvSwingUtils.getLabelFont());
180     cancelButton.setText(MessageManager.getString("action.cancel"));
181     cancelButton.addActionListener(new ActionListener()
182     {
183       @Override
184       public void actionPerformed(ActionEvent e)
185       {
186         cancelButton_actionPerformed();
187       }
188     });
189     this.setBackground(new Color(212, 208, 223));
190     lowerPanel.setOpaque(false);
191     lowerPanel.setLayout(borderLayout3);
192     colorChooser.setOpaque(false);
193     jLabel1.setFont(JvSwingUtils.getLabelFont());
194     jLabel1.setText(MessageManager.getString("label.name"));
195     namePanel.setMinimumSize(new Dimension(300, 31));
196     namePanel.setOpaque(false);
197     namePanel.setPreferredSize(new Dimension(240, 25));
198     namePanel.setLayout(borderLayout1);
199     schemeName.setFont(JvSwingUtils.getLabelFont());
200     schemeName.setPreferredSize(new Dimension(105, 21));
201     schemeName.setText("");
202     schemeName.setHorizontalAlignment(SwingConstants.CENTER);
203     panel1.setLayout(flowLayout1);
204     panel1.setOpaque(false);
205     okCancelPanel.setOpaque(false);
206     saveLoadPanel.setOpaque(false);
207     jPanel4.setLayout(borderLayout5);
208     label.setFont(new java.awt.Font("Verdana", Font.ITALIC, 10));
209     label.setOpaque(false);
210     label.setPreferredSize(new Dimension(260, 34));
211     label.setText(
212             MessageManager.formatMessage("label.html_content", new String[]
213             { MessageManager.getString(
214                     "label.save_colour_scheme_with_unique_name_added_to_colour_menu") }));
215     caseSensitive.setText(MessageManager.getString("label.case_sensitive"));
216     caseSensitive.addActionListener(new ActionListener()
217     {
218       @Override
219       public void actionPerformed(ActionEvent e)
220       {
221         caseSensitive_actionPerformed();
222       }
223     });
224     lcaseColour
225             .setText(MessageManager.getString("label.lower_case_colour"));
226     lcaseColour.setToolTipText(
227             MessageManager.getString("label.lower_case_tip"));
228
229     saveLoadPanel.add(savebutton);
230     saveLoadPanel.add(loadbutton);
231     okCancelPanel.add(applyButton);
232     okCancelPanel.add(okButton);
233     okCancelPanel.add(cancelButton);
234     if (!Jalview.isJS())
235     {
236       lowerPanel.add(saveLoadPanel, java.awt.BorderLayout.NORTH);
237     }
238     lowerPanel.add(okCancelPanel, java.awt.BorderLayout.SOUTH);
239
240     namePanel.add(schemeName, java.awt.BorderLayout.CENTER);
241     namePanel.add(jLabel1, java.awt.BorderLayout.WEST);
242     panel1.add(namePanel, null);
243     panel1.add(buttonPanel, null);
244     panel1.add(casePanel);
245     casePanel.add(caseSensitive);
246     casePanel.add(lcaseColour);
247     panel1.add(lowerPanel, null);
248     panel1.add(label);
249
250     jPanel4.add(panel1, java.awt.BorderLayout.CENTER);
251     this.add(jPanel4, java.awt.BorderLayout.CENTER);
252     this.add(colorChooser, java.awt.BorderLayout.EAST);
253
254     AbstractColorChooserPanel[] choosers = colorChooser.getChooserPanels();
255     // JAL-1360 larger JColorChooser in Java 7 overwrites AA panel; restrict to
256     // swatch picker only
257     if (choosers.length > 3)
258     {
259       // Java 7 default has 5 options rather than 3 for choosing colours; keep
260       // the first only
261       colorChooser
262               .setChooserPanels(new AbstractColorChooserPanel[]
263               { choosers[0] });
264     }
265
266     selectedButtons = new ArrayList<JButton>();
267   }
268
269   /**
270    * DOCUMENT ME!
271    */
272   protected void okButton_actionPerformed()
273   {
274   }
275
276   /**
277    * DOCUMENT ME!
278    */
279   protected void applyButton_actionPerformed()
280   {
281   }
282
283   /**
284    * DOCUMENT ME!
285    * 
286    * @param e
287    *          DOCUMENT ME!
288    */
289   protected void loadbutton_actionPerformed()
290   {
291   }
292
293   protected boolean savebutton_actionPerformed()
294   {
295     return false;
296   }
297
298   /**
299    * DOCUMENT ME!
300    * 
301    * @param e
302    *          DOCUMENT ME!
303    */
304   protected void cancelButton_actionPerformed()
305   {
306   }
307
308   public void caseSensitive_actionPerformed()
309   {
310
311   }
312
313   public void lcaseColour_actionPerformed()
314   {
315
316   }
317 }