package org.korsakow.ide.ui.controller.action.helper;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JDialog;
import org.korsakow.ide.Application;
import org.korsakow.ide.lang.LanguageBundle;
import org.korsakow.ide.task.UIWorker;
import com.sun.swingx.SwingWorker.StateValue;
public class ProgressDialogStatusListener implements PropertyChangeListener
{
protected final JDialog progressDialog;
public ProgressDialogStatusListener(JDialog progressDialog)
{
this.progressDialog = progressDialog;
}
protected void handleException(Throwable e)
{
Application.getInstance().showUnhandledErrorDialog(LanguageBundle.getString("general.errors.cantexport.title"), e);
}
protected void onDone()
{
}
public void propertyChange(PropertyChangeEvent event)
{
if (event.getNewValue() != StateValue.DONE)
return;
UIWorker worker = (UIWorker)event.getSource();
Throwable exception = worker.getException();
progressDialog.dispose();
if (exception != null) {
handleException(exception);
} else {
if (!worker.isCancelled())
onDone();
}
}
}