private void scheduleShow()

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);
  }