package jffile; /** * * @author pquiring */ import java.awt.Dimension; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import java.io.*; import java.util.*; import javax.swing.*; import javaforce.jbus.*; public class Drives extends javax.swing.JDialog { /** * Creates new form Drives */ public Drives(java.awt.Frame parent, boolean modal, JBusClient jbusClient) { super(parent, modal); initComponents(); setPosition(); listDrives(); this.jbusClient = jbusClient; } /** * 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() { jScrollPane1 = new javax.swing.JScrollPane(); list = new javax.swing.JList(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); mount = new javax.swing.JButton(); mounted = new javax.swing.JTextField(); type = new javax.swing.JTextField(); jButton3 = new javax.swing.JButton(); umount = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Drives"); setResizable(false); list.setModel(model); list.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); list.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { listValueChanged(evt); } }); jScrollPane1.setViewportView(list); jLabel1.setText("Type:"); jLabel2.setText("Mounted:"); mount.setText("Mount"); mount.setEnabled(false); mount.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { mountActionPerformed(evt); } }); mounted.setEditable(false); type.setEditable(false); jButton3.setText("Close"); jButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton3ActionPerformed(evt); } }); umount.setText("UnMount"); umount.setEnabled(false); umount.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { umountActionPerformed(evt); } }); 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() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 192, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel2) .addComponent(jLabel1)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(mounted) .addComponent(type))) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jButton3)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(mount) .addComponent(umount)) .addGap(0, 177, 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) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(type, 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(mounted, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(mount) .addGap(18, 18, 18) .addComponent(umount) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 155, Short.MAX_VALUE) .addComponent(jButton3)) .addComponent(jScrollPane1)) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void listValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_listValueChanged showInfo(); }//GEN-LAST:event_listValueChanged private void mountActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mountActionPerformed mount(); }//GEN-LAST:event_mountActionPerformed private void umountActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_umountActionPerformed umount(); }//GEN-LAST:event_umountActionPerformed private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed dispose(); }//GEN-LAST:event_jButton3ActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButton3; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JList list; private javax.swing.JButton mount; private javax.swing.JTextField mounted; private javax.swing.JTextField type; private javax.swing.JButton umount; // End of variables declaration//GEN-END:variables private DefaultListModel model = new DefaultListModel(); private ArrayList<String> devList = new ArrayList<String>(); private JBusClient jbusClient; private void addDrive(String name) { char lastChar = name.charAt(name.length() - 1); if ((lastChar < '0') || (lastChar > '9')) return; model.addElement("Storage Unit:" + name); devList.add(name); } private void addOptical(String name) { model.addElement("Optical Unit:" + name); devList.add(name); } private void listDrives() { model.removeAllElements(); devList.clear(); File dev = new File("/dev"); File devs[] = dev.listFiles(); for(int a=0;a<devs.length;a++) { String name = devs[a].getAbsolutePath(); if (name.startsWith("/dev/sd")) addDrive(name); if (name.startsWith("/dev/sr")) addOptical(name); } } private void showInfo() { int idx = list.getSelectedIndex(); if (idx == -1) return; String dev = devList.get(idx); type.setText("???"); mounted.setText("???"); mount.setEnabled(false); umount.setEnabled(false); jbusClient.call("org.jflinux.jfsystemmgr", "getStorageInfo", "\"" + jbusClient.pack + "\",\"" + dev + "\""); } public void storageInfo(String dev, String volName, String fsType, String mountPt) { type.setText(fsType); mounted.setText(mountPt); if (!fsType.equals("unknown") && (!mountPt.equals("/"))) { mount.setEnabled(true); umount.setEnabled(true); } } private void mount() { int idx = list.getSelectedIndex(); if (idx == -1) return; String dev = devList.get(idx); jbusClient.call("org.jflinux.jfsystemmgr", "mount", "\"" + dev + "\""); } private void umount() { int idx = list.getSelectedIndex(); if (idx == -1) return; String dev = devList.get(idx); jbusClient.call("org.jflinux.jfsystemmgr", "umount", "\"" + dev + "\""); } public void rescan() { listDrives(); mount.setEnabled(false); umount.setEnabled(false); type.setText(""); mounted.setText(""); } private void setPosition() { Rectangle s = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); Dimension d = getSize(); setLocation(s.width/2 - d.width/2, s.height/2 - (d.height/2)); } }