$package("com.qn.ui");

com.qn.ui.FileTreeView = function (){
	this.multiSelected = true;
	this.onchange = function(selNode){
		if(selNode.getChildCount()>0)
			selNode.clear();
		var file = selNode.userObject;
		this.list(file.getTarget(), selNode);
	}
}
com.qn.ui.FileTreeView.prototype = new js.ui.tree.AbstractTree();

com.qn.ui.FileTreeView.prototype.renderClass = com.qn.ui.FileTreeNodeRenderer;

com.qn.ui.FileTreeView.prototype.list = function(path, parentNode){
	var __this = this;
	this.getFile().onerror = function(msg){
		alert(msg);
	}
	this.getFile().onload = function(files){
		__this.fillFiles(files, parentNode);
		if(__this.onload) __this.onload(files, parentNode);
	}
	this.getFile().setPath(path);
	this.getFile().list();
}

com.qn.ui.FileTreeView.prototype.fillFiles = function(files, parentNode){
	if(!parentNode)
		parentNode = this.getRoot();
	if(parentNode)
		parentNode.clear();
	var file;
	for(var i=0; i<files.length; i++){
		file = files[i];
		if(file.isDirectory() || file.isDirShortcut() || file.isShareDirectory()){ 
			var	node = new js.ui.tree.TreeNode(this);
			node.setUserObject(file);
			parentNode.add(node);
		}
	}
	parentNode.expand();
}

com.qn.ui.FileTreeView.prototype.file = null;

com.qn.ui.FileTreeView.prototype.getFile = function(){
	if(!this.file){
		this.file = new com.qn.io.File();
		this.addListener(810);
	}
	return this.file;
}

com.qn.ui.FileTreeView.prototype.locateNode = function(path, parentNode){
	if(!parentNode)
		parentNode = this.getRoot();
	var node;
	for(var i=0; i<parentNode.getChildCount(); i++){
		node = parentNode.getChildAt(i);
		if(node.userObject.getTarget()==path)
			this.setSelected(node);
		}
}

com.qn.ui.FileTreeView.prototype.processMessage = function (msg, action, src){
	if(msg==810){
		if(this.getFile().getPath()!=src.getParent()) return;
		if(action==0){//new
			this.list(src.getParent(), this.selected);
		}
		else if(action==1){//rename
			this.list(src.getParent(), this.selected);
		}
		else if(action==2){//delete
			this.list(src.getParent(), this.selected);
		}
		else if(action==6){//recovery
			this.list(src.getParent(), this.selected);
		}
	}
}
