/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.navigator.ui.progress; import Sirius.navigator.method.MultithreadedMethod; import java.awt.GridLayout; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JDialog; import javax.swing.JFrame; import de.cismet.tools.gui.StaticSwingTools; /** * DOCUMENT ME! * * @author pascal * @version $Revision$, $Date$ */ public class ProgressDialog extends JDialog { //~ Instance fields -------------------------------------------------------- protected ProgressPanel progressPanel; //~ Constructors ----------------------------------------------------------- /** * Creates a new instance of ProgressDialog. */ public ProgressDialog() { super(new JFrame(), true); this.init(); } /** * Creates a new instance of ProgressDialog. * * @param owner DOCUMENT ME! */ public ProgressDialog(final JFrame owner) { super(owner, true); this.init(); } /** * Creates a new ProgressDialog object. * * @param owner DOCUMENT ME! */ public ProgressDialog(final JDialog owner) { super(owner, true); this.init(); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! */ protected void init() { progressPanel = new ProgressPanel(); progressPanel.addPropertyChangeListener(new DialogClosingListener()); this.setUndecorated(true); this.getContentPane().setLayout(new GridLayout()); this.getContentPane().add(progressPanel); } /** * DOCUMENT ME! * * @param method DOCUMENT ME! */ public void show(final MultithreadedMethod method) { this.pack(); this.progressPanel.invokeMethod(method); StaticSwingTools.showDialog(this); } /** * DOCUMENT ME! * * @param method DOCUMENT ME! * @param arguments DOCUMENT ME! */ public void show(final MultithreadedMethod method, final Object arguments) { this.pack(); this.progressPanel.invokeMethod(method, arguments); StaticSwingTools.showDialog(this); } //~ Inner Classes ---------------------------------------------------------- /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ private class DialogClosingListener implements PropertyChangeListener { //~ Methods ------------------------------------------------------------ @Override public void propertyChange(final PropertyChangeEvent evt) { if (evt.getPropertyName().equals("finished") || evt.getPropertyName().equals("interrupted")) // NOI18N { if (((Boolean)evt.getNewValue()).booleanValue()) { if (progressPanel.logger.isDebugEnabled()) { progressPanel.logger.debug("closing progress dialog"); // NOI18N } ProgressDialog.this.setVisible(false); ProgressDialog.this.dispose(); } } } } }