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(); }
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); }
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(); }
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)); }
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(); }
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(); } }