我目前正在 Netbeans 中创建一个项目类型。我遵循了基本教程,但添加了一些东西。
这是逻辑视图
public org.openide.nodes.Node createLogicalView() {
FileObject root = project.getProjectDirectory();
DataFolder findFolder = DataFolder.findFolder( root );
Node node = findFolder.getNodeDelegate();
return new TextNode( node, project );
}
基本上根是项目文件夹。
这是我的过滤器节点。
private static final class TextNode extends FilterNode {
final NodeJSProject project;
public TextNode( Node node, NodeJSProject project ) {
super( node, new NodeJSProjectNode( node ),
new ProxyLookup( new Lookup[]{
Lookups.singleton( project ),
node.getLookup()
} ) );
this.project = project;
}
还有我对过滤器节点的自定义覆盖。
public static class NodeJSProjectNode extends FilterNode.Children {
public NodeJSProjectNode( Node node ) {
super( node );
}
@Override
protected Node[] createNodes( Node key ) {
//key.getName() only returning root objects. No children
if ( key.getName().startsWith( "." ) ) {
return new Node[]{};
}
return new Node[]{ copyNode( key ) };
}
}
基本上我试图忽略隐藏文件。我以为这是由 IDE 完成的,但我猜不是。我目前拥有的代码适用于根目录。它不会添加 .DS_Store、.git 等。我试图忽略子目录中的所有文件夹/文件。我不确定这是如何使用 createNodes 方法完成的。似乎进入的唯一键是根节点/文件。