2012-06-20 52 views
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方法完成的。似乎要進入的唯一關鍵是根節點/文件。

回答

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

如果你按照教程,因爲它去,我相信我可以提供幫助。