void (AWTEvent event) { if (!isEnabled) { return; } MouseEvent me = (MouseEvent)event; myProcessingComponent = me.getComponent(); try { if (me.getID() == MouseEvent.MOUSE_ENTERED) { boolean canShow = true; if (componentContextHasChanged(myProcessingComponent)) { canShow = hideCurrent(me, null, null); } if (canShow) { maybeShowFor(myProcessingComponent, me); } } else if (me.getID() == MouseEvent.MOUSE_EXITED) { // we hide tooltip (but not hint!) when it's shown over myComponent and mouse exits this component if (myProcessingComponent == myCurrentComponent && currentTooltip != null && !currentTooltip.isHint() && myBalloon != null) { myBalloon.setAnimationEnabled(false); hideCurrent(null, null, null, null, false); } else if (myProcessingComponent == myCurrentComponent || myProcessingComponent == myQueuedComponent) { hideCurrent(me, null, null); } } else if (me.getID() == MouseEvent.MOUSE_MOVED) { if (myProcessingComponent == myCurrentComponent || myProcessingComponent == myQueuedComponent) { if (myBalloon != null && myBalloon.wasFadedIn()) { maybeShowFor(myProcessingComponent, me); } else { if (!myCurrentTipIsCentered) { myX = me.getX(); myY = me.getY(); if (myProcessingComponent instanceof JComponent && !isTooltipDefined((JComponent)myProcessingComponent, me) && (myQueuedTooltip == null || !myQueuedTooltip.isHint())) { hideCurrent(me, null, null);//There is no tooltip or hint here, let's proceed it as MOUSE_EXITED } else { maybeShowFor(myProcessingComponent, me); } } } } else if (myCurrentComponent == null && myQueuedComponent == null) { maybeShowFor(myProcessingComponent, me); } else if (myQueuedComponent == null) { hideCurrent(me); } } else if (me.getID() == MouseEvent.MOUSE_PRESSED) { boolean clickOnTooltip = myBalloon != null && myBalloon == JBPopupFactory.getInstance().getParentBalloonFor(myProcessingComponent); if (myProcessingComponent == myCurrentComponent || (clickOnTooltip && !isClickProcessor(myBalloon))) { hideCurrent(me, null, null, null, !clickOnTooltip); } } else if (me.getID() == MouseEvent.MOUSE_DRAGGED) { hideCurrent(me, null, null); } } finally { myProcessingComponent = null; } }