private void loadChildren(final DefaultMutableTreeNode node) 
    {
        fileTree.setEnabled(false);

        SwingWorker<Void, MyFtpFile> worker = new SwingWorker<Void, MyFtpFile>() {
        	
            @Override
            public Void doInBackground() 
            {
            	MyFtpFile file = (MyFtpFile)node.getUserObject();
                
                if (file.isDir()) 
                {
                	System.out.println("fetching...");
                	currentPath.setText(" Selected file: " + file.getPath().toString());
                    
                	ArrayList<MyFtpFile> files = 
                    		fileBrowser.scanDirectory(file.getPath());
                	
                	Collections.sort(files);
                    
                    if (node.isLeaf()) 
                    {
                        for (MyFtpFile child : files)
                        	if (child.isDir())
                        		publish(child);
                    }
                    
                    //loadList(files);
                    loadTableData(files);
                }
                return null;
            }

			@Override
            protected void process(List<MyFtpFile> chunks) 
            {
                for (MyFtpFile child : chunks) 
                {
                    node.add(new DefaultMutableTreeNode(child));
                }
            }

            @Override
            protected void done() 
            {
                fileTree.setEnabled(true);
            }
        };
        worker.execute();
    }