忽略项目结构中的某些文件(自定义项目类型)

时间:2012-06-20 15:28:57

标签: netbeans netbeans-platform

我目前正在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方法完成此操作。似乎唯一出现的关键是根节点/文件。

1 个答案:

答案 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()
        }));

如果您按照教程进行操作,我相信我可以提供帮助。