// 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) // <html></html>
+ {
+ setToolTipText(null);
+ }
+ else
+ {
+ tooltipText.append("</html>");
+ 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("<br>");
- }
- tooltipText.append("disulfide bond " + features[i].getBegin()
- + ":" + features[i].getEnd());
- if (features[i].links != null)
- {
- tooltipText.append(" <img src=\"" + linkImageURL + "\">");
- }
+ tooltipText2.append("<br>");
+ }
+ tooltipText2.append("disulfide bond " + features[i].getBegin()
+ + ":" + features[i].getEnd());
+ if (features[i].links != null)
+ {
+ tooltipText2.append(" <img src=\"" + linkImageURL + "\">");
}
}
- else
+ }
+ else
+ {
+ if (tooltipText2.length() > 6)
+ {
+ tooltipText2.append("<br>");
+ }
+
+ 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("<HTML>");
+ if (startTag > -1)
{
- tooltipText.append("<br>");
+ 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("</BODY>");
+ if (endTag > -1)
{
- tooltipText.append(" " + features[i].end);
+ tmpString = tmpString.substring(0, endTag);
+ }
+ endTag = tmpString.toUpperCase().indexOf("</HTML>");
+ 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("<HTML>");
- if (startTag > -1)
- {
- tmpString = tmpString.substring(startTag + 6);
- }
- int endTag = tmpString.toUpperCase().indexOf("</BODY>");
- if (endTag > -1)
- {
- tmpString = tmpString.substring(0, endTag);
- }
- endTag = tmpString.toUpperCase().indexOf("</HTML>");
- 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(" <img src=\"" + linkImageURL + "\">");
+ tooltipText2.append("; (" + features[i].getValue("status")
+ + ")");
}
+ }
+ if (features[i].links != null)
+ {
+ tooltipText2.append(" <img src=\"" + linkImageURL + "\">");
}
+
}
}
}
-
- if (tooltipText.length() == 6) // <html></html>
- {
- setToolTipText(null);
- }
- else
- {
- tooltipText.append("</html>");
- if (lastTooltip == null
- || !lastTooltip.equals(tooltipText.toString()))
- setToolTipText(tooltipText.toString());
-
- lastTooltip = tooltipText.toString();
- }
-
}
String lastTooltip;