X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSeqPanel.java;h=2f06d64b83a33d1e7b4f5b4441c526e2a68035dc;hb=de468b0bf50850a89c6a8a7acfa4ff5b689ffed1;hp=9c3a1e8304163cf92736e53c9a69afdfd449dda1;hpb=bf22060aa91d40c9d6f7e3c7f518b6bd0457921e;p=jalview.git diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index 9c3a1e8..2f06d64 100755 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -28,7 +28,7 @@ import jalview.datamodel.*; import jalview.schemes.*; public class SeqPanel - extends Panel + extends Panel implements MouseMotionListener, MouseListener { public SeqCanvas seqCanvas; @@ -60,84 +60,42 @@ public class SeqPanel ap = p; - seqCanvas.addMouseMotionListener(new MouseMotionAdapter() - { - public void mouseMoved(MouseEvent evt) - { - doMouseMoved(evt); - } - - public void mouseDragged(MouseEvent evt) - { - if (editingSeqs) - { - doMouseDragged(evt); - } - else - { - doMouseDraggedDefineMode(evt); - } - } - }); - - seqCanvas.addMouseListener(new MouseAdapter() - { - public void mouseReleased(MouseEvent evt) - { - if (editingSeqs) - { - doMouseReleased(evt); - } - else - { - doMouseReleasedDefineMode(evt); - } + seqCanvas.addMouseMotionListener(this); + seqCanvas.addMouseListener(this); - } - - public void mousePressed(MouseEvent evt) - { - if (evt.isShiftDown() || evt.isAltDown() || evt.isControlDown()) - { - if (evt.isAltDown() || evt.isControlDown()) - { - groupEditing = true; - } - - editingSeqs = true; - doMousePressed(evt); - } - else - { - doMousePressedDefineMode(evt); - } - } + seqCanvas.repaint(); + } - public void mouseExited(MouseEvent evt) - { - if (editingSeqs) - { - return; - } - doMouseExitedDefineMode(evt); - } + public void mousePressed(MouseEvent evt) + { + if (evt.isShiftDown() || evt.isAltDown() || evt.isControlDown()) + { + if (evt.isAltDown() || evt.isControlDown()) + { + groupEditing = true; + } + + editingSeqs = true; + doMousePressed(evt); + } + else + { + doMousePressedDefineMode(evt); + } + } - public void mouseEntered(MouseEvent evt) - { - if (editingSeqs) - { - return; - } - doMouseEnteredDefineMode(evt); - } + public void mouseClicked(MouseEvent evt){} - }); - seqCanvas.repaint(); - } - public void doMouseReleased(MouseEvent evt) + public void mouseReleased(MouseEvent evt) { + if (!editingSeqs) + { + doMouseReleasedDefineMode(evt); + return; + } + if (seqEditOccurred > -1) { @@ -161,16 +119,26 @@ public class SeqPanel if (av.wrapAlignment) { + + int hgap = av.charHeight; + if (av.scaleAboveWrapped) + hgap += av.charHeight; + + int cHeight = av.getAlignment().getHeight() * av.charHeight + + hgap + seqCanvas.getAnnotationHeight(); + int y = evt.getY(); - y -= (2 * av.charHeight); + y -= hgap; 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(); + int cwidth = seqCanvas.getWrappedCanvasWidth(getSize().width); + + wrappedBlock = y / cHeight; + wrappedBlock += av.getStartRes() / cwidth; + + res = wrappedBlock * cwidth + x / av.getCharWidth(); + } else { @@ -183,14 +151,22 @@ public class SeqPanel 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()); + int hgap = av.charHeight; + if (av.scaleAboveWrapped) + hgap += av.charHeight; + + int cHeight = av.getAlignment().getHeight() * av.charHeight + + hgap + seqCanvas.getAnnotationHeight(); + + y -= hgap; + + seq = ( (y % cHeight) / av.getCharHeight()); } else { @@ -228,7 +204,7 @@ public class SeqPanel return; } - public void doMouseMoved(MouseEvent evt) + public void mouseMoved(MouseEvent evt) { int res = findRes(evt); int seq = findSeq(evt); @@ -272,39 +248,52 @@ public class SeqPanel } } - ap.alignFrame.statusBar.setText(text.toString()); + if(seqCanvas.pdbCanvas!=null && sequence==seqCanvas.pdbCanvas.sequence) + { + seqCanvas.pdbCanvas.highlightRes(sequence.findPosition(res)); + } + // use aa to see if the mouse pointer is on a - if (av.showSequenceFeatures) + if (av.showSequenceFeatures && sequence.getSequenceFeatures()!=null) { Vector features = sequence.getSequenceFeatures(); Enumeration e = features.elements(); - StringBuffer sbuffer = new StringBuffer(); - + boolean first = true; while (e.hasMoreElements()) { SequenceFeature sf = (SequenceFeature) e.nextElement(); - if (sf.getStart() <= sequence.findPosition(res) && + if (sf.getBegin() <= sequence.findPosition(res) && sf.getEnd() >= sequence.findPosition(res)) { - if (sbuffer.length() > 0) + if(first) { - sbuffer.append("; "); + text.append(" Sequence Feature: "); + first = false; } - sbuffer.append(sf.getType() + " " + sf.getDescription()); + + text.append(sf.getDescription()); if (sf.getStatus().length() > 0) { - sbuffer.append(" (" + sf.getStatus() + ")"); + text.append(" (" + sf.getStatus() + ")"); } + text.append("; "); } } } + ap.alignFrame.statusBar.setText(text.toString()); + } - public void doMouseDragged(MouseEvent evt) + public void mouseDragged(MouseEvent evt) { + if (!editingSeqs) + { + doMouseDraggedDefineMode(evt); + return; + } // If we're dragging we're editing int res = findRes(evt); @@ -486,6 +475,9 @@ public class SeqPanel oldSeq = seq; startWrapBlock=wrappedBlock; + if(seq==-1) + return; + SequenceI sequence = (Sequence) av.getAlignment().getSequenceAt(seq); if (sequence == null || res > sequence.getLength()) @@ -717,15 +709,15 @@ public class SeqPanel seqCanvas.repaint(); } - public void doMouseEnteredDefineMode(MouseEvent e) + public void mouseEntered(MouseEvent e) { - if (scrollThread != null) + if (editingSeqs && scrollThread != null) { scrollThread.running = false; } } - public void doMouseExitedDefineMode(MouseEvent e) + public void mouseExited(MouseEvent e) { if (mouseDragging) {