package me.legrange.panstamp.gui;
import me.legrange.panstamp.gui.task.Task;
import me.legrange.panstamp.gui.task.TaskRunner;
/**
*
* @author gideon
*/
public class WaitDialog extends javax.swing.JDialog implements TaskRunner {
/**
* Creates new form WaitDialog
*/
public WaitDialog(java.awt.Frame parent, Task task) {
super(parent, true);
initComponents();
setLocationRelativeTo(null);
this.task = task;
}
public Object start() throws Throwable {
task.start(this);
setVisible(true);
if (error != null) throw error;
return result;
}
@Override
public void completed(Object result) {
this.result = result;
dispose();
}
@Override
public void error(Throwable e) {
this.error = e;
dispose();
}
@Override
public void update(int progress, String stage) {
// progressBar.setValue(progress);
progressLabel.setText(stage);
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
networkPanel = new javax.swing.JPanel();
progressLabel = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setUndecorated(true);
setResizable(false);
progressLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
progressLabel.setText(".");
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ajax-loader.gif"))); // NOI18N
javax.swing.GroupLayout networkPanelLayout = new javax.swing.GroupLayout(networkPanel);
networkPanel.setLayout(networkPanelLayout);
networkPanelLayout.setHorizontalGroup(
networkPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(networkPanelLayout.createSequentialGroup()
.addGroup(networkPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)
.addComponent(progressLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
networkPanelLayout.setVerticalGroup(
networkPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, networkPanelLayout.createSequentialGroup()
.addContainerGap(15, Short.MAX_VALUE)
.addComponent(progressLabel)
.addGap(18, 18, 18)
.addComponent(jLabel1)
.addGap(14, 14, 14))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(networkPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(networkPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel networkPanel;
private javax.swing.JLabel progressLabel;
// End of variables declaration//GEN-END:variables
private final Task task;
private Object result;
private Throwable error;
}