package jffile; /* * Site.java * * Created on Jan 2, 2011, 9:44:13 PM * * @author pquiring */ import java.io.*; import java.awt.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.table.*; import javaforce.*; import javaforce.jbus.*; import javaforce.utils.*; public class Site extends javax.swing.JPanel implements JFileBrowserListener { /** * Creates new form Site */ public Site() { 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() { localFileMenu = new javax.swing.JPopupMenu(); local_upload = new javax.swing.JMenuItem(); local_sep_1 = new javax.swing.JPopupMenu.Separator(); local_open = new javax.swing.JMenuItem(); local_edit = new javax.swing.JMenuItem(); local_mkdir = new javax.swing.JMenuItem(); local_refresh = new javax.swing.JMenuItem(); local_sep_2 = new javax.swing.JPopupMenu.Separator(); local_trash = new javax.swing.JMenuItem(); local_delete = new javax.swing.JMenuItem(); local_rename = new javax.swing.JMenuItem(); local_sep_3 = new javax.swing.JPopupMenu.Separator(); local_props = new javax.swing.JMenuItem(); local_sep_4 = new javax.swing.JPopupMenu.Separator(); local_cut = new javax.swing.JMenuItem(); local_copy = new javax.swing.JMenuItem(); local_paste = new javax.swing.JMenuItem(); local_sep_5 = new javax.swing.JPopupMenu.Separator(); local_share = new javax.swing.JMenuItem(); remoteFileMenu = new javax.swing.JPopupMenu(); remote_download = new javax.swing.JMenuItem(); remote_sep_1 = new javax.swing.JPopupMenu.Separator(); remote_open = new javax.swing.JMenuItem(); remote_edit = new javax.swing.JMenuItem(); remote_mkdir = new javax.swing.JMenuItem(); remote_refresh = new javax.swing.JMenuItem(); remote_sep_2 = new javax.swing.JPopupMenu.Separator(); remote_trash = new javax.swing.JMenuItem(); remote_delete = new javax.swing.JMenuItem(); remote_rename = new javax.swing.JMenuItem(); remote_sep_3 = new javax.swing.JPopupMenu.Separator(); remote_props = new javax.swing.JMenuItem(); remote_sep_4 = new javax.swing.JPopupMenu.Separator(); remote_cut = new javax.swing.JMenuItem(); remote_copy = new javax.swing.JMenuItem(); remote_paste = new javax.swing.JMenuItem(); remote_sep_5 = new javax.swing.JPopupMenu.Separator(); remote_share = new javax.swing.JMenuItem(); localDesktopMenu = new javax.swing.JPopupMenu(); local_mkdir_2 = new javax.swing.JMenuItem(); local_refresh_2 = new javax.swing.JMenuItem(); local_paste_2 = new javax.swing.JMenuItem(); remoteDesktopMenu = new javax.swing.JPopupMenu(); remote_mkdir_2 = new javax.swing.JMenuItem(); remote_refresh_2 = new javax.swing.JMenuItem(); remote_paste_2 = new javax.swing.JMenuItem(); localSide = new javax.swing.JPanel(); localPanel = new javax.swing.JPanel(); jToolBar1 = new javax.swing.JToolBar(); localLabel = new javax.swing.JLabel(); local_cdup = new javax.swing.JButton(); localDir = new javax.swing.JTextField(); remoteSide = new javax.swing.JPanel(); remotePanel = new javax.swing.JPanel(); jToolBar2 = new javax.swing.JToolBar(); remoteLabel = new javax.swing.JLabel(); remote_cdup = new javax.swing.JButton(); remoteDir = new javax.swing.JTextField(); localTreeScroll = new javax.swing.JScrollPane(); localTree = new javax.swing.JTree(); remoteTreeScroll = new javax.swing.JScrollPane(); remoteTree = new javax.swing.JTree(); local_upload.setText("Upload"); local_upload.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_uploadActionPerformed(evt); } }); localFileMenu.add(local_upload); localFileMenu.add(local_sep_1); local_open.setText("Open"); local_open.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_openActionPerformed(evt); } }); localFileMenu.add(local_open); local_edit.setText("Edit"); local_edit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_editActionPerformed(evt); } }); localFileMenu.add(local_edit); local_mkdir.setText("Create Directory"); local_mkdir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_mkdirActionPerformed(evt); } }); localFileMenu.add(local_mkdir); local_refresh.setText("Refresh"); local_refresh.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_refreshActionPerformed(evt); } }); localFileMenu.add(local_refresh); localFileMenu.add(local_sep_2); local_trash.setText("Trash"); local_trash.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_trashActionPerformed(evt); } }); localFileMenu.add(local_trash); local_delete.setText("Delete"); local_delete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_deleteActionPerformed(evt); } }); localFileMenu.add(local_delete); local_rename.setText("Rename"); local_rename.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_renameActionPerformed(evt); } }); localFileMenu.add(local_rename); localFileMenu.add(local_sep_3); local_props.setText("Properties"); local_props.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_propsActionPerformed(evt); } }); localFileMenu.add(local_props); localFileMenu.add(local_sep_4); local_cut.setText("Cut"); local_cut.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_cutActionPerformed(evt); } }); localFileMenu.add(local_cut); local_copy.setText("Copy"); local_copy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_copyActionPerformed(evt); } }); localFileMenu.add(local_copy); local_paste.setText("Paste"); local_paste.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_pasteActionPerformed(evt); } }); localFileMenu.add(local_paste); localFileMenu.add(local_sep_5); local_share.setText("Share"); local_share.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_shareActionPerformed(evt); } }); localFileMenu.add(local_share); remote_download.setText("Download"); remote_download.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_downloadActionPerformed(evt); } }); remoteFileMenu.add(remote_download); remoteFileMenu.add(remote_sep_1); remote_open.setText("Open"); remote_open.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_openActionPerformed(evt); } }); remoteFileMenu.add(remote_open); remote_edit.setText("Edit"); remote_edit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_editActionPerformed(evt); } }); remoteFileMenu.add(remote_edit); remote_mkdir.setText("Create Directory"); remote_mkdir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_mkdirActionPerformed(evt); } }); remoteFileMenu.add(remote_mkdir); remote_refresh.setText("Refresh"); remote_refresh.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_refreshActionPerformed(evt); } }); remoteFileMenu.add(remote_refresh); remoteFileMenu.add(remote_sep_2); remote_trash.setText("Trash"); remote_trash.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_trashActionPerformed(evt); } }); remoteFileMenu.add(remote_trash); remote_delete.setText("Delete"); remote_delete.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_deleteActionPerformed(evt); } }); remoteFileMenu.add(remote_delete); remote_rename.setText("Rename"); remote_rename.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_renameActionPerformed(evt); } }); remoteFileMenu.add(remote_rename); remoteFileMenu.add(remote_sep_3); remote_props.setText("Properties"); remote_props.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_propsActionPerformed(evt); } }); remoteFileMenu.add(remote_props); remoteFileMenu.add(remote_sep_4); remote_cut.setText("Cut"); remote_cut.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_cutActionPerformed(evt); } }); remoteFileMenu.add(remote_cut); remote_copy.setText("Copy"); remote_copy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_copyActionPerformed(evt); } }); remoteFileMenu.add(remote_copy); remote_paste.setText("Paste"); remote_paste.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_pasteActionPerformed(evt); } }); remoteFileMenu.add(remote_paste); remoteFileMenu.add(remote_sep_5); remote_share.setText("Share"); remote_share.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_shareActionPerformed(evt); } }); remoteFileMenu.add(remote_share); local_mkdir_2.setText("New Folder"); local_mkdir_2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_mkdir_2ActionPerformed(evt); } }); localDesktopMenu.add(local_mkdir_2); local_refresh_2.setText("Refresh"); local_refresh_2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_refresh_2ActionPerformed(evt); } }); localDesktopMenu.add(local_refresh_2); local_paste_2.setText("Paste"); local_paste_2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_paste_2ActionPerformed(evt); } }); localDesktopMenu.add(local_paste_2); remote_mkdir_2.setText("New Folder"); remote_mkdir_2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_mkdir_2ActionPerformed(evt); } }); remoteDesktopMenu.add(remote_mkdir_2); remote_refresh_2.setText("Refresh"); remote_refresh_2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_refresh_2ActionPerformed(evt); } }); remoteDesktopMenu.add(remote_refresh_2); remote_paste_2.setText("Paste"); remote_paste_2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_paste_2ActionPerformed(evt); } }); remoteDesktopMenu.add(remote_paste_2); setLayout(null); localSide.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); localPanel.setLayout(new java.awt.GridLayout(1, 1)); jToolBar1.setFloatable(false); jToolBar1.setRollover(true); localLabel.setText("Folder:"); jToolBar1.add(localLabel); local_cdup.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jffile/jfile-up.png"))); // NOI18N local_cdup.setFocusable(false); local_cdup.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); local_cdup.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); local_cdup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { local_cdupActionPerformed(evt); } }); jToolBar1.add(local_cdup); localDir.setText("/"); localDir.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { localDirKeyPressed(evt); } }); jToolBar1.add(localDir); javax.swing.GroupLayout localSideLayout = new javax.swing.GroupLayout(localSide); localSide.setLayout(localSideLayout); localSideLayout.setHorizontalGroup( localSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(localPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 276, Short.MAX_VALUE) .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); localSideLayout.setVerticalGroup( localSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(localSideLayout.createSequentialGroup() .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(localPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 285, Short.MAX_VALUE)) ); add(localSide); localSide.setBounds(20, 80, 280, 320); remoteSide.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); remotePanel.setLayout(new java.awt.GridLayout(1, 1)); jToolBar2.setFloatable(false); jToolBar2.setRollover(true); remoteLabel.setText("Folder:"); jToolBar2.add(remoteLabel); remote_cdup.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jffile/jfile-up.png"))); // NOI18N remote_cdup.setFocusable(false); remote_cdup.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); remote_cdup.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); remote_cdup.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { remote_cdupActionPerformed(evt); } }); jToolBar2.add(remote_cdup); remoteDir.setText("/"); remoteDir.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { remoteDirKeyPressed(evt); } }); jToolBar2.add(remoteDir); javax.swing.GroupLayout remoteSideLayout = new javax.swing.GroupLayout(remoteSide); remoteSide.setLayout(remoteSideLayout); remoteSideLayout.setHorizontalGroup( remoteSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(remotePanel, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE) .addComponent(jToolBar2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); remoteSideLayout.setVerticalGroup( remoteSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(remoteSideLayout.createSequentialGroup() .addComponent(jToolBar2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(remotePanel, javax.swing.GroupLayout.DEFAULT_SIZE, 285, Short.MAX_VALUE)) ); add(remoteSide); remoteSide.setBounds(330, 80, 250, 320); javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root"); localTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1)); localTree.setComponentPopupMenu(localFileMenu); localTree.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { localTreeMouseClicked(evt); } }); localTreeScroll.setViewportView(localTree); add(localTreeScroll); localTreeScroll.setBounds(20, 20, 280, 50); treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root"); remoteTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1)); remoteTree.setComponentPopupMenu(remoteFileMenu); remoteTree.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { remoteTreeMouseClicked(evt); } }); remoteTreeScroll.setViewportView(remoteTree); add(remoteTreeScroll); remoteTreeScroll.setBounds(330, 20, 250, 46); }// </editor-fold>//GEN-END:initComponents private void remote_downloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_downloadActionPerformed download(); }//GEN-LAST:event_remote_downloadActionPerformed private void local_uploadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_uploadActionPerformed upload(); }//GEN-LAST:event_local_uploadActionPerformed private void local_mkdirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_mkdirActionPerformed local_mkdir(); }//GEN-LAST:event_local_mkdirActionPerformed private void local_refreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_refreshActionPerformed local_ls(); }//GEN-LAST:event_local_refreshActionPerformed private void local_deleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_deleteActionPerformed local_delete(); }//GEN-LAST:event_local_deleteActionPerformed private void local_renameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_renameActionPerformed local_rename(); }//GEN-LAST:event_local_renameActionPerformed private void remote_mkdirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_mkdirActionPerformed remote_mkdir(); }//GEN-LAST:event_remote_mkdirActionPerformed private void remote_refreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_refreshActionPerformed remote_ls(); }//GEN-LAST:event_remote_refreshActionPerformed private void remote_deleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_deleteActionPerformed remote_delete(); }//GEN-LAST:event_remote_deleteActionPerformed private void remote_renameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_renameActionPerformed remote_rename(); }//GEN-LAST:event_remote_renameActionPerformed private void remote_propsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_propsActionPerformed remote_props(); }//GEN-LAST:event_remote_propsActionPerformed private void remoteTreeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_remoteTreeMouseClicked if (evt.getClickCount() != 2) { return; } if (evt.getButton() != 1) { return; } dblclickRemoteTree(); }//GEN-LAST:event_remoteTreeMouseClicked private void localTreeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_localTreeMouseClicked if (evt.getClickCount() != 2) { return; } if (evt.getButton() != 1) { return; } dblclickLocalTree(); }//GEN-LAST:event_localTreeMouseClicked private void local_cutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_cutActionPerformed local_cut(); }//GEN-LAST:event_local_cutActionPerformed private void local_copyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_copyActionPerformed local_copy(); }//GEN-LAST:event_local_copyActionPerformed private void local_pasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_pasteActionPerformed local_paste(); }//GEN-LAST:event_local_pasteActionPerformed private void remote_cutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_cutActionPerformed remote_cut(); }//GEN-LAST:event_remote_cutActionPerformed private void remote_copyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_copyActionPerformed remote_copy(); }//GEN-LAST:event_remote_copyActionPerformed private void remote_pasteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_pasteActionPerformed remote_paste(); }//GEN-LAST:event_remote_pasteActionPerformed private void local_openActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_openActionPerformed local_open("open"); }//GEN-LAST:event_local_openActionPerformed private void remote_openActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_openActionPerformed remote_open("open"); }//GEN-LAST:event_remote_openActionPerformed private void remote_trashActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_trashActionPerformed remoteBrowser.trash(); remote_ls(); }//GEN-LAST:event_remote_trashActionPerformed private void local_trashActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_trashActionPerformed localBrowser.trash(); local_ls(); }//GEN-LAST:event_local_trashActionPerformed private void local_propsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_propsActionPerformed local_props(); }//GEN-LAST:event_local_propsActionPerformed private void local_shareActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_shareActionPerformed FileEntry files[] = localBrowser.getSelected(); if ((files == null) || (files.length != 1)) return; File share = new File(files[0].file); if (!share.exists() || !share.isDirectory()) return; FileApp.inDialog = true; ShareDialog dialog = new ShareDialog(null, true, share, NetworkShares.getShareName(share.getAbsolutePath())); dialog.setVisible(true); FileApp.inDialog = false; local_ls(); }//GEN-LAST:event_local_shareActionPerformed private void remote_shareActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_shareActionPerformed FileEntry files[] = remoteBrowser.getSelected(); if ((files == null) || (files.length != 1)) return; File share = new File(files[0].file); if (!share.exists() || !share.isDirectory()) return; FileApp.inDialog = true; ShareDialog dialog = new ShareDialog(null, true, share, NetworkShares.getShareName(share.getAbsolutePath())); dialog.setVisible(true); FileApp.inDialog = false; remote_ls(); }//GEN-LAST:event_remote_shareActionPerformed private void local_editActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_editActionPerformed local_open("edit"); }//GEN-LAST:event_local_editActionPerformed private void remote_editActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_editActionPerformed remote_open("edit"); }//GEN-LAST:event_remote_editActionPerformed private void local_mkdir_2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_mkdir_2ActionPerformed local_mkdir(); }//GEN-LAST:event_local_mkdir_2ActionPerformed private void remote_mkdir_2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_mkdir_2ActionPerformed remote_mkdir(); }//GEN-LAST:event_remote_mkdir_2ActionPerformed private void local_cdupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_cdupActionPerformed local_cdup(); }//GEN-LAST:event_local_cdupActionPerformed private void remote_cdupActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_cdupActionPerformed remote_cdup(); }//GEN-LAST:event_remote_cdupActionPerformed private void local_refresh_2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_refresh_2ActionPerformed localBrowser.refresh(); }//GEN-LAST:event_local_refresh_2ActionPerformed private void remote_refresh_2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_refresh_2ActionPerformed remoteBrowser.refresh(); }//GEN-LAST:event_remote_refresh_2ActionPerformed private void local_paste_2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_local_paste_2ActionPerformed local_paste(); }//GEN-LAST:event_local_paste_2ActionPerformed private void remote_paste_2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_remote_paste_2ActionPerformed remote_paste(); }//GEN-LAST:event_remote_paste_2ActionPerformed private void localDirKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_localDirKeyPressed if (evt.getModifiers() != 0) return; if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) { local_chdir(localDir.getText()); } }//GEN-LAST:event_localDirKeyPressed private void remoteDirKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_remoteDirKeyPressed if (evt.getModifiers() != 0) return; if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) { remote_chdir(remoteDir.getText()); } }//GEN-LAST:event_remoteDirKeyPressed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JToolBar jToolBar1; private javax.swing.JToolBar jToolBar2; private javax.swing.JPopupMenu localDesktopMenu; public javax.swing.JTextField localDir; private javax.swing.JPopupMenu localFileMenu; private javax.swing.JLabel localLabel; private javax.swing.JPanel localPanel; private javax.swing.JPanel localSide; private javax.swing.JTree localTree; private javax.swing.JScrollPane localTreeScroll; private javax.swing.JButton local_cdup; private javax.swing.JMenuItem local_copy; private javax.swing.JMenuItem local_cut; private javax.swing.JMenuItem local_delete; private javax.swing.JMenuItem local_edit; private javax.swing.JMenuItem local_mkdir; private javax.swing.JMenuItem local_mkdir_2; private javax.swing.JMenuItem local_open; private javax.swing.JMenuItem local_paste; private javax.swing.JMenuItem local_paste_2; private javax.swing.JMenuItem local_props; private javax.swing.JMenuItem local_refresh; private javax.swing.JMenuItem local_refresh_2; private javax.swing.JMenuItem local_rename; private javax.swing.JPopupMenu.Separator local_sep_1; private javax.swing.JPopupMenu.Separator local_sep_2; private javax.swing.JPopupMenu.Separator local_sep_3; private javax.swing.JPopupMenu.Separator local_sep_4; private javax.swing.JPopupMenu.Separator local_sep_5; private javax.swing.JMenuItem local_share; private javax.swing.JMenuItem local_trash; private javax.swing.JMenuItem local_upload; private javax.swing.JPopupMenu remoteDesktopMenu; public javax.swing.JTextField remoteDir; private javax.swing.JPopupMenu remoteFileMenu; private javax.swing.JLabel remoteLabel; private javax.swing.JPanel remotePanel; private javax.swing.JPanel remoteSide; private javax.swing.JTree remoteTree; private javax.swing.JScrollPane remoteTreeScroll; private javax.swing.JButton remote_cdup; private javax.swing.JMenuItem remote_copy; private javax.swing.JMenuItem remote_cut; private javax.swing.JMenuItem remote_delete; private javax.swing.JMenuItem remote_download; private javax.swing.JMenuItem remote_edit; private javax.swing.JMenuItem remote_mkdir; private javax.swing.JMenuItem remote_mkdir_2; private javax.swing.JMenuItem remote_open; private javax.swing.JMenuItem remote_paste; private javax.swing.JMenuItem remote_paste_2; private javax.swing.JMenuItem remote_props; private javax.swing.JMenuItem remote_refresh; private javax.swing.JMenuItem remote_refresh_2; private javax.swing.JMenuItem remote_rename; private javax.swing.JPopupMenu.Separator remote_sep_1; private javax.swing.JPopupMenu.Separator remote_sep_2; private javax.swing.JPopupMenu.Separator remote_sep_3; private javax.swing.JPopupMenu.Separator remote_sep_4; private javax.swing.JPopupMenu.Separator remote_sep_5; private javax.swing.JMenuItem remote_share; private javax.swing.JMenuItem remote_trash; // End of variables declaration//GEN-END:variables public XML localFolders = new XML(); public XML remoteFolders = new XML(); public int totalFileSize = 0; public DefaultTableModel localFilesTableModel = new DefaultTableModel(); public DefaultTableModel remoteFilesTableModel = new DefaultTableModel(); public boolean aborted = false; public JFileBrowser localBrowser, remoteBrowser; private SiteDetails sd; public int view; private String remoteRoot; //aka mount point private String share; private static String getTarget() { Random r = new Random(); String folder; do { folder = JF.getUserPath() + "/.gvfs/" + Math.abs(r.nextInt()) + "/"; } while (new File(folder).exists()); return folder; } public boolean connect(SiteDetails sd) { this.sd = sd; if (sd.remoteDir.length() == 0) sd.remoteDir = "/"; remoteDir.setText(sd.remoteDir); if (sd.protocol.equals("local")) { remoteRoot = "/"; remoteBrowser.setPath(sd.remoteDir); remote_build_tree(); remote_ls(); return true; } if (sd.protocol.equals("smb")) { String initRemoteDir = null; int idx = sd.remoteDir.indexOf("/"); if (idx == 0) { initRemoteDir = sd.remoteDir.substring(1); idx = initRemoteDir.indexOf("/"); } else { initRemoteDir = sd.remoteDir; } if (idx == -1) { share = initRemoteDir; initRemoteDir = ""; } else { share = initRemoteDir.substring(0, idx); initRemoteDir = initRemoteDir.substring(idx+1); } remoteRoot = getTarget(); String uri = sd.username + "@" + sd.host + "/" + share; String args[] = {uri, remoteRoot, "-f"}; File folder = new File(remoteRoot); folder.mkdirs(); //TODO : send msg to jfDesktop.mount //TODO : send passwd remoteBrowser.setPath(remoteRoot + initRemoteDir); remote_build_tree(); remote_ls(); return true; } if (sd.protocol.equals("ftp")) { share = "FTP"; remoteRoot = getTarget(); String uri = sd.username + "@" + sd.host; String args[] = {uri, remoteRoot, "-f"}; File folder = new File(remoteRoot); folder.mkdirs(); //TODO : send msg to jfDesktop.mount //TODO : send passwd remoteBrowser.setPath(remoteRoot + sd.remoteDir); remote_build_tree(); remote_ls(); return true; } if (sd.protocol.equals("sftp")) { share = "SFTP"; remoteRoot = getTarget(); String uri = sd.username + "@" + sd.host; String args[] = {uri, remoteRoot, "-f"}; File folder = new File(remoteRoot); folder.mkdirs(); //TODO : send msg to jfDesktop.mount //TODO : send passwd remoteBrowser.setPath(remoteRoot + sd.remoteDir); remote_build_tree(); remote_ls(); return true; } if (sd.protocol.equals("ftps")) { share = "FTPS"; remoteRoot = getTarget(); String uri = sd.username + "@" + sd.host; String args[] = {uri, remoteRoot, "-f"}; File folder = new File(remoteRoot); folder.mkdirs(); //TODO : send msg to jfDesktop.mount //TODO : send passwd remoteBrowser.setPath(remoteRoot + sd.remoteDir); remote_build_tree(); remote_ls(); return true; } JFLog.log("Error:Unknown protocol"); return false; } public void disconnect() { localBrowser.closeFile(); //zip or iso localBrowser.close(); //shutdown remoteBrowser.closeFile(); //zip or iso remoteBrowser.close(); //shutdown if (sd == null) return; if (!sd.protocol.equals("local")) { remoteBrowser.setPath(null); //TODO : send msg to jfDesktop.unmount } } public void download() { remote_copy(); local_paste(); } public void upload() { local_copy(); remote_paste(); } public void abort() { //TODO } public static class SiteFileClipboard implements FileClipboard { public void get() { FileApp.jbusClient.call("org.jflinux.jdesktop." + System.getenv("JID"), "getFileSelection", JBusClient.quote(FileApp.jbusClient.pack)); } public void set(String fileset) { FileApp.jbusClient.call("org.jflinux.jdesktop." + System.getenv("JID"), "setFileSelection", JBusClient.quote(JBusClient.encodeString(fileset))); } public void clear() { FileApp.jbusClient.call("org.jflinux.jdesktop." + System.getenv("JID"), "clearFileSelection", ""); } } SiteFileClipboard sfc = new SiteFileClipboard(); public void init(String initLocalDir, boolean localOnly) { if (initLocalDir.length() == 0) initLocalDir = JF.getUserPath(); localDir.setText(initLocalDir.replaceAll("\\\\", "/")); localFolders.setTag(localFolders.root, "/", "", ""); localTree.setModel(localFolders.getTreeModel()); remoteFolders.setTag(remoteFolders.root, "/", "", ""); remoteTree.setModel(remoteFolders.getTreeModel()); localFilesTableModel.addColumn("file"); localFilesTableModel.addColumn("size"); localFilesTableModel.addColumn("date"); remoteFilesTableModel.addColumn("file"); remoteFilesTableModel.addColumn("size"); remoteFilesTableModel.addColumn("date"); remoteFilesTableModel.addColumn("permissions"); remoteFilesTableModel.addColumn("owner/group"); view = Settings.settings.defaultView; localBrowser = new JFileBrowser(view, initLocalDir, localDesktopMenu , localFileMenu, null, 0, false, null, "jopen", Color.LIGHT_GRAY, Color.BLACK , true, false, false, false, FileApp.jbusClient, false, sfc); localBrowser.setName("localFiles"); //see FileApp.search() localBrowser.setListener(this); remoteBrowser = new JFileBrowser(view, null, remoteDesktopMenu , localFileMenu, null, 0, false, null, "jopen", Color.LIGHT_GRAY, Color.BLACK , true, false, false, false, FileApp.jbusClient, false, sfc); remoteBrowser.setListener(this); remoteBrowser.setName("remoteFiles"); //see FileApp.search() initGUI(localOnly); buildGUI(); local_build_tree(); local_ls(); setState(true); } public void setView(int view) { this.view = view; localBrowser.setView(view); localBrowser.refresh(); remoteBrowser.setView(view); remoteBrowser.refresh(); } public XML.XMLTag localTag; //current folder in XML tree private void local_build_tree() { File root = new File("/"); File rootFiles[] = root.listFiles(); for(int a=0;a<rootFiles.length;a++) { if (!rootFiles[a].isDirectory()) continue; localFolders.addTag(localFolders.root, rootFiles[a].getName(), "", ""); } } public void local_ls() { localBrowser.refresh(); String cd = localDir.getText(); String cds[] = cd.split("/"); XML.XMLTag tag = localFolders.root; for(int a=0;a<cds.length;a++) { if (cds[a].length() == 0) continue; tag = localFolders.addSetTag(tag, cds[a], "", ""); } localTag = tag; localTree.makeVisible(new TreePath(tag.getPath())); FileEntry folders[] = localBrowser.getFolders(); for(int a=0;a<folders.length;a++) { localFolders.addSetTag(tag, folders[a].name, "", ""); } } public XML.XMLTag remoteTag; private void remote_build_tree() { File root = new File(remoteRoot); File rootFiles[] = root.listFiles(); if (rootFiles == null) return; for(int a=0;a<rootFiles.length;a++) { if (!rootFiles[a].isDirectory()) continue; remoteFolders.addTag(remoteFolders.root, rootFiles[a].getName(), "", ""); } } public void remote_ls() { remoteBrowser.refresh(); String cd = remoteRoot + remoteDir.getText(); String cds[] = cd.split("/"); XML.XMLTag tag = remoteFolders.root; for(int a=0;a<cds.length;a++) { if (cds[a].length() == 0) continue; tag = remoteFolders.addSetTag(tag, cds[a], "", ""); } remoteTag = tag; remoteTree.makeVisible(new TreePath(tag.getPath())); FileEntry folders[] = remoteBrowser.getFolders(); for(int a=0;a<folders.length;a++) { remoteFolders.addSetTag(tag, folders[a].name, "", ""); } } public void local_chdir(String path) { String wd = localDir.getText(); path = path.replaceAll("\\\\", "/"); if (path.equals(".")) { //do nothing } else if (path.equals("..")) { //remove last path element int idx = wd.lastIndexOf('/'); if (idx == -1) { wd = "/"; } else { if (JF.isWindows() && wd.length() == 3) { wd = "/"; } else { if (idx == 0) { wd = "/"; } else { wd = wd.substring(0, idx); } } if (JF.isWindows()) { if (wd.length() == 2) { wd += "/"; } } } } else { if ((path.length() == 2) && (path.charAt(1) == ':')) { wd = path + "/"; } else { if (path.indexOf("/") != -1) { //absolute path wd = path; } else { //add path element if (JF.isWindows() && wd.equals("/")) { wd = path + "/"; } else { if (!wd.endsWith("/")) { wd += "/"; } wd += path; } } } } File folder = new File(wd); if (!folder.exists() || !folder.isDirectory()) { JF.showError("Error", "Can not find:" + wd); localDir.setText(localBrowser.getPath()); return; } localDir.setText(wd); localBrowser.setPath(wd); local_ls(); } public void remote_chdir(String path) { String wd = remoteDir.getText(); path = path.replaceAll("\\\\", "/"); if (path.equals(".")) { //do nothing } else if (path.equals("..")) { //remove last path element int idx = wd.lastIndexOf('/'); if (idx == -1) { wd = "/"; } else { if (JF.isWindows() && wd.length() == 3) { wd = "/"; } else { if (idx == 0) { wd = "/"; } else { wd = wd.substring(0, idx); } } if (JF.isWindows()) { if (wd.length() == 2) { wd += "/"; } } } } else { if ((path.length() == 2) && (path.charAt(1) == ':')) { wd = path + "/"; } else { if (path.indexOf("/") != -1) { //absolute path wd = path; } else { //add path element if (JF.isWindows() && wd.equals("/")) { wd = path + "/"; } else { if (!wd.endsWith("/")) { wd += "/"; } wd += path; } } } } File folder = new File(remoteRoot + wd); if (!folder.exists() || !folder.isDirectory()) { JF.showError("Error", "Can not find:" + wd); remoteDir.setText(remoteBrowser.getPath()); return; } remoteDir.setText(wd); remoteBrowser.setPath(remoteRoot + wd); remote_ls(); } public void setState(boolean state) { localDir.setEnabled(state); remoteDir.setEnabled(state); localTree.setEnabled(state); localBrowser.setEnabled(state); remoteTree.setEnabled(state); remoteBrowser.setEnabled(state); } private int cnt=0; public void local_mkdir() { FileApp.inDialog = true; String fn = JF.getString("Enter new folder name", ""); FileApp.inDialog = false; if ((fn == null) || (fn.length() == 0)) { return; } if (fn.indexOf(":") != -1) { return; } if (fn.indexOf("/") != -1) { return; } if (fn.indexOf("?") != -1) { return; } if (fn.indexOf("*") != -1) { return; } String wd = localDir.getText(); if (!wd.endsWith("/")) { wd += "/"; } try { _mkdir(wd + fn); localFolders.addSetTag(localTag, fn, "", ""); local_ls(); } catch (Exception e) { FileApp.inDialog = true; JF.showError("Error", "Create folder failed:" + e); FileApp.inDialog = false; } } public void _mkdir(String path) { File file = new File(path); file.mkdir(); } public void remote_mkdir() { FileApp.inDialog = true; String fn = JF.getString("Enter new folder name", ""); FileApp.inDialog = false; if ((fn == null) || (fn.length() == 0)) { return; } if (fn.indexOf(":") != -1) { return; } if (fn.indexOf("/") != -1) { return; } if (fn.indexOf("?") != -1) { return; } if (fn.indexOf("*") != -1) { return; } String wd = remoteDir.getText(); if (!wd.endsWith("/")) { wd += "/"; } try { _mkdir(remoteRoot + wd + fn); remoteFolders.addSetTag(remoteTag, fn, "", ""); remote_ls(); } catch (Exception e) { FileApp.inDialog = true; JF.showError("Error", "Create folder failed:" + e); FileApp.inDialog = false; } } public void local_delete() { FileApp.inDialog = true; if (!JF.showConfirm("Delete", "Are you sure you want to delete file(s)?")) { FileApp.inDialog = false; return; } FileApp.inDialog = false; aborted = false; local_delete_files(); local_ls(); } private void local_delete_files() { localBrowser.delete(); } public void remote_delete() { FileApp.inDialog = true; if (!JF.showConfirm("Delete", "Are you sure you want to delete file(s)?")) { FileApp.inDialog = false; return; } FileApp.inDialog = false; aborted = false; remote_delete_files(); remote_ls(); } private void remote_delete_files() { remoteBrowser.delete(); } public void move_files_to_trash(File files[]) { localBrowser.trash(); } private int homePathLength; private String homePath; public void move_file_to_trash(File file) { //move file to ~/.local/share/Trash //file must be under homePath String pathFile = file.getParentFile().getAbsolutePath(); // System.out.println("pathFile:" + pathFile); if (!pathFile.startsWith(homePath)) return; String pathRel = pathFile.substring(homePathLength); // System.out.println("pathRel:" + pathRel); if (pathRel.length() > 0 && !pathRel.startsWith("/")) return; File pathTrash = new File(homePath + "/.local/share/Trash" + pathRel); pathTrash.mkdirs(); // System.out.println("mkdirs:" + pathTrash.getAbsolutePath()); try { JFileBrowser.runCmd(null, new String[] {"jmv", file.getAbsolutePath(), pathTrash.getAbsolutePath()}); // System.out.println("move:" + file.getAbsolutePath() + " to " + pathTrash.getAbsolutePath()); } catch (Exception e) { JFLog.log(e); } } public void local_rename() { FileEntry files[] = localBrowser.getSelected(); if ((files == null) || (files.length != 1)) { return; } File localFile = new File(files[0].file); FileApp.inDialog = true; String newName = JF.getString("Rename " + (localFile.isDirectory() ? "Folder" : "File"), files[0].name); FileApp.inDialog = false; if ((newName == null) || (newName.length() == 0)) { return; } File newFile = new File(localDir.getText() + "/" + newName); localFile.renameTo(newFile); //update localTree for (int a = 0; a < localTag.getChildCount(); a++) { XML.XMLTag child = localTag.getChildAt(a); if (child.getName().equals(files[0].file)) { child.setName(newName); break; } } local_ls(); } public void remote_rename() { FileEntry files[] = remoteBrowser.getSelected(); if ((files == null) || (files.length != 1)) { return; } File remoteFile = new File(files[0].file); FileApp.inDialog = true; String newName = JF.getString("Rename " + (remoteFile.isDirectory() ? "Folder" : "File"), files[0].name); FileApp.inDialog = false; if ((newName == null) || (newName.length() == 0)) { return; } File newFile = new File(remoteRoot + remoteDir.getText() + "/" + newName); remoteFile.renameTo(newFile); //update remoteTree for (int a = 0; a < remoteTag.getChildCount(); a++) { XML.XMLTag child = remoteTag.getChildAt(a); if (child.getName().equals(files[0].file)) { child.setName(newName); break; } } remote_ls(); } private void showPath(String name, Object path[]) { System.out.println(name); for (int a = 0; a < path.length; a++) { System.out.println("path[]=" + path[a]); } } private void dblclickLocalTree() { TreePath paths[] = localTree.getSelectionPaths(); if (paths.length != 1) { return; } XML.XMLTag tag = localFolders.getTag(paths[0]); ArrayList<String> pathElements = new ArrayList<String>(); do { if (tag.getName().equals("/")) { break; //top node } pathElements.add(0, tag.getName()); //insert at top tag = tag.getParent(); } while (tag != null); String fullPath = ""; for (int a = 0; a < pathElements.size(); a++) { if (!((fullPath.length() == 0) && (JF.isWindows()))) { if (!fullPath.endsWith("/")) { fullPath += "/"; } } fullPath += pathElements.get(a); } if (fullPath.equals("")) { fullPath = "/"; } local_chdir(fullPath); } private void dblclickRemoteTree() { TreePath paths[] = remoteTree.getSelectionPaths(); if (paths.length != 1) { return; } XML.XMLTag tag = remoteFolders.getTag(paths[0]); ArrayList<String> pathElements = new ArrayList<String>(); do { if (tag.getName().equals("/")) { break; //top node } pathElements.add(0, tag.getName()); //insert at top tag = tag.getParent(); } while (tag != null); String fullPath = ""; for (int a = 0; a < pathElements.size(); a++) { if (!fullPath.endsWith("/")) { fullPath += "/"; } fullPath += pathElements.get(a); } if (fullPath.equals("")) { fullPath = "/"; } remote_chdir(fullPath); } public boolean showRemoteSide, showRemoteTree, showLocalTree; public boolean showHidden = false; private void initGUI(boolean localOnly) { showRemoteSide = !localOnly; showRemoteTree = false; showLocalTree = false; if (localOnly) { localFileMenu.remove(local_upload); localFileMenu.remove(local_sep_1); remoteFileMenu.remove(remote_download); remoteFileMenu.remove(remote_sep_1); } else { localFileMenu.remove(local_sep_5); localFileMenu.remove(local_share); remoteFileMenu.remove(remote_trash); remoteFileMenu.remove(remote_sep_5); remoteFileMenu.remove(remote_share); } } private JComponent mainPane; public void buildGUI() { JSplitPane sl1, sr1, s2 = null; //first remove all components removeAll(); localPanel.removeAll(); remotePanel.removeAll(); //add components as desired if (showLocalTree) { sl1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, localTreeScroll, localBrowser); sl1.setResizeWeight(0.1); localPanel.add(sl1); } else { localPanel.add(localBrowser); } if (showRemoteSide) { if (showRemoteTree) { sr1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, remoteTreeScroll, remoteBrowser); sr1.setResizeWeight(0.1); remotePanel.add(sr1); } else { remotePanel.add(remoteBrowser); } s2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, localSide, remoteSide); s2.setResizeWeight(0.5); } if (showRemoteSide) { add(s2); mainPane = s2; } else { add(localSide); mainPane = localSide; } setLayout(new GridLayout(1, 1)); validate(); repaint(); localBrowser.requestFocus(); } public void local_cut() { localBrowser.cut(); } public void local_copy() { localBrowser.copy(); } public void local_paste() { localBrowser.paste(); //refresh both sides local_ls(); remote_ls(); } public void remote_cut() { remoteBrowser.cut(); } public void remote_copy() { remoteBrowser.copy(); } public void remote_paste() { remoteBrowser.paste(); //refresh both sides local_ls(); remote_ls(); } public void local_open(String action) { localBrowser.invoke(localBrowser.getSelected()[0].button); } public void remote_open(String action) { remoteBrowser.invoke(remoteBrowser.getSelected()[0].button); } public void local_props() { FileEntry file = localBrowser.getSelected()[0]; JFileProperties dialog = new JFileProperties(file, false); dialog.setVisible(true); if (dialog.value == -1) return; try { local_ls(); } catch (Exception e) { JFLog.log(e); } } public void remote_props() { FileEntry file = remoteBrowser.getSelected()[0]; JFileProperties dialog = new JFileProperties(file, false); dialog.setVisible(true); if (dialog.value == -1) return; try { remote_ls(); } catch (Exception e) { JFLog.log(e); } } public Point getLocalLocation() { return localBrowser.getLocationOnScreen(); } public Point getRemoteLocation() { return remoteBrowser.getLocationOnScreen(); } public boolean searchLocal(String str) { FileEntry files[] = localBrowser.getAll(); for(int a=0;a<files.length;a++) { if (files[a].name.toLowerCase().startsWith(str)) { localBrowser.selectFile(files[a]); return true; } } return false; } public boolean searchRemote(String str) { FileEntry files[] = remoteBrowser.getAll(); for(int a=0;a<files.length;a++) { if (files[a].name.toLowerCase().startsWith(str)) { remoteBrowser.selectFile(files[a]); return true; } } return false; } public void browserResized(JFileBrowser browser) { browser.refresh(); } public void browserChangedPath(JFileBrowser browser, String newpath) { if (newpath == null) return; if (browser == localBrowser) { localDir.setText(newpath); } if (browser == remoteBrowser) { if (newpath.length() < remoteRoot.length()) return; remoteDir.setText(newpath.substring(remoteRoot.length()-1)); } } public void rescan() { //media has changed, make sure current path is still valid if (!new File(localBrowser.getPath()).exists()) { localBrowser.setPath(JF.getUserPath()); } if (!new File(remoteBrowser.getPath()).exists()) { remoteBrowser.setPath(JF.getUserPath()); } } private JComponent getFocusContainer() { JComponent c = (JComponent)FileApp.This.getFocusOwner(); if (c == null) return null; if (c instanceof JButton) { return (JComponent)c.getParent(); } return c; } public JFileBrowser getFocusBrowser() { JComponent c = (JComponent)getFocusContainer(); if (c == localBrowser) return localBrowser; if (c == remoteBrowser) return remoteBrowser; return null; } public JTextField getFocusFolder() { JComponent c = (JComponent)FileApp.This.getFocusOwner(); if (c == remoteTree) return remoteDir; if (c == remoteDir) return remoteDir; if (c == remotePanel) return remoteDir; return localDir; } public boolean isFocusBrowser() { JComponent c = (JComponent)getFocusContainer(); if (c == localBrowser) return true; if (c == remoteBrowser) return true; return false; } public void local_cdup() { String path = localDir.getText(); if (path.equals(File.separator)) return; int idx = path.lastIndexOf(File.separatorChar); path = path.substring(0, idx); if (path.length() == 0) path = File.separator; localBrowser.setPath(path); } public void remote_cdup() { String path = remoteDir.getText(); if (path.equals("/")) return; int idx = path.lastIndexOf("/"); path = path.substring(0, idx); if (path.length() == 0) path = "/"; String fullpath = remoteRoot + path; fullpath = fullpath.replaceAll("//", "/"); remoteBrowser.setPath(fullpath); } }