private DownloadSubmissionListener getDSLForDownloadBatch( final long totalSize, String barCaption) { final ProgressMonitor progressBar = new ProgressMonitor(frame, barCaption, "Starting...", 0, 10000); Notifications.fixupPM(progressBar, true); final ProgressTracker tracker = new ProgressTracker(); tracker.setExpectedMaximum(totalSize); return new DownloadSubmissionListener() { @Override public void fileSubmitted(FileSystemEntry file) { tracker.progress(file.getSize()); progressBar.setProgress((int) (tracker.percentComplete() * 100f)); progressBar.setNote(tracker.describe()); } @Override public boolean isCancelled() { return progressBar.isCanceled(); } @Override public void complete() { progressBar.close(); } }; }