/** * SlingBeans - NetBeans Sling plugin https://github.com/jkan997/SlingBeans * Licensed under Apache 2.0 license http://www.apache.org/licenses/LICENSE-2.0 */ package org.jkan997.slingbeans.nbtree; import org.jkan997.slingbeans.helper.LogHelper; import org.jkan997.slingbeans.slingfs.FileObject; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.util.lookup.Lookups; /** * * @author jkan997 */ public class SlingNodeChildren extends Children.Keys { FileObject parentObject = null; public SlingNodeChildren(FileObject parentObject) { this.parentObject = parentObject; } public SlingNodeChildren() { } @Override protected void addNotify() { FileObject[] children = new FileObject[]{}; if (parentObject != null) { children = parentObject.getChildren(); } setKeys(children); } public void reload() { parentObject.setChildrenLoaded(false); FileObject[] children = new FileObject[]{}; if (parentObject != null) { setKeys(new Object[]{}); children = parentObject.getChildren(); } setKeys(children); } @Override protected Node[] createNodes(Object o) { return loadNodes(o, false); } protected Node[] loadNodes(Object o, boolean refresh) { FileObject fo = (FileObject) o; if (refresh) { fo.refresh(); } LogHelper.logInfo(this, fo.toString()); Children children = null; if (fo.isLeafNode()) { children = Children.LEAF; } else { children = new SlingNodeChildren(fo); } SlingNode crxNode = new SlingNode(children, Lookups.singleton(fo)); crxNode.setFileObject(fo); // result.set String displayName = fo.getNameExt(); if (displayName.length() == 0) { displayName = "/"; } crxNode.setDisplayName(displayName); return new Node[]{crxNode}; } }