/// <summary> /// Creates a new viewmodel for a given combination of parent and child <seealso cref="ISolutionItem"/>s. /// </summary> /// <param name="parent"></param> /// <param name="child"></param> /// <returns></returns> private DocumentViewModelBase CreateDocumentPageViewModel(ISolutionItem parent, ISolutionItem child, IProcessItems processItems) { if (child is ProjectViewModel) { return(new EditProjectDocumentViewModel(processItems, RequestedAction)); } if (child is SolutionRootViewModel) { return(new EditSolutionDocumentViewModel(processItems)); } // Is a target file under a project currently selected? var project = parent as ProjectViewModel; var fileref = child as FileReferenceViewModel; if (project != null && fileref != null) { var vm = new EditTranslationsDocumentViewModel(processItems); var optionsEngine = GetService <ISettingsManager>().Options; var group = optionsEngine.GetOptionGroup("Options"); vm.InitializeSettings(group); return(vm); } throw new System.NotImplementedException(string.Format("No default view available for {0} with child: {1}", (parent == null ? "(null)" : parent.GetType().ToString()), (child == null ? "(null)" : child.GetType().ToString()))); }
private void LoadEditPage(EditTranslationsDocumentViewModel pageViewmodel, string sourceFilePath, string targetPath) { pageViewmodel.LoadEditPage(sourceFilePath, targetPath); // Attach this dirty flag only where navigation away from this item // would cause data lose via document edit -> Solution dirty flag is handled somewhere else IsCurrentDocumentDirty = (CurrentEditPage != null ? CurrentEditPage.IsDirty : false); pageViewmodel.DirtyFlagChangedEvent += CurrentEditPage_DirtyFlagChangedEvent; }