×

Welcome to TagMyCode

Please login or create account to add a snippet.
0
0
 
0
Language: Java
Posted by: Gian James
Added: Sep 21, 2015 7:29 PM
Views: 3
Tags: no tags
  1.  
  2. //package org.convoluted.project.droid.nodes;
  3.  
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import javax.swing.event.ChangeListener;
  7. import org.convoluted.project.droid.DroidProject;
  8. import org.netbeans.api.project.Project;
  9. import org.netbeans.spi.project.ui.support.NodeFactory;
  10. import org.netbeans.spi.project.ui.support.NodeList;
  11. import org.openide.filesystems.FileObject;
  12. import org.openide.loaders.DataObject;
  13. import org.openide.loaders.DataObjectNotFoundException;
  14. import org.openide.nodes.FilterNode;
  15. import org.openide.nodes.Node;
  16. import org.openide.util.Exceptions;
  17.  
  18. @NodeFactory.Registration(projectType = "org-customer-project", position = 10)
  19. public class MyNodeFactory implements NodeFactory {
  20.    
  21.     @Override
  22.     public NodeList<?> createNodes(Project project) {
  23.         DroidProject p = project.getLookup().lookup(MyProject.class);
  24.         assert p != null; return new TextsNodeList(p);
  25.     }
  26.    
  27.     private class MyNodeList implements NodeList<Node> {
  28.         MyProject project;
  29.         public MyNodeList(MyProject project) {
  30.             this.project = project;
  31.         }
  32.        
  33.         @Override public List<Node> keys() {
  34.             FileObject textsFolder = project.getProjectDirectory().getFileObject("texts");
  35.             List<Node> result = new ArrayList<Node>();
  36.             if (textsFolder != null) {
  37.                 for (FileObject textsFolderFile : textsFolder.getChildren()) {
  38.                     try {
  39.                         result.add(DataObject.find(textsFolderFile).getNodeDelegate());
  40.                     } catch (DataObjectNotFoundException ex) {
  41.                         Exceptions.printStackTrace(ex);
  42.                     }
  43.                 }
  44.             }
  45.             return result;
  46.         }
  47.        
  48.         @Override
  49.         public Node node(Node node) {
  50.             return new FilterNode(node);
  51.         }
  52.        
  53.         @Override
  54.         public void addNotify() { }
  55.        
  56.         @Override public void removeNotify() { }
  57.         @Override public void addChangeListener(ChangeListener cl) { }
  58.  
  59.         @Override
  60.         public void removeChangeListener(ChangeListener cl) { }
  61.     }
  62. }
  63.