JComponent (@NotNull JComponent component, @NotNull VcsLogData logData, @NotNull String logId, @NotNull Disposable disposableParent) { ProgressStripe progressStripe = new ProgressStripe(component, disposableParent, ProgressIndicatorWithDelayedPresentation.DEFAULT_PROGRESS_DIALOG_POSTPONE_TIME_MILLIS) { @Override public void updateUI() { super.updateUI(); if (myDecorator != null && logData.getProgress().isRunning()) startLoadingImmediately(); } }; logData.getProgress().addProgressIndicatorListener(new VcsLogProgress.ProgressListener() { @Override public void progressStarted(@NotNull Collection<? extends VcsLogProgress.ProgressKey> keys) { if (isProgressVisible(keys, logId)) { progressStripe.startLoading(); } } @Override public void progressChanged(@NotNull Collection<? extends VcsLogProgress.ProgressKey> keys) { if (isProgressVisible(keys, logId)) { progressStripe.startLoading(); } else { progressStripe.stopLoading(); } } @Override public void progressStopped() { progressStripe.stopLoading(); } }, disposableParent); return progressStripe; }