X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=0c29840034c1629a0d54a385d1699d47b5c9af0c;hb=refs%2Fheads%2Ffeatures%2FJAL-1264_showHideAnnotations;hp=fdb3975704379fa3ce0b1aeece782ad0d08c8d83;hpb=4c46bbeeb645f914293383092f8c6bf022a870e4;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index fdb3975..0c29840 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -20,19 +20,42 @@ */ package jalview.gui; -import java.util.*; -import java.util.regex.Pattern; +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.*; -import java.awt.datatransfer.*; -import java.awt.event.*; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.MediaTracker; +import java.awt.RenderingHints; +import java.awt.Toolkit; +import java.awt.datatransfer.StringSelection; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; import java.awt.geom.AffineTransform; -import java.awt.image.*; -import javax.swing.*; +import java.awt.image.BufferedImage; +import java.util.Vector; +import java.util.regex.Pattern; -import jalview.datamodel.*; -import jalview.io.*; -import jalview.util.MessageManager; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; +import javax.swing.ToolTipManager; /** * DOCUMENT ME! @@ -115,7 +138,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, Graphics2D g = (Graphics2D) bi.getGraphics(); g.rotate(Math.toRadians(90)); g.drawImage(temp, 0, -bi.getWidth(this), this); - image = (Image) bi; + image = bi; addMouseListener(this); addMouseMotionListener(this); @@ -249,11 +272,18 @@ public class AnnotationLabels extends JPanel implements MouseListener, aa[selectedRow].scaleColLabel = !aa[selectedRow].scaleColLabel; } + refresh(); + + } + + /** + * Redraw sensibly. + */ + protected void refresh() + { ap.validateAnnotationDimensions(false); ap.addNotify(); ap.repaint(); - // validate(); - // ap.paintAlignment(true); } /** @@ -480,7 +510,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, */ public void mouseClicked(MouseEvent evt) { - AlignmentAnnotation[] aa = ap.av.getAlignment() + final AlignmentAnnotation[] aa = ap.av.getAlignment() .getAlignmentAnnotation(); if (SwingUtilities.isLeftMouseButton(evt)) { @@ -579,6 +609,35 @@ public class AnnotationLabels extends JPanel implements MouseListener, item = new JMenuItem(HIDE); 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) + { + JMenuItem hideType = new JMenuItem(); + String text = MessageManager.getString("label.hide_all") + " " + label; + hideType.setText(text); + hideType.addActionListener(new ActionListener() + { + @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; + } + } + refresh(); + } + }); + pop.add(hideType); + } + } item = new JMenuItem(DELETE); item.addActionListener(this); pop.add(item); @@ -608,7 +667,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, pop.add(item); } } - else if (aa[selectedRow].label.indexOf("Consensus") > -1) + else if (label.indexOf("Consensus") > -1) { pop.addSeparator(); // av and sequencegroup need to implement same interface for