JAL-1807 still testing
[jalviewjs.git] / unused / appletgui / SliderPanel.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)\r
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors\r
4  * \r
5  * This file is part of Jalview.\r
6  * \r
7  * Jalview is free software: you can redistribute it and/or\r
8  * modify it under the terms of the GNU General Public License \r
9  * as published by the Free Software Foundation, either version 3\r
10  * of the License, or (at your option) any later version.\r
11  *  \r
12  * Jalview is distributed in the hope that it will be useful, but \r
13  * WITHOUT ANY WARRANTY; without even the implied warranty \r
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
15  * PURPOSE.  See the GNU General Public License for more details.\r
16  * \r
17  * You should have received a copy of the GNU General Public License\r
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
19  * The Jalview Authors are detailed in the 'AUTHORS' file.\r
20  */\r
21 package jalview.appletgui;\r
22 \r
23 import jalview.bin.JalviewLite;\r
24 import jalview.datamodel.SequenceGroup;\r
25 import jalview.schemes.ColourSchemeI;\r
26 import jalview.util.MessageManager;\r
27 \r
28 import java.awt.BorderLayout;\r
29 import java.awt.Color;\r
30 import java.awt.FlowLayout;\r
31 import java.awt.event.ActionEvent;\r
32 import java.awt.event.ActionListener;\r
33 import java.awt.event.AdjustmentEvent;\r
34 import java.awt.event.AdjustmentListener;\r
35 import java.awt.event.MouseEvent;\r
36 import java.awt.event.MouseListener;\r
37 import java.awt.event.WindowAdapter;\r
38 import java.awt.event.WindowEvent;\r
39 import java.util.Iterator;\r
40 \r
41 import javax.swing.JButton;\r
42 import javax.swing.JCheckBox;\r
43 import javax.swing.JFrame;\r
44 import javax.swing.JLabel;\r
45 import javax.swing.JPanel;\r
46 import javax.swing.JScrollBar;\r
47 import javax.swing.JTextField;\r
48 \r
49 public class SliderPanel extends JPanel implements ActionListener,\r
50         AdjustmentListener, MouseListener\r
51 {\r
52   AlignmentPanel ap;\r
53 \r
54   boolean forConservation = true;\r
55 \r
56   ColourSchemeI cs;\r
57 \r
58   static JFrame conservationSlider;\r
59 \r
60   static JFrame PIDSlider;\r
61 \r
62   public static int setConservationSlider(AlignmentPanel ap,\r
63           ColourSchemeI cs, String source)\r
64   {\r
65     SliderPanel sp = null;\r
66 \r
67     if (conservationSlider == null)\r
68     {\r
69       sp = new SliderPanel(ap, cs.getConservationInc(), true, cs);\r
70       conservationSlider = new JFrame();\r
71       conservationSlider.add(sp);\r
72     }\r
73     else\r
74     {\r
75       sp = (SliderPanel) conservationSlider.getComponent(0);\r
76       sp.cs = cs;\r
77     }\r
78 \r
79     conservationSlider.setTitle(MessageManager.formatMessage("label.conservation_colour_increment", new String[]{source}));\r
80     if (ap.av.getAlignment().getGroups() != null)\r
81     {\r
82       sp.setAllGroupsCheckEnabled(true);\r
83     }\r
84     else\r
85     {\r
86       sp.setAllGroupsCheckEnabled(false);\r
87     }\r
88 \r
89     return sp.getValue();\r
90   }\r
91 \r
92   public static void showConservationSlider()\r
93   {\r
94     try\r
95     {\r
96       PIDSlider.setVisible(false);\r
97       PIDSlider = null;\r
98     } catch (Exception ex)\r
99     {\r
100     }\r
101 \r
102     if (!conservationSlider.isVisible())\r
103     {\r
104       JalviewLite.addFrame(conservationSlider,\r
105               conservationSlider.getTitle(), 420, 100);\r
106       conservationSlider.addWindowListener(new WindowAdapter()\r
107       {\r
108         public void windowClosing(WindowEvent e)\r
109         {\r
110           conservationSlider = null;\r
111         }\r
112       });\r
113 \r
114     }\r
115 \r
116   }\r
117 \r
118   public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs,\r
119           String source)\r
120   {\r
121     SliderPanel pid = null;\r
122     if (PIDSlider == null)\r
123     {\r
124       pid = new SliderPanel(ap, 50, false, cs);\r
125       PIDSlider = new JFrame();\r
126       PIDSlider.add(pid);\r
127     }\r
128     else\r
129     {\r
130       pid = (SliderPanel) PIDSlider.getComponent(0);\r
131       pid.cs = cs;\r
132     }\r
133     PIDSlider.setTitle(MessageManager.formatMessage("label.percentage_identity_thereshold", new String[]{source}));\r
134 \r
135     if (ap.av.getAlignment().getGroups() != null)\r
136     {\r
137       pid.setAllGroupsCheckEnabled(true);\r
138     }\r
139     else\r
140     {\r
141       pid.setAllGroupsCheckEnabled(false);\r
142     }\r
143 \r
144     return pid.getValue();\r
145 \r
146   }\r
147 \r
148   public static void showPIDSlider()\r
149   {\r
150     try\r
151     {\r
152       conservationSlider.setVisible(false);\r
153       conservationSlider = null;\r
154     } catch (Exception ex)\r
155     {\r
156     }\r
157 \r
158     if (!PIDSlider.isVisible())\r
159     {\r
160       JalviewLite.addFrame(PIDSlider, PIDSlider.getTitle(),\r
161               420, 100);\r
162       PIDSlider.addWindowListener(new WindowAdapter()\r
163       {\r
164         public void windowClosing(WindowEvent e)\r
165         {\r
166           PIDSlider = null;\r
167         }\r
168       });\r
169     }\r
170 \r
171   }\r
172 \r
173   public SliderPanel(AlignmentPanel ap, int value, boolean forConserve,\r
174           ColourSchemeI cs)\r
175   {\r
176     try\r
177     {\r
178       jbInit();\r
179     } catch (Exception e)\r
180     {\r
181       e.printStackTrace();\r
182     }\r
183     this.ap = ap;\r
184     this.cs = cs;\r
185     forConservation = forConserve;\r
186     undoButton.setVisible(false);\r
187     applyButton.setVisible(false);\r
188     if (forConservation)\r
189     {\r
190       label.setText(MessageManager\r
191               .getString("label.modify_conservation_visibility"));\r
192       slider.setMinimum(0);\r
193       slider.setMaximum(50 + slider.getVisibleAmount());\r
194       slider.setUnitIncrement(1);\r
195     }\r
196     else\r
197     {\r
198       label.setText(MessageManager\r
199               .getString("label.colour_residues_above_occurence"));\r
200       slider.setMinimum(0);\r
201       slider.setMaximum(100 + slider.getVisibleAmount());\r
202       slider.setBlockIncrement(1);\r
203     }\r
204 \r
205     slider.addAdjustmentListener(this);\r
206     slider.addMouseListener(this);\r
207 \r
208     slider.setValue(value);\r
209     valueField.setText(value + "");\r
210   }\r
211 \r
212   public void valueChanged(int i)\r
213   {\r
214     if (cs == null)\r
215     {\r
216       return;\r
217     }\r
218 \r
219     ColourSchemeI toChange = cs;\r
220     Iterator<SequenceGroup> allGroups = null;\r
221 \r
222     if (allGroupsCheck.isSelected())\r
223     {\r
224       allGroups = ap.av.getAlignment().getGroups().listIterator();\r
225     }\r
226 \r
227     while (toChange != null)\r
228     {\r
229       if (forConservation)\r
230       {\r
231         toChange.setConservationInc(i);\r
232       }\r
233       else\r
234       {\r
235         toChange.setThreshold(i, ap.av.isIgnoreGapsConsensus());\r
236       }\r
237       if (allGroups != null && allGroups.hasNext())\r
238       {\r
239         while ((toChange = allGroups.next().cs) == null\r
240                 && allGroups.hasNext())\r
241         {\r
242           ;\r
243         }\r
244       }\r
245       else\r
246       {\r
247         toChange = null;\r
248       }\r
249     }\r
250 \r
251     ap.seqPanel.seqCanvas.repaint();\r
252 \r
253   }\r
254 \r
255   public void setAllGroupsCheckEnabled(boolean b)\r
256   {\r
257     allGroupsCheck.setEnabled(b);\r
258   }\r
259 \r
260   public void actionPerformed(ActionEvent evt)\r
261   {\r
262     if (evt.getSource() == applyButton)\r
263     {\r
264       applyButton_actionPerformed();\r
265     }\r
266     else if (evt.getSource() == undoButton)\r
267     {\r
268       undoButton_actionPerformed();\r
269     }\r
270     else if (evt.getSource() == valueField)\r
271     {\r
272       valueField_actionPerformed();\r
273     }\r
274   }\r
275 \r
276   public void adjustmentValueChanged(AdjustmentEvent evt)\r
277   {\r
278     valueField.setText(slider.getValue() + "");\r
279     valueChanged(slider.getValue());\r
280   }\r
281 \r
282   public void valueField_actionPerformed()\r
283   {\r
284     try\r
285     {\r
286       int i = Integer.parseInt(valueField.getText());\r
287       slider.setValue(i);\r
288     } catch (Exception ex)\r
289     {\r
290       valueField.setText(slider.getValue() + "");\r
291     }\r
292   }\r
293 \r
294   public void setValue(int value)\r
295   {\r
296     slider.setValue(value);\r
297   }\r
298 \r
299   public int getValue()\r
300   {\r
301     return Integer.parseInt(valueField.getText());\r
302   }\r
303 \r
304   // this is used for conservation colours, PID colours and redundancy threshold\r
305   protected JScrollBar slider = new JScrollBar();\r
306 \r
307   protected JTextField valueField = new JTextField();\r
308 \r
309   protected JLabel label = new JLabel();\r
310 \r
311   JPanel jPanel1 = new JPanel();\r
312 \r
313   JPanel jPanel2 = new JPanel();\r
314 \r
315   protected JButton applyButton = new JButton();\r
316 \r
317   protected JButton undoButton = new JButton();\r
318  \r
319   FlowLayout flowLayout1 = new FlowLayout();\r
320 \r
321   protected JCheckBox allGroupsCheck = new JCheckBox();\r
322 \r
323   BorderLayout borderLayout1 = new BorderLayout();\r
324 \r
325   BorderLayout borderLayout2 = new BorderLayout();\r
326 \r
327   FlowLayout flowLayout2 = new FlowLayout();\r
328 \r
329   private void jbInit() throws Exception\r
330   {\r
331     this.setLayout(borderLayout2);\r
332 \r
333     // slider.setMajorTickSpacing(10);\r
334     // slider.setMinorTickSpacing(1);\r
335     // slider.setPaintTicks(true);\r
336     slider.setBackground(Color.white);\r
337     slider.setFont(new java.awt.Font("Verdana", 0, 11));\r
338     slider.setOrientation(0);\r
339     valueField.setFont(new java.awt.Font("Verdana", 0, 11));\r
340     valueField.setText("   ");\r
341     valueField.addActionListener(this);\r
342     valueField.setColumns(3);\r
343     label.setFont(new java.awt.Font("Verdana", 0, 11));\r
344     label.setText(MessageManager.getString("label.set_this_label_text"));\r
345     jPanel1.setLayout(borderLayout1);\r
346     jPanel2.setLayout(flowLayout1);\r
347     applyButton.setFont(new java.awt.Font("Verdana", 0, 11));\r
348     applyButton.setLabel(MessageManager.getString("action.apply"));\r
349     applyButton.addActionListener(this);\r
350     undoButton.setEnabled(false);\r
351     undoButton.setFont(new java.awt.Font("Verdana", 0, 11));\r
352     undoButton.setLabel(MessageManager.getString("action.undo"));\r
353     undoButton.addActionListener(this);\r
354     allGroupsCheck.setEnabled(false);\r
355     allGroupsCheck.setFont(new java.awt.Font("Verdana", 0, 11));\r
356     allGroupsCheck.setLabel(MessageManager\r
357             .getString("action.apply_threshold_all_groups"));\r
358     allGroupsCheck.setName(MessageManager\r
359             .getString("action.apply_all_groups"));\r
360     this.setBackground(Color.white);\r
361     this.setForeground(Color.black);\r
362     jPanel2.add(label, null);\r
363     jPanel2.add(applyButton, null);\r
364     jPanel2.add(undoButton, null);\r
365     jPanel2.add(allGroupsCheck);\r
366     jPanel1.add(valueField, java.awt.BorderLayout.EAST);\r
367     jPanel1.add(slider, java.awt.BorderLayout.CENTER);\r
368     this.add(jPanel1, java.awt.BorderLayout.SOUTH);\r
369     this.add(jPanel2, java.awt.BorderLayout.CENTER);\r
370   }\r
371 \r
372   protected void applyButton_actionPerformed()\r
373   {\r
374   }\r
375 \r
376   protected void undoButton_actionPerformed()\r
377   {\r
378   }\r
379 \r
380   public void mousePressed(MouseEvent evt)\r
381   {\r
382   }\r
383 \r
384   public void mouseReleased(MouseEvent evt)\r
385   {\r
386     ap.paintAlignment(true);\r
387   }\r
388 \r
389   public void mouseClicked(MouseEvent evt)\r
390   {\r
391   }\r
392 \r
393   public void mouseEntered(MouseEvent evt)\r
394   {\r
395   }\r
396 \r
397   public void mouseExited(MouseEvent evt)\r
398   {\r
399   }\r
400 }\r