From c093f1a074d234d120e7d4f80e9f4e59512f9f04 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 30 Jul 2009 15:10:51 +0000
Subject: [PATCH] Fix for issue 4159 ('?' sign in Base DNs table should display the tooltip when clicking on it) Create a new listener that will be in charge of displaying the tool tip when the user clicks on the component that registered it as listener.
---
opends/src/guitools/org/opends/guitools/controlpanel/ui/components/LabelWithHelpIcon.java | 108 +++++------------------------------------------------
1 files changed, 11 insertions(+), 97 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/components/LabelWithHelpIcon.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/components/LabelWithHelpIcon.java
index 2e5b3c5..fb885be 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/components/LabelWithHelpIcon.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/components/LabelWithHelpIcon.java
@@ -22,30 +22,21 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2009 Sun Microsystems, Inc.
*/
package org.opends.guitools.controlpanel.ui.components;
import java.awt.Color;
-import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.Box;
import javax.swing.ImageIcon;
-import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
-import javax.swing.JToolTip;
-import javax.swing.Popup;
-import javax.swing.PopupFactory;
-import javax.swing.ToolTipManager;
import org.opends.guitools.controlpanel.ui.ColorAndFontConstants;
import org.opends.guitools.controlpanel.util.Utilities;
@@ -69,11 +60,7 @@
protected JLabel iconLabel = new JLabel(icon);
private static final ImageIcon icon =
Utilities.createImageIcon("org/opends/quicksetup/images/help_small.gif");
- private static final ToolTipManager ttipManager =
- ToolTipManager.sharedInstance();
- private Popup tipWindow;
- private boolean isVisible;
/**
* The left inset of the help icon.
@@ -109,33 +96,7 @@
gbc.fill = GridBagConstraints.HORIZONTAL;
add(Box.createHorizontalGlue(), gbc);
- ttipManager.unregisterComponent(iconLabel);
-
- iconLabel.addMouseListener(new MouseAdapter()
- {
- /**
- * {@inheritDoc}
- */
- public void mouseExited(MouseEvent event)
- {
- hideToolTip(event);
- }
-
- /**
- * {@inheritDoc}
- */
- public void mousePressed(MouseEvent event)
- {
- if (isVisible)
- {
- hideToolTip(event);
- }
- else
- {
- displayToolTip(event);
- }
- }
- });
+ Utilities.addClickTooltipListener(iconLabel);
}
/**
@@ -221,67 +182,20 @@
}
/**
- * Displays a tooltip depending on the MouseEvent received.
- * @param event the mouse event.
+ * {@inheritDoc}
*/
- private void displayToolTip(MouseEvent event)
+ public String getToolTipText(MouseEvent ev)
{
- JComponent component = (JComponent)event.getSource();
- String toolTipText = component.getToolTipText();
- if (toolTipText != null)
+ int x = ev.getPoint().x;
+ boolean display = x > label.getPreferredSize().width - 10;
+
+ if (display)
{
- Point preferredLocation = component.getToolTipLocation(event);
- Rectangle sBounds = component.getGraphicsConfiguration().
- getBounds();
-
- JToolTip tip = component.createToolTip();
- tip.setTipText(toolTipText);
- Dimension size = tip.getPreferredSize();
- Point location = new Point();
-
- Point screenLocation = component.getLocationOnScreen();
- if(preferredLocation != null)
- {
- location.x = screenLocation.x + preferredLocation.x;
- location.y = screenLocation.y + preferredLocation.y;
- }
- else
- {
- location.x = screenLocation.x + event.getX();
- location.y = screenLocation.y + event.getY() + 20;
- }
-
- if (location.x < sBounds.x) {
- location.x = sBounds.x;
- }
- else if (location.x - sBounds.x + size.width > sBounds.width) {
- location.x = sBounds.x + Math.max(0, sBounds.width - size.width);
- }
- if (location.y < sBounds.y) {
- location.y = sBounds.y;
- }
- else if (location.y - sBounds.y + size.height > sBounds.height) {
- location.y = sBounds.y + Math.max(0, sBounds.height - size.height);
- }
-
- PopupFactory popupFactory = PopupFactory.getSharedInstance();
- tipWindow = popupFactory.getPopup(component, tip, location.x, location.y);
- tipWindow.show();
+ return getHelpTooltip();
}
- isVisible = true;
- }
-
- /**
- * Hides the tooltip if we are displaying it.
- * @param event the mouse event.
- */
- private void hideToolTip(MouseEvent event)
- {
- if (tipWindow != null)
+ else
{
- tipWindow.hide();
- tipWindow = null;
+ return null;
}
- isVisible = false;
}
}
--
Gitblit v1.10.0