in intellij-plugin/educational-core/src/com/jetbrains/edu/coursecreator/projectView/SyncChangesHelpTooltip.java [582:616]
private void scheduleShow(MouseEvent e, int delay) {
popupAlarm.cancelAllRequests();
if (isTooltipDisabled(e.getComponent())) return;
if (ScreenReader.isActive()) return; // Disable HelpTooltip in screen reader mode.
popupAlarm.addRequest((ContextAwareRunnable) () -> {
initialShowScheduled = false;
if (masterPopupOpenCondition != null && !masterPopupOpenCondition.getAsBoolean()) {
return;
}
Component owner = e.getComponent();
String text = owner instanceof JComponent ? ((JComponent)owner).getToolTipText(e) : null;
if (myPopup != null && !myPopup.isDisposed()) {
if (Strings.isEmpty(text) && Strings.isEmpty(myToolTipText)) {
return; // do nothing if a tooltip become empty
}
if (Objects.equals(text, myToolTipText)) {
return; // do nothing if a tooltip is not changed
}
myPopup.cancel(); // cancel previous popup before showing a new one
}
myToolTipText = text;
JComponent tipPanel = createTipPanel();
tipPanel.addMouseListener(createIsOverTipMouseListener());
ComponentPopupBuilder popupBuilder = initPopupBuilder(tipPanel);
myPopup = popupBuilder.createPopup();
myPopup.show(new RelativePoint(owner, alignment.getPointFor(owner, tipPanel.getPreferredSize(), e.getPoint())));
if (!neverHide) {
int dismissDelay = Registry.intValue(isMultiline ? "ide.helptooltip.full.dismissDelay" : "ide.helptooltip.regular.dismissDelay");
scheduleHide(true, dismissDelay);
}
}, delay);
}