package com.github.swapii.condi;
import com.github.swapii.condi.ui.tree.TreeItem;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author Pavel Savinov
* @version 7/26/13 12:19 PM
*/
public class FileTreeItem implements TreeItem {
private FileTreeItem parent;
private FileFilter fileFilter;
private File file;
public FileTreeItem(File file, FileTreeItem parent, FileFilter fileFilter) {
this.file = file;
this.parent = parent;
this.fileFilter = fileFilter;
}
@Override
public List<TreeItem> getChilds() {
if (file.isDirectory()) {
ArrayList<TreeItem> items = new ArrayList<TreeItem>();
for (File childFile : file.listFiles(fileFilter)) {
items.add(new FileTreeItem(childFile, this, fileFilter));
}
return items;
} else {
return Collections.EMPTY_LIST;
}
}
@Override
public boolean hasChilds() {
File[] files = file.listFiles(fileFilter);
return file.isDirectory() && files != null && files.length > 0;
}
@Override
public boolean isSelectable() {
if (file.isFile()) {
return file.canRead();
} else {
File[] files = file.listFiles();
return file.canRead() && files != null;
}
}
@Override
public TreeItem getParent() {
return parent;
}
@Override
public String toString() {
return file.getName();
}
public File getFile() {
return file;
}
}