/// <summary> /// Añade un nodo hijo /// </summary> private TreeExplorerNodeViewModel AddNode(string text, object tag, bool isBold, bool lazyLoad, MvvmColor foreground = null) { TreeExplorerNodeViewModel node = new TreeExplorerNodeViewModel(Tree, this, text, tag, lazyLoad, isBold, foreground); // Añade el nodo Children.Add(node); // Devuelve el nodo enviado return(node); }
/// <summary> /// Copia un elemento en el buffer /// </summary> private void Copy(TreeExplorerNodeViewModel selectedNode, bool cut) { Controllers.GlobalEnums.NodeTypes nodeType = selectedNode?.NodeType ?? Controllers.GlobalEnums.NodeTypes.TrackManager; if (nodeType == Controllers.GlobalEnums.NodeTypes.Track || nodeType == Controllers.GlobalEnums.NodeTypes.Category || nodeType == Controllers.GlobalEnums.NodeTypes.Entry) { BufferCopy = selectedNode.Tag as BaseModel; MustCut = cut; } }
/// <summary> /// Pega un elemento del buffer /// </summary> private void Paste(TreeExplorerNodeViewModel nodeToPaste) { // Pega los datos sobre el nodo if (nodeToPaste != null && BufferCopy != null) { bool pasted = false; // Pega el nodo if (nodeToPaste.NodeType == Controllers.GlobalEnums.NodeTypes.TrackManager && BufferCopy is TrackModel track) { // Pega los datos PasteTrackToTrackManager(track, (TrackManagerModel)nodeToPaste.Tag); // Indica que se ha pegado pasted = true; } else if (BufferCopy is EntryModel entry) { if (nodeToPaste.NodeType == Controllers.GlobalEnums.NodeTypes.Category) { // Pega los datos PasteEntryToCategory(entry, (CategoryModel)nodeToPaste.Tag); // Indica que se ha pegado pasted = true; } } else if (nodeToPaste.NodeType == Controllers.GlobalEnums.NodeTypes.Track && BufferCopy is CategoryModel category) { // Pega los datos PasteCategoryToTrack(category, (TrackModel)nodeToPaste.Tag); // Indica que se ha pegado pasted = true; } // Graba y actualiza if (pasted) { UpdateTracks(); } } // Vacía el buffer de copia BufferCopy = null; }
/// <summary> /// Muestra la ventana de detalles /// </summary> private void ShowDetails(TreeExplorerNodeViewModel selectedNode) { switch (selectedNode?.Tag) { case TrackManagerModel node: OpenFormTrackManager(node, false); break; case TrackModel node: OpenFormTrack(node, false); break; case CategoryModel node: OpenFormCategory(node, false); break; case EntryModel node: OpenFormEntry(node, false); break; } }