我目前正在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方法完成此操作。似乎唯一出现的关键是根节点/文件。
答案 0 :(得分:1)
我一直在遵循相同的教程,我已经能够实现一个适合我的特殊情况的结果;在我的项目类型中,我只想看到'xlsx'或'xls'或'txt'文件类型。
但我可以看到你采取了与教程指示不同的转向。这是TextNode的构造函数
super( node, new NodeJSProjectNode( node ),
new ProxyLookup( new Lookup[]{
Lookups.singleton( project ),
node.getLookup()
} ) );
这是教程的模板:
super(node,
NodeFactorySupport.createCompositeChildren(
project,
"Projects/org-customer-project/Nodes"),
// new FilterNode.Children(node),
new ProxyLookup(
new Lookup[]{
Lookups.singleton(project),
node.getLookup()
}));
如果您按照教程进行操作,我相信我可以提供帮助。