private ConstantsAndEnums.MediaType DragDropGetMediaType(TreeNode fileNode) { // Initialise the media type ConstantsAndEnums.MediaType MediaType = ConstantsAndEnums.MediaType.UnknownMedia; // Determine the mediatype based on the Node tag if (fileNode.Tag.GetType().ToString().Equals("OricExplorer.TapeInfo")) { MediaType = ConstantsAndEnums.MediaType.OricTape; } else if (fileNode.Tag.GetType().ToString().Equals("OricExplorer.Catalog")) { OricFileInfo programInfo = new OricFileInfo(); programInfo = (OricFileInfo)fileNode.Tag; if (programInfo.MediaType == ConstantsAndEnums.MediaType.TapeFile) { MediaType = ConstantsAndEnums.MediaType.TapeFile; } } return(MediaType); }
private void treeFileList_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false)) { Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt); TreeNode SourceNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); // Obtain Source media type ConstantsAndEnums.MediaType SourceMediaType = DragDropGetMediaType(SourceNode); // Obtain Destination media type ConstantsAndEnums.MediaType DestinationMediaType = DragDropGetMediaType(DestinationNode); // Perform drag and drop if valid media switch (DestinationMediaType) { case ConstantsAndEnums.MediaType.OricTape: case ConstantsAndEnums.MediaType.TapeFile: if (DestinationMediaType == ConstantsAndEnums.MediaType.TapeFile) { DestinationNode = DestinationNode.Parent; } if (SourceMediaType == ConstantsAndEnums.MediaType.TapeFile || SourceMediaType == ConstantsAndEnums.MediaType.OricTape) { CopyTapeFilesToTape(SourceNode, DestinationNode); } break; default: break; } } }