Must check that featureGroup is visible for mouse over features
[jalview.git] / src / jalview / appletgui / AnnotationColourChooser.java
index 80d39e8..2db2bd0 100755 (executable)
@@ -25,10 +25,11 @@ import java.awt.event.*;
 \r
 import jalview.datamodel.*;\r
 import jalview.schemes.*;\r
+import java.awt.Rectangle;\r
 \r
 public class AnnotationColourChooser\r
     extends Panel implements ActionListener,\r
-    AdjustmentListener, ItemListener\r
+    AdjustmentListener, ItemListener, MouseListener\r
 {\r
   Frame frame;\r
   AlignViewport av;\r
@@ -63,6 +64,7 @@ public class AnnotationColourChooser
     this.ap = ap;\r
 \r
     slider.addAdjustmentListener(this);\r
+    slider.addMouseListener(this);\r
 \r
     if (av.alignment.getAlignmentAnnotation() == null)\r
     {\r
@@ -82,12 +84,21 @@ public class AnnotationColourChooser
     }\r
 \r
     adjusting = true;\r
+\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
+    for (int i = 0; i < list.size(); i++)\r
+    {\r
+        annotations.addItem(list.elementAt(i).toString());\r
     }\r
 \r
     threshold.addItem("No Threshold");\r
@@ -127,6 +138,7 @@ public class AnnotationColourChooser
     maxColour.setLabel("Max Colour");\r
     maxColour.addActionListener(this);\r
 \r
+    thresholdIsMin.addItemListener(this);\r
     ok.setLabel("OK");\r
     ok.addActionListener(this);\r
 \r
@@ -145,16 +157,19 @@ public class AnnotationColourChooser
 \r
     slider.setBackground(Color.white);\r
     slider.setEnabled(false);\r
-    slider.setBounds(new Rectangle(172, 7, 120, 16));\r
+    slider.setBounds(new Rectangle(153, 3, 93, 21));\r
     thresholdValue.setEnabled(false);\r
-    thresholdValue.setBounds(new Rectangle(295, 4, 83, 22));\r
-    thresholdValue.setColumns(10);\r
+    thresholdValue.setBounds(new Rectangle(248, 2, 79, 22));\r
+    thresholdValue.setColumns(5);\r
     jPanel3.setBackground(Color.white);\r
     currentColours.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));\r
     currentColours.setLabel("Use Original Colours");\r
     currentColours.addItemListener(this);\r
 \r
-    threshold.setBounds(new Rectangle(19, 4, 141, 22));\r
+    threshold.setBounds(new Rectangle(11, 3, 139, 22));\r
+    thresholdIsMin.setBackground(Color.white);\r
+    thresholdIsMin.setLabel("Threshold is min/max");\r
+    thresholdIsMin.setBounds(new Rectangle(328, 3, 135, 23));\r
     jPanel1.add(ok);\r
     jPanel1.add(cancel);\r
     jPanel2.add(annotations);\r
@@ -164,6 +179,7 @@ public class AnnotationColourChooser
     jPanel3.add(threshold);\r
     jPanel3.add(slider);\r
     jPanel3.add(thresholdValue);\r
+    jPanel3.add(thresholdIsMin);\r
     this.add(jPanel2, java.awt.BorderLayout.NORTH);\r
     this.add(jPanel3, java.awt.BorderLayout.CENTER);\r
     this.add(jPanel1, java.awt.BorderLayout.SOUTH);\r
@@ -183,6 +199,7 @@ public class AnnotationColourChooser
   TextField thresholdValue = new TextField(20);\r
   Checkbox currentColours = new Checkbox();\r
   BorderLayout borderLayout1 = new BorderLayout();\r
+  Checkbox thresholdIsMin = new Checkbox();\r
 \r
   public void actionPerformed(ActionEvent evt)\r
   {\r
@@ -214,7 +231,7 @@ public class AnnotationColourChooser
     else if (evt.getSource() == cancel)\r
     {\r
       reset();\r
-      ap.repaint();\r
+      ap.paintAlignment(true);\r
       frame.setVisible(false);\r
     }\r
 \r
@@ -253,7 +270,7 @@ public class AnnotationColourChooser
       }\r
 \r
       currentAnnotation.threshold.value = (float) slider.getValue() / 1000f;\r
-      ap.repaint();\r
+      ap.paintAlignment(false);\r
     }\r
   }\r
 \r
@@ -296,27 +313,9 @@ 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()\r
+        [annotations.getSelectedIndex()];\r
 \r
     int aboveThreshold = -1;\r
     if (threshold.getSelectedItem().equals("Above Threshold"))\r
@@ -377,6 +376,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.getState();\r
+\r
     av.setGlobalColourScheme(acg);\r
 \r
     if (av.alignment.getGroups() != null)\r
@@ -410,7 +416,7 @@ public class AnnotationColourChooser
       }\r
     }\r
 \r
-    ap.repaint();\r
+    ap.paintAlignment(false);\r
   }\r
 \r
   void reset()\r
@@ -426,8 +432,15 @@ public class AnnotationColourChooser
         sg.cs = (ColourSchemeI) oldgroupColours.get(sg);\r
       }\r
     }\r
-    ap.repaint();\r
+    ap.paintAlignment(true);\r
 \r
   }\r
 \r
+  public void mouseClicked(MouseEvent evt){}\r
+  public void mousePressed(MouseEvent evt){}\r
+  public void mouseReleased(MouseEvent evt){ ap.paintAlignment(true);}\r
+  public void mouseEntered(MouseEvent evt){}\r
+  public void mouseExited(MouseEvent evt){}\r
+\r
+\r
 }\r