X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAnnotationLabels.java;fp=src%2Fjalview%2Fappletgui%2FAnnotationLabels.java;h=ac62c6ba60ed956219c6459b2b6ec0c951c7e57a;hb=95b5c9adc0b92682ac6901e05dd8dd46cdc9c674;hp=a286e0685004b7fc3885a83da4fedbf3239d7761;hpb=1098fd737b5ff291ea83768404036d388f43d0b8;p=jalview.git diff --git a/src/jalview/appletgui/AnnotationLabels.java b/src/jalview/appletgui/AnnotationLabels.java index a286e06..ac62c6b 100755 --- a/src/jalview/appletgui/AnnotationLabels.java +++ b/src/jalview/appletgui/AnnotationLabels.java @@ -21,7 +21,6 @@ package jalview.appletgui; import java.util.*; - import java.awt.*; import java.awt.event.*; @@ -649,17 +648,40 @@ public class AnnotationLabels extends Panel implements ActionListener, } 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.paintAlignment(false); PaintRefresher.Refresh(ap, ap.av.getSequenceSetId());