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