Example #1
0
        public bool CanDrop(IElementClipboardData data)
        {
            if (Operator != null)
            {
                return(false);
            }

            if (data.Items.Length != 1)
            {
                return(false);
            }

            IElementFactory factory = data.Items[0].Factory;

            if (factory == null)
            {
                factory = Owner.Context.ElementFactoryManager.GetFactory(data.Items[0].ElementMetadata.ElementTypeId);
            }

            if (factory == null)
            {
                return(false);
            }

            return(factory.ElementType.IsOperator());
        }
Example #2
0
        public static IElement[] CreateElements(this IElementOwner owner, IElementClipboardData data)
        {
            if (owner == null)
            {
                throw new ArgumentNullException(nameof(owner));
            }
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            //Create the elements
            return(data.Items
                   .Select(item =>
            {
                if (item.ElementMetadata != null)
                {
                    return owner.Context.ElementBuilder.CreateElement(owner, item.ElementMetadata);
                }

                if (item.Factory != null)
                {
                    return owner.CreateElement(item.Factory);
                }

                //This shouldn't happen
                return null;
            })
                   .ToArray());
        }
Example #3
0
        public bool Drop(IElementClipboardData data, bool insertAtBeginning)
        {
            if (CanDrop(data))
            {
                var elements = this.CreateElements(data);

                var index = insertAtBeginning ? 0 : Elements.Count;

                foreach (var element in elements)
                {
                    Elements.Insert(index++, element);
                }

                MarkDirty();

                SaveUndoState();

                //Make sure that the new items are selected.
                SelectionService.SelectNone();

                foreach (var selectable in elements)
                {
                    SelectionService.Select(selectable);
                }

                return(true);
            }

            return(false);
        }
Example #4
0
        public void Drop(IElementClipboardData data)
        {
            if (CanDrop(data))
            {
                var elements = Owner.CreateElements(data);

                Operator = elements[0] as IOperator;

                Owner.SaveUndoState();
            }
        }
        public void Drop(IElementClipboardData data)
        {
            if (CanDrop(data))
            {
                var elements = Owner.CreateElements(data);

                foreach (var element in elements)
                {
                    Elements.Add(element);
                }

                Owner.SaveUndoState();
            }
        }
Example #6
0
        public void Drop(IElementClipboardData data)
        {
            if (CanDrop(data))
            {
                var elements = Owner.CreateElements(data);

                foreach (var element in elements)
                {
                    Elements.Add(element);
                }

                Owner.SaveUndoState();
            }
        }
Example #7
0
        public bool CanDrop(IElementClipboardData data)
        {
            if (Operator != null)
                return false;

            if (data.Items.Length != 1)
                return false;

            IElementFactory factory = data.Items[0].Factory;

            if (factory == null)
            {
                factory = Owner.Context.ElementFactoryManager.GetFactory(data.Items[0].ElementMetadata.ElementTypeId);
            }

            if (factory == null)
                return false;

            return factory.ElementType.IsOperator();
        }
Example #8
0
        public void Drop(IElement element, IElementClipboardData data)
        {
            if (CanDrop(data))
            {
                var index = IndexOf(element);

                if (index >= 0)
                {
                    //Create the elements
                    var elements = _owner.CreateElements(data);

                    foreach (var newElement in elements)
                    {
                        Insert(++index, newElement);
                    }

                    _owner.SaveUndoState();
                }
            }
        }
Example #9
0
        public static bool AreAllItemsStatements(this IElementOwner owner, IElementClipboardData data)
        {
            if (owner == null)
            {
                throw new ArgumentNullException(nameof(owner));
            }
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            return(data.Items.Any() &&
                   data.Items.All(i =>
            {
                IElementFactory factory;

                if (i.Factory != null)
                {
                    //First try to use the factory
                    factory = i.Factory;
                }
                else if (i.ElementMetadata != null)
                {
                    //Get the factory for this element type
                    factory = owner.Context.ElementFactoryManager.GetFactory(i.ElementMetadata.ElementTypeId);
                }
                else
                {
                    //This shouldn't happen
                    return false;
                }

                //Determine if this is a statement
                return factory.ElementType.IsStatement();
            }));
        }
Example #10
0
 public bool CanDrop(IElementClipboardData data)
 {
     return(this.AreAllItemsStatements(data));
 }
Example #11
0
        public bool Drop(IElementClipboardData data, bool insertAtBeginning)
        {
            if (CanDrop(data))
            {
                var elements = this.CreateElements(data);

                var index = insertAtBeginning ? 0 : Elements.Count;

                foreach (var element in elements)
                {
                    Elements.Insert(index++, element);
                }

                MarkDirty();

                SaveUndoState();

                //Make sure that the new items are selected.
                SelectionService.SelectNone();

                foreach (var selectable in elements)
                {
                    SelectionService.Select(selectable);
                }

                return true;
            }

            return false;
        }
Example #12
0
 public bool CanDrop(IElementClipboardData data)
 {
     return this.AreAllItemsStatements(data);
 }
Example #13
0
 void IElementParent.Drop(IElement element, IElementClipboardData data)
 {
     //TODO:
 }
Example #14
0
 bool IElementParent.CanDrop(IElementClipboardData data)
 {
     return false;
 }
Example #15
0
 public bool CanDrop(IElementClipboardData data)
 {
     return Parent?.CanDrop(data) == true;
 }
Example #16
0
 bool IElementParent.CanDrop(IElementClipboardData data)
 {
     return(false);
 }
Example #17
0
 public void Drop(IElementClipboardData data)
 {
     Parent?.Drop(this, data);
 }
Example #18
0
 public bool CanDrop(IElementClipboardData data)
 {
     return(Parent?.CanDrop(data) == true);
 }
Example #19
0
 public void Drop(IElementClipboardData data)
 {
     Parent?.Drop(this, data);
 }
Example #20
0
 void IElementParent.Drop(IElement element, IElementClipboardData data)
 {
     //TODO:
 }
        //public static IElementDropTarget GetDropTarget(this FrameworkElement designRoot, Point position, Type elementType, Guid? returnType)
        //{
        //    var dropTargets = designRoot?.HitTestForTopDataContext<IElementDropTarget>(position);

        //    return dropTargets?.FirstOrDefault(d => d.CanDrop(elementType, returnType));
        //}

        public static IElementDropTarget GetDropTarget(this FrameworkElement designRoot, Point position, IElementClipboardData data)
        {
            var dropTargets = designRoot?.HitTestForTopDataContext <IElementDropTarget>(position);

            return(dropTargets?.FirstOrDefault(d => d.CanDrop(data)));
        }
Example #22
0
        public void Drop(IElementClipboardData data)
        {
            if (CanDrop(data))
            {
                var elements = Owner.CreateElements(data);

                Operator = elements[0] as IOperator;

                Owner.SaveUndoState();
            }
        }