package jffile; /** * Created : Apr 28, 2012 * * @author pquiring */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javaforce.*; public class UnmapNetworkShareDialog extends javax.swing.JDialog implements ActionListener { /** * Creates new form UnmapNetworkShare */ public UnmapNetworkShareDialog(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); setPosition(); Mappings.loadMaps(); listShares(); } /** * 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() { close = new javax.swing.JButton(); scroll = new javax.swing.JScrollPane(); buttons = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Disconnect Mapped Share"); setResizable(false); close.setText("Close"); close.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { closeActionPerformed(evt); } }); buttons.setLayout(new java.awt.GridBagLayout()); scroll.setViewportView(buttons); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(scroll) .addGroup(layout.createSequentialGroup() .addGap(0, 315, Short.MAX_VALUE) .addComponent(close))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(scroll, javax.swing.GroupLayout.DEFAULT_SIZE, 410, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(close) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void closeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeActionPerformed dispose(); }//GEN-LAST:event_closeActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel buttons; private javax.swing.JButton close; private javax.swing.JScrollPane scroll; // End of variables declaration//GEN-END:variables private void listShares() { Mappings.Maps maps = Mappings.getMaps(); for(int a=0;a<maps.map.length;a++) { JButton b = new JButton(); String mount = maps.map[a].mount; String uri = maps.map[a].uri; int idx = uri.lastIndexOf('/'); if (idx == -1) idx = 0; else idx++; b.setText(uri.substring(idx)); b.setActionCommand(mount); b.putClientProperty("wine", maps.map[a].wineDrive); b.addActionListener(this); buttons.add(b); } } public void actionPerformed(ActionEvent ae) { String mount = ae.getActionCommand(); //TODO : send msg jfDesktop.unmount ShellProcess sp = new ShellProcess(); JButton b = (JButton)ae.getSource(); String wineDrive = (String)b.getClientProperty("wine"); if ((wineDrive != null) && (wineDrive.length() > 0) && !wineDrive.equals("null")) { String output = sp.run(new String[] {"rm", wineDrive}, true); if (sp.getErrorLevel() != 0) { FileApp.inDialog = true; JF.showError("Warning", "Failed to disconnect wine drive link"); FileApp.inDialog = false; } } Mappings.delMap(mount); Mappings.saveMaps(); dispose(); } private void setPosition() { Rectangle s = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); Dimension d = getSize(); setLocation(s.width/2 - d.width/2, s.height/2 - (d.height/2)); } public static void main(String args[]) { if (args.length != 2) { System.out.println("Usage : junmapshare server share"); System.exit(1); } Mappings.loadMaps(); String uri = "smb://" + args[0] + "/" + args[1]; Mappings.Maps maps = Mappings.getMaps(); String wineDrive = null; String mount = null; for(int a=0;a<maps.map.length;a++) { if (maps.map[a].uri.equalsIgnoreCase(uri)) { wineDrive = maps.map[a].wineDrive; mount = maps.map[a].mount; break; } } if (mount == null) { System.out.println("Share is not mapped"); System.exit(1); } //TODO : send msg to jfDesktop.unmount if (wineDrive != null) { ShellProcess sp = new ShellProcess(); String output = sp.run(new String[] {"rm", wineDrive}, true); if (sp.getErrorLevel() != 0) { System.out.println("Warning : Failed to disconnect wine drive link"); } } Mappings.delMap(uri); Mappings.saveMaps(); System.exit(0); } }