d841be5331c4218d87932413647376be31cf3519
[jalview.git] / src / jalview / jbgui / GSliderPanel.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.util.MessageManager;
24
25 import java.awt.BorderLayout;
26 import java.awt.Color;
27 import java.awt.Dimension;
28 import java.awt.FlowLayout;
29 import java.awt.Font;
30 import java.awt.GridLayout;
31 import java.awt.event.ActionEvent;
32 import java.awt.event.ActionListener;
33 import java.awt.event.FocusAdapter;
34 import java.awt.event.FocusEvent;
35 import java.awt.event.MouseAdapter;
36 import java.awt.event.MouseEvent;
37
38 import javax.swing.JButton;
39 import javax.swing.JCheckBox;
40 import javax.swing.JLabel;
41 import javax.swing.JPanel;
42 import javax.swing.JSlider;
43 import javax.swing.JTextField;
44 import javax.swing.SwingConstants;
45
46 /**
47  * DOCUMENT ME!
48  * 
49  * @author $author$
50  * @version $Revision$
51  */
52 public class GSliderPanel extends JPanel
53 {
54   private static final Font VERDANA_11 = new java.awt.Font("Verdana", 0, 11);
55
56   protected static final int FRAME_WIDTH = 420;
57
58   protected static final int FRAME_HEIGHT = 120;
59
60   // this is used for conservation colours, PID colours and redundancy threshold
61   protected JSlider slider = new JSlider();
62
63   protected JTextField valueField = new JTextField();
64
65   protected JLabel label = new JLabel();
66
67   protected JPanel southPanel = new JPanel();
68
69   protected JButton applyButton = new JButton();
70
71   protected JButton undoButton = new JButton();
72
73   protected JCheckBox allGroupsCheck = new JCheckBox();
74
75   /**
76    * Creates a new GSliderPanel object.
77    */
78   public GSliderPanel()
79   {
80     try
81     {
82       jbInit();
83     } catch (Exception e)
84     {
85       e.printStackTrace();
86     }
87   }
88
89   /**
90    * Constructs and lays out the controls
91    */
92   private void jbInit()
93   {
94     slider.setMajorTickSpacing(10);
95     slider.setMinorTickSpacing(1);
96     slider.setPaintTicks(true);
97     slider.setBackground(Color.white);
98     slider.setFont(VERDANA_11);
99     slider.setDoubleBuffered(true);
100     slider.addMouseListener(new MouseAdapter()
101     {
102       @Override
103       public void mouseReleased(MouseEvent e)
104       {
105         slider_mouseReleased(e);
106       }
107     });
108     valueField.setFont(VERDANA_11);
109     valueField.setMinimumSize(new Dimension(6, 14));
110     valueField.setPreferredSize(new Dimension(50, 12));
111     valueField.setText("");
112     valueField.setHorizontalAlignment(SwingConstants.CENTER);
113     valueField.addActionListener(new ActionListener()
114     {
115       @Override
116       public void actionPerformed(ActionEvent e)
117       {
118         valueField_actionPerformed();
119       }
120     });
121     valueField.addFocusListener(new FocusAdapter()
122     {
123       @Override
124       public void focusLost(FocusEvent e)
125       {
126         valueField_actionPerformed();
127       }
128     });
129     label.setFont(VERDANA_11);
130     label.setOpaque(false);
131     label.setHorizontalAlignment(SwingConstants.CENTER);
132     label.setText(MessageManager.getString("label.set_this_label_text"));
133
134     applyButton.setFont(VERDANA_11);
135     applyButton.setOpaque(false);
136     applyButton.setText(MessageManager.getString("action.apply"));
137     applyButton.addActionListener(new ActionListener()
138     {
139       @Override
140       public void actionPerformed(ActionEvent e)
141       {
142         applyButton_actionPerformed(e);
143       }
144     });
145     undoButton.setEnabled(false);
146     undoButton.setFont(VERDANA_11);
147     undoButton.setOpaque(false);
148     undoButton.setText(MessageManager.getString("action.undo"));
149     undoButton.addActionListener(new ActionListener()
150     {
151       @Override
152       public void actionPerformed(ActionEvent e)
153       {
154         undoButton_actionPerformed(e);
155       }
156     });
157     allGroupsCheck.setEnabled(false);
158     allGroupsCheck.setFont(VERDANA_11);
159     allGroupsCheck.setOpaque(false);
160     allGroupsCheck
161             .setText(MessageManager.getString("action.apply_all_groups"));
162
163     this.setLayout(new GridLayout(2, 0));
164     this.setBackground(Color.white);
165
166     JPanel firstRow = new JPanel(new FlowLayout());
167     firstRow.setOpaque(false);
168     firstRow.add(label);
169     firstRow.add(applyButton);
170     firstRow.add(undoButton);
171     this.add(firstRow);
172
173     JPanel jPanel1 = new JPanel(new BorderLayout());
174     jPanel1.setOpaque(false);
175     jPanel1.add(valueField, BorderLayout.CENTER);
176     jPanel1.add(allGroupsCheck, BorderLayout.EAST);
177
178     southPanel.setLayout(new BorderLayout());
179     southPanel.setOpaque(false);
180     southPanel.add(jPanel1, BorderLayout.EAST);
181     southPanel.add(slider, BorderLayout.CENTER);
182     this.add(southPanel);
183   }
184
185   /**
186    * Action on changing the slider text field value
187    */
188   protected void valueField_actionPerformed()
189   {
190     try
191     {
192       int i = Integer.valueOf(valueField.getText());
193       slider.setValue(i);
194     } catch (NumberFormatException ex)
195     {
196       valueField.setText(String.valueOf(slider.getValue()));
197     }
198   }
199
200   /**
201    * DOCUMENT ME!
202    * 
203    * @param e
204    *          DOCUMENT ME!
205    */
206   protected void applyButton_actionPerformed(ActionEvent e)
207   {
208   }
209
210   /**
211    * DOCUMENT ME!
212    * 
213    * @param e
214    *          DOCUMENT ME!
215    */
216   protected void undoButton_actionPerformed(ActionEvent e)
217   {
218   }
219
220   public void slider_mouseReleased(MouseEvent e)
221   {
222
223   }
224 }