X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=8b97853d556343237ce44949da4041455800dcdd;hb=4e1cb9b8b058d9b633af223b1cdb7b220d5d2ccd;hp=336532cf553ed2508ab0f92c453a0362302c65b5;hpb=85b15d4a71f0bb3240e544a5d6bd320ee5e91856;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 336532c..8b97853 100755 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) - * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) + * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -100,9 +100,9 @@ public class SeqPanel extends JPanel implements MouseListener, * Creates a new SeqPanel object. * * @param avp - * DOCUMENT ME! + * DOCUMENT ME! * @param p - * DOCUMENT ME! + * DOCUMENT ME! */ public SeqPanel(AlignViewport av, AlignmentPanel ap) { @@ -524,7 +524,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void mouseReleased(MouseEvent evt) { @@ -544,7 +544,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void mousePressed(MouseEvent evt) { @@ -626,7 +626,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void mouseMoved(MouseEvent evt) { @@ -690,7 +690,7 @@ public class SeqPanel extends JPanel implements MouseListener, int rpos; SequenceFeature[] features = findFeaturesAtRes(sequence .getDatasetSequence(), rpos = sequence.findPosition(res)); - appendFeatures(tooltipText, linkImageURL.toString(), rpos, features); + appendFeatures(tooltipText, linkImageURL.toString(), rpos, features,this.ap.seqPanel.seqCanvas.fr.minmax); } if (tooltipText.length() == 6) // { @@ -706,23 +706,31 @@ public class SeqPanel extends JPanel implements MouseListener, setToolTipText(tooltipText.toString()); lastTooltip = tooltipText.toString(); } - + } - - } - /* (non-Javadoc) + } + private Point lastp=null; + /* + * (non-Javadoc) + * * @see javax.swing.JComponent#getToolTipLocation(java.awt.event.MouseEvent) */ public Point getToolTipLocation(MouseEvent event) { - int x=event.getX(),w=getWidth(); - int wdth = (w-x<200) ? -(w/2) : 5; // switch sides when tooltip is too close to edge - Point p = (tooltipText!=null && tooltipText.length()>6) ? - new Point(event.getX()+wdth, event.getY()-20) : null; - /* TODO: try to modify position region is not obcured by tooltip - */ - return p; + int x = event.getX(), w = getWidth(); + int wdth = (w - x < 200) ? -(w / 2) : 5; // switch sides when tooltip is too + // close to edge + Point p = lastp; + if (!event.isShiftDown() || p==null) { + p = (tooltipText != null && tooltipText.length() > 6) ? new Point( + event.getX() + wdth, event.getY() - 20) + : null; + } + /* + * TODO: try to modify position region is not obcured by tooltip + */ + return lastp=p; } /** @@ -733,11 +741,16 @@ public class SeqPanel extends JPanel implements MouseListener, * @param linkImageURL * @param rpos * @param features - * TODO refactor to Jalview 'utilities' somehow. + * TODO refactor to Jalview 'utilities' somehow. */ - public static void appendFeatures(StringBuffer tooltipText2, + public void appendFeatures(StringBuffer tooltipText2, String linkImageURL, int rpos, SequenceFeature[] features) { + appendFeatures(tooltipText2,linkImageURL,rpos,features,null); + } + public void appendFeatures(StringBuffer tooltipText2, String string, + int rpos, SequenceFeature[] features, Hashtable minmax) + { String tmpString; if (features != null) { @@ -826,11 +839,12 @@ public class SeqPanel extends JPanel implements MouseListener, } } } - // TODO: check min/max range for this feature type to decide if - // score should be shown - if (features[i].getScore() != Float.NaN) - { - tooltipText2.append(" Score=" + features[i].getScore()); + // check score should be shown + if (features[i].getScore() != Float.NaN) { + float[][] rng=(minmax==null) ? null : ((float[][])minmax.get(features[i].getType())); + if (rng!=null && rng[0]!=null && rng[0][0]!=rng[0][1]) { + tooltipText2.append(" Score=" + features[i].getScore()); + } } if (features[i].getValue("status") != null) { @@ -858,11 +872,11 @@ public class SeqPanel extends JPanel implements MouseListener, * Set status message in alignment panel * * @param sequence - * aligned sequence object + * aligned sequence object * @param res - * alignment column + * alignment column * @param seq - * index of sequence in alignment + * index of sequence in alignment * @return position of res in sequence */ int setStatusMessage(SequenceI sequence, int res, int seq) @@ -906,7 +920,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void mouseDragged(MouseEvent evt) { @@ -1374,7 +1388,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void mouseEntered(MouseEvent e) { @@ -1394,7 +1408,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void mouseExited(MouseEvent e) { @@ -1452,13 +1466,14 @@ public class SeqPanel extends JPanel implements MouseListener, { ap.scrollUp(true); } + // TODO Update tooltip for new position. } /** * DOCUMENT ME! * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void doMousePressedDefineMode(MouseEvent evt) { @@ -1603,7 +1618,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void doMouseReleasedDefineMode(MouseEvent evt) { @@ -1653,7 +1668,7 @@ public class SeqPanel extends JPanel implements MouseListener, * DOCUMENT ME! * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void doMouseDraggedDefineMode(MouseEvent evt) { @@ -1866,9 +1881,17 @@ public class SeqPanel extends JPanel implements MouseListener, { if (av.selectionGroup == null || !av.isSelectionGroupChanged()) { - SequenceGroup sgroup = (seqsel != null) ? seqsel.intersect( - av.alignment, (av.hasHiddenRows) ? av.hiddenRepSequences - : null) : null; + SequenceGroup sgroup = null; + if (seqsel != null) + { + if (av.alignment==null) + { + jalview.bin.Cache.log.warn("alignviewport av SeqSetId="+av.getSequenceSetId()+" ViewId="+av.getViewId()+" 's alignment is NULL! returning immediatly."); + return; + } + sgroup = seqsel.intersect(av.alignment, + (av.hasHiddenRows) ? av.hiddenRepSequences : null); + } if (sgroup != null && sgroup.getSize() > 0) { av.setSelectionGroup(sgroup);