X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAnnotationLabels.java;fp=src%2Fjalview%2Fgui%2FAnnotationLabels.java;h=0c29840034c1629a0d54a385d1699d47b5c9af0c;hb=32973e4c3a37dd4485c4190f45bbf43017af40df;hp=4e25454ced51ac64eef74656bbdfffb17f90b0a1;hpb=da82f3c35066f27c4632b2f7c5d818dc1b9a6547;p=jalview.git diff --git a/src/jalview/gui/AnnotationLabels.java b/src/jalview/gui/AnnotationLabels.java index 4e25454..0c29840 100755 --- a/src/jalview/gui/AnnotationLabels.java +++ b/src/jalview/gui/AnnotationLabels.java @@ -539,17 +539,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);