/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.demo.folderviewer; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; import org.openide.filesystems.FileObject; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.util.lookup.Lookups; /** * * @author edwin */ public class FolderChildFactory extends ChildFactory<FileObject> { private List<FileObject> src; public FolderChildFactory(List<FileObject> data) { src = data; } public FolderChildFactory(Enumeration<? extends FileObject> e){ src = Collections.list((Enumeration<FileObject>)e); } FolderChildFactory(FileObject file) { src = new ArrayList<FileObject>(); src.add(file); } @Override protected boolean createKeys(List<FileObject> toPopulate) { toPopulate.addAll(src); return true; } @Override protected Node createNodeForKey(FileObject key) { Enumeration<? extends FileObject> subfolders=key.getFolders(false); Node node; if (subfolders.hasMoreElements()) { node = new FolderNode(Children.create(new FolderChildFactory(subfolders), true), Lookups.singleton(key)); } else { node = new FolderNode(Children.LEAF, Lookups.singleton(key)); } node.setDisplayName(key.getName()); node.setShortDescription(key.getPath()); return node; } }