import java.util.Collections;
import java.util.List;
+import javax.swing.JLabel;
import javax.swing.JPanel;
+import javax.swing.JToolTip;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
ToolTipManager.sharedInstance().registerComponent(this);
ToolTipManager.sharedInstance().setInitialDelay(0);
ToolTipManager.sharedInstance().setDismissDelay(10000);
+
+
this.av = viewport;
setBackground(Color.white);
String lastMessage;
+ private String formattedTooltipText;
+
@Override
public void mouseOverSequence(SequenceI sequence, int index, int pos)
{
String textString = tooltipText.toString();
if (lastTooltip == null || !lastTooltip.equals(textString))
{
- String formattedTooltipText = JvSwingUtils.wrapTooltip(true,
+ formattedTooltipText = JvSwingUtils.wrapTooltip(true,
textString);
setToolTipText(formattedTooltipText);
+
lastTooltip = textString;
}
}
}
+
private Point lastp = null;
+ private JToolTip tempTip = new JLabel().createToolTip();
+
/*
* (non-Javadoc)
*
@Override
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
+ // BH 2018
+
+ if (tooltipText == null || tooltipText.length() == 6)
+ return null;
+
+ if (lastp != null && event.isShiftDown())
+ return lastp;
+
Point p = lastp;
- if (!event.isShiftDown() || p == null)
- {
- p = (tooltipText != null && tooltipText.length() > 6)
- ? new Point(event.getX() + wdth, event.getY() - 20)
- : null;
- }
+ int x = event.getX();
+ int y = event.getY();
+ int w = getWidth();
+
+ tempTip.setTipText(formattedTooltipText);
+ int tipWidth = (int) tempTip.getPreferredSize().getWidth();
+
+ // was x += (w - x < 200) ? -(w / 2) : 5;
+ x = (x + tipWidth < w ? x + 10 : w - tipWidth);
+ p = new Point(x, y + 20); // BH 2018 was - 20?
/*
* TODO: try to modify position region is not obcured by tooltip
+ *
+ * Done?
*/
+
return lastp = p;
}