public boolean updateText(@Nullable @NlsContexts.StatusBarText String nonLogText) {
    ThreadingAssertions.assertEventDispatchThread();

    Project project = getActiveProject();
    StatusMessage statusMessage = NotificationsToolWindowFactory.Companion.getStatusMessage(project);
    Alarm alarm = getAlarm();
    myCurrentNotification = StringUtil.isEmpty(nonLogText) && statusMessage != null && alarm != null ? statusMessage.notification() : null;

    if (alarm != null) {
      alarm.cancelAllRequests();
    }

    if (myCurrentNotification != null) {
      UIUtil.setCursor(myTextPanel, Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      new Runnable() {
        @Override
        public void run() {
          assert statusMessage != null;
          String text = statusMessage.text();
          if (myDirty || System.currentTimeMillis() - statusMessage.stamp() >= 60_000) {  // >= 1 min
            myTimeText = " (" + StringUtil.decapitalize(DateFormatUtil.formatPrettyDateTime(statusMessage.stamp())) + ")";
            text += myTimeText;
          }
          else {
            myTimeText = null;
          }
          setStatusText(text);
          alarm.addRequest(this, 30000);
        }
      }.run();
    }
    else {
      myTimeText = null;
      UIUtil.setCursor(myTextPanel, Cursor.getDefaultCursor());
      myDirty = true;
      setStatusText(nonLogText);
    }

    return myCurrentNotification != null;
  }
public boolean updateText(@Nullable @NlsContexts.StatusBarText String nonLogText)