Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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 });
                }
            }
        }
Beispiel #3
0
        /// <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);
                    }
                }
            }
        }