2

我目前正在 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 方法完成的。似乎进入的唯一键是根节点/文件。

4

1 回答 1

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

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

于 2012-11-23T11:45:15.233 回答