Implement copying of elements.
This commit is contained in:
		@@ -81,5 +81,18 @@ namespace zaaReloaded2.ViewModels
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        public override object Clone()
 | 
			
		||||
        {
 | 
			
		||||
            ControlElementViewModel clone = new ControlElementViewModel();
 | 
			
		||||
            clone.Element = Element;
 | 
			
		||||
            clone.Elements = new ObservableCollection<ElementViewModel>(
 | 
			
		||||
                Elements.Select(evm => evm.Clone() as ElementViewModel));
 | 
			
		||||
            foreach (FormatElementViewModel evm in clone.Elements)
 | 
			
		||||
            {
 | 
			
		||||
                evm.Parent = clone;
 | 
			
		||||
            }
 | 
			
		||||
            return clone;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ using System.Collections.ObjectModel;
 | 
			
		||||
 | 
			
		||||
namespace zaaReloaded2.ViewModels
 | 
			
		||||
{
 | 
			
		||||
    public abstract class ElementViewModel : ViewModelBase
 | 
			
		||||
    public abstract class ElementViewModel : ViewModelBase, ICloneable
 | 
			
		||||
    {
 | 
			
		||||
        #region Properties
 | 
			
		||||
 | 
			
		||||
@@ -69,5 +69,11 @@ namespace zaaReloaded2.ViewModels
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Implementation of ICloneable
 | 
			
		||||
        
 | 
			
		||||
        public abstract object Clone();
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -58,5 +58,13 @@ namespace zaaReloaded2.ViewModels
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        public override object Clone()
 | 
			
		||||
        {
 | 
			
		||||
            FormatElementViewModel clone = new FormatElementViewModel();
 | 
			
		||||
            clone.Parent = Parent;
 | 
			
		||||
            clone.Element = Element;
 | 
			
		||||
            return clone;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -314,8 +314,7 @@ namespace zaaReloaded2.ViewModels
 | 
			
		||||
        {
 | 
			
		||||
            if (CanDeleteElement())
 | 
			
		||||
            {
 | 
			
		||||
                if (LastSelectedElement is ControlElementViewModel ||
 | 
			
		||||
                    ((FormatElementViewModel)LastSelectedElement).Parent == null)
 | 
			
		||||
                if (IsTopLevelElement())
 | 
			
		||||
                {
 | 
			
		||||
                    // First level of the hierarchy
 | 
			
		||||
                    Elements.Remove(LastSelectedElement);
 | 
			
		||||
@@ -335,7 +334,21 @@ namespace zaaReloaded2.ViewModels
 | 
			
		||||
 | 
			
		||||
        bool CanDeleteElement() { return LastSelectedElement != null && LastSelectedElement.IsSelected; }
 | 
			
		||||
 | 
			
		||||
        void DoCopyElement() { }
 | 
			
		||||
        void DoCopyElement()
 | 
			
		||||
        {
 | 
			
		||||
            if (CanCopyElement())
 | 
			
		||||
            {
 | 
			
		||||
                if (IsTopLevelElement())
 | 
			
		||||
                {
 | 
			
		||||
                    AddElementViewModel(LastSelectedElement.Clone() as ElementViewModel);
 | 
			
		||||
                }
 | 
			
		||||
                else
 | 
			
		||||
                {
 | 
			
		||||
                    FormatElementViewModel formatVM = LastSelectedElement as FormatElementViewModel;
 | 
			
		||||
                    formatVM.Parent.AddChildElement(formatVM.Clone() as FormatElementViewModel);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        bool CanCopyElement() { return LastSelectedElement != null && LastSelectedElement.IsSelected; }
 | 
			
		||||
 | 
			
		||||
@@ -355,6 +368,16 @@ namespace zaaReloaded2.ViewModels
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Returns true if the selected ElementViewModel is at the top
 | 
			
		||||
        /// level of the hierarchy.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        bool IsTopLevelElement()
 | 
			
		||||
        {
 | 
			
		||||
            return (LastSelectedElement is ControlElementViewModel ||
 | 
			
		||||
                ((FormatElementViewModel)LastSelectedElement).Parent == null);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
 | 
			
		||||
        #region Implementation of ViewModelBase
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user