X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=9c1db3d39cd21fe5dc38e98bf9059b46afd85516;hb=ab43013b7e357b84b4abade0dba949668dfb2a0e;hp=4e25454ced51ac64eef74656bbdfffb17f90b0a1;hpb=2e7da637a195ff484f92a333675284f071657cd6;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index 4e25454..9c1db3d 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -1,5 +1,5 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1) * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. @@ -47,6 +47,7 @@ import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; +import java.util.Arrays; import java.util.Vector; import java.util.regex.Pattern; @@ -477,29 +478,39 @@ public class AnnotationLabels extends JPanel implements MouseListener, { desc.append("
"); } - + // if (aa.hasProperties()) + // { + // desc.append(""); + // for (String prop : aa.getProperties()) + // { + // desc.append(""); + // } + // desc.append("
" + prop + "" + // + aa.getProperty(prop) + "
"); + // } } else { // begin the tooltip's html fragment desc.append(""); + if (aa.hasScore()) + { + // TODO: limit precision of score to avoid noise from imprecise + // doubles + // (64.7 becomes 64.7+/some tiny value). + desc.append(" Score: " + aa.score); + } } - if (aa.hasScore()) - { - // TODO: limit precision of score to avoid noise from imprecise doubles - // (64.7 becomes 64.7+/some tiny value). - desc.append(" Score: " + aa.score); - } - if (desc.length() > 6) { desc.append(""); this.setToolTipText(desc.toString()); } else + { this.setToolTipText(null); + } } - } /** @@ -539,17 +550,40 @@ public class AnnotationLabels extends JPanel implements MouseListener, } else if (aa[selectedRow].sequenceRef != null) { - Vector sr = new Vector(); - sr.addElement(aa[selectedRow].sequenceRef); if (evt.getClickCount() == 1) { - ap.seqPanel.ap.idPanel.highlightSearchResults(sr); + ap.seqPanel.ap.idPanel.highlightSearchResults(Arrays + .asList(new SequenceI[] + { aa[selectedRow].sequenceRef })); } else if (evt.getClickCount() >= 2) { ap.seqPanel.ap.idPanel.highlightSearchResults(null); - SequenceGroup sg = new SequenceGroup(); - sg.addSequence(aa[selectedRow].sequenceRef, false); + SequenceGroup sg = ap.av.getSelectionGroup(); + if (sg!=null) + { + // we make a copy rather than edit the current selection if no modifiers pressed + // see Enhancement JAL-1557 + if (!(evt.isControlDown() || evt.isShiftDown())) + { + sg = new SequenceGroup(sg); + sg.clear(); + sg.addSequence(aa[selectedRow].sequenceRef, false); + } else { + if (evt.isControlDown()) + { + sg.addOrRemove(aa[selectedRow].sequenceRef, true); + } else { + // notionally, we should also add intermediate sequences from last added sequence ? + sg.addSequence(aa[selectedRow].sequenceRef, true); + } + } + } else { + sg = new SequenceGroup(); + sg.setStartRes(0); + sg.setEndRes(ap.av.getAlignment().getWidth()-1); + sg.addSequence(aa[selectedRow].sequenceRef, false); + } ap.av.setSelectionGroup(sg); ap.av.sendSelection(); ap.paintAlignment(false); @@ -649,7 +683,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, pop.addSeparator(); // av and sequencegroup need to implement same interface for final JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem( - "Ignore Gaps In Consensus", + MessageManager.getString("label.ignore_gaps_consensus"), (aa[selectedRow].groupRef != null) ? aa[selectedRow].groupRef .getIgnoreGapsConsensus() : ap.av .getIgnoreGapsConsensus()); @@ -675,7 +709,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, if (aaa.groupRef != null) { final JCheckBoxMenuItem chist = new JCheckBoxMenuItem( - "Show Group Histogram", + MessageManager.getString("label.show_group_histogram"), aa[selectedRow].groupRef.isShowConsensusHistogram()); chist.addActionListener(new ActionListener() { @@ -694,7 +728,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, }); pop.add(chist); final JCheckBoxMenuItem cprofl = new JCheckBoxMenuItem( - "Show Group Logo", + MessageManager.getString("label.show_group_logo"), aa[selectedRow].groupRef.isShowSequenceLogo()); cprofl.addActionListener(new ActionListener() { @@ -713,7 +747,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, }); pop.add(cprofl); final JCheckBoxMenuItem cproflnorm = new JCheckBoxMenuItem( - "Normalise Group Logo", + MessageManager.getString("label.normalise_group_logo"), aa[selectedRow].groupRef.isNormaliseSequenceLogo()); cproflnorm.addActionListener(new ActionListener() { @@ -738,7 +772,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, else { final JCheckBoxMenuItem chist = new JCheckBoxMenuItem( - "Show Histogram", av.isShowConsensusHistogram()); + MessageManager.getString("label.show_histogram"), av.isShowConsensusHistogram()); chist.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -757,7 +791,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, }); pop.add(chist); final JCheckBoxMenuItem cprof = new JCheckBoxMenuItem( - "Show Logo", av.isShowSequenceLogo()); + MessageManager.getString("label.show_logo"), av.isShowSequenceLogo()); cprof.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -776,7 +810,7 @@ public class AnnotationLabels extends JPanel implements MouseListener, }); pop.add(cprof); final JCheckBoxMenuItem cprofnorm = new JCheckBoxMenuItem( - "Normalise Logo", av.isNormaliseSequenceLogo()); + MessageManager.getString("label.normalise_logo"), av.isNormaliseSequenceLogo()); cprofnorm.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) @@ -1005,7 +1039,9 @@ public class AnnotationLabels extends JPanel implements MouseListener, offset -= fm.getDescent(); } else + { offset += fm.getDescent(); + } x = width - fm.stringWidth(aa[i].label) - 3;