public void RedoLast() { if (redoactions.Count >= 1) { MindNode action = redoactions.Last(); redoactions.Remove(action); undoactions.Add(action); if (redoactions.Count >= 1) { GlobalNodeHandler.masterNode = redoactions.Last(); } GlobalNodeHandler.viewNode = GlobalNodeHandler.masterNode; } }
public void AddAction() { MindNode node = new MindNode(0, 0, 0, 0, 0, false); String nodeString = ""; nodeString = GlobalNodeHandler.masterNode.GetRepresentationXString(); node.FromRepresentation(nodeString); undoactions.Add(node); if (undoactions.Count > limit) { undoactions.RemoveAt(0); } if (redoactions.Count > limit) { redoactions.RemoveAt(0); } }
private string CreateXmlText() { //创建根节点 TgvXml tgvXml = new TgvXml(); MindNode root = new MindNode("b2e32ca53b43", "1499742764", "For KM"); //这一句非常重要,把root节点设置为根节点 tgvXml.SetRootMindNode(root); MindNode A = new MindNode("b2e32ca53b43", "1499742764", "A"); A.AddOrUpdate("expandState", "collapse"); A.AddOrUpdate("priority", "1"); root.AddChild(A); MindNode A1 = new MindNode("b2e32ca53b43", "1499742764", "A.1"); A.AddChild(A1); MindNode A11 = new MindNode("b2e32ca53b43", "1499742764", "A.1.1"); A1.AddChild(A11); MindNode A12 = new MindNode("b2e32ca53b43", "1499742764", "A.1.2"); A1.AddChild(A12); MindNode A13 = new MindNode("b2e32ca53b43", "1499742764", "A.1.3"); A1.AddChild(A13); MindNode A2 = new MindNode("b2e32ca53b43", "1499742764", ""); A.AddChild(A2); MindNode B = new MindNode("b2e32ca53b43", "1499742764", "B"); root.AddChild(B); MindNode B1 = new MindNode("b2e32ca53b43", "1499742764", "B.1"); B.AddChild(B1); MindNode B11 = new MindNode("b2e32ca53b43", "1499742764", "B.1.1"); B1.AddChild(B11); MindNode B12 = new MindNode("b2e32ca53b43", "1499742764", ""); B1.AddChild(B12); MindNode B2 = new MindNode("b2e32ca53b43", "1499742764", "B.2"); B.AddChild(B2); MindNode B21 = new MindNode("b2e32ca53b43", "1499742764", "B.2.1"); B2.AddChild(B21); MindNode B22 = new MindNode("b2e32ca53b43", "1499742764", "B.2.2"); B2.AddChild(B22); MindNode B3 = new MindNode("b2e32ca53b43", "1499742764", "B.3"); B.AddChild(B3); MindNode C = new MindNode("b2e32ca53b43", "1499742764", "C"); root.AddChild(C); MindNode D = new MindNode("b2e32ca53b43", "1499742764", "D"); root.AddChild(D); //string xmlText = tgvXml.GenerateXml(); tgvXml.Save(_mind_Xml_Path); return(null); }
public void UndoLast() { if (undoactions.Count >= 1) { MindNodeAction action = undoactions.Last(); undoactions.Remove(action); switch (action.name) { case "CreateNode": if (action.involvedNodes.Count >= 1) { MindNode createdNode = action.involvedNodes.Pop(); redoactions.Add(new MindNodeAction(1, "DeleteNode", createdNode)); createdNode.DeleteNode(); } break; case "DeleteNode": if (action.involvedNodes.Count >= 1) { MindNode deletednode = action.involvedNodes.Pop(); redoactions.Add(new MindNodeAction(0, "CreateNode", deletednode)); if (deletednode.parent != null) { deletednode.parent.AddChildNoStyle(deletednode, false); } // Refresh Pivot Representation after reinstating node deletednode.UpdatePivots(); } break; case "MoveNodes": if (action.involvedNodes.Count >= 1) { MindNodeAction newaction = new MindNodeAction(2, "MoveNodes"); foreach (MindNode movedNode in action.involvedNodes) { newaction.involvedNodes.Push(movedNode); newaction.startpoint.Push(new CalcPoint(movedNode.xpos, movedNode.ypos)); if (action.startpoint.Count > 0) { CalcPoint oldPos = action.startpoint.Pop(); movedNode.SetPosition(oldPos.X, oldPos.Y, false); } // Refresh Pivot Representation after moving node movedNode.UpdatePivots(); } redoactions.Add(newaction); } break; case "ConnectNodes": if (action.involvedNodes.Count >= 2) { MindNodeAction newAction = new MindNodeAction(3, "DeleteConnections"); for (int i = 0; i < action.involvedNodes.Count / 2; i++) { MindNode rightnode = action.involvedNodes.Pop(); MindNode leftnode = action.involvedNodes.Pop(); newAction.involvedNodes.Push(leftnode); newAction.involvedNodes.Push(rightnode); leftnode.DeleteConnection(rightnode); } redoactions.Add(newAction); } break; case "DeleteConnections": if (action.involvedNodes.Count >= 2) { MindNodeAction newAction = new MindNodeAction(3, "ConnectNodes"); for (int i = 0; i < action.involvedNodes.Count / 2; i++) { MindNode rightnode = action.involvedNodes.Pop(); MindNode leftnode = action.involvedNodes.Pop(); MindNode rightExistingNode = GlobalNodeHandler.masterNode.GetExistingNode(rightnode.id); MindNode leftExistingNode = GlobalNodeHandler.masterNode.GetExistingNode(rightnode.id); newAction.involvedNodes.Push(leftnode); newAction.involvedNodes.Push(rightnode); //leftnode.AddConnection(rightnode); // Refresh Pivot Representation after reinstating connection //leftnode.UpdatePivots(); } redoactions.Add(newAction); } break; case "ChangeText": if (action.involvedNodes.Count >= 1) { MindNodeAction newaction = new MindNodeAction(4, "ChangeText"); MindNode changedNode = action.involvedNodes.Pop(); newaction.text = changedNode.text; newaction.involvedNodes.Push(changedNode); changedNode.SetText(action.text); redoactions.Add(newaction); } else if (action.involvedLabel != null) { MindNodeAction newaction = new MindNodeAction(4, "ChangeText"); NodeLabel changedLabel = action.involvedLabel; newaction.text = changedLabel.GetText(); newaction.involvedLabel = changedLabel; changedLabel.SetText(action.text); redoactions.Add(newaction); } break; case "Transform": if (action.involvedNodes.Count >= 1) { MindNodeAction newaction = new MindNodeAction(5, "Transform"); MindNode changedNode = action.involvedNodes.Pop(); newaction.sourceSize.X = changedNode.width; newaction.sourceSize.Y = changedNode.height; newaction.startpoint.Push(new CalcPoint(changedNode.xpos, changedNode.ypos)); newaction.involvedNodes.Push(changedNode); if (action.sourceSize.X != -1) { changedNode.width = action.sourceSize.X; changedNode.SetScaled(false); } if (action.sourceSize.Y != -1) { changedNode.height = action.sourceSize.Y; changedNode.SetScaled(false); } CalcPoint oldPos = action.startpoint.Pop(); if (oldPos != null) { changedNode.SetPosition(oldPos.X, oldPos.Y, false); } // Refresh Pivot Representation after resetting transformation changedNode.UpdatePivots(); changedNode.updateRepresentation(); redoactions.Add(newaction); } break; } } }