1 4 package org.terracotta.dso.editors.tree; 5 6 import org.eclipse.core.resources.IFolder; 7 import org.eclipse.core.resources.IProject; 8 import org.eclipse.core.resources.IResource; 9 import org.eclipse.core.runtime.CoreException; 10 11 import com.tc.admin.common.XRootNode; 12 13 import java.util.ArrayList ; 14 import java.util.Vector ; 15 16 import javax.swing.tree.TreeNode ; 17 18 25 26 public class ProjectFolderRoot extends XRootNode implements IResourceNode { 27 private IProject m_project; 28 private IFolder[] m_folders; 29 30 public ProjectFolderRoot(IProject project) { 31 super(project); 32 m_project = project; 33 init(); 34 } 35 36 private void init() { 37 int count = ensureFolders().length; 38 39 if(children == null) { 40 children = new Vector (); 41 } 42 children.setSize(count); 43 } 44 45 public TreeNode getChildAt(int index) { 46 if(children != null && children.elementAt(index) == null) { 47 addChildren(); 48 } 49 50 return super.getChildAt(index); 51 } 52 53 private void addChildren() { 54 IFolder[] folders = ensureFolders(); 55 FolderNode child; 56 57 for(int i = 0; i < folders.length; i++) { 58 child = new FolderNode(folders[i]); 59 children.setElementAt(child, i); 60 child.setParent(this); 61 } 62 } 63 64 class FolderNode extends ProjectFolderNode { 65 FolderNode(IFolder folder) { 66 super(folder); 67 } 68 69 FolderNode(IFolder folder, String extension) { 70 super(folder, extension); 71 } 72 73 protected ProjectFolderNode createFolderNode(IFolder folder, String ext) { 74 return new FolderNode(folder, ext); 75 } 76 77 public boolean addResource(IResource resource) { 78 return resource instanceof IFolder; 79 } 80 } 81 82 public String toString() { 83 return m_project.getName(); 84 } 85 86 public IResource getResource() { 87 return getProject(); 88 } 89 90 public IProject getProject() { 91 return m_project; 92 } 93 94 private IFolder[] ensureFolders() { 95 if(m_folders == null) { 96 m_folders = internalGetFolders(); 97 } 98 return m_folders; 99 } 100 101 private IFolder[] internalGetFolders() { 102 try { 103 ArrayList <IFolder> list = new ArrayList <IFolder>(); 104 IResource[] members = m_project.members(); 105 106 for(int i = 0; i < members.length; i++) { 107 if(members[i].getType() == IResource.FOLDER) { 108 list.add((IFolder)members[i]); 109 } 110 } 111 112 return list.toArray(new IFolder[0]); 113 } catch(CoreException ce) { 114 return new IFolder[0]; 115 } 116 } 117 } 118 | Popular Tags |