void Main.IParentOfINameOwnerChildNodes.EhChild_ParentChanged(Main.INameOwner childNode, Main.IDocumentNode oldParent) { if (object.ReferenceEquals(this, oldParent) && _itemsByName.ContainsKey(childNode.Name)) { throw new InvalidProgramException(string.Format("Unauthorized change of the {0}'s parent", typeof(TItem).Name)); } }
void Main.IParentOfINameOwnerChildNodes.EhChild_HasBeenRenamed(Main.INameOwner item, string oldName) { if (_itemsByName.ContainsKey(item.Name)) { if (object.ReferenceEquals(_itemsByName[item.Name], item)) { return; // Item alredy renamed } else { throw new ApplicationException(string.Format("{0} with name " + item.Name + " already exists!", typeof(TItem).Name)); } } if (_itemsByName.ContainsKey(oldName)) { if (!object.ReferenceEquals(_itemsByName[oldName], item)) { throw new ApplicationException(string.Format("Names between parent collection and {0} not in sync", typeof(TItem).Name)); } _itemsByName.Remove(oldName); _itemsByName.Add(item.Name, (TItem)item); EhSelfChanged(Main.NamedObjectCollectionChangedEventArgs.FromItemRenamed(item, oldName)); } else { throw new ApplicationException(string.Format("Error renaming {0} " + oldName + " : this {0} name was not found in the collection!", typeof(TItem).Name)); } }
bool Main.IParentOfINameOwnerChildNodes.EhChild_CanBeRenamed(Main.INameOwner childNode, string newName) { if (_itemsByName.ContainsKey(newName) && !object.ReferenceEquals(_itemsByName[newName], childNode)) { return(false); } else { return(true); } }
/// <summary> /// Gets the project folder property documents down the project folder hierarchie. /// </summary> /// <param name="namedOwner">The named owner. Can be any project item.</param> /// <returns>All project folder property documents, starting from the deepest folder level, and ending with the property document in the root folder (if there is any).</returns> public static IEnumerable <ProjectFolderPropertyDocument> GetProjectFolderPropertyDocuments(this Main.INameOwner namedOwner) { var proj = Current.Project; ProjectFolderPropertyDocument bag; if (null != namedOwner) { var folder = Main.ProjectFolder.GetFolderPart(namedOwner.Name); while (!string.IsNullOrEmpty(folder)) { if (proj.ProjectFolderProperties.TryGetValue(folder, out bag)) { yield return(bag); } folder = Main.ProjectFolder.GetFoldersParentFolder(folder); } if (proj.ProjectFolderProperties.TryGetValue(Main.ProjectFolder.RootFolderName, out bag)) { yield return(bag); } } }