示例#1
0
        public void QueryAllowedDragPositions(QueryAllowedPositionsEventArgs args)
        {
            args.AllowedCopyPositions = DropLinePosition.None;
            args.AllowedMovePositions = DropLinePosition.None;
            DesignerNodeData sourceNodeData = args.Source as DesignerNodeData;

            if (sourceNodeData != null)
            {
                INode source = sourceNodeData.TreeNode.Node;
                INode target = ((DesignerNode)args.TargetNode).Node;
                if (target.IsValidChild(source))
                {
                    args.AllowedCopyPositions |= DropLinePosition.OnNode;
                    if (!IsNodeContained(source, target, true))
                    {
                        args.AllowedMovePositions |= DropLinePosition.OnNode;
                    }
                }

                if ((args.TargetNode.Parent != null) && target.Parent.IsValidChild(source))
                {
                    args.AllowedCopyPositions |= (DropLinePosition.AboveNode | DropLinePosition.BelowNode);
                    if (!IsNodeContained(source, target.Parent, true) && !Object.ReferenceEquals(target, source))
                    {
                        int index = target.Parent.Children.IndexOf(target);
                        if
                        (
                            (index == 0) ||
                            ((index > 0) && !ReferenceEquals(target.Parent.Children[index - 1], source))
                        )
                        {
                            args.AllowedMovePositions |= DropLinePosition.AboveNode;
                        }
                        if
                        (
                            (index == target.Parent.Children.Count - 1) ||
                            ((index < target.Parent.Children.Count - 1) && !ReferenceEquals(target.Parent.Children[index + 1], source))
                        )
                        {
                            args.AllowedMovePositions |= DropLinePosition.BelowNode;
                        }
                    }
                }
            }
        }
示例#2
0
        public void QueryAllowedPalettePositions(QueryAllowedPositionsEventArgs args)
        {
            args.AllowedCopyPositions = DropLinePosition.None;
            args.AllowedMovePositions = DropLinePosition.None;
            PaletteItem item = args.Source as PaletteItem;

            if (item != null)
            {
                INode target = ((DesignerNode)args.TargetNode).Node;
                Type  type   = DesignerTree.FormDesigner.FrontendSession.NodeTypeTable.GetClassType(item.ClassName);
                if (target.IsValidChild(type))
                {
                    args.AllowedCopyPositions |= DropLinePosition.OnNode;
                }
                if ((args.TargetNode.Parent != null) && target.Parent.IsValidChild(type))
                {
                    args.AllowedCopyPositions |= (DropLinePosition.AboveNode | DropLinePosition.BelowNode);
                }
            }
        }
示例#3
0
        // Drag & drop

        private void QueryAllowedDragPositions(object sender, QueryAllowedPositionsEventArgs args)
        {
            ((DesignerNode)args.TargetNode).QueryAllowedDragPositions(args);
        }