From f3030a08d2a57edf262374d822502c5aaafc0406 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Fri, 10 Dec 2004 14:37:09 +0000 Subject: [PATCH] Addition of rubberband --- src/jalview/gui/SeqPanel.java | 150 +++++++++++++---------------------------- 1 file changed, 48 insertions(+), 102 deletions(-) diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index ebcbc76..3680503 100755 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -328,142 +328,78 @@ public class SeqPanel extends JPanel } - public void setColourScheme(ColourSchemeI cs, boolean showConservation) + public void doMousePressedDefineMode(MouseEvent evt) { - seqCanvas.paintFlag = true; - if (av.getSelection().size() == 0) - { - seqCanvas.globalColorScheme = cs; - for (int i = 0; i < av.alignment.getGroups().size();i++) - { - SequenceGroup sg = (SequenceGroup)av.alignment.getGroups().elementAt(i); - sg.cs = cs; - if(!showConservation - && !(sg.cs instanceof Blosum62ColourScheme) - && sg.cs instanceof ConservationColourScheme) - { - // remove ConservationColouring from existing Conservation group - ConservationColourScheme ccs = (ConservationColourScheme)sg.cs; - sg.cs = ccs.cs; - } - else if(showConservation && !(sg.cs instanceof ConservationColourScheme)) - { - // add ConservationColouring to new group - Conservation c = sg.getConservation(); - Alignment al = (Alignment) av.getAlignment(); - c = new Conservation("All", al.cons, - ResidueProperties.propHash, 3, sg.sequences, 0, - al.getWidth() ); - c.calculate(); - c.verdict(false, 100); - sg.setConservation(c); - sg.cs = new ConservationColourScheme(sg); - } - } - } - else - { - SequenceGroup sg = av.alignment.findGroup((Sequence)av.sel.sequenceAt(0)); + int res = evt.getX()/av.getCharWidth() + av.getStartRes(); + int seq = evt.getY()/av.getCharHeight() + av.getStartSeq(); - if( isNewSelection(sg) ) - { - sg = av.getAlignment().addGroup(); - for (int i=0; i < av.getSelection().size(); i++) - { - av.alignment.removeFromGroup(av.alignment.findGroup( (Sequence) av. - sel.sequenceAt(i)), - (Sequence) av.sel.sequenceAt(i)); - av.alignment.addToGroup(sg, (Sequence) av.sel.sequenceAt(i)); - } - } + stretchGroup = av.getRubberbandGroup(); + if(stretchGroup == null) + stretchGroup = av.alignment.findGroup((Sequence)av.getAlignment().getSequenceAt(seq)); + else if(!stretchGroup.sequences.contains((Sequence)av.getAlignment().getSequenceAt(seq)) + || stretchGroup.getStartRes()res) + { + System.out.println(stretchGroup.getStartRes()+" "+stretchGroup.getEndRes()+" "+res); + stretchGroup = null; + } - sg.cs = cs; - // Selection is made, we only want to change the conservationColour for selected group - if( showConservation - && !(sg.cs instanceof ConservationColourScheme) - && !(sg.cs instanceof Blosum62ColourScheme)) - { - Conservation c = sg.getConservation(); - Alignment al = (Alignment) av.getAlignment(); - - c = new Conservation("All", al.cons, - ResidueProperties.propHash, 3, sg.sequences, 0, - al.getWidth() ); - c.calculate(); - c.verdict(false, 100); - sg.setConservation(c); - sg.cs = new ConservationColourScheme(sg); + if(stretchGroup==null) + { + // define a new group here + SequenceGroup sg = new SequenceGroup(); + sg.setStartRes(res); + sg.setEndRes(res); + sg.addSequence( (Sequence)av.getAlignment().getSequenceAt(seq) ); + av.setRubberbandGroup( sg ); + stretchGroup = sg; + System.out.println("new rubberband group"); } - else if( !showConservation && sg.cs instanceof ConservationColourScheme) + else if( javax.swing.SwingUtilities.isRightMouseButton(evt)) { - ConservationColourScheme ccs = (ConservationColourScheme)sg.cs; - sg.cs = ccs.cs; + // edit the properties of existing group } - } - repaint(); - } - - boolean isNewSelection(SequenceGroup sg) - { - if(sg==null) - return true; - - if(sg.getSize()!=av.getSelection().size()) - return true; - - for(int i=0; i0) - return av.alignment.findGroup((Sequence)av.sel.sequenceAt(0)).cs; - else - return seqCanvas.globalColorScheme; - } - - public void doMousePressedDefineMode(MouseEvent evt) - { - int res = evt.getX()/av.getCharWidth() + av.getStartRes(); - int seq = evt.getY()/av.getCharHeight() + av.getStartSeq(); - - stretchGroup = av.alignment.findGroup((Sequence)av.getAlignment().getSequenceAt(seq)); - - if(stretchGroup!=null && stretchGroup.getEndRes()==res) + if(stretchGroup!=null && stretchGroup.getEndRes()==res) { // Edit end res position of selected group changeEndRes = true; } - else if(stretchGroup!=null && stretchGroup.getStartRes()==res) + if(stretchGroup!=null && stretchGroup.getStartRes()==res) { // Edit end res position of selected group changeStartRes = true; } + seqCanvas.paintFlag = true; + repaint(); + } + boolean changeEndSeq = false; + boolean changeStartSeq = false; boolean changeEndRes = false; boolean changeStartRes = false; SequenceGroup stretchGroup = null; + public void doMouseReleasedDefineMode(MouseEvent evt) { changeEndRes = false; changeStartRes = false; + stretchGroup = null; } public void doMouseDraggedDefineMode(MouseEvent evt) { int res = evt.getX()/av.getCharWidth() + av.getStartRes(); - int seq = evt.getY()/av.getCharHeight() + av.getStartSeq(); + Sequence seq = (Sequence)av.getAlignment().getSequenceAt( + evt.getY()/av.getCharHeight() + av.getStartSeq()); + + // SequenceGroup newSeqGroup = av.alignment.findGroup(seq); if(res