From: Jim Procter Date: Tue, 10 Oct 2017 13:02:37 +0000 (+0100) Subject: JAL-2392 wrap public progress bar methods as InvokeLater events. Guess we need to... X-Git-Tag: Release_2_10_3b1~78^2~2 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=9514f423051f775af3c4faf0101ae3c38c359808;p=jalview.git JAL-2392 wrap public progress bar methods as InvokeLater events. Guess we need to do some thorough testing here ! --- diff --git a/src/jalview/gui/ProgressBar.java b/src/jalview/gui/ProgressBar.java index 3e91361..d7b04ee 100644 --- a/src/jalview/gui/ProgressBar.java +++ b/src/jalview/gui/ProgressBar.java @@ -119,46 +119,54 @@ public class ProgressBar implements IProgressIndicator * execution. */ @Override - public void setProgressBar(String message, long id) + public void setProgressBar(final String message, final long id) { - Long longId = Long.valueOf(id); - - JPanel progressPanel = progressBars.get(longId); - if (progressPanel != null) + SwingUtilities.invokeLater(new Runnable() { - /* - * Progress bar is displayed for this id - remove it now, and any handler - */ - progressBars.remove(id); - if (message != null && statusBar != null) - { - statusBar.setText(message); - } - if (progressBarHandlers.containsKey(longId)) + @Override + public void run() { - progressBarHandlers.remove(longId); - } - removeRow(progressPanel); - } - else - { - /* - * No progress bar for this id - add one now - */ - progressPanel = new JPanel(new BorderLayout(10, 5)); + final Long longId = Long.valueOf(id); - JProgressBar progressBar = new JProgressBar(); - progressBar.setIndeterminate(true); + JPanel progressPanel = progressBars.get(longId); + if (progressPanel != null) + { + /* + * Progress bar is displayed for this id - remove it now, and any handler + */ + progressBars.remove(id); + if (message != null && statusBar != null) + { + statusBar.setText(message); + } + if (progressBarHandlers.containsKey(longId)) + { + progressBarHandlers.remove(longId); + } + removeRow(progressPanel); + } + else + { + /* + * No progress bar for this id - add one now + */ + progressPanel = new JPanel(new BorderLayout(10, 5)); - progressPanel.add(new JLabel(message), BorderLayout.WEST); - progressPanel.add(progressBar, BorderLayout.CENTER); + JProgressBar progressBar = new JProgressBar(); + progressBar.setIndeterminate(true); - addRow(progressPanel); + progressPanel.add(new JLabel(message), BorderLayout.WEST); + progressPanel.add(progressBar, BorderLayout.CENTER); - progressBars.put(longId, progressPanel); - } + addRow(progressPanel); + + progressBars.put(longId, progressPanel); + } + + refreshLayout(); + } + }); - refreshLayout(); } /** @@ -215,41 +223,51 @@ public class ProgressBar implements IProgressIndicator public void registerHandler(final long id, final IProgressIndicatorHandler handler) { - Long longId = Long.valueOf(id); - final JPanel progressPanel = progressBars.get(longId); - if (progressPanel == null) - { - System.err.println( - "call setProgressBar before registering the progress bar's handler."); - return; - } - - /* - * Nothing useful to do if not a Cancel handler - */ - if (!handler.canCancel()) - { - return; - } - - progressBarHandlers.put(longId, handler); - JButton cancel = new JButton(MessageManager.getString("action.cancel")); final IProgressIndicator us = this; - cancel.addActionListener(new ActionListener() - { + SwingUtilities.invokeLater(new Runnable() + { @Override - public void actionPerformed(ActionEvent e) + public void run() { - handler.cancelActivity(id); - us.setProgressBar(MessageManager - .formatMessage("label.cancelled_params", new Object[] - { ((JLabel) progressPanel.getComponent(0)).getText() }), - id); + Long longId = Long.valueOf(id); + final JPanel progressPanel = progressBars.get(longId); + if (progressPanel == null) + { + System.err.println( + "call setProgressBar before registering the progress bar's handler."); + return; + } + + /* + * Nothing useful to do if not a Cancel handler + */ + if (!handler.canCancel()) + { + return; + } + + progressBarHandlers.put(longId, handler); + JButton cancel = new JButton( + MessageManager.getString("action.cancel")); + cancel.addActionListener(new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + handler.cancelActivity(id); + us.setProgressBar(MessageManager + .formatMessage("label.cancelled_params", new Object[] + { ((JLabel) progressPanel.getComponent(0)).getText() }), + id); + } + }); + progressPanel.add(cancel, BorderLayout.EAST); + refreshLayout(); + } }); - progressPanel.add(cancel, BorderLayout.EAST); - refreshLayout(); } }