package jfconfig;
/**
* Created : Apr 17, 2012
*
* @author pquiring
*/
import java.awt.*;
import java.io.File;
import java.util.*;
import javaforce.*;
public class RestoreDialog extends javax.swing.JDialog {
/**
* Creates new form RestoreDialog
*/
public RestoreDialog(java.awt.Frame parent, boolean modal, boolean personal, String name) {
super(parent, modal);
initComponents();
setPosition();
this.personal = personal;
if (personal) {
tabs.remove(systemOpts);
diffFolder.setText(System.getenv("HOME") + "/Restored Files");
listDest();
} else {
tabs.remove(personalOpts);
}
this.name = name;
listSrc();
}
/**
* 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();
src = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
backups = new javax.swing.JComboBox();
restore = new javax.swing.JButton();
cancel = new javax.swing.JButton();
tabs = new javax.swing.JTabbedPane();
personalOpts = new javax.swing.JPanel();
overwrite = new javax.swing.JCheckBox();
diffFolder = new javax.swing.JTextField();
diffSelect = new javax.swing.JButton();
useDiffFolder = new javax.swing.JCheckBox();
systemOpts = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
dest = new javax.swing.JComboBox();
jparted = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
refresh = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jLabel1.setText("Source");
src.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
src.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
srcItemStateChanged(evt);
}
});
jLabel2.setText("Backups");
backups.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
restore.setText("Restore");
restore.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
restoreActionPerformed(evt);
}
});
cancel.setText("Cancel");
cancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelActionPerformed(evt);
}
});
overwrite.setText("Overwrite files");
diffFolder.setText("~/Restored Files");
diffFolder.setEnabled(false);
diffSelect.setText("Select ...");
diffSelect.setEnabled(false);
useDiffFolder.setText("Restore to different folder");
useDiffFolder.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
useDiffFolderItemStateChanged(evt);
}
});
javax.swing.GroupLayout personalOptsLayout = new javax.swing.GroupLayout(personalOpts);
personalOpts.setLayout(personalOptsLayout);
personalOptsLayout.setHorizontalGroup(
personalOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(personalOptsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(personalOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(personalOptsLayout.createSequentialGroup()
.addComponent(diffFolder)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(diffSelect))
.addGroup(personalOptsLayout.createSequentialGroup()
.addGroup(personalOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(overwrite)
.addComponent(useDiffFolder))
.addGap(0, 240, Short.MAX_VALUE)))
.addContainerGap())
);
personalOptsLayout.setVerticalGroup(
personalOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(personalOptsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(useDiffFolder)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(personalOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(diffFolder, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(diffSelect))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(overwrite)
.addContainerGap(21, Short.MAX_VALUE))
);
tabs.addTab("Options", personalOpts);
jLabel3.setText("Destination");
dest.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jparted.setText("Partition Editor");
jparted.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jpartedActionPerformed(evt);
}
});
jLabel5.setText("Use Partition Editor to format and mount destination in /mnt");
refresh.setText("Refresh");
refresh.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
refreshActionPerformed(evt);
}
});
javax.swing.GroupLayout systemOptsLayout = new javax.swing.GroupLayout(systemOpts);
systemOpts.setLayout(systemOptsLayout);
systemOptsLayout.setHorizontalGroup(
systemOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(systemOptsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(systemOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(systemOptsLayout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(dest, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, systemOptsLayout.createSequentialGroup()
.addComponent(refresh)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jparted))
.addGroup(systemOptsLayout.createSequentialGroup()
.addComponent(jLabel5)
.addGap(0, 25, Short.MAX_VALUE)))
.addContainerGap())
);
systemOptsLayout.setVerticalGroup(
systemOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(systemOptsLayout.createSequentialGroup()
.addContainerGap()
.addGroup(systemOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(dest, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 22, Short.MAX_VALUE)
.addGroup(systemOptsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jparted)
.addComponent(refresh))
.addContainerGap())
);
tabs.addTab("Options", systemOpts);
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(tabs)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(src, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(backups, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(cancel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(restore)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(src, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(backups, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tabs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(restore)
.addComponent(cancel))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void cancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelActionPerformed
dispose();
}//GEN-LAST:event_cancelActionPerformed
private void restoreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_restoreActionPerformed
if (src.getSelectedIndex() == -1) return;
if (backups.getSelectedIndex() == -1) return;
if (personal) {
if (useDiffFolder.isSelected()) {
File file = new File(diffFolder.getText());
file.mkdirs();
}
} else {
if (dest.getSelectedIndex() == -1) return;
}
accepted = true;
dispose();
}//GEN-LAST:event_restoreActionPerformed
private void srcItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_srcItemStateChanged
listBackups();
}//GEN-LAST:event_srcItemStateChanged
private void jpartedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jpartedActionPerformed
try { Runtime.getRuntime().exec("jparted"); } catch (Exception e) {}
}//GEN-LAST:event_jpartedActionPerformed
private void refreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshActionPerformed
listDest();
}//GEN-LAST:event_refreshActionPerformed
private void useDiffFolderItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_useDiffFolderItemStateChanged
if (useDiffFolder.isSelected()) {
diffFolder.setEnabled(true);
diffSelect.setEnabled(true);
} else {
diffFolder.setEnabled(false);
diffSelect.setEnabled(false);
}
}//GEN-LAST:event_useDiffFolderItemStateChanged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox backups;
private javax.swing.JButton cancel;
private javax.swing.JComboBox dest;
private javax.swing.JTextField diffFolder;
private javax.swing.JButton diffSelect;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel5;
private javax.swing.JButton jparted;
private javax.swing.JCheckBox overwrite;
private javax.swing.JPanel personalOpts;
private javax.swing.JButton refresh;
private javax.swing.JButton restore;
private javax.swing.JComboBox src;
private javax.swing.JPanel systemOpts;
private javax.swing.JTabbedPane tabs;
private javax.swing.JCheckBox useDiffFolder;
// End of variables declaration//GEN-END:variables
private boolean personal;
private String name;
public boolean accepted, nosrc;
private void listSrc() {
src.removeAllItems();
File file = new File("/media");
File files[] = file.listFiles();
if (files.length == 0) {
nosrc = true;
return;
}
for(int a=0;a<files.length;a++) {
src.addItem(files[a].getName());
}
src.setSelectedIndex(-1);
}
private void listDest() {
dest.removeAllItems();
if (personal) {
dest.addItem(System.getenv("HOME"));
}
File file = new File("/mnt");
File files[] = file.listFiles();
if (files.length == 0) {
return;
}
for(int a=0;a<files.length;a++) {
dest.addItem(files[a].getName());
}
dest.setSelectedIndex(-1);
}
private void listBackups() {
backups.removeAllItems();
int idx = src.getSelectedIndex();
if (idx == -1) return;
File file = new File("/media/" + (String)src.getSelectedItem() + "/Backups/" + (personal ? "Personal" : "System") + "/");
if (!file.exists()) return;
File files[] = file.listFiles();
Arrays.sort(files);
for(int a=files.length-1;a>=0;a--) { //show in reverse order
if (files[a].getName().startsWith(name + "-")) {
backups.addItem(files[a].getName());
}
}
}
public String getSource() {
return "/media/" + (String)src.getSelectedItem() + "/Backups/" + (personal ? "Personal" : "System") + "/" + (String)backups.getSelectedItem();
}
public boolean getUseDiffFolder() {
return useDiffFolder.isSelected();
}
public String getDiffFolder() {
return diffFolder.getText();
}
public boolean isOverwrite() {
return overwrite.isSelected();
}
public String getDest() {
return (String)dest.getSelectedItem();
}
private void setPosition() {
Rectangle s = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
Dimension d = getSize();
setLocation(s.width/2 - d.width/2, s.height/2 - (d.height/2));
}
}