+
+ /**
+ * Add a progress bar for the given id if it doesn't exist displaying the
+ * provided message. Subsequent calls do nothing.
+ *
+ * @param id
+ * progress bar identifier
+ * @param message
+ * displayed message
+ */
+ @Override
+ public void addProgressBar(final long id, final String message)
+ {
+ if (progressBars.containsKey(id))
+ return;
+ JPanel progressPanel = new JPanel(new BorderLayout(10, 5));
+ progressBars.put(id, progressPanel);
+ Runnable r = () -> {
+ JProgressBar progressBar = new JProgressBar();
+ progressBar.setIndeterminate(true);
+ progressPanel.add(new JLabel(message), BorderLayout.WEST);
+ progressPanel.add(progressBar, BorderLayout.CENTER);
+ addRow(progressPanel);
+ refreshLayout();
+ };
+ if (SwingUtilities.isEventDispatchThread())
+ r.run();
+ else
+ SwingUtilities.invokeLater(r);
+ }
+
+ /**
+ * Remove a progress bar for the given id if it exists. Subsequent calls do
+ * nothing.
+ *
+ * @param id
+ * id of the progress bar to be removed
+ */