/*
* Copyright (C) 2011 Alvaro Duran Tovar
*
* This file is part of AFA.
*
* AFA is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* DeviceSelection.java
*
* Created on 15-mar-2011, 20:27:31
*/
package afa.view;
import afa.control.Tools;
import afa.model.Device;
import java.awt.Component;
import java.io.File;
import java.util.Vector;
import javax.swing.JCheckBox;
/**
*
* @author Alvaro Duran Tovar
*/
public class DeviceSelectionPanel extends javax.swing.JPanel {
/** Creates new form DeviceSelection */
public DeviceSelectionPanel() {
initComponents();
}
/** 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() {
step2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jScrollPane8 = new javax.swing.JScrollPane();
jPanel2 = new javax.swing.JPanel();
jSeparator3 = new javax.swing.JSeparator();
jButton1 = new javax.swing.JButton();
setLayout(new java.awt.BorderLayout());
jLabel1.setText("Elija las particiones a analizar");
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
jScrollPane8.setViewportView(jPanel2);
jButton1.setText("Seleccionar todo");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout step2Layout = new javax.swing.GroupLayout(step2);
step2.setLayout(step2Layout);
step2Layout.setHorizontalGroup(
step2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, step2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(step2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane8, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 627, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSeparator3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 627, Short.MAX_VALUE)
.addComponent(jButton1))
.addContainerGap())
);
step2Layout.setVerticalGroup(
step2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(step2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 293, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap())
);
add(step2, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
Component components[] = jPanel2.getComponents();
for (Component c : components) {
if (c instanceof JCheckBox) {
((JCheckBox) c).setSelected(true);
}
}
}//GEN-LAST:event_jButton1ActionPerformed
boolean checkPanel() throws Exception{
Object ob[] = jPanel2.getComponents();
//check Recursivity
//get selected items
Vector<Device> selected = this.getPartitionsVector();
for (Device dev : selected) {
String mountPoint = dev.getMountPoint().getAbsolutePath();
for (Device aux : selected) {
String mountPoint2 = aux.getMountPoint().getAbsolutePath();
if (!mountPoint2.equals(mountPoint) && mountPoint2.contains(mountPoint)) {
int result = javax.swing.JOptionPane.showConfirmDialog(null,
"El path \"" + mountPoint2 + "\" esta incluido en\n"
+ "\"" + mountPoint + "\", ¿deseas proseguir con el analisis?",
"Recursivity",
javax.swing.JOptionPane.OK_CANCEL_OPTION);
if (result == javax.swing.JOptionPane.OK_OPTION) {
return true;
} else {
return false;
}
}
}
}
if (selected.size() > 0) {
return true;
}
javax.swing.JOptionPane.showMessageDialog(null, "Debes seleccionar al menos una particion",
"No partition selected",
javax.swing.JOptionPane.ERROR_MESSAGE);
return false;
}
void loadDevices() throws Exception {
jPanel2.removeAll();
String[] unidades = Tools.obtenerUnidades();
for (String s : unidades) {
JCheckBox but = new JCheckBox(s + " -> " + Tools.getMountPointByDevice(s));
jPanel2.add(but);
}
int aux = jScrollPane8.getWidth();
jScrollPane8.getVerticalScrollBar().setUnitIncrement(aux / 5);
}
private Vector<String> getSelectedPartitionsString() {
Object[] ob = jPanel2.getComponents();
Vector<String> selected = new Vector<String>();
for (Object obj : ob) {
if (obj instanceof JCheckBox && ((JCheckBox) obj).isSelected()) {
selected.add(((JCheckBox) obj).getText().split(" -> ")[1]);
}
}
return selected;
}
Vector<Device> getPartitionsVector() throws Exception {
Object[] ob = jPanel2.getComponents();
Vector<Device> selected = new Vector<Device>();
for (Object obj : ob) {
if (obj instanceof JCheckBox) {
JCheckBox check = (JCheckBox) obj;
if (!check.isSelected()) {
continue;
}
Device dev = new Device();
dev.setSelected(check.isSelected());
dev.setDeviceName(new File(check.getText().split(" -> ")[0]));
dev.setMountPoint(new File(check.getText().split(" -> ")[1]));
//dev.setIdentifier(Tools.getSerialVolume(dev.getDeviceName().getAbsolutePath()));
selected.add(dev);
}
}
return selected;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane8;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JPanel step2;
// End of variables declaration//GEN-END:variables
}