private void addItemsToTree(IExplorerDatasource ds, TreeNode parentNode)
    {
        try
        {
            foreach (IExplorerDataItem item in ds.GetDataItems())
            {
                string key = item.Name;

                if (parentNode.Nodes.ContainsKey(key))
                    continue;

                if (item is SWAT_Editor.Controls.Explorer.Datasources.Directory) //it's a "folder"
                {
                    TreeNode folderNode = parentNode.Nodes.Add(key);
                    folderNode.Name = item.Name.ToString();
                    folderNode.ImageIndex = 1;
                    folderNode.SelectedImageIndex = 1;
                }
                else
                {
                    TreeNode fileNode = parentNode.Nodes.Add(key);
                    fileNode.Name = key;
                    fileNode.SelectedImageIndex = 0;
                    fileNode.ImageIndex = 0;
                }
            }
        }
        catch (Exception) //If a file path is not found, or any misc exception
        {
            if (parentNode != null && parentNode.Parent != null && parentNode.Parent.Nodes != null)
                parentNode.Parent.Nodes.Remove(parentNode);
        }
    }
 private void expandTreeItem(IExplorerDatasource ds, TreeNode parentNode)
 {
     foreach (IExplorerDataItem item in ds.GetDataItems())
     {
         if (item is SWAT_Editor.Controls.Explorer.Datasources.Directory) //it's a "folder"
         {
             addItemsToTree(item as IExplorerDatasource, parentNode.Nodes[item.Name]);                
         }
     }
 }