Annotation gradient will use direct colours if no graph exists
authoramwaterhouse <Andrew Waterhouse>
Fri, 27 Apr 2007 08:50:06 +0000 (08:50 +0000)
committeramwaterhouse <Andrew Waterhouse>
Fri, 27 Apr 2007 08:50:06 +0000 (08:50 +0000)
src/jalview/gui/AnnotationColourChooser.java
src/jalview/schemes/AnnotationColourGradient.java

index 31c7ba7..83a8a12 100755 (executable)
@@ -27,6 +27,7 @@ import javax.swing.event.*;
 \r
 import jalview.datamodel.*;\r
 import jalview.schemes.*;\r
+import java.awt.Dimension;\r
 \r
 public class AnnotationColourChooser\r
     extends JPanel\r
@@ -63,12 +64,6 @@ public class AnnotationColourChooser
     frame.setLayer(JLayeredPane.PALETTE_LAYER);\r
     Desktop.addInternalFrame(frame, "Colour by Annotation", 480, 145);\r
 \r
-    try\r
-    {\r
-      jbInit();\r
-    }\r
-    catch (Exception ex)\r
-    {}\r
 \r
     slider.addChangeListener(new ChangeListener()\r
     {\r
@@ -107,18 +102,30 @@ public class AnnotationColourChooser
     }\r
 \r
     adjusting = true;\r
+    Vector list = new Vector();\r
+    int index = 1;\r
     for (int i = 0; i < av.alignment.getAlignmentAnnotation().length; i++)\r
     {\r
-      if (av.alignment.getAlignmentAnnotation()[i].graph > 0)\r
-      {\r
-        annotations.addItem(av.alignment.getAlignmentAnnotation()[i].label);\r
-      }\r
+      String label = av.alignment.getAlignmentAnnotation()[i].label;\r
+      if (!list.contains(label))\r
+        list.addElement(label);\r
+      else\r
+        list.addElement(label+"_"+(index++));\r
     }\r
 \r
+    annotations = new JComboBox(list);\r
+\r
     threshold.addItem("No Threshold");\r
     threshold.addItem("Above Threshold");\r
     threshold.addItem("Below Threshold");\r
 \r
+    try\r
+    {\r
+      jbInit();\r
+    }\r
+    catch (Exception ex)\r
+    {}\r
+\r
     adjusting = false;\r
 \r
     changeColour();\r
@@ -217,9 +224,9 @@ public class AnnotationColourChooser
     slider.setBackground(Color.white);\r
     slider.setEnabled(false);\r
     slider.setOpaque(false);\r
-    slider.setPreferredSize(new Dimension(150, 32));\r
+    slider.setPreferredSize(new Dimension(100, 32));\r
     thresholdValue.setEnabled(false);\r
-    thresholdValue.setColumns(10);\r
+    thresholdValue.setColumns(7);\r
     jPanel3.setBackground(Color.white);\r
     currentColours.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
     currentColours.setOpaque(false);\r
@@ -231,6 +238,15 @@ public class AnnotationColourChooser
         currentColours_actionPerformed(e);\r
       }\r
     });\r
+    thresholdIsMin.setBackground(Color.white);\r
+    thresholdIsMin.setText("Threshold is Min/Max");\r
+    thresholdIsMin.addActionListener(new ActionListener()\r
+    {\r
+      public void actionPerformed(ActionEvent actionEvent)\r
+      {\r
+        thresholdIsMin_actionPerformed(actionEvent);\r
+      }\r
+    });\r
     jPanel1.add(ok);\r
     jPanel1.add(cancel);\r
     jPanel2.add(annotations);\r
@@ -241,11 +257,12 @@ public class AnnotationColourChooser
     jPanel3.add(threshold);\r
     jPanel3.add(slider);\r
     jPanel3.add(thresholdValue);\r
+    jPanel3.add(thresholdIsMin);\r
     this.add(jPanel1, java.awt.BorderLayout.SOUTH);\r
     this.add(jPanel2, java.awt.BorderLayout.NORTH);\r
   }\r
 \r
-  JComboBox annotations = new JComboBox();\r
+  JComboBox annotations;\r
   JPanel minColour = new JPanel();\r
   JPanel maxColour = new JPanel();\r
   JButton ok = new JButton();\r
@@ -260,6 +277,7 @@ public class AnnotationColourChooser
   JSlider slider = new JSlider();\r
   JTextField thresholdValue = new JTextField(20);\r
   JCheckBox currentColours = new JCheckBox();\r
+  JCheckBox thresholdIsMin = new JCheckBox();\r
 \r
   public void minColour_actionPerformed()\r
   {\r
@@ -295,27 +313,8 @@ public class AnnotationColourChooser
       return;\r
     }\r
 \r
-    // We removed the non-graph annotations when filling the combobox\r
-    // so allow for them again here\r
-    int nograph = 0, graph = -1;\r
-    for (int i = 0; i < av.alignment.getAlignmentAnnotation().length; i++)\r
-    {\r
-      if (av.alignment.getAlignmentAnnotation()[i].graph == 0)\r
-      {\r
-        nograph++;\r
-      }\r
-      else\r
-      {\r
-        graph++;\r
-      }\r
-\r
-      if (graph == annotations.getSelectedIndex())\r
-      {\r
-        break;\r
-      }\r
-    }\r
 \r
-    currentAnnotation = av.alignment.getAlignmentAnnotation()[graph + nograph];\r
+    currentAnnotation = av.alignment.getAlignmentAnnotation()[annotations.getSelectedIndex()];\r
 \r
     int aboveThreshold = -1;\r
     if (threshold.getSelectedItem().equals("Above Threshold"))\r
@@ -379,6 +378,13 @@ public class AnnotationColourChooser
               aboveThreshold);\r
     }\r
 \r
+    if(currentAnnotation.graphMin==0f&& currentAnnotation.graphMax==0f)\r
+    {\r
+      acg.predefinedColours = true;\r
+    }\r
+\r
+    acg.thresholdIsMinMax = thresholdIsMin.isSelected();\r
+\r
     av.setGlobalColourScheme(acg);\r
 \r
     if (av.alignment.getGroups() != null)\r
@@ -503,4 +509,9 @@ public class AnnotationColourChooser
     changeColour();\r
   }\r
 \r
+  public void thresholdIsMin_actionPerformed(ActionEvent actionEvent)\r
+  {\r
+    changeColour();\r
+  }\r
+\r
 }\r
index ff6673a..6a7a3cf 100755 (executable)
@@ -160,7 +160,7 @@ public class AnnotationColourGradient
           && !jalview.util.Comparison.isGap(c))\r
       {\r
 \r
-        if (predefinedColours)\r
+       if (predefinedColours)\r
         {\r
           if(annotation.annotations[j].colour != null)\r
               return annotation.annotations[j].colour;\r