Merge develop to Release_2_8_3_Branch
[jalview.git] / src / jalview / gui / AnnotationLabels.java
index 9c357a0..a544813 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.io.FormatAdapter;
-import jalview.util.MessageManager;
-
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Font;
@@ -49,6 +40,7 @@ import java.awt.geom.AffineTransform;
 import java.awt.image.BufferedImage;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.regex.Pattern;
 
 import javax.swing.JCheckBoxMenuItem;
@@ -58,6 +50,16 @@ import javax.swing.JPopupMenu;
 import javax.swing.SwingUtilities;
 import javax.swing.ToolTipManager;
 
+import jalview.analysis.AlignmentUtils;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.io.FormatAdapter;
+import jalview.util.MessageManager;
+
 /**
  * DOCUMENT ME!
  * 
@@ -67,6 +69,8 @@ import javax.swing.ToolTipManager;
 public class AnnotationLabels extends JPanel implements MouseListener,
         MouseMotionListener, ActionListener
 {
+  private static final Pattern LEFT_ANGLE_BRACKET_PATTERN = Pattern.compile("<");
+
   String TOGGLE_LABELSCALE = MessageManager.getString("label.scale_label_to_column");
 
   String ADDNEW = MessageManager.getString("label.add_new_row");
@@ -408,8 +412,8 @@ public class AnnotationLabels extends JPanel implements MouseListener,
       Dimension d = ap.annotationScroller.getPreferredSize();
       int dif = evt.getY() - oldY;
 
-      dif /= ap.av.charHeight;
-      dif *= ap.av.charHeight;
+      dif /= ap.av.getCharHeight();
+      dif *= ap.av.getCharHeight();
 
       if ((d.height - dif) > 20)
       {
@@ -460,7 +464,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
                 || (desc.substring(0, 6).toLowerCase().indexOf("<html>") < 0))
         {
           // clean the description ready for embedding in html
-          desc = new StringBuffer(Pattern.compile("<").matcher(desc)
+          desc = new StringBuffer(LEFT_ANGLE_BRACKET_PATTERN.matcher(desc)
                   .replaceAll("&lt;"));
           desc.insert(0, "<html>");
         }
@@ -621,11 +625,11 @@ public class AnnotationLabels extends JPanel implements MouseListener,
     item.addActionListener(this);
     pop.add(item);
     // JAL-1264 hide all sequence-specific annotations of this type
-    final String label = aa[selectedRow].label;
     if (selectedRow < aa.length)
     {
       if (aa[selectedRow].sequenceRef != null)
       {
+        final String label = aa[selectedRow].label;
         JMenuItem hideType = new JMenuItem();
         String text = MessageManager.getString("label.hide_all") + " " + label;
         hideType.setText(text);
@@ -634,15 +638,18 @@ public class AnnotationLabels extends JPanel implements MouseListener,
           @Override
           public void actionPerformed(ActionEvent e)
           {
-            for (AlignmentAnnotation ann : ap.av.getAlignment()
-                    .getAlignmentAnnotation())
-            {
-              if (ann.sequenceRef != null && ann.label != null
-                      && ann.label.equals(label))
-              {
-                ann.visible = false;
-              }
-            }
+            AlignmentUtils.showOrHideSequenceAnnotations(
+                    ap.av.getAlignment(), Collections.singleton(label),
+                    null, false, false);
+            // for (AlignmentAnnotation ann : ap.av.getAlignment()
+            // .getAlignmentAnnotation())
+            // {
+            // if (ann.sequenceRef != null && ann.label != null
+            // && ann.label.equals(label))
+            // {
+            // ann.visible = false;
+            // }
+            // }
             refresh();
           }
         });
@@ -665,6 +672,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
     // property methods
     if (selectedRow < aa.length)
     {
+      final String label = aa[selectedRow].label;
       if (!aa[selectedRow].autoCalculated)
       {
         if (aa[selectedRow].graph == AlignmentAnnotation.NO_GRAPH)
@@ -683,10 +691,10 @@ public class AnnotationLabels extends JPanel implements MouseListener,
         pop.addSeparator();
         // av and sequencegroup need to implement same interface for
         final JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem(
-                       MessageManager.getString("label.ignore_gaps_consensus"),
+                        MessageManager.getString("label.ignore_gaps_consensus"),
                 (aa[selectedRow].groupRef != null) ? aa[selectedRow].groupRef
                         .getIgnoreGapsConsensus() : ap.av
-                        .getIgnoreGapsConsensus());
+                        .isIgnoreGapsConsensus());
         final AlignmentAnnotation aaa = aa[selectedRow];
         cbmi.addActionListener(new ActionListener()
         {
@@ -709,7 +717,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
         if (aaa.groupRef != null)
         {
           final JCheckBoxMenuItem chist = new JCheckBoxMenuItem(
-                         MessageManager.getString("label.show_group_histogram"),
+                          MessageManager.getString("label.show_group_histogram"),
                   aa[selectedRow].groupRef.isShowConsensusHistogram());
           chist.addActionListener(new ActionListener()
           {
@@ -728,7 +736,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
           });
           pop.add(chist);
           final JCheckBoxMenuItem cprofl = new JCheckBoxMenuItem(
-                         MessageManager.getString("label.show_group_logo"),
+                          MessageManager.getString("label.show_group_logo"),
                   aa[selectedRow].groupRef.isShowSequenceLogo());
           cprofl.addActionListener(new ActionListener()
           {
@@ -747,7 +755,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
           });
           pop.add(cprofl);
           final JCheckBoxMenuItem cproflnorm = new JCheckBoxMenuItem(
-                         MessageManager.getString("label.normalise_group_logo"),
+                          MessageManager.getString("label.normalise_group_logo"),
                   aa[selectedRow].groupRef.isNormaliseSequenceLogo());
           cproflnorm.addActionListener(new ActionListener()
           {
@@ -772,7 +780,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
         else
         {
           final JCheckBoxMenuItem chist = new JCheckBoxMenuItem(
-                         MessageManager.getString("label.show_histogram"), av.isShowConsensusHistogram());
+                          MessageManager.getString("label.show_histogram"), av.isShowConsensusHistogram());
           chist.addActionListener(new ActionListener()
           {
             public void actionPerformed(ActionEvent e)
@@ -791,7 +799,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
           });
           pop.add(chist);
           final JCheckBoxMenuItem cprof = new JCheckBoxMenuItem(
-                         MessageManager.getString("label.show_logo"), av.isShowSequenceLogo());
+                          MessageManager.getString("label.show_logo"), av.isShowSequenceLogo());
           cprof.addActionListener(new ActionListener()
           {
             public void actionPerformed(ActionEvent e)
@@ -810,7 +818,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
           });
           pop.add(cprof);
           final JCheckBoxMenuItem cprofnorm = new JCheckBoxMenuItem(
-                         MessageManager.getString("label.normalise_logo"), av.isNormaliseSequenceLogo());
+                          MessageManager.getString("label.normalise_logo"), av.isNormaliseSequenceLogo());
           cprofnorm.addActionListener(new ActionListener()
           {
             public void actionPerformed(ActionEvent e)
@@ -1122,7 +1130,7 @@ public class AnnotationLabels extends JPanel implements MouseListener,
               dragEvent.getY() - getScrollOffset());
     }
 
-    if (!av.wrapAlignment && ((aa == null) || (aa.length < 1)))
+    if (!av.getWrapAlignment() && ((aa == null) || (aa.length < 1)))
     {
       g.drawString(MessageManager.getString("label.right_click"), 2, 8);
       g.drawString(MessageManager.getString("label.to_add_annotation"), 2,