Пример #1
0
        public void MoveFromNode(DesignerNode source, DropLinePosition position)
        {
            switch (position)
            {
            case DropLinePosition.OnNode:
                int newIndex = Node.Children.Count;
                if (Node.Children.Contains(source.Node))
                {
                    newIndex--;
                }
                InternalMoveNode(source.Node, Node, newIndex);
                // Remove and recreate the designer node -- the tree draws the lines improperly if we just move the node, and ASource.Reposition raises a null reference exception
                source.Remove();
                DesignerNode newNode = source.Copy();
                AddBaseNode(newNode);
                TreeView.SelectedNode = newNode;
                if (Parent != null)
                {
                    Parent.ExpandAll();
                }
                break;

            case DropLinePosition.AboveNode:
                MoveIntoSibling(source, Node.Parent.Children.IndexOf(Node));
                break;

            case DropLinePosition.BelowNode:
                MoveIntoSibling(source, Node.Parent.Children.IndexOf(Node) + 1);
                break;
            }
            DesignerTree.Modified();
        }
Пример #2
0
        private DesignerNode PlaceNewNode(INode node, DropLinePosition position)
        {
            DesignerNode designerNode;
            int          index;

            switch (position)
            {
            case DropLinePosition.OnNode:
                Node.Children.Add(node);
                designerNode = AddNode(node);
                break;

            case DropLinePosition.AboveNode:
                index = Parent.Nodes.IndexOf(this);
                Node.Parent.Children.Insert(index, node);
                designerNode = Parent.InsertNode(index, node);
                break;

            case DropLinePosition.BelowNode:
                index = Parent.Nodes.IndexOf(this) + 1;
                Node.Parent.Children.Insert(index, node);
                designerNode = Parent.InsertNode(index, node);
                break;

            default:
                System.Diagnostics.Debug.Fail("Invalid DropLinePosition passed to CopyFromNode()");
                designerNode = null;
                break;
            }
            TreeView.SelectedNode = designerNode;
            designerNode.ExpandAll();
            return(designerNode);
        }
Пример #3
0
        public void AddNew(PaletteItem item, DropLinePosition position)
        {
            INode node = (INode)DesignerTree.FormDesigner.FrontendSession.NodeTypeTable.CreateInstance(item.ClassName);

            try
            {
                Node.HostNode.GetUniqueName(node);
                PlaceNewNode(node, position).Rename();
            }
            catch
            {
                node.Dispose();
                throw;
            }
            DesignerTree.Modified();
        }
Пример #4
0
        public DesignerTreeDropMenu(DesignerNode source, DesignerNode target, DropLinePosition position, DropOperation supportedOperations)
        {
            _source   = source;
            _target   = target;
            _position = position;

            if ((supportedOperations & DropOperation.Copy) != 0)
            {
                MenuItems.Add(new MenuItem(Strings.DropMenu_Copy, new EventHandler(CopyClick)));
            }
            if ((supportedOperations & DropOperation.Move) != 0)
            {
                MenuItems.Add(new MenuItem(Strings.DropMenu_Move, new EventHandler(MoveClick)));
            }
            MenuItems.Add(new MenuItem("-"));
            MenuItems.Add(new MenuItem(Strings.DropMenu_Cancel));
        }
Пример #5
0
        public void CopyFromNode(DesignerNode source, DropLinePosition position)
        {
            INode node;

            using (MemoryStream stream = new MemoryStream())
            {
                BOP.Serializer serializer = DesignerTree.FormDesigner.FrontendSession.CreateSerializer();
                serializer.Serialize(stream, source);
                DesignerTree.FormDesigner.Dataphoria.Warnings.AppendErrors(DesignerTree.FormDesigner, serializer.Errors, true);
                stream.Position = 0;
                BOP.Deserializer deserializer = DesignerTree.FormDesigner.FrontendSession.CreateDeserializer();
                deserializer.FindReference += new BOP.FindReferenceHandler(DeserializeFindReference);
                node = (INode)deserializer.Deserialize(stream, null);
                DesignerTree.FormDesigner.Dataphoria.Warnings.AppendErrors(DesignerTree.FormDesigner, deserializer.Errors, true);
            }
            RecursiveGetUniqueName(node);

            PlaceNewNode(node, position);
            DesignerTree.Modified();
        }
Пример #6
0
        private void SetDropHighlightNode(TreeNode node, DropLinePosition dropLinePosition)
        {
            bool isPositionChanged = false;

            isPositionChanged =
                !
                (
                    Object.ReferenceEquals(_dropHighlightNode, node) &&
                    (_dropLinePosition == dropLinePosition)
                );

            //Set both properties without calling PositionChanged
            _dropHighlightNode = node;
            _dropLinePosition  = dropLinePosition;

            if (isPositionChanged)
            {
                PositionChanged();
            }
        }