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; } }