void done(String message) { if (!EventQueue.isDispatchThread()) { throw new AssertionError("#done must be called from EDT"); } if (isShowing()) { // otherwise skip udpate, dialog is closed messageLabel.setText(message); progressBar.setIndeterminate(false); progressBar.getModel().setValue(progressBar.getModel().getMaximum()); outputArea.setEditable(false); } inputHandler.detach(); }