private void OnCopyClickHandler() { if (_curSelectedNode == null) { BarrageProject.LogWarning("Copy fail!Please select a node first"); return; } NodeData nd = NodeManager.SaveAsNodeData(_curSelectedNode, true); Clipboard.CopyToClipboard(nd); //Clipboard.SetDataObject(nd); }
private void OnCutClickHandler() { if (_curSelectedNode == null) { BarrageProject.LogWarning("Cut fail!Please select a node first"); return; } BaseNode parent = _curSelectedNode.GetParentNode(); if (parent == null) { BarrageProject.LogWarning("Cut fail!Node root is not deletable"); return; } if (!_curSelectedNode.IsDeletable) { BarrageProject.LogWarning(string.Format("Cut fail!Node {0} is not deletable", _curSelectedNode.GetNodeName())); return; } // 保存该节点的数据 NodeData nd = NodeManager.SaveAsNodeData(_curSelectedNode, true); if (!Clipboard.CopyToClipboard(nd)) { return; } //Clipboard.SetDataObject(nd); // 删除节点 int index = parent.GetChildIndex(_curSelectedNode); // 删除完成之后,默认选中下一个节点 if (parent.RemoveChildNode(_curSelectedNode)) { BaseNode newSelectNode = parent.GetChildByIndex(index); if (newSelectNode == null) { newSelectNode = parent.GetChildByIndex(index - 1); if (newSelectNode == null) { newSelectNode = parent; } } newSelectNode.OnSelected(true); OpDeleleHM hm = new OpDeleleHM { parentIndex = NodeManager.GetNodeIndex(parent), childIndex = index, delNodeData = nd, }; Undo.AddToUndoTask(hm); } }
private void OnDeleteClickHandler() { if (_curSelectedNode == null) { BarrageProject.LogWarning("Delete fail!Please select a node first"); return; } BaseNode parent = _curSelectedNode.GetParentNode(); if (parent == null) { BarrageProject.LogWarning("Delete fail!Node root is not deletable"); return; } if (!_curSelectedNode.IsDeletable) { BarrageProject.LogWarning(string.Format("Delete fail!Node {0} is not deletable", _curSelectedNode.GetNodeName())); return; } int indexInParent = parent.GetChildIndex(_curSelectedNode); NodeData nd = NodeManager.SaveAsNodeData(_curSelectedNode, true); // 删除完成之后,默认选中下一个节点 if (parent.RemoveChildNode(_curSelectedNode)) { BaseNode newSelectNode = parent.GetChildByIndex(indexInParent); if (newSelectNode == null) { newSelectNode = parent.GetChildByIndex(indexInParent - 1); if (newSelectNode == null) { newSelectNode = parent; } } newSelectNode.OnSelected(true); OpDeleleHM hm = new OpDeleleHM { parentIndex = NodeManager.GetNodeIndex(parent), childIndex = indexInParent, delNodeData = nd, }; Undo.AddToUndoTask(hm); } //else //{ // BarrageProject.LogWarning(string.Format("Delete fail!Node {0} is not deletable", _curSelectedNode.GetNodeName())); //} }
public void OnPasteClickHandler() { if (_curSelectedNode == null) { BarrageProject.LogWarning("Paste fail!Please select a node first"); return; } NodeData nd = default(NodeData); if (!Clipboard.GetClipboardObject <NodeData>(out nd)) { return; } if (nd == null) { BarrageProject.LogWarning("Paste fail!There is no data in clipboard"); return; } BaseNode parent; int insertIndex; GetParentNodeAndInsertIndexByInsertMode(_curInsertMode, _curSelectedNode, out parent, out insertIndex); NodeType childType = (NodeType)nd.type; if (!parent.CheckCanInsertChildNode(childType)) { string msg = string.Format("can not insert {0} as child of {1}", childType, parent.GetNodeType()); BarrageProject.LogError(msg); return; } BaseNode childNode = NodeManager.CreateNodesByNodeDatas(nd); if (parent.InsertChildNode(childNode, insertIndex)) { parent.Expand(true); childNode.OnSelected(true); OpPasteHM hm = new OpPasteHM { parentIndex = NodeManager.GetNodeIndex(parent), childIndex = parent.GetChildIndex(childNode), pasteNodeData = nd, }; Undo.AddToUndoTask(hm); } }