private int AddManyItemsHelper(uint itemIdLoc, VSADDITEMOPERATION op, string itemName, uint filesToOpen, string[] files, IntPtr dlgOwner, VSADDRESULT[] result)
{
List<string> actualFiles = new List<string>(files.Length);
List<string> dirs = new List<string>();
foreach (string file in files)
{
if (File.Exists(file))
actualFiles.Add(file);
else
{
if (Directory.Exists(file))
{
dirs.Add(file);
}
}
}
if (actualFiles.Count > 0)
ErrorHandler.ThrowOnFailure(base.AddItem(itemIdLoc, op, itemName, (uint)actualFiles.Count, actualFiles.ToArray(), dlgOwner, result));
foreach (string directory in dirs)
{
HierarchyNode folderNode = CreateFolderNodeHelper(directory, itemIdLoc);
List<string> directoryEntries = new List<string>();
directoryEntries.AddRange(Directory.GetFiles(directory));
directoryEntries.AddRange(Directory.GetDirectories(directory));
AddManyItemsHelper(folderNode.ID, op, null, (uint)directoryEntries.Count, directoryEntries.ToArray(), dlgOwner, result);
}
return VSConstants.S_OK;
}