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 に答える