X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FIdPanel.java;h=939a65effad7f8e993120b2b82e37f936137b9dc;hb=c865a01627208f07db46ae7d28c06f39d83924ee;hp=4509ab3391b31325ab1dbf74e70c8cf67be84c2a;hpb=c5898a03d9b066d4ccc2e22d3cb72a8ca3cc656e;p=jalview.git diff --git a/src/jalview/gui/IdPanel.java b/src/jalview/gui/IdPanel.java index 4509ab3..939a65e 100755 --- a/src/jalview/gui/IdPanel.java +++ b/src/jalview/gui/IdPanel.java @@ -17,6 +17,7 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene public int width; public int lastid; + SequenceGroup selectedSequenceGroup; public IdPanel(AlignViewport av, AlignmentPanel parent) { @@ -32,7 +33,8 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene public void mouseMoved(MouseEvent e) {} public void selectSeqs(int start, int end) { - if (end < start) { + if (end < start) + { int tmp = start; start = end; end = tmp; @@ -41,14 +43,30 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene for (int i = start; i <= end; i++) { SequenceI pickedSeq = av.getAlignment().getSequenceAt(i); - if (av.getSelection().contains(pickedSeq)) + { av.getSelection().removeElement(pickedSeq); - else + selectedSequenceGroup.deleteSequence(pickedSeq); + } + else + { av.getSelection().addElement(pickedSeq); + if(selectedSequenceGroup==null) + { + selectedSequenceGroup = new SequenceGroup(); + av.setRubberbandGroup( selectedSequenceGroup ); + // av.alignment.addGroup( selectedSequenceGroup ); + selectedSequenceGroup.setStartRes(0); + selectedSequenceGroup.setEndRes( pickedSeq.getSequence().length()); + } + + selectedSequenceGroup.addSequence( pickedSeq ); + } } + alignPanel.seqPanel.seqCanvas.paintFlag=true; + alignPanel.repaint(); repaint(); } @@ -57,9 +75,6 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene int y = e.getY(); int seq = av.getIndex(y); - - - if (seq < lastid) selectSeqs(lastid - 1, seq); else if (seq > lastid) @@ -95,33 +110,34 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene int y = e.getY(); int seq = av.getIndex(y); + if (javax.swing.SwingUtilities.isRightMouseButton(e)) + { + jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(alignPanel, + av.getAlignment().getSequenceAt(seq)); + pop.show(this, e.getX(), y); + return; + } + + + + if(av.getRubberbandGroup()!=null && (av.getRubberbandGroup().getSize() == av.getSelection().size())) + selectedSequenceGroup = av.getRubberbandGroup(); + + if (selectedSequenceGroup == null) + { + selectedSequenceGroup = new SequenceGroup(); + av.setRubberbandGroup(selectedSequenceGroup); + } + + selectedSequenceGroup.setStartRes(0); + selectedSequenceGroup.setEndRes(av.getAlignment().getWidth() - 1); + + if (seq != -1) + selectSeqs(seq, seq); + + lastid = seq; + - if( javax.swing.SwingUtilities.isRightMouseButton(e)) - { - String id = av.getAlignment().getSequenceAt(seq).getName(); - String s = (String)JOptionPane.showInternalInputDialog( - this, - "Edit sequence name", - "Edit sequence name", - JOptionPane.PLAIN_MESSAGE, - null, - null, - id); - - if(s!=null) - { - av.getAlignment().getSequenceAt(seq).setName(s); - alignPanel.RefreshPanels(); - } - - } - else - { - if (seq != -1) - selectSeqs(seq,seq); - - lastid = seq; - } return; } @@ -129,5 +145,6 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene { lastid = -1; PaintRefresher.Refresh(this); + selectedSequenceGroup = null; } }