package kubach.zip; import java.awt.event.ActionListener; import java.io.File; import kubach.zip.ExtractWorker.ExtractState; /** * Package extraction dialog * @author Cr0s */ public class ExtractingDialog extends javax.swing.JDialog { private File pack; private ActionListener doneCallback; public ExtractingDialog(java.awt.Frame parent, boolean modal, File pack, ActionListener doneCallback) { this(parent, modal, pack); this.doneCallback = doneCallback; } /** * Creates new form ExtractingDialog */ public ExtractingDialog(java.awt.Frame parent, boolean modal, File pack) { super(parent, modal); initComponents(); this.pack = pack; lblPackageName.setText(pack.getName()); ExtractWorker ew = new ExtractWorker(this, pack); ew.execute(); this.setLocationRelativeTo(parent); } /** * 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() { jLabel1 = new javax.swing.JLabel(); lblPackageName = new javax.swing.JLabel(); pbProgress = new javax.swing.JProgressBar(); lblCurrentFile = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Extracting"); setName("extractDialog"); // NOI18N setResizable(false); jLabel1.setText("Extracting package:"); pbProgress.setStringPainted(true); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(pbProgress, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblCurrentFile, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblPackageName, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(lblPackageName, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(lblCurrentFile, javax.swing.GroupLayout.DEFAULT_SIZE, 9, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(pbProgress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel jLabel1; private javax.swing.JLabel lblCurrentFile; private javax.swing.JLabel lblPackageName; private javax.swing.JProgressBar pbProgress; // End of variables declaration//GEN-END:variables void updateState(ExtractState es) { this.lblCurrentFile.setText(es.currentFile); this.pbProgress.setMaximum(es.totalNumFiles); this.pbProgress.setValue(es.filesDone); this.pbProgress.setString(String.format("%.2f", es.filesDone / (float) es.totalNumFiles * 100) + "%"); if (es.filesDone == es.totalNumFiles) { // Inform callback if (this.doneCallback != null) { this.doneCallback.actionPerformed(null); } this.setVisible(false); this.dispose(); } } }