Nemerle.VisualStudio.Project.NemerleProjectNode.AddManyItemsHelper C# (CSharp) Method

AddManyItemsHelper() private method

private AddManyItemsHelper ( uint itemIdLoc, VSADDITEMOPERATION op, string itemName, uint filesToOpen, string files, IntPtr dlgOwner, VSADDRESULT result ) : int
itemIdLoc uint
op VSADDITEMOPERATION
itemName string
filesToOpen uint
files string
dlgOwner System.IntPtr
result VSADDRESULT
return int
        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;
        }