+ else
+ {
+ // selection action.
+ if (selectedRow > -1 && selectedRow < aa.length)
+ {
+ if (aa[selectedRow].groupRef != null)
+ {
+ if (evt.getClickCount() >= 2)
+ {
+ // todo: make the ap scroll to the selection - not necessary, first
+ // click highlights/scrolls, second selects
+ ap.seqPanel.ap.idPanel.highlightSearchResults(null);
+ ap.av.setSelectionGroup(// new SequenceGroup(
+ aa[selectedRow].groupRef); // );
+ ap.av.sendSelection();
+ ap.paintAlignment(false);
+ PaintRefresher.Refresh(ap, ap.av.getSequenceSetId());
+ }
+ else
+ {
+ ap.seqPanel.ap.idPanel
+ .highlightSearchResults(aa[selectedRow].groupRef
+ .getSequences(null));
+ }
+ return;
+ }
+ else if (aa[selectedRow].sequenceRef != null)
+ {
+ if (evt.getClickCount() == 1)
+ {
+ 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 = 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());
+ ap.av.sendSelection();
+ }
+
+ }
+ }
+
+ }
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param e
+ * DOCUMENT ME!
+ */
+ protected void copy_annotseqtoclipboard(SequenceI sq)
+ {
+ if (sq == null || sq.getLength() < 1)
+ {
+ return;
+ }
+ jalview.appletgui.AlignFrame.copiedSequences = new StringBuffer();
+ jalview.appletgui.AlignFrame.copiedSequences.append(sq.getName() + "\t"
+ + sq.getStart() + "\t" + sq.getEnd() + "\t"
+ + sq.getSequenceAsString() + "\n");
+ if (av.hasHiddenColumns())
+ {
+ jalview.appletgui.AlignFrame.copiedHiddenColumns = new Vector();
+ for (int[] region : av.getColumnSelection().getHiddenColumns())
+ {
+ jalview.appletgui.AlignFrame.copiedHiddenColumns
+ .addElement(new int[] { region[0], region[1] });
+ }
+ }
+ }
+
+ public void update(Graphics g)
+ {
+ paint(g);
+ }