public static @NotNull JComponent installProgress(@NotNull JComponent component,
                                                    @NotNull VcsLogData logData,
                                                    @NotNull String logId,
                                                    @NotNull Disposable disposableParent) {
    ProgressStripe progressStripe = new ProgressStripe(component, disposableParent) {
      @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;
  }
public static @NotNull JComponent installProgress(@NotNull JComponent component,
                                                    @NotNull VcsLogData logData,
                                                    @NotNull String logId,
                                                    @NotNull Disposable disposableParent)