takes on methods previously in desktop
[jalview.git] / src / jalview / gui / SliderPanel.java
1 package jalview.gui;\r
2 \r
3 import jalview.jbgui.*;\r
4 import jalview.schemes.*;\r
5 import jalview.datamodel.*;\r
6 import java.awt.event.*;\r
7 import javax.swing.event.*;\r
8 import javax.swing.*;\r
9 import java.util.*;\r
10 \r
11 public class SliderPanel extends GSliderPanel\r
12 {\r
13   AlignmentPanel ap;\r
14   boolean forConservation = true;\r
15   ColourSchemeI cs;\r
16 \r
17   static JInternalFrame conservationSlider;\r
18   static JInternalFrame PIDSlider;\r
19 \r
20   public static int setConservationSlider(AlignmentPanel ap, ColourSchemeI cs, String source)\r
21   {\r
22     SliderPanel sp = null;\r
23     ConservationColourScheme ccs = (ConservationColourScheme)cs;\r
24     int value = ccs.inc;\r
25 \r
26     if(conservationSlider == null)\r
27     {\r
28       sp = new SliderPanel(ap, value, true, cs);\r
29       conservationSlider = new JInternalFrame();\r
30       conservationSlider.setContentPane(sp);\r
31     }\r
32     else\r
33     {\r
34         sp = (SliderPanel)conservationSlider.getContentPane();\r
35         sp.cs = cs;\r
36         sp.setValue(value);\r
37     }\r
38 \r
39     conservationSlider.setTitle("Conservation Colour Increment  ("+source+")");\r
40     if(ap.av.alignment.getGroups()!=null)\r
41       sp.setAllGroupsCheckEnabled( true );\r
42     else\r
43       sp.setAllGroupsCheckEnabled( false);\r
44 \r
45     return sp.getValue();\r
46   }\r
47 \r
48   public static void showConservationSlider()\r
49   {\r
50     try{\r
51       PIDSlider.setClosed(true);\r
52       PIDSlider = null;\r
53     }catch(Exception ex){}\r
54 \r
55 \r
56     if(!conservationSlider.isVisible())\r
57     {\r
58       Desktop.addInternalFrame(conservationSlider, conservationSlider.getTitle(), 420, 90, false);\r
59       conservationSlider.addInternalFrameListener(new javax.swing.event.\r
60                                                   InternalFrameAdapter()\r
61       {\r
62         public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
63         {\r
64           conservationSlider = null;\r
65         }\r
66       });\r
67       conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
68     }\r
69 \r
70   }\r
71 \r
72   public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs, String source)\r
73    {\r
74      SliderPanel pid = null;\r
75      if(PIDSlider == null)\r
76      {\r
77        pid = new SliderPanel(ap, 50, false, cs);\r
78        PIDSlider = new JInternalFrame();\r
79        PIDSlider.setContentPane(pid);\r
80        PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
81      }\r
82      else\r
83      {\r
84          pid = (SliderPanel)PIDSlider.getContentPane();\r
85          pid.cs = cs;\r
86      }\r
87      PIDSlider.setTitle("Percentage Identity Threshold ("+source+")");\r
88 \r
89      if (ap.av.alignment.getGroups() != null)\r
90        pid.setAllGroupsCheckEnabled(true);\r
91      else\r
92        pid.setAllGroupsCheckEnabled(false);\r
93 \r
94      return pid.getValue();\r
95 \r
96    }\r
97 \r
98    public static void showPIDSlider()\r
99    {\r
100      try{\r
101        conservationSlider.setClosed(true);\r
102        conservationSlider = null;\r
103      }catch(Exception ex){}\r
104 \r
105      if(!PIDSlider.isVisible())\r
106     {\r
107       Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90, false);\r
108       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
109       PIDSlider.addInternalFrameListener(new javax.swing.event.\r
110                                                   InternalFrameAdapter()\r
111       {\r
112         public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
113         {\r
114           PIDSlider = null;\r
115         }\r
116       });\r
117       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
118     }\r
119 \r
120    }\r
121 \r
122 \r
123   public SliderPanel(AlignmentPanel ap, int value, boolean forConserve, ColourSchemeI cs)\r
124   {\r
125     this.ap = ap;\r
126     this.cs = cs;\r
127     forConservation = forConserve;\r
128     undoButton.setVisible(false);\r
129     applyButton.setVisible(false);\r
130     if(forConservation)\r
131     {\r
132       label.setText("Enter the value by which to decrease conservation colour intensity");\r
133       slider.setMinimum(0);\r
134       slider.setMaximum(50);\r
135     }\r
136     else\r
137     {\r
138       label.setText("Enter the percent identity above which to colour residues");\r
139       slider.setMinimum(0);\r
140       slider.setMaximum(100);\r
141     }\r
142 \r
143 \r
144 \r
145     slider.addChangeListener( new ChangeListener()\r
146     {\r
147       public void stateChanged(ChangeEvent evt)\r
148       {\r
149         valueField.setText( slider.getValue()+"" );\r
150         valueChanged( slider.getValue() );\r
151       }\r
152     });\r
153 \r
154     slider.setValue(value);\r
155     valueField.setText(value+"");\r
156   }\r
157 \r
158   public void valueChanged(int i)\r
159   {\r
160     if(cs == null)\r
161       return;\r
162 \r
163     ColourSchemeI toChange = null;\r
164     Vector allGroups = null;\r
165     int groupIndex = 0;\r
166 \r
167     if(allGroupsCheck.isSelected())\r
168     {\r
169       allGroups = ap.av.alignment.getGroups();\r
170       groupIndex = allGroups.size()-1;\r
171     }\r
172     else\r
173       toChange = cs;\r
174 \r
175 \r
176     while( groupIndex > -1 )\r
177     {\r
178       if(allGroups!=null)\r
179         toChange = ((SequenceGroup)allGroups.get(groupIndex)).cs;\r
180 \r
181       if (forConservation)\r
182       {\r
183         if (toChange instanceof ConservationColourScheme)\r
184           ( (ConservationColourScheme) toChange).inc = i;\r
185       }\r
186       else\r
187       {\r
188         if (toChange.canThreshold())\r
189           ( (ResidueColourScheme) toChange).setThreshold(i);\r
190       }\r
191 \r
192       groupIndex--;\r
193     }\r
194 \r
195     ap.seqPanel.repaint();\r
196 \r
197   }\r
198 \r
199   public void setAllGroupsCheckEnabled(boolean b)\r
200   {\r
201     allGroupsCheck.setEnabled(b);\r
202   }\r
203 \r
204 \r
205   public void valueField_actionPerformed(ActionEvent e)\r
206   {\r
207     try{\r
208       int i = Integer.parseInt(valueField.getText());\r
209       slider.setValue(i);\r
210     }\r
211     catch(Exception ex)\r
212     {\r
213       valueField.setText( slider.getValue()+"" );\r
214     }\r
215   }\r
216 \r
217   public void setValue(int value)\r
218   {\r
219     slider.setValue(value);\r
220   }\r
221   public int getValue()\r
222   {\r
223     return Integer.parseInt(valueField.getText());\r
224   }\r
225 \r
226 \r
227 }\r