X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=8146be0314bd1be23d4188153ce7c6111886cd20;hb=246746e55bd02c66746d5cd872f49890cbae206a;hp=c98322ef642fd572ca726dc718afc37cd537d254;hpb=95a46891288f4fc63d690cab4f56879678f54fb6;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index c98322e..8146be0 100755 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -69,6 +69,8 @@ public class SeqPanel extends JPanel SequenceGroup stretchGroup = null; boolean remove = false; + boolean mouseWheelPressed = false; + /** * Creates a new SeqPanel object. * @@ -93,21 +95,11 @@ public class SeqPanel extends JPanel { public void mouseMoved(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } - doMouseMoved(evt); } public void mouseDragged(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } - if (editingSeqs) { doMouseDragged(evt); @@ -119,14 +111,40 @@ public class SeqPanel extends JPanel } }); + addMouseWheelListener(new MouseWheelListener() + { + public void mouseWheelMoved(MouseWheelEvent e) + { + + if (mouseWheelPressed) + { + Font font = av.getFont(); + int fontSize = font.getSize(); + if (e.getWheelRotation() > 0 && fontSize < 30) + fontSize++; + else if (fontSize > 1) + fontSize--; + + av.setFont(new Font(font.getName(), font.getStyle(), fontSize)); + ap.fontChanged(); + } + else + { + if (e.getWheelRotation() > 0) + ap.scrollUp(false); + else + ap.scrollUp(true); + } + + } + }); + + addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } + mouseWheelPressed = false; if (editingSeqs) { @@ -140,10 +158,11 @@ public class SeqPanel extends JPanel public void mousePressed(MouseEvent evt) { - if (av.getWrapAlignment()) - { - return; - } + if( javax.swing.SwingUtilities.isMiddleMouseButton(evt)) + { + mouseWheelPressed = true; + return; + } if (evt.isShiftDown() || evt.isAltDown() || evt.isControlDown()) @@ -164,26 +183,75 @@ public class SeqPanel extends JPanel public void mouseExited(MouseEvent evt) { - if (av.getWrapAlignment() || editingSeqs) - { - return; - } + if (editingSeqs) + { + return; + } - doMouseExitedDefineMode(evt); + doMouseExitedDefineMode(evt); } public void mouseEntered(MouseEvent evt) { - if (av.getWrapAlignment() || editingSeqs) - { - return; - } + if (editingSeqs) + { + return; + } doMouseEnteredDefineMode(evt); } }); } + 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.getWidth()); + 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; + } + + /** * DOCUMENT ME! * @@ -212,17 +280,14 @@ public class SeqPanel extends JPanel */ public void doMousePressed(MouseEvent evt) { - ap.alignFrame.addHistoryItem(new HistoryItem("Edit Sequence", - av.alignment, HistoryItem.EDIT)); + ap.alignFrame.addHistoryItem(new HistoryItem("Edit Sequence", + av.alignment, HistoryItem.EDIT)); - int seq; - int res; + int seq = findSeq(evt); + int res = findRes(evt); - int x = evt.getX(); - int y = evt.getY(); - - res = (x / av.getCharWidth()) + av.getStartRes(); - seq = (y / av.getCharHeight()) + av.getStartSeq(); + if(seq<0 || res<0) + return; if ((seq < av.getAlignment().getHeight()) && (res < av.getAlignment().getSequenceAt(seq).getLength())) @@ -249,39 +314,17 @@ public class SeqPanel extends JPanel */ public void doMouseMoved(MouseEvent evt) { - int res = 0; - int seq = 0; - int x = evt.getX(); - int y = evt.getY(); + int res = findRes(evt); + int seq = findSeq(evt); - if (av.wrapAlignment) - { - y -= (2 * av.charHeight); - - int chunkHeight = (av.getAlignment().getHeight() + 2) * av.charHeight; - - res = (int) ((y / chunkHeight) * (getWidth() / 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(); - } - - if (seq >= av.getAlignment().getHeight()) - { + if(res<0 || seq<0 || seq >= av.getAlignment().getHeight()) return; - } - SequenceI sequence = av.getAlignment().getSequenceAt(seq); + SequenceI sequence = av.getAlignment().getSequenceAt(seq); - if (res > sequence.getLength()) - { - return; + if (res > sequence.getLength()) + { + return; } Object obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) + @@ -344,7 +387,7 @@ public class SeqPanel extends JPanel public void doMouseDragged(MouseEvent evt) { // If we're dragging we're editing - int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); + int res = findRes(evt); if (res < 0) { @@ -536,52 +579,14 @@ public class SeqPanel extends JPanel */ void editOccurred(int i) { - if (endEdit == startEdit) - { - ap.alignFrame.historyList.pop(); - ap.alignFrame.updateEditMenuBar(); - } - - av.updateConservation(); - av.updateConsensus(); + if (endEdit == startEdit) + { + ap.alignFrame.historyList.pop(); + ap.alignFrame.updateEditMenuBar(); + } - // Y O Y CLUSTALX - ColourSchemeI cs = av.getGlobalColourScheme(); + av.firePropertyChange("alignment", null,av.getAlignment().getSequences()); - if (av.getSelectionGroup() != null) - { - av.getSelectionGroup().recalcConservation(); - } - - if (cs.conservationApplied()) - { - Conservation c = new Conservation("All", - ResidueProperties.propHash, 3, av.alignment.getSequences(), - 0, av.alignment.getWidth() - 1); - c.calculate(); - c.verdict(false, av.ConsPercGaps); - - if (cs instanceof ClustalxColourScheme) - { - ClustalxColourScheme cxs = (ClustalxColourScheme) cs; - cxs.resetClustalX(av.alignment.getSequences(), - av.alignment.getWidth()); - cs.setConservation(c); - av.setGlobalColourScheme(cs); - } - else - { - cs.setConservation(c); - av.setGlobalColourScheme(cs); - } - } - - if (cs instanceof ClustalxColourScheme) - { - ((ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(), - av.alignment.getWidth()); - av.setGlobalColourScheme(cs); - } } /** @@ -591,9 +596,14 @@ public class SeqPanel extends JPanel */ public void doMousePressedDefineMode(MouseEvent evt) { - int res = (evt.getX() / av.getCharWidth()) + av.getStartRes(); - int seq = (evt.getY() / av.getCharHeight()) + av.getStartSeq(); - oldSeq = seq; + int res = findRes(evt); + int seq = findSeq(evt); + oldSeq = seq; + + startWrapBlock=wrappedBlock; + + if(seq<0 || res<0) + return; SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(seq); @@ -739,11 +749,14 @@ public class SeqPanel extends JPanel */ 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 (stretchGroup == null) - { + if(wrappedBlock!=startWrapBlock) + return; + + if (stretchGroup == null) + { return; } @@ -767,7 +780,7 @@ public class SeqPanel extends JPanel { res = av.getStartRes(); } - else if (res > av.getEndRes()) + else if (res > av.getEndRes() && !av.getWrapAlignment()) { res = av.getEndRes(); }