private void attachListenersForArchiveOutputUtil() { archiveOutputUtil.addPropertyChangeListener( "archiveOutputFailed", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent propertyChangeEvent) { // if the output fails, tell the user why it failed and point to the error report SwingUtilities.invokeLater( new Runnable() { public void run() { OutputFailedUI failUI = new OutputFailedUI(archiveOutputUtil.getArchiveOutputStatus().getText()); failUI.addPropertyChangeListener( "viewErrors", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent propertyChangeEvent) { ViewErrorUI enw = new ViewErrorUI(archiveOutputUtil.getBrowseViewErrorPane()); enw.setLocation(getX(), getY()); dispose(); } }); swapContainers(failUI); } }); } }); archiveOutputUtil.addPropertyChangeListener( "archiveOutputCompleted", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent propertyChangeEvent) { // if the output completes, tell the user it has completed and where the files were // saved, // then automatically close the window after 3 seconds :) SwingUtilities.invokeLater( new Runnable() { public void run() { OutputSuccessUI successUI = new OutputSuccessUI( archiveOutputUtil.getStatistics().getStatisticsAsHTML()); swapContainers(successUI); } }); closeWindowTimer.start(); } }); }