From 9ec67638125a7af9db8960e5de52ea980b8ed582 Mon Sep 17 00:00:00 2001 From: jprocter Date: Mon, 8 Jun 2009 11:14:57 +0000 Subject: [PATCH] sequence scores only shown if they vary. shift stops tooltip moving with mouse pointer. bugfix selection sharing. apply gpl development license --- src/jalview/gui/SeqPanel.java | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index b52c710..7791541 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 @@ -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) // { @@ -710,7 +710,7 @@ public class SeqPanel extends JPanel implements MouseListener, } } - + private Point lastp=null; /* * (non-Javadoc) * @@ -721,13 +721,16 @@ public class SeqPanel extends JPanel implements MouseListener, 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( + 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 p; + return lastp=p; } /** @@ -740,9 +743,14 @@ public class SeqPanel extends JPanel implements MouseListener, * @param features * 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) { @@ -831,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) { @@ -1874,7 +1883,12 @@ public class SeqPanel extends JPanel implements MouseListener, SequenceGroup sgroup = null; if (seqsel != null) { - seqsel = seqsel.intersect(av.alignment, + 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) -- 1.7.10.2