internal void AddProject(AbstractDProject sub)
{
var folder = sub.BaseDirectory == BaseDirectory || sub.BaseDirectory.IsChildPathOf (BaseDirectory) ? RootFolder : ExternalDepFolder;
if (folder == ExternalDepFolder && sub is DubProject) {
var packageName = (sub as DubProject).packageName.Split(':');
for (int i = 0; i < packageName.Length - 1; i++) {
bool foundSubFolder = false;
foreach (var subFolder in folder.GetAllItems<SolutionFolder>()) {
if (String.Equals (subFolder.Name, packageName [i], StringComparison.CurrentCultureIgnoreCase)) {
folder = subFolder;
foundSubFolder = true;
break;
}
}
if (!foundSubFolder) {
var newSubFolder = new SolutionFolder{ Name = packageName [i] };
folder.AddItem (newSubFolder);
folder = newSubFolder;
}
}
}
if (!folder.Items.Contains (sub))
folder.AddItem (sub, false);
}