/// <summary> /// Method to check whether the PasteAsNew command can be executed. /// </summary> /// <returns><c>true</c> if the command can be executed; otherwise <c>false</c></returns> private bool CanPasteAsNew() { System.Windows.Forms.IDataObject dataObject = System.Windows.Forms.Clipboard.GetDataObject(); if (dataObject != null && SelectedItems.Count == 1) { if (dataObject.GetDataPresent(ClipboardFormatName.Name)) { var data = dataObject.GetData(ClipboardFormatName.Name) as List <ElementModel>; if (data != null) { if (data.All(x => x.IsLightNode && SelectedItem.ElementModel.CanAddLightNodes)) { //We can paste our contents return(true); } if (data.All(x => x.IsGroupNode && SelectedItem.ElementModel.CanAddGroupNodes)) { //We can paste our contents return(true); } } } } return(false); }
/// <summary> /// Method to invoke when the Paste command is executed. /// </summary> private void Paste() { System.Windows.Forms.IDataObject dataObject = System.Windows.Forms.Clipboard.GetDataObject(); if (dataObject != null && SelectedItems.Count == 1) { if (dataObject.GetDataPresent(ClipboardFormatName.Name)) { var parent = SelectedItem; DeselectAll(); var data = dataObject.GetData(ClipboardFormatName.Name) as List <ElementModel>; if (data != null) { foreach (var elementModel in data) { if (parent.ElementModel.Equals(elementModel) || parent.Children.Contains(elementModel)) { continue; } //if(elementModel.Parents.Contains(parent.ElementModel.Id)) continue; //Don't add another copy PropModelServices.Instance().FindOrCreateElementModelTree(elementModel, parent.ElementModel); } } OnModelsChanged(); SelectModels(new[] { parent }); } } }
/// <summary> /// Method to invoke when the PasteAsNew command is executed. /// </summary> private void PasteAsNew() { System.Windows.Forms.IDataObject dataObject = System.Windows.Forms.Clipboard.GetDataObject(); if (dataObject != null && SelectedItems.Count == 1) { if (dataObject.GetDataPresent(ClipboardFormatName.Name)) { var parent = SelectedItem; MessageBoxService mbs = new MessageBoxService(); var result = mbs.GetUserInput("Please enter the new name.", "Paste As New", PropModelServices.Instance().Uniquify(parent.Name)); if (result.Result == MessageResult.OK) { DeselectAll(); var newElementModels = new List <ElementModelViewModel>(); var data = dataObject.GetData(ClipboardFormatName.Name) as List <ElementModel>; if (data != null) { foreach (var elementModel in data) { var em = PropModelServices.Instance().CreateElementModelTree(elementModel, parent.ElementModel, result.Response); var evm = ElementModelLookUpService.Instance.GetModels(em.Id); if (evm != null) { newElementModels.AddRange(evm); } } } OnModelsChanged(); SelectModels(newElementModels); } } } }