/// <summary> /// Carga los nodos del árbol /// </summary> protected override TreeViewItemsViewModelCollection LoadNodes() { TreeViewItemsViewModelCollection nodes = new TreeViewItemsViewModelCollection(); // Carga los nodos LoadNodes(nodes, null, File.Files); // Devuelve la colección de nodos return(nodes); }
/// <summary> /// Carga los nodos hijos de un árbol /// </summary> private void LoadNodes(TreeViewItemsViewModelCollection nodes, TreeViewItemViewModel nodeParent, FilesModelCollection files) { foreach (FileModel file in files) { TreeViewItemViewModel node; // Si es un archivo del tipo seleccionado, se añade al árbol, si no, se considera el nodo igual que el padre // y se siguen añadiendo hijos if (DocumentType == FileModel.DocumentType.Unknown || DocumentType == FileModel.DocumentType.File || DocumentType == file.FileType || IsReference(file, DocumentType)) { // Crea un nuevo nodo node = new TreeViewItemViewModel(file.FullFileName, file.Title, nodeParent, false, file); node.IsExpanded = true; // Selecciona el nodo if (Files != null) { node.IsChecked = Files.ExistsByIDFileName(file.IDFileName); } // Lo añade al árbol if (nodeParent == null) { nodes.Add(node); } else { nodeParent.Children.Add(node); } } else { node = nodeParent; } // Añade el manejador de eventos if (node != null) { node.PropertyChanged += (sender, evntArgs) => { if (evntArgs.PropertyName.EqualsIgnoreCase(nameof(TreeViewItemViewModel.IsChecked)) || evntArgs.PropertyName.EqualsIgnoreCase(nameof(TreeViewItemViewModel.IsSelected))) { IsTreeeUpdated = true; } } } ; // Añade los nodos hijo if (file.IsFolder) { LoadNodes(nodes, node, new Application.Bussiness.Solutions.FileBussiness().Load(file)); } } }
/// <summary> /// Carga los nodos del árbol /// </summary> protected override TreeViewItemsViewModelCollection LoadNodes() { FilesModelCollection files = new Application.Bussiness.Solutions.FileBussiness().Load(File.Project); TreeViewItemsViewModelCollection nodes = new TreeViewItemsViewModelCollection(); // Carga los nodos LoadNodes(nodes, null, files); // Indica que no ha habido modificaciones if (ViewModelParent != null) { ViewModelParent.IsUpdated = false; } // Devuelve la colección de nodos return(nodes); }
/// <summary> /// Carga los nodos del árbol /// </summary> private TreeViewItemsViewModelCollection LoadTreeNodes(BaseNodeViewModel parent, FileModel file, OwnerChildModelCollection childs) { TreeViewItemsViewModelCollection nodes = new TreeViewItemsViewModelCollection(); // Crea los nodos if (childs != null) { foreach (OwnerChildModel ownerChild in childs) { nodes.Add(new OwnerNodeViewModel(file, ownerChild, parent, ownerChild.HasChilds)); } } // Devuelve la colección de nodos return(nodes); }
/// <summary> /// Obtiene los nodos correspondientes a las definiciones de objetos propietario /// </summary> private TreeViewItemsViewModelCollection LoadOwnerNodes(BaseNodeViewModel parent, FileModel file, OwnerChildModel owner, OwnerObjectDefinitionModelCollection ownerDefinitions) { TreeViewItemsViewModelCollection nodes = new TreeViewItemsViewModelCollection(); // Obtiene los nodos if (owner != null && owner.ObjectChilds != null && owner.ObjectChilds.Count > 0) { nodes = LoadTreeNodes(parent, file, owner.ObjectChilds); } else { // Normaliza los elementos hijo if (ownerDefinitions == null || ownerDefinitions.Count == 0) { if (file is ProjectModel) { ownerDefinitions = (file as ProjectModel)?.Definition.OwnerChilds; } else { ownerDefinitions = file.FileDefinition.OwnerChilds; } } // Carga los nodos foreach (OwnerObjectDefinitionModel ownerDefinition in ownerDefinitions) { if (ownerDefinition.IsRootNode) { nodes.Add(new OwnerNodeViewModel(file, new OwnerChildModel(file.FullFileName + "_" + ownerDefinition.GlobalId, file, ownerDefinition.Name, ownerDefinition, ownerDefinition.OwnerChilds.Count > 0), parent)); } else { nodes = LoadTreeNodes(parent, file, SourceEditorViewModel.Instance.MessagesController.LoadOwnerChilds(file, owner)); } } } // Devuelve la colección de nodos return(nodes); }
/// <summary> /// Carga los nodos hijos de un árbol /// </summary> private void LoadNodes(TreeViewItemsViewModelCollection nodes, TreeViewItemViewModel nodeParent, FileModelCollection files) { foreach (FileModel file in files) { TreeViewItemViewModel node; // Crea un nuevo nodo node = new TreeViewItemViewModel(file.FullFileName, file.Name, nodeParent, false, file); node.IsExpanded = true; // Selecciona el nodo if (files != null) { node.IsChecked = FilesSelected.ExistsByFileName(file.FullFileName); } // Lo añade al árbol if (nodeParent == null) { nodes.Add(node); } else { nodeParent.Children.Add(node); } // Añade el manejador de eventos if (node != null) { node.PropertyChanged += (sender, evntArgs) => { if (evntArgs.PropertyName.EqualsIgnoreCase("IsChecked") || evntArgs.PropertyName.EqualsIgnoreCase("IsSelected")) { IsTreeeUpdated = true; } } } ; // Añade los nodos hijo if (file.IsFolder) { LoadNodes(nodes, node, file.Files); } } }
/// <summary> /// Obtiene los archivos seleccionados /// </summary> private FileModelCollection GetFilesIsChecked(TreeViewItemsViewModelCollection nodes) { FileModelCollection files = new FileModelCollection(); // Busca los nodos seleccionados if (nodes != null) { foreach (TreeViewItemViewModel node in nodes) { // Añade el archivo si está seleccionado if (node.IsChecked && (node.Tag is FileModel)) { files.Add(node.Tag as FileModel); } // Añade los archivos hijo files.AddRange(GetFilesIsChecked(node.Children)); } } // Devuelve los archivos return(files); }