JAL-2189 source formatting
[jalview.git] / src / jalview / gui / AnnotationRowFilter.java
index 9e205c4..c8bd69c 100644 (file)
@@ -1,19 +1,36 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.gui;
 
-import jalview.api.AnnotationRowFilterI;
 import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.GraphLine;
 import jalview.datamodel.SequenceGroup;
 import jalview.schemes.AnnotationColourGradient;
 import jalview.util.MessageManager;
 
-import java.awt.event.ActionEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.Vector;
 
+import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JInternalFrame;
@@ -24,8 +41,7 @@ import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
 @SuppressWarnings("serial")
-public abstract class AnnotationRowFilter extends JPanel implements
-        AnnotationRowFilterI
+public abstract class AnnotationRowFilter extends JPanel
 {
   protected AlignViewport av;
 
@@ -35,7 +51,7 @@ public abstract class AnnotationRowFilter extends JPanel implements
 
   protected boolean enableSeqAss = false;
 
-  private jalview.datamodel.AlignmentAnnotation currentAnnotation;
+  private AlignmentAnnotation currentAnnotation;
 
   protected boolean adjusting = false;
 
@@ -54,6 +70,11 @@ public abstract class AnnotationRowFilter extends JPanel implements
   protected JTextField thresholdValue = new JTextField(20);
 
   protected JInternalFrame frame;
+
+  protected JButton ok = new JButton();
+
+  protected JButton cancel = new JButton();
+
   /**
    * enabled if the user is dragging the slider - try to keep updates to a
    * minimun
@@ -109,7 +130,6 @@ public abstract class AnnotationRowFilter extends JPanel implements
     });
   }
 
-
   public AnnotationRowFilter(AlignViewport av, final AlignmentPanel ap)
   {
     this.av = av;
@@ -121,7 +141,6 @@ public abstract class AnnotationRowFilter extends JPanel implements
 
   }
 
-  @Override
   public Vector<String> getAnnotationItems(boolean isSeqAssociated)
   {
     Vector<String> list = new Vector<String>();
@@ -141,11 +160,20 @@ public abstract class AnnotationRowFilter extends JPanel implements
         enableSeqAss = true;
       }
       String label = av.getAlignment().getAlignmentAnnotation()[i].label;
+      // add associated sequence ID if available
+      if (!isSeqAssociated
+              && av.getAlignment().getAlignmentAnnotation()[i].sequenceRef != null)
+      {
+        label = label
+                + "_"
+                + av.getAlignment().getAlignmentAnnotation()[i].sequenceRef
+                        .getName();
+      }
+      // make label unique
       if (!list.contains(label))
       {
         anmap[list.size()] = i;
         list.add(label);
-
       }
       else
       {
@@ -156,7 +184,6 @@ public abstract class AnnotationRowFilter extends JPanel implements
         }
       }
     }
-    // seqAssociated.setEnabled(enableSeqAss);
     this.annmap = new int[list.size()];
     System.arraycopy(anmap, 0, this.annmap, 0, this.annmap.length);
     return list;
@@ -181,9 +208,8 @@ public abstract class AnnotationRowFilter extends JPanel implements
     seqAssociated.setEnabled(enableSeqAss);
   }
 
-  public void ok_actionPerformed(ActionEvent e)
+  public void ok_actionPerformed()
   {
-    updateView();
     try
     {
       frame.setClosed(true);
@@ -192,7 +218,7 @@ public abstract class AnnotationRowFilter extends JPanel implements
     }
   }
 
-  public void cancel_actionPerformed(ActionEvent e)
+  public void cancel_actionPerformed()
   {
     reset();
     ap.paintAlignment(true);
@@ -204,22 +230,22 @@ public abstract class AnnotationRowFilter extends JPanel implements
     }
   }
 
-  public void thresholdCheck_actionPerformed(ActionEvent e)
+  public void thresholdCheck_actionPerformed()
   {
     updateView();
   }
 
-  public void annotations_actionPerformed(ActionEvent e)
+  public void annotations_actionPerformed()
   {
     updateView();
   }
 
-  public void threshold_actionPerformed(ActionEvent e)
+  public void threshold_actionPerformed()
   {
     updateView();
   }
 
-  public void thresholdValue_actionPerformed(ActionEvent e)
+  public void thresholdValue_actionPerformed()
   {
     try
     {
@@ -231,7 +257,7 @@ public abstract class AnnotationRowFilter extends JPanel implements
     }
   }
 
-  public void thresholdIsMin_actionPerformed(ActionEvent actionEvent)
+  public void thresholdIsMin_actionPerformed()
   {
     updateView();
   }
@@ -239,15 +265,14 @@ public abstract class AnnotationRowFilter extends JPanel implements
   protected void populateThresholdComboBox(JComboBox<String> threshold)
   {
     threshold.addItem(MessageManager
-            .getString("label.threshold_feature_no_thereshold"));
+            .getString("label.threshold_feature_no_threshold"));
     threshold.addItem(MessageManager
-            .getString("label.threshold_feature_above_thereshold"));
+            .getString("label.threshold_feature_above_threshold"));
     threshold.addItem(MessageManager
-            .getString("label.threshold_feature_below_thereshold"));
+            .getString("label.threshold_feature_below_threshold"));
   }
 
-  protected void seqAssociated_actionPerformed(ActionEvent arg0,
-          JComboBox<String> annotations, JCheckBox seqAssociated)
+  protected void seqAssociated_actionPerformed(JComboBox<String> annotations)
   {
     adjusting = true;
     String cursel = (String) annotations.getSelectedItem();
@@ -304,26 +329,25 @@ public abstract class AnnotationRowFilter extends JPanel implements
     }
   }
 
-  protected boolean colorAlignmContaining(
-          AlignmentAnnotation currentAnnotation, int selectedThresholdItem)
+  protected boolean colorAlignmContaining(AlignmentAnnotation currentAnn,
+          int selectedThresholdOption)
   {
 
     AnnotationColourGradient acg = null;
     if (currentColours.isSelected())
     {
-      acg = new AnnotationColourGradient(currentAnnotation,
-              av.getGlobalColourScheme(), selectedThresholdItem);
+      acg = new AnnotationColourGradient(currentAnn,
+              av.getGlobalColourScheme(), selectedThresholdOption);
     }
     else
     {
-      acg = new AnnotationColourGradient(currentAnnotation,
+      acg = new AnnotationColourGradient(currentAnn,
               minColour.getBackground(), maxColour.getBackground(),
-              selectedThresholdItem);
+              selectedThresholdOption);
     }
     acg.setSeqAssociated(seqAssociated.isSelected());
 
-    if (currentAnnotation.graphMin == 0f
-            && currentAnnotation.graphMax == 0f)
+    if (currentAnn.graphMin == 0f && currentAnn.graphMax == 0f)
     {
       acg.setPredefinedColours(true);
     }
@@ -344,17 +368,17 @@ public abstract class AnnotationRowFilter extends JPanel implements
 
         if (currentColours.isSelected())
         {
-          sg.cs = new AnnotationColourGradient(currentAnnotation, sg.cs,
-                  selectedThresholdItem);
+          sg.cs = new AnnotationColourGradient(currentAnn, sg.cs,
+                  selectedThresholdOption);
           ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated
                   .isSelected());
 
         }
         else
         {
-          sg.cs = new AnnotationColourGradient(currentAnnotation,
+          sg.cs = new AnnotationColourGradient(currentAnn,
                   minColour.getBackground(), maxColour.getBackground(),
-                  selectedThresholdItem);
+                  selectedThresholdOption);
           ((AnnotationColourGradient) sg.cs).setSeqAssociated(seqAssociated
                   .isSelected());
         }
@@ -364,78 +388,6 @@ public abstract class AnnotationRowFilter extends JPanel implements
     return false;
   }
 
-  protected boolean markColumnsContaining(
-          AlignmentAnnotation currentAnnotation, int thresholdComparisonType)
-  {
-    try
-    {
-      if (currentAnnotation != null)
-      {
-        Annotation[] annotations = currentAnnotation.annotations;
-        ColumnSelection cs = av.getColumnSelection();
-        cs.clear();
-        if (thresholdComparisonType == AnnotationColourGradient.NO_THRESHOLD)
-        {
-          int count = 0;
-          do
-          {
-            if (annotations[count] != null)
-            {
-              if (currentAnnotation.label.equals("Secondary Structure")
-                      && annotations[count].secondaryStructure != ' ')
-              {
-                cs.addElement(count);
-              }
-              else if (currentAnnotation.label
-                      .equals("Iron Sulphur Contacts"))
-              {
-                cs.addElement(count);
-              }
-              else if (annotations[count].value != 0.0)
-              {
-                cs.addElement(count);
-              }
-
-            }
-            count++;
-          } while (count < annotations.length);
-        }
-        else
-        {
-          int count = 0;
-          do
-          {
-            if (annotations[count] != null)
-            {
-              if (thresholdComparisonType == AnnotationColourGradient.ABOVE_THRESHOLD)
-              {
-                if (annotations[count].value > currentAnnotation.threshold.value)
-                {
-                  cs.addElement(count);
-                }
-              }
-              else if (thresholdComparisonType == AnnotationColourGradient.BELOW_THRESHOLD)
-              {
-                if (annotations[count].value < currentAnnotation.threshold.value)
-                {
-                  cs.addElement(count);
-                }
-              }
-
-            }
-            count++;
-          } while (count < annotations.length);
-        }
-      }
-
-      return true;
-    } catch (Exception e)
-    {
-      e.printStackTrace();
-      return false;
-    }
-  }
-
   public jalview.datamodel.AlignmentAnnotation getCurrentAnnotation()
   {
     return currentAnnotation;
@@ -447,4 +399,9 @@ public abstract class AnnotationRowFilter extends JPanel implements
     this.currentAnnotation = currentAnnotation;
   }
 
+  public abstract void valueChanged(boolean updateAllAnnotation);
+
+  public abstract void updateView();
+
+  public abstract void reset();
 }