package jalview.gui;\r
\r
import jalview.jbgui.*;\r
-import jalview.datamodel.*;\r
import jalview.schemes.*;\r
+import jalview.datamodel.*;\r
import java.awt.event.*;\r
import javax.swing.event.*;\r
+import javax.swing.*;\r
+import java.util.*;\r
\r
public class SliderPanel extends GSliderPanel\r
{\r
boolean forConservation = true;\r
ColourSchemeI cs;\r
\r
+ static JInternalFrame conservationSlider;\r
+ static JInternalFrame PIDSlider;\r
+\r
+ public static int setConservationSlider(AlignmentPanel ap, ColourSchemeI cs, String source)\r
+ {\r
+ SliderPanel sp = null;\r
+ ConservationColourScheme ccs = (ConservationColourScheme)cs;\r
+ int value = ccs.inc;\r
+\r
+ if(conservationSlider == null)\r
+ {\r
+ sp = new SliderPanel(ap, value, true, cs);\r
+ conservationSlider = new JInternalFrame();\r
+ conservationSlider.setContentPane(sp);\r
+ conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
+ }\r
+ else\r
+ {\r
+ sp = (SliderPanel)conservationSlider.getContentPane();\r
+ sp.cs = cs;\r
+ sp.setValue(value);\r
+ }\r
+\r
+ conservationSlider.setTitle("Conservation Colour Increment ("+source+")");\r
+ if(ap.av.alignment.getGroups()!=null)\r
+ sp.setAllGroupsCheckEnabled( true );\r
+ else\r
+ sp.setAllGroupsCheckEnabled( false);\r
+\r
+ return sp.getValue();\r
+ }\r
+\r
+ public static void showConservationSlider()\r
+ {\r
+ try{\r
+ PIDSlider.setClosed(true);\r
+ PIDSlider = null;\r
+ }catch(Exception ex){}\r
+\r
+\r
+ if(!conservationSlider.isVisible())\r
+ {\r
+ Desktop.addInternalFrame(conservationSlider, conservationSlider.getTitle(), 420, 90, false);\r
+ conservationSlider.addInternalFrameListener(new javax.swing.event.\r
+ InternalFrameAdapter()\r
+ {\r
+ public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
+ {\r
+ conservationSlider = null;\r
+ }\r
+ });\r
+ conservationSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
+ }\r
+\r
+ }\r
+\r
+ public static int setPIDSliderSource(AlignmentPanel ap, ColourSchemeI cs, String source)\r
+ {\r
+ SliderPanel pid = null;\r
+\r
+ int threshold = 50;\r
+ if (cs instanceof ResidueColourScheme)\r
+ threshold = ( ( (ResidueColourScheme) cs).getThreshold());\r
+ else if (cs instanceof ScoreColourScheme)\r
+ threshold = ( ( (ScoreColourScheme) cs).getThreshold());\r
+\r
+\r
+ if(PIDSlider == null)\r
+ {\r
+ pid = new SliderPanel(ap, threshold, false, cs);\r
+ PIDSlider = new JInternalFrame();\r
+ PIDSlider.setContentPane(pid);\r
+ PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
+ }\r
+ else\r
+ {\r
+ pid = (SliderPanel)PIDSlider.getContentPane();\r
+ pid.cs = cs;\r
+ }\r
+ PIDSlider.setTitle("Percentage Identity Threshold ("+source+")");\r
+\r
+ if (ap.av.alignment.getGroups() != null)\r
+ pid.setAllGroupsCheckEnabled(true);\r
+ else\r
+ pid.setAllGroupsCheckEnabled(false);\r
+\r
+ return pid.getValue();\r
+\r
+ }\r
+\r
+ public static void showPIDSlider()\r
+ {\r
+ try{\r
+ conservationSlider.setClosed(true);\r
+ conservationSlider = null;\r
+ }catch(Exception ex){}\r
+\r
+ if(!PIDSlider.isVisible())\r
+ {\r
+ Desktop.addInternalFrame(PIDSlider, PIDSlider.getTitle(), 420, 90, false);\r
+ PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
+ PIDSlider.addInternalFrameListener(new javax.swing.event.\r
+ InternalFrameAdapter()\r
+ {\r
+ public void internalFrameClosed(javax.swing.event.InternalFrameEvent e)\r
+ {\r
+ PIDSlider = null;\r
+ }\r
+ });\r
+ PIDSlider.setLayer(JLayeredPane.PALETTE_LAYER);\r
+ }\r
+\r
+ }\r
+\r
+\r
public SliderPanel(AlignmentPanel ap, int value, boolean forConserve, ColourSchemeI cs)\r
{\r
this.ap = ap;\r
applyButton.setVisible(false);\r
if(forConservation)\r
{\r
- label.setText("Enter the value by which to decrease conservation colour intensity");\r
+ label.setText("Enter value to increase conservation visibility");\r
slider.setMinimum(0);\r
slider.setMaximum(50);\r
}\r
else\r
{\r
- label.setText("Enter the percent identity above which to colour residues");\r
+ label.setText("Enter % identity above which to colour residues");\r
slider.setMinimum(0);\r
slider.setMaximum(100);\r
}\r
\r
public void valueChanged(int i)\r
{\r
+ if(cs == null)\r
+ return;\r
\r
- if(forConservation)\r
+ ColourSchemeI toChange = null;\r
+ Vector allGroups = null;\r
+ int groupIndex = 0;\r
+\r
+ if(allGroupsCheck.isSelected())\r
{\r
- if (cs instanceof ConservationColourScheme)\r
- ( (ConservationColourScheme) cs).inc = i;\r
+ allGroups = ap.av.alignment.getGroups();\r
+ groupIndex = allGroups.size()-1;\r
}\r
else\r
- {\r
- if( cs instanceof ResidueColourScheme)\r
- {\r
- ResidueColourScheme rcs = (ResidueColourScheme) cs;\r
- rcs.setThreshold(i);\r
- }\r
- else if( cs instanceof ScoreColourScheme)\r
- {\r
- ScoreColourScheme scs = (ScoreColourScheme) cs;\r
- scs.setThreshold(i);\r
- }\r
+ toChange = cs;\r
\r
- }\r
\r
- ap.seqPanel.seqCanvas.paintFlag=true;\r
+ while( groupIndex > -1 )\r
+ {\r
+ if(allGroups!=null)\r
+ toChange = ((SequenceGroup)allGroups.get(groupIndex)).cs;\r
+\r
+ if (forConservation)\r
+ {\r
+ if (toChange instanceof ConservationColourScheme)\r
+ ( (ConservationColourScheme) toChange).inc = i;\r
+ }\r
+ else\r
+ {\r
+ if (toChange.canThreshold())\r
+ ( (ResidueColourScheme) toChange).setThreshold(i);\r
+ }\r
+\r
+ groupIndex--;\r
+ }\r
+\r
ap.seqPanel.repaint();\r
\r
}\r
\r
+ public void setAllGroupsCheckEnabled(boolean b)\r
+ {\r
+ allGroupsCheck.setEnabled(b);\r
+ }\r
+\r
+\r
public void valueField_actionPerformed(ActionEvent e)\r
{\r
try{\r
valueField.setText( slider.getValue()+"" );\r
}\r
}\r
+\r
+ public void setValue(int value)\r
+ {\r
+ slider.setValue(value);\r
+ }\r
+ public int getValue()\r
+ {\r
+ return Integer.parseInt(valueField.getText());\r
+ }\r
+\r
+\r
}\r