DEFAULT_FILE_FORMAT added
[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       conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
32     }\r
33     else\r
34     {\r
35         sp = (SliderPanel)conservationSlider.getContentPane();\r
36         sp.cs = cs;\r
37         sp.setValue(value);\r
38     }\r
39 \r
40     conservationSlider.setTitle("Conservation Colour Increment  ("+source+")");\r
41     if(ap.av.alignment.getGroups()!=null)\r
42       sp.setAllGroupsCheckEnabled( true );\r
43     else\r
44       sp.setAllGroupsCheckEnabled( false);\r
45 \r
46     return sp.getValue();\r
47   }\r
48 \r
49   public static void showConservationSlider()\r
50   {\r
51     try{\r
52       PIDSlider.setClosed(true);\r
53       PIDSlider = null;\r
54     }catch(Exception ex){}\r
55 \r
56 \r
57     if(!conservationSlider.isVisible())\r
58     {\r
59       Desktop.addInternalFrame(conservationSlider, conservationSlider.getTitle(), 420, 90, false);\r
60       conservationSlider.addInternalFrameListener(new javax.swing.event.\r
61                                                   InternalFrameAdapter()\r
62       {\r
63         public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
64         {\r
65           conservationSlider = null;\r
66         }\r
67       });\r
68       conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
69     }\r
70 \r
71   }\r
72 \r
73   public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs, String source)\r
74    {\r
75      SliderPanel pid = null;\r
76 \r
77      int threshold = 50;\r
78      if (cs instanceof ResidueColourScheme)\r
79        threshold = ( ( (ResidueColourScheme) cs).getThreshold());\r
80      else if (cs instanceof ScoreColourScheme)\r
81        threshold = ( ( (ScoreColourScheme) cs).getThreshold());\r
82 \r
83 \r
84      if(PIDSlider == null)\r
85      {\r
86        pid = new SliderPanel(ap, threshold, false, cs);\r
87        PIDSlider = new JInternalFrame();\r
88        PIDSlider.setContentPane(pid);\r
89        PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
90      }\r
91      else\r
92      {\r
93          pid = (SliderPanel)PIDSlider.getContentPane();\r
94          pid.cs = cs;\r
95      }\r
96      PIDSlider.setTitle("Percentage Identity Threshold ("+source+")");\r
97 \r
98      if (ap.av.alignment.getGroups() != null)\r
99        pid.setAllGroupsCheckEnabled(true);\r
100      else\r
101        pid.setAllGroupsCheckEnabled(false);\r
102 \r
103      return pid.getValue();\r
104 \r
105    }\r
106 \r
107    public static void showPIDSlider()\r
108    {\r
109      try{\r
110        conservationSlider.setClosed(true);\r
111        conservationSlider = null;\r
112      }catch(Exception ex){}\r
113 \r
114      if(!PIDSlider.isVisible())\r
115     {\r
116       Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90, false);\r
117       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
118       PIDSlider.addInternalFrameListener(new javax.swing.event.\r
119                                                   InternalFrameAdapter()\r
120       {\r
121         public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
122         {\r
123           PIDSlider = null;\r
124         }\r
125       });\r
126       PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
127     }\r
128 \r
129    }\r
130 \r
131 \r
132   public SliderPanel(AlignmentPanel ap, int value, boolean forConserve, ColourSchemeI cs)\r
133   {\r
134     this.ap = ap;\r
135     this.cs = cs;\r
136     forConservation = forConserve;\r
137     undoButton.setVisible(false);\r
138     applyButton.setVisible(false);\r
139     if(forConservation)\r
140     {\r
141       label.setText("Enter value to increase conservation visibility");\r
142       slider.setMinimum(0);\r
143       slider.setMaximum(50);\r
144     }\r
145     else\r
146     {\r
147       label.setText("Enter % identity above which to colour residues");\r
148       slider.setMinimum(0);\r
149       slider.setMaximum(100);\r
150     }\r
151 \r
152 \r
153 \r
154     slider.addChangeListener( new ChangeListener()\r
155     {\r
156       public void stateChanged(ChangeEvent evt)\r
157       {\r
158         valueField.setText( slider.getValue()+"" );\r
159         valueChanged( slider.getValue() );\r
160       }\r
161     });\r
162 \r
163     slider.setValue(value);\r
164     valueField.setText(value+"");\r
165   }\r
166 \r
167   public void valueChanged(int i)\r
168   {\r
169     if(cs == null)\r
170       return;\r
171 \r
172     ColourSchemeI toChange = null;\r
173     Vector allGroups = null;\r
174     int groupIndex = 0;\r
175 \r
176     if(allGroupsCheck.isSelected())\r
177     {\r
178       allGroups = ap.av.alignment.getGroups();\r
179       groupIndex = allGroups.size()-1;\r
180     }\r
181     else\r
182       toChange = cs;\r
183 \r
184 \r
185     while( groupIndex > -1 )\r
186     {\r
187       if(allGroups!=null)\r
188         toChange = ((SequenceGroup)allGroups.get(groupIndex)).cs;\r
189 \r
190       if (forConservation)\r
191       {\r
192         if (toChange instanceof ConservationColourScheme)\r
193           ( (ConservationColourScheme) toChange).inc = i;\r
194       }\r
195       else\r
196       {\r
197         if (toChange.canThreshold())\r
198           ( (ResidueColourScheme) toChange).setThreshold(i);\r
199       }\r
200 \r
201       groupIndex--;\r
202     }\r
203 \r
204     ap.seqPanel.seqCanvas.repaint();\r
205 \r
206   }\r
207 \r
208   public void setAllGroupsCheckEnabled(boolean b)\r
209   {\r
210     allGroupsCheck.setEnabled(b);\r
211   }\r
212 \r
213 \r
214   public void valueField_actionPerformed(ActionEvent e)\r
215   {\r
216     try{\r
217       int i = Integer.parseInt(valueField.getText());\r
218       slider.setValue(i);\r
219     }\r
220     catch(Exception ex)\r
221     {\r
222       valueField.setText( slider.getValue()+"" );\r
223     }\r
224   }\r
225 \r
226   public void setValue(int value)\r
227   {\r
228     slider.setValue(value);\r
229   }\r
230   public int getValue()\r
231   {\r
232     return Integer.parseInt(valueField.getText());\r
233   }\r
234 \r
235 \r
236 }\r