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; }