DEFAULT_FILE_FORMAT added
[jalview.git] / src / jalview / gui / SliderPanel.java
index a18b084..eba89e8 100755 (executable)
@@ -1,10 +1,12 @@
 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
@@ -12,6 +14,121 @@ public class SliderPanel extends GSliderPanel
   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
@@ -21,13 +138,13 @@ public class SliderPanel extends GSliderPanel
     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
@@ -49,32 +166,51 @@ public class SliderPanel extends GSliderPanel
 \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
-    ap.seqPanel.repaint();\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.seqCanvas.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
@@ -86,4 +222,15 @@ public class SliderPanel extends GSliderPanel
       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