From 4756b29312ca78d0975248c65e50157399e6ce39 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Thu, 1 Feb 2007 12:37:08 +0000 Subject: [PATCH] Doesnt move with mouse, friendlier for mac users --- src/jalview/appletgui/Tooltip.java | 112 ++++++++++++++++++++---------------- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/src/jalview/appletgui/Tooltip.java b/src/jalview/appletgui/Tooltip.java index 9306e3d..6766330 100755 --- a/src/jalview/appletgui/Tooltip.java +++ b/src/jalview/appletgui/Tooltip.java @@ -27,8 +27,9 @@ import java.util.*; public class Tooltip extends Canvas implements MouseListener, MouseMotionListener { - private String [] tip; + private String lastTip=""; + private boolean setPosition = false; protected Component owner; private Container mainContainer; @@ -45,8 +46,6 @@ public class Tooltip extends Canvas implements MouseListener, FontMetrics fm; - - public Tooltip(String tip, Component owner) { this.owner = owner; @@ -61,52 +60,53 @@ public class Tooltip extends Canvas implements MouseListener, } } - public void paint(Graphics g) { - g.drawRect(0,0,getSize().width -1, getSize().height -1); - int lindex, x; - for(int i=0; i0) - { - g.drawString(tip[i].substring(0, lindex), 3, (i+1)*fontHeight-3); - x+=fm.stringWidth(tip[i].substring(0, lindex)+3); - } - g.drawImage(linkImage, x, i * fontHeight+1, this); - if(lindex+6 0) + { + g.drawString(tip[i].substring(0, lindex), 3, (i + 1) * fontHeight - 3); + x += fm.stringWidth(tip[i].substring(0, lindex) + 3); + } + g.drawImage(linkImage, x, i * fontHeight + 1, this); + if (lindex + 6 < tip[i].length()) + { + g.drawString(tip[i].substring(lindex + 6), + x + linkImage.getWidth(this), + (i + 1) * fontHeight - 3); + } + } + else + { + g.drawString(tip[i], 3, (i + 1) * fontHeight - 3); + } + } } - void setTip(String tip) + synchronized void setTip(String tip) { if(tip==null) { setTip(""); return; } + + if(lastTip.equals(tip)) + return; + + lastTip = tip; + setPosition = true; + fm = getFontMetrics(owner.getFont()); fontHeight = fm.getHeight(); @@ -124,15 +124,18 @@ public class Tooltip extends Canvas implements MouseListener, setSize(longestLine + HORIZONTAL_ENLARGE, fontHeight*this.tip.length); - } - - void setTipLocation(int x, int y) - { - setLocation((owner.getLocationOnScreen().x - mainContainer.getLocationOnScreen().x) +x, - (owner.getLocationOnScreen().y - mainContainer.getLocationOnScreen().y + VERTICAL_OFFSET)+y); + repaint(); + } + void setTipLocation(MouseEvent evt) + { + setLocation( (owner.getLocationOnScreen().x + - mainContainer.getLocationOnScreen().x) + evt.getX(), + (owner.getLocationOnScreen().y - + mainContainer.getLocationOnScreen().y + + VERTICAL_OFFSET) + evt.getY()); // correction, whole tool tip must be visible if (mainContainer.getSize().width < (getLocation().x + getSize().width)) @@ -140,7 +143,6 @@ public class Tooltip extends Canvas implements MouseListener, setLocation(mainContainer.getSize().width - getSize().width, getLocation().y); } - } @@ -167,7 +169,9 @@ public class Tooltip extends Canvas implements MouseListener, } public void mouseEntered(MouseEvent me) - { } + { + setTipLocation(me); + } public void mouseExited(MouseEvent me) { @@ -187,13 +191,19 @@ public class Tooltip extends Canvas implements MouseListener, public void mouseMoved(MouseEvent me) { - if (shown) - setTipLocation(me.getX(), me.getY()); - else + if(!shown) { findMainContainer(); - addToolTip(); - setTipLocation(me.getX(), me.getY()); + mainContainer.setLayout(null); + mainContainer.add(this, 0); + mainContainer.validate(); + shown = true; + setTipLocation(me); + } + else if (setPosition) + { + setTipLocation(me); + setPosition = false; } } -- 1.7.10.2