/**
* @autor: S. Törmer ( devilmc )
* @version: 0.1b
*/
import java.awt.*;
import java.io.*;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import sun.net.ftp.*;
import sun.net.*;
public class FTree extends JPanel implements TreeSelectionListener, TreeExpansionListener {
private JTree DirTree;
private FtpClient ftp;
private DefaultTreeModel treeModel;
public FTree(FtpClient ftp, String host ){
this.ftp=ftp;
this.setLayout(new BorderLayout());
setTree(host);
}
public void setTree(String host){
System.out.println("setTree");
FDefaultMutableTreeNode rootNode;
rootNode = BuildTree( host );
System.out.println("setTree nach build tree");
treeModel = new DefaultTreeModel(rootNode);
DirTree = new javax.swing.JTree(rootNode);
add(DirTree, BorderLayout.CENTER);
DirTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
DirTree.setBorder(BorderFactory.createLineBorder(Color.black));
DirTree.setShowsRootHandles(true);
DirTree.putClientProperty("JTree.lineStyle","Horizontal");
DirTree.putClientProperty("JTree.lineStyle","Angled");
// Listener hinzufuegen
DirTree.addTreeSelectionListener(this);
DirTree.addTreeExpansionListener(this);
DirTree.setSelectionRow(0);
DirTree.setFont( new Font("Arial", Font.BOLD,18) );
}
public FDefaultMutableTreeNode BuildTree(String sPath) {
FDefaultMutableTreeNode root;
System.out.println("Buildtree");
root = createMyNode( sPath, sPath); // new DefaultMutableTreeNode("root");
Scan(root, sPath, sPath,0,0);
System.out.println("nach scan");
return root;
} // BuildTree
public void Scan(FDefaultMutableTreeNode parent, String sPath, String sName, int Stufe,int AnzSubDir){
System.out.println("scan");
FDefaultMutableTreeNode node;
FTreeNode myNode;
File dir = new File(sPath);
File[] files;
TelnetInputStream in =null;
Vector fileList;
try{
BufferedReader br;
fileList = new Vector();
String line = new String();
in = ftp.nameList("");
br = new BufferedReader(new InputStreamReader(in));
while ( (line = br.readLine()) != null) {
StringTokenizer strtok = new StringTokenizer(line);
fileList.add(line);
}
in.close();
files = new File[fileList.size()];
for ( int i=0; i<fileList.size(); i++){
files[i]= new File(fileList.elementAt(i).toString());
}
System.out.println(files[0].toString());
System.out.println(files[0].isDirectory());
System.out.println("vor files != null");
if ( files != null ) {
for (int i=0; i<files.length; i++) {
System.out.println("in forschleife");
try{
System.out.println("in try: " +files[i].getName());
System.out.println(ftp.getResponseString());
if(Stufe>1){
AnzSubDir++;
parent.setAnzSubdir(AnzSubDir);
return;
}
ftp.cd(files[i].getName());
System.out.println("nach cd");
node = createMyNode(files[i].getName(),files[i].getName());
parent.add(node);
Scan(node,files[i].getName(),files[i].getName(),Stufe+1,AnzSubDir);
System.out.println("vor cdUp");
ftp.cdUp();
System.out.println("nach cdup");
}
catch(IOException e){
System.out.println(files[i].getName());
System.err.println(e);
}
System.out.println("nach try");
}
}
System.out.println("nach cd");
System.out.println(ftp.pwd());
}
catch(IOException e){
System.err.println(e);
}
}
public FDefaultMutableTreeNode createMyNode(String sPath, String nodeString) {
FTreeNode myNode;
FDefaultMutableTreeNode Node;
myNode = new FTreeNode(sPath, nodeString);
Node = new FDefaultMutableTreeNode(myNode);
// Node = new DefaultMutableTreeNode(nodeString);
//Node.setUserObject(myNode);
return Node;
}
public void valueChanged(TreeSelectionEvent e) {
}
public void treeExpanded(TreeExpansionEvent event){
}//treeExpanded
public void treeCollapsed(TreeExpansionEvent event){
}//treeCollapsed
}