X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSeqPanel.java;h=fb11579f29a9cfc3d20ec42a333baed76b583f12;hb=8da7acff9214ddaf0e6d28e76219ab51bd38e62d;hp=ebde2cfb8cb3b303592fbe0e610ca50d374786c5;hpb=95a46891288f4fc63d690cab4f56879678f54fb6;p=jalview.git diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index ebde2cf..fb11579 100755 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -64,19 +64,11 @@ public class SeqPanel { public void mouseMoved(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } doMouseMoved(evt); } public void mouseDragged(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } if (editingSeqs) { doMouseDragged(evt); @@ -92,10 +84,6 @@ public class SeqPanel { public void mouseReleased(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } if (editingSeqs) { doMouseReleased(evt); @@ -109,10 +97,6 @@ public class SeqPanel public void mousePressed(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } if (evt.isShiftDown() || evt.isAltDown() || evt.isControlDown()) { if (evt.isAltDown() || evt.isControlDown()) @@ -131,7 +115,7 @@ public class SeqPanel public void mouseExited(MouseEvent evt) { - if (av.getWrapAlignment() || editingSeqs) + if (editingSeqs) { return; } @@ -141,7 +125,7 @@ public class SeqPanel public void mouseEntered(MouseEvent evt) { - if (av.getWrapAlignment() || editingSeqs) + if (editingSeqs) { return; } @@ -168,18 +152,62 @@ public class SeqPanel ap.repaint(); } + int startWrapBlock=-1; + int wrappedBlock=-1; + int findRes(MouseEvent evt) + { + int res = 0; + int x = evt.getX(); + + if (av.wrapAlignment) + { + int y = evt.getY(); + y -= (2 * av.charHeight); + x -= seqCanvas.LABEL_WEST; + + int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight; + int cwidth = seqCanvas.getWrappedCanvasWidth(this.getSize().width); + wrappedBlock = y/chunkHeight; + wrappedBlock += av.getStartRes()/cwidth; + + res = wrappedBlock*cwidth + x / av.getCharWidth(); + } + else + { + res = (x / av.getCharWidth()) + av.getStartRes(); + } + + return res; + + } + + int findSeq(MouseEvent evt) + { + int seq = 0; + int y = evt.getY(); + + if (av.wrapAlignment) + { + y -= (2 * av.charHeight); + int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight; + seq = ( (y % chunkHeight) / av.getCharHeight()); + } + else + { + seq = (y / av.getCharHeight()) + av.getStartSeq(); + } + + return seq; + } + + public void doMousePressed(MouseEvent evt) { ap.alignFrame.addHistoryItem(new HistoryItem( "Edit Sequence", av.alignment, HistoryItem.EDIT)); - int seq; - int res; - - int x = evt.getX(); - int y = evt.getY(); - res = x / av.getCharWidth() + av.getStartRes(); - seq = y / av.getCharHeight() + av.getStartSeq(); + int seq = findSeq(evt); + int res = findRes(evt); if (seq < av.getAlignment().getHeight() && res < av.getAlignment().getSequenceAt(seq).getLength()) @@ -202,28 +230,10 @@ public class SeqPanel public void doMouseMoved(MouseEvent evt) { - int res = 0, seq = 0; - int x = evt.getX(); - int y = evt.getY(); - if (av.wrapAlignment) - { - y -= 2 * av.charHeight; - int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight; - - res = (int) ( (y / chunkHeight) * (getSize().width / av.charWidth)) + - x / av.getCharWidth() + av.getStartRes(); - - y %= chunkHeight; - seq = y / av.getCharHeight() + av.getStartSeq(); - - } - else - { - res = x / av.getCharWidth() + av.getStartRes(); - seq = y / av.getCharHeight() + av.getStartSeq(); - } + int res = findRes(evt); + int seq = findSeq(evt); - if (seq >= av.getAlignment().getHeight()) + if (seq >= av.getAlignment().getHeight() || seq<0 || res<0) { return; } @@ -284,7 +294,7 @@ public class SeqPanel { // If we're dragging we're editing - int res = evt.getX() / av.getCharWidth() + av.getStartRes(); + int res = findRes(evt); if (res < 0) { res = 0; @@ -445,40 +455,11 @@ public class SeqPanel { if (endEdit == startEdit) { - ap.alignFrame.historyList.pop(); - ap.alignFrame.updateEditMenuBar(); - } - - av.updateConservation(); - av.updateConsensus(); - - // Y O Y CLUSTALX - ColourSchemeI cs = av.getGlobalColourScheme(); - if (cs.conservationApplied()) - { - if (cs instanceof ClustalxColourScheme) - { - jalview.analysis.Conservation c = new jalview.analysis.Conservation - ("All", - ResidueProperties.propHash, 3, - av.alignment.getSequences(), 0, - av.alignment.getWidth() - 1); - c.calculate(); - c.verdict(false, av.ConsPercGaps); - - ((ClustalxColourScheme)cs).resetClustalX(av.alignment.getSequences(), av.alignment.getWidth()); - cs.setConservation(c); - av.setGlobalColourScheme(cs); - } - } - - if (cs instanceof ClustalxColourScheme) - { - ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(), - av.alignment.getWidth()); - av.setGlobalColourScheme(cs); + ap.alignFrame.historyList.pop(); + ap.alignFrame.updateEditMenuBar(); } + av.firePropertyChange("alignment", null,av.getAlignment().getSequences()); } ////////////////////////////////////////// @@ -487,9 +468,10 @@ public class SeqPanel int oldSeq = -1; public void doMousePressedDefineMode(MouseEvent evt) { - int res = evt.getX() / av.getCharWidth() + av.getStartRes(); - int seq = evt.getY() / av.getCharHeight() + av.getStartSeq(); + int res = findRes(evt); + int seq = findSeq(evt); oldSeq = seq; + startWrapBlock=wrappedBlock; SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(seq); @@ -625,8 +607,14 @@ public class SeqPanel boolean remove = false; public void doMouseDraggedDefineMode(MouseEvent evt) { - int res = evt.getX() / av.getCharWidth() + av.getStartRes(); - int y = evt.getY() / av.getCharHeight() + av.getStartSeq(); + int res = findRes(evt); + int y = findSeq(evt); + + if(wrappedBlock!=startWrapBlock) + return; + + if(y>=av.alignment.getHeight()) + y = av.alignment.getHeight()-1; if (stretchGroup == null) { @@ -654,7 +642,7 @@ public class SeqPanel { res = av.getStartRes(); } - else if (res > av.getEndRes()) + else if (res > av.getEndRes() && !av.getWrapAlignment()) { res = av.getEndRes(); } @@ -726,16 +714,10 @@ public class SeqPanel public void doMouseExitedDefineMode(MouseEvent e) { - if (av.getWrapAlignment()) - { - return; - } - if (mouseDragging) { scrollThread = new ScrollThread(); } - } // this class allows scrolling off the bottom of the visible alignment