X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fgui%2FIdPanel.java;h=939a65effad7f8e993120b2b82e37f936137b9dc;hb=d4ede6b61d4abab78200f334d8df07879dfe6741;hp=032992666ef7f19a9139403244ca53f0e9f81382;hpb=dba30c55e191417596da163caeef250c78de132d;p=jalview.git diff --git a/src/jalview/gui/IdPanel.java b/src/jalview/gui/IdPanel.java index 0329926..939a65e 100755 --- a/src/jalview/gui/IdPanel.java +++ b/src/jalview/gui/IdPanel.java @@ -17,10 +17,7 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene public int width; public int lastid; - - - boolean mouseDown; - boolean mouseUp; + SequenceGroup selectedSequenceGroup; public IdPanel(AlignViewport av, AlignmentPanel parent) { @@ -36,39 +33,54 @@ 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; } - for (int i = start; i <= end; i++) { + for (int i = start; i <= end; i++) + { SequenceI pickedSeq = av.getAlignment().getSequenceAt(i); - - if (av.getSelection().contains(pickedSeq)) { + 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(); } public void mouseDragged(MouseEvent e) { int y = e.getY(); - int seq = av.getIndex(y); - if (mouseDown == true) { - if (seq < lastid) { - selectSeqs(lastid-1,seq); - } else if (seq > lastid) { - selectSeqs(lastid+1,seq); - } - lastid = seq; - } + if (seq < lastid) + selectSeqs(lastid - 1, seq); + else if (seq > lastid) + selectSeqs(lastid + 1, seq); + + lastid = seq; return; } @@ -98,44 +110,41 @@ public class IdPanel extends JPanel implements MouseListener, MouseMotionListene int y = e.getY(); int seq = av.getIndex(y); - mouseDown = true; - - 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; - } + 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; + + return; } - public void mouseReleased(MouseEvent e) { + public void mouseReleased(MouseEvent e) + { lastid = -1; - - mouseDown = false; - mouseUp = true; - PaintRefresher.Refresh(this); - + selectedSequenceGroup = null; } }