From 18d83f9b01878aec525abf3e4a58da6c0e5e77c2 Mon Sep 17 00:00:00 2001 From: jprocter Date: Tue, 9 Sep 2008 11:13:45 +0000 Subject: [PATCH] refactored feature tooltip generation code to static method for use by IdPanel --- src/jalview/gui/SeqPanel.java | 193 ++++++++++++++++++++++------------------- 1 file changed, 105 insertions(+), 88 deletions(-) diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index bdfcef4..63a57f8 100755 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -679,123 +679,140 @@ public class SeqPanel extends JPanel implements MouseListener, // use aa to see if the mouse pointer is on a if (av.showSequenceFeatures) { + int rpos; SequenceFeature[] features = findFeaturesAtRes(sequence - .getDatasetSequence(), sequence.findPosition(res)); + .getDatasetSequence(), rpos = sequence.findPosition(res)); + appendFeatures(tooltipText, linkImageURL.toString(), rpos, features); + } + if (tooltipText.length() == 6) // + { + setToolTipText(null); + } + else + { + tooltipText.append(""); + if (lastTooltip == null + || !lastTooltip.equals(tooltipText.toString())) + setToolTipText(tooltipText.toString()); + + lastTooltip = tooltipText.toString(); + } - if (features != null) + } + /** + * appends the features at rpos to the given stringbuffer ready for display in a tooltip + * @param tooltipText2 + * @param linkImageURL + * @param rpos + * @param features + * TODO refactor to Jalview 'utilities' somehow. + */ + public static void appendFeatures(StringBuffer tooltipText2, String linkImageURL, + int rpos, SequenceFeature[] features) + { + String tmpString; + if (features != null) + { + for (int i = 0; i < features.length; i++) { - for (int i = 0; i < features.length; i++) + if (features[i].getType().equals("disulfide bond")) { - if (features[i].getType().equals("disulfide bond")) + if (features[i].getBegin() == rpos + || features[i].getEnd() == rpos) { - if (features[i].getBegin() == sequence.findPosition(res) - || features[i].getEnd() == sequence.findPosition(res)) + if (tooltipText2.length() > 6) { - if (tooltipText.length() > 6) - { - tooltipText.append("
"); - } - tooltipText.append("disulfide bond " + features[i].getBegin() - + ":" + features[i].getEnd()); - if (features[i].links != null) - { - tooltipText.append(" "); - } + tooltipText2.append("
"); + } + tooltipText2.append("disulfide bond " + features[i].getBegin() + + ":" + features[i].getEnd()); + if (features[i].links != null) + { + tooltipText2.append(" "); } } - else + } + else + { + if (tooltipText2.length() > 6) + { + tooltipText2.append("
"); + } + + tooltipText2.append(features[i].getType() + " "); + if (rpos!=0) + { + // we are marking a positional feature + tooltipText2.append(features[i].begin); + } + if (features[i].begin != features[i].end) { - if (tooltipText.length() > 6) + tooltipText2.append(" " + features[i].end); + } + + if (features[i].getDescription() != null + && !features[i].description.equals(features[i] + .getType())) + { + tmpString = features[i].getDescription(); + int startTag = tmpString.toUpperCase().indexOf(""); + if (startTag > -1) { - tooltipText.append("
"); + tmpString = tmpString.substring(startTag + 6); } - - tooltipText.append(features[i].getType() + " " - + features[i].begin); - if (features[i].begin != features[i].end) + int endTag = tmpString.toUpperCase().indexOf(""); + if (endTag > -1) { - tooltipText.append(" " + features[i].end); + tmpString = tmpString.substring(0, endTag); + } + endTag = tmpString.toUpperCase().indexOf(""); + if (endTag > -1) + { + tmpString = tmpString.substring(0, endTag); } - if (features[i].getDescription() != null - && !features[i].description.equals(features[i] - .getType())) + if (startTag > -1) { - tmpString = features[i].getDescription(); - int startTag = tmpString.toUpperCase().indexOf(""); - if (startTag > -1) - { - tmpString = tmpString.substring(startTag + 6); - } - int endTag = tmpString.toUpperCase().indexOf(""); - if (endTag > -1) - { - tmpString = tmpString.substring(0, endTag); - } - endTag = tmpString.toUpperCase().indexOf(""); - if (endTag > -1) + tooltipText2.append("; " + tmpString); + } + else + { + if (tmpString.indexOf("<") > -1 + || tmpString.indexOf(">") > -1) { - tmpString = tmpString.substring(0, endTag); - } + // The description does not specify html is to + // be used, so we must remove < > symbols + tmpString = tmpString.replaceAll("<", "<"); + tmpString = tmpString.replaceAll(">", ">"); + + tooltipText2.append("; "); + tooltipText2.append(tmpString); - if (startTag > -1) - { - tooltipText.append("; " + tmpString); } else { - if (tmpString.indexOf("<") > -1 - || tmpString.indexOf(">") > -1) - { - // The description does not specify html is to - // be used, so we must remove < > symbols - tmpString = tmpString.replaceAll("<", "<"); - tmpString = tmpString.replaceAll(">", ">"); - - tooltipText.append("; "); - tooltipText.append(tmpString); - - } - else - { - tooltipText.append("; " + tmpString); - } - } - } - if (features[i].getValue("status") != null) - { - String status = features[i].getValue("status").toString(); - if (status.length() > 0) - { - tooltipText.append("; (" + features[i].getValue("status") - + ")"); + tooltipText2.append("; " + tmpString); } } - - if (features[i].links != null) + } + if (features[i].getValue("status") != null) + { + String status = features[i].getValue("status").toString(); + if (status.length() > 0) { - tooltipText.append(" "); + tooltipText2.append("; (" + features[i].getValue("status") + + ")"); } + } + if (features[i].links != null) + { + tooltipText2.append(" "); } + } } } - - if (tooltipText.length() == 6) // - { - setToolTipText(null); - } - else - { - tooltipText.append(""); - if (lastTooltip == null - || !lastTooltip.equals(tooltipText.toString())) - setToolTipText(tooltipText.toString()); - - lastTooltip = tooltipText.toString(); - } - } String lastTooltip; -- 1.7.10.2