Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        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;
                }
            }
        }