private static InstanceSave HandleDroppedElementInElement(ElementSave draggedAsElementSave, ElementSave target, out bool handled) { InstanceSave newInstance = null; handled = false; if (target == null) { MessageBox.Show("No Screen or Component selected"); } else if (target is StandardElementSave) { MessageBox.Show("Standard types can't contain objects"); } else if (draggedAsElementSave is ScreenSave) { MessageBox.Show("Screens can't be dropped into other Screens or Components"); } else { bool canAdd = true; if (draggedAsElementSave is ComponentSave && target is ComponentSave) { ComponentSave targetAsComponentSave = target as ComponentSave; if (!targetAsComponentSave.CanContainInstanceOfType(draggedAsElementSave.Name)) { MessageBox.Show("Can't add instance of " + draggedAsElementSave.Name + " in " + targetAsComponentSave.Name); canAdd = false; } } if (target.IsSourceFileMissing) { MessageBox.Show("The source file for " + target.Name + " is missing, so it cannot be edited"); canAdd = false; } if (canAdd) { #if DEBUG if (draggedAsElementSave == null) { throw new Exception("DraggedAsElementSave is null and it shouldn't be. For vic - try to put this exception earlier to see what's up."); } #endif string name = GetUniqueNameForNewInstance(draggedAsElementSave, target); // First we want to re-select the target so that it is highlighted in the tree view and not // the object we dragged off. This is so that plugins can properly use the SelectedElement. ElementTreeViewManager.Self.Select(target); newInstance = ElementTreeViewManager.Self.AddInstance(name, draggedAsElementSave.Name, target); handled = true; } } return(newInstance); }
private static string GetErrorMessage(ElementSave draggedAsElementSave, ElementSave target, string errorMessage) { if (target == null) { errorMessage = "No Screen or Component selected"; } if (errorMessage == null && target is StandardElementSave) { // do nothing, it's annoying: errorMessage = "Standard types can't contain objects"; } if (errorMessage == null && draggedAsElementSave is ScreenSave) { errorMessage = "Screens can't be dropped into other Screens or Components"; } if (errorMessage == null) { if (draggedAsElementSave is ComponentSave && target is ComponentSave) { ComponentSave targetAsComponentSave = target as ComponentSave; if (!targetAsComponentSave.CanContainInstanceOfType(draggedAsElementSave.Name)) { errorMessage = "Can't add instance of " + draggedAsElementSave.Name + " in " + targetAsComponentSave.Name; } } } if (errorMessage == null && target.IsSourceFileMissing) { errorMessage = "The source file for " + target.Name + " is missing, so it cannot be edited"; } return(errorMessage); }