private static void DragDropFile(object sender, DragEventArgs e) { TreeNode targetNode = null; TreeView tree = (TreeView)sender; TreeNode directoryNode = null; Point pt = new Point(e.X, e.Y); pt = tree.PointToClient(pt); targetNode = tree.GetNodeAt(pt); TreeNode nodeDroppedOn = targetNode; while (targetNode != null && !targetNode.IsEntityNode() && !targetNode.IsScreenNode()) { if (directoryNode == null && targetNode.IsDirectoryNode()) { directoryNode = targetNode; } targetNode = targetNode.Parent; } var directoryPath = directoryNode == null ? null : directoryNode.GetRelativePath(); bool userCancelled = false; if (targetNode == null) { ElementViewWindow.SelectedNode = nodeDroppedOn; var droppedFiles = (string[])e.Data.GetData("FileDrop"); foreach (var fileName in droppedFiles) { string extension = FileManager.GetExtension(fileName); if (extension == "entz" || extension == "scrz") { ElementImporter.ImportElementFromFile(fileName, true); } else if (extension == "plug") { Plugins.PluginManager.InstallPlugin(InstallationType.ForUser, fileName); } else { AddExistingFileManager.Self.AddSingleFile(fileName, ref userCancelled); } } GluxCommands.Self.SaveGlux(); } else if (targetNode is ScreenTreeNode || targetNode is EntityTreeNode) { bool any = false; foreach (var fileName in (string[])e.Data.GetData("FileDrop")) { // First select the entity ElementViewWindow.SelectedNode = targetNode; var element = GlueState.Self.CurrentElement; if (string.IsNullOrEmpty(directoryPath)) { directoryPath = EditorLogic.CurrentTreeNode.GetRelativePath(); } FlatRedBall.Glue.Managers.TaskManager.Self.AddSync(() => { var newRfs = AddExistingFileManager.Self.AddSingleFile(fileName, ref userCancelled, element, directoryPath); GlueCommands.Self.DoOnUiThread(() => GlueCommands.Self.SelectCommands.Select(newRfs)); }, "Add file " + fileName); any = true; } if (any) { FlatRedBall.Glue.Managers.TaskManager.Self.AddSync(() => { GluxCommands.Self.SaveGlux(); }, "Save .glux"); } } }
private static void DragDropFile(object sender, DragEventArgs e) { TreeNode targetNode = null; TreeView tree = (TreeView)sender; TreeNode directoryNode = null; Point pt = new Point(e.X, e.Y); pt = tree.PointToClient(pt); targetNode = tree.GetNodeAt(pt); TreeNode nodeDroppedOn = targetNode; while (targetNode != null && !targetNode.IsEntityNode() && !targetNode.IsScreenNode()) { if (directoryNode == null && targetNode.IsDirectoryNode()) { directoryNode = targetNode; } targetNode = targetNode.Parent; } var directoryPath = directoryNode == null ? null : directoryNode.GetRelativePath(); bool userCancelled = false; if (targetNode == null) { ElementViewWindow.SelectedNode = nodeDroppedOn; foreach (var fileName in (string[])e.Data.GetData("FileDrop")) { string creationReport; string extension = FileManager.GetExtension(fileName); if (extension == "entz" || extension == "scrz") { ElementImporter.ImportElementFromFile(fileName, true); } else { string errorMessage; RightClickHelper.AddSingleFile(fileName, ref userCancelled); } } GluxCommands.Self.SaveGlux(); } else if (targetNode is ScreenTreeNode || targetNode is EntityTreeNode) { bool any = false; foreach (var fileName in (string[])e.Data.GetData("FileDrop")) { // First select the entity ElementViewWindow.SelectedNode = targetNode; var element = GlueState.Self.CurrentElement; string directoryOfTreeNode = EditorLogic.CurrentTreeNode.GetRelativePath(); FlatRedBall.Glue.Managers.TaskManager.Self.AddSync(() => { RightClickHelper.AddSingleFile(fileName, ref userCancelled, element, directoryOfTreeNode); }, "Add file " + fileName); any = true; } if (any) { FlatRedBall.Glue.Managers.TaskManager.Self.AddSync(() => { GluxCommands.Self.SaveGlux(); }, "Save .glux"); } } }