public void PasteFromClipboard() { INode node; using (MemoryStream stream = new MemoryStream()) { StreamWriter writer = new StreamWriter(stream); writer.Write((string)Clipboard.GetDataObject().GetData(DataFormats.UnicodeText, true)); writer.Flush(); 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); } Node.Children.Add(node); RecursiveGetUniqueName(node); // make names unique after adding the node in order to properly account for all nodes DesignerNode designerNode = AddNode(node); TreeView.SelectedNode = designerNode; designerNode.ExpandAll(); DesignerTree.Modified(); }
private void MoveIntoSibling(DesignerNode source, int index) { int siblingIndex = Parent.Nodes.IndexOf(source); if ((siblingIndex >= 0) && (siblingIndex < index)) { index--; } InternalMoveNode(source.Node, Node.Parent, index); // Remove and recreate the 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(); Parent.InsertBaseNode(index, newNode); TreeView.SelectedNode = newNode; Parent.ExpandAll(); }