Пример #1
0
 public NodeDetach(MapNode node)
 {
     this.node = node;
     this.parent = node.Parent;
     this.siblingAbove = node.Previous;
     this.position = node.Pos;
 }
Пример #2
0
        public void AddHyperlink()
        {
            MapCtrl mapCtrl = SetupMapCtrlWithEmptyTree();
            var t = mapCtrl.MapView.Tree;
            var r = t.RootNode;
            var c1 = new MapNode(r, "c1");
            var c11 = new MapNode(c1, "6");
            var c12 = new MapNode(c1, "2");
            var c13 = new MapNode(c1, "4");
            var c14 = new MapNode(c1, "7");
            var c15 = new MapNode(c1, "1");
            var c16 = new MapNode(c1, "5");
            var c17 = new MapNode(c1, "3");
            var c121 = new MapNode(c12, "c121");
            var c2 = new MapNode(r, "c2");
            var c3 = new MapNode(r, "c3", NodePosition.Left);
            var c31 = new MapNode(c3, "c31");
            var c32 = new MapNode(c3, "c32");
            r.Selected = true;
            t.SelectedNodes.Add(c32, true);

            mapCtrl.AddHyperlink("abc");

            Assert.AreEqual("abc", r.Link);
            Assert.AreEqual("abc", c32.Link);
            Assert.IsNull(c31.Link);
        }
Пример #3
0
        private void Tree_AttributeChanged(MapNode node, AttributeChangeEventArgs e)
        {
            //// Task List Change
            // task completed
            if (e.ChangeType == AttributeChange.Added && e.AttributeSpec.IsCompletionDate())
            {
                Add(node);
                TaskChanged(node, GetEventArgs(node, CompletedTaskChange.TaskCompleted, e));                
            }
            // task removed
            else if (e.ChangeType == AttributeChange.Removed && e.AttributeSpec.IsCompletionDate())
            {
                if (Remove(node))
                {
                    TaskChanged(node, GetEventArgs(node, CompletedTaskChange.TaskRemoved, e));                 
                }
            }
            // completion date updated
            else if(e.ChangeType == AttributeChange.ValueUpdated && e.AttributeSpec.IsCompletionDate())
            {
                Remove(node);
                Add(node);
                TaskChanged(node, GetEventArgs(node, CompletedTaskChange.CompletionDateUpdated, e));
            }

            //// Task Property Change (which doesn't affect list)
            else if(CompletedTaskPropertyChanged != null && e.AttributeSpec.IsStartDate() && node.IsTaskComplete())
            {
                var args = new CompletedTaskPropertyEventArgs(){ PropertyChanged = CompletedTaskProperty.StartDate };
                if (!string.IsNullOrEmpty(e.oldValue)) args.OldValue = DateHelper.ToDateTime(e.oldValue);
                CompletedTaskPropertyChanged(node, args);
            }
        }        
Пример #4
0
        public void MoveNodeUp()
        {
            var t = new MapTree();
            var r = new MapNode(t, "r");

            r.MoveUp();
        }
Пример #5
0
        public TaskView(MapNode node, string dueOnText,
            Action<TaskView, TaskViewEvent> onTaskViewEvent, bool showDeferOption = true)
        {
            InitializeComponent();

            ShowDeferOption = showDeferOption;

            this.ContextMenuStrip = CreateContextMenu();

            OnTaskViewEvent = onTaskViewEvent;

            SetQuickActionsVisiblity(false);

            MapNode = node;

            TaskTitle = node.Text;

            RefreshTaskPath();

            TaskDueOnText = dueOnText;

            if (node.Selected)
                Selected = true;

            this.Paint += new System.Windows.Forms.PaintEventHandler(this.TaskView_Paint);
        }
Пример #6
0
        public void SetNoteEditorBackColor()
        {
            bool result = true;

            System.Threading.Thread t = new System.Threading.Thread(() =>
            {
                MetaModel.MetaModel.Initialize();
                var persistence = new PersistenceManager();
                var noteEditor = new NoteEditor();

                var form = CreateForm();
                form.Controls.Add(noteEditor);
                form.Shown += (sender, args) =>
                {
                    var ptree1 = persistence.NewTree();
                    var c1 = new MapNode(ptree1.Tree.RootNode, "c1");
                    c1.Selected = true;

                    var sut = new NoteEditorCtrl(noteEditor, persistence);
                    sut.SetNoteEditorBackColor(Color.Azure);

                    result = noteEditor.BackColor.Equals(Color.Azure);

                    form.Close();
                };

                form.ShowDialog();
            });
            t.SetApartmentState(System.Threading.ApartmentState.STA);
            t.Start();
            t.Join();

            Assert.IsTrue(result);
        }
Пример #7
0
        public void SortChildren_WithRootNodeSortABC_Desc()
        {
            var r = new MapNode(new MapTree(), "r");
            var c1 = new MapNode(r, "C");
            var c11 = new MapNode(c1, "c11");
            var c12 = new MapNode(c1, "c12");
            var c121 = new MapNode(c12, "c121");
            var c13 = new MapNode(c1, "c13");
            var c131 = new MapNode(c13, "c131");
            var c1311 = new MapNode(c131, "c1311");
            var c2 = new MapNode(r, "B");
            var c3 = new MapNode(r, "C", NodePosition.Left);
            var c31 = new MapNode(c3, "c31");
            var c32 = new MapNode(c3, "c32");
            var c4 = new MapNode(r, "A");
            var c5 = new MapNode(r, "F");
            var c6 = new MapNode(r, "D");
            var c7 = new MapNode(r, "E");

            r.SortChildren((node1, node2) => string.CompareOrdinal(node2.Text, node1.Text));

            Assert.AreEqual(c5, r.FirstChild);
            Assert.AreEqual(c7, r.FirstChild.Next);
            Assert.AreEqual(c2, r.LastChild.Previous);
            Assert.AreEqual(c4, r.LastChild);
        }
Пример #8
0
 /// <summary>
 /// Delete this attribute from the given node if attribute exists
 /// </summary>
 /// <param name="node"></param>
 public static void RemoveCompletionDate(MapNode node)
 {
     MapTree.AttributeSpec aspec = GetAttributeSpec(node.Tree);
     if (aspec != null)
     {
         node.DeleteAttribute(aspec);
     }
 }
Пример #9
0
 public void SerializeImage_InvalidChar()
 {
     MetaModel.MetaModel.Initialize();
     var refNode = new MapNode(new MapTree(), "OK");
     refNode.Italic = true;
     var nodeStyle = new NodeStyle("TestStyle\"1", refNode, true);
     new NodeStyleImageSerializer().SerializeImage(nodeStyle.Image, nodeStyle.Title);
 }
Пример #10
0
        public void Serialize(MapNode node, Emitter emitter)
        {
            emitter.Emit(new MappingStart());

            SerializeScalarProperties(node, emitter);

            emitter.Emit(new MappingEnd());
        }
Пример #11
0
        public NodeView(MapNode node, PointF location)
        {
            this.node = node;
            this.left = location.X;
            this.top = location.Y;

            CreateNodeViewContent();
        }
Пример #12
0
        private void PendingTasks_TaskTextChanged(MapNode node, TaskTextEventArgs e)
        {
            TaskReminderDialog dialog = GetOpenDialog(node);
            if (dialog == null) return;

            if (e.ChangeType == TaskTextChange.TextChange)
                dialog.TaskView.TaskTitle = node.Text;
            else if (e.ChangeType == TaskTextChange.AncestorTextChange)
                dialog.TaskView.RefreshTaskPath();
        }
Пример #13
0
        public void Copy(MapNode node, bool multiApply = false)
        {
            this.formatSource = node;
            Status = multiApply? FormatPainterStatus.MultiApply : FormatPainterStatus.SingleApply;
            mapView.Canvas.KeyDown += Canvas_KeyDown;
            mapView.Canvas.NodeMouseEnter += Canvas_NodeMouseEnter;
            mapView.Canvas.NodeMouseExit += Canvas_NodeMouseExit;

            if(StateChanged != null) { StateChanged(this); }
        }
Пример #14
0
        private void PendingTasks_TaskSelectionChanged(MapNode node, TaskSelectionEventArgs e)
        {
            TaskReminderDialog dialog = GetOpenDialog(node);
            if (dialog == null) return;

            if (e.ChangeType == TaskSelectionChange.Selected)
                dialog.TaskView.Selected = true;
            else
                dialog.TaskView.Selected = false;
        }
Пример #15
0
        public void Add_ReAddingNode_OneSelectedEvent()
        {
            var t = new MapTree();
            var r = new MapNode(t, "r");
            int eventSelectCount = 0;
            t.SelectedNodes.NodeSelected += (node, nodes) => eventSelectCount++;
            t.SelectedNodes.Add(r);
            t.SelectedNodes.Add(r);

            Assert.AreEqual(1, eventSelectCount);
        }
Пример #16
0
        public void RegisterMap()
        {
            var t = new MapTree();
            var r = new MapNode(t, "r");
            ChangeManager manager = new ChangeManager();
            manager.RegisterMap(t);

            r.Text = "changed";

            Assert.IsTrue(manager.CanUndo);
        }
Пример #17
0
        public void HighlightedNode()
        {
            MetaModel.MetaModel.Initialize();
            var n = new MapNode(
                new MapNode(new MapTree(), null),
                "Sample",
                NodePosition.Left);
            var sut = new StyleImageGenerator(n);

            Assert.IsNull(sut.HighlightedNode);
        }
Пример #18
0
        public void Add(MapNode node)
        {
            DateTime dateTime = node.GetDueDate();
            ControlGroup ctrlGroup = GetApplicableGroup(dateTime);

            if (ctrlGroup != null)
            {
                ITaskGroup taskGroup = (ITaskGroup)ctrlGroup.Tag;
                TaskView tv = new TaskView(node, taskGroup.ShortDueDateString(dateTime), OnTaskViewEvent);
                AddToGroup(ctrlGroup, tv);
            }
        }
Пример #19
0
        public void GetNodeView()
        {
            MetaModel.MetaModel.Initialize();
            var n = new MapNode(
                new MapNode(new MapTree(), null),
                "Sample",
                NodePosition.Left);
            var sut = new StyleImageGenerator(n);
            var image = sut.GenerateImage();

            Assert.IsNotNull(sut.GetNodeView(n));
        }
Пример #20
0
 internal IChange CreateChange(MapNode node, IconChangedEventArgs e)
 {
     switch(e.ChangeType)
     {
         case IconChange.Added:
             return new IconAdd(node, e.Icon);
         case IconChange.Removed:
             return new IconRemove(node, e.Icon);
         default:
             return null;
     }
 }
Пример #21
0
        private void PendingTasks_TaskChanged(MindMate.Model.MapNode node, Model.PendingTaskEventArgs args)
        {
            taskPlugin.PluginManager.RescheduleTask(reminder, DateTime.Now);

            TaskReminderDialog dialog = GetOpenDialog(node);

            if (dialog == null)
            {
                return;
            }
            dialog.Close();
        }
Пример #22
0
 /// <summary>
 /// Create a child MapNode and adds task to it
 /// </summary>
 /// <param name="text"></param>
 /// <param name="startDate"></param>
 /// <param name="endDate"></param>
 public bool AddSubTask(string text, DateTime startDate, DateTime endDate)
 {
     if(PluginManager.ActiveNodes.Count == 1)
     {
         MapNode node = new MapNode(PluginManager.ActiveNodes.First, text);
         node.SetStartDate(startDate);
         node.SetEndDate(endDate);
         return true;
     }
     else
     {
         return false;
     }
 }
Пример #23
0
        public static bool GetAttribute(MapNode node, out MapNode.Attribute attribute)
        {
            MapTree.AttributeSpec aspec = GetAttributeSpec(node.Tree);
            if (aspec != null)
            {
                if (node.GetAttribute(aspec, out attribute))
                {
                    return true;
                }
            }

            attribute = MapNode.Attribute.Empty;
            return false;
        }
Пример #24
0
        /// <summary>
        /// Currently it is hooked up to mouse down event
        /// </summary>
        /// <param name="node"></param>
        /// <param name="evt"></param>
        public void MapNodeClick(MapNode node, NodeMouseEventArgs evt)
        {
            if (mapCtrl.MapView.NodeTextEditor.IsTextEditing)
            {
                mapCtrl.EndNodeEdit();
                return;
            }

            bool shiftKeyDown = (Control.ModifierKeys & Keys.Shift) == Keys.Shift;
            bool ctrlKeyDown = (Control.ModifierKeys & Keys.Control) == Keys.Control;

            // Toggle folding or follow link (node has children + no key modifier)
            if (node.HasChildren && !shiftKeyDown && !ctrlKeyDown)
            {
                mapCtrl.MapView.SelectedNodes.Add(node, shiftKeyDown || ctrlKeyDown);
                if (node.Link == null || evt.NodePortion == NodePortion.Body)
                {
                    if (node.Parent != null) mapCtrl.ToggleFolded(node);
                }
                else
                {
                    mapCtrl.FollowLink(node);
                }
            }
            // deselect already selected node (ctrl key + node already selected)
            else if (mapCtrl.MapView.SelectedNodes.Count > 1 && mapCtrl.MapView.SelectedNodes.Contains(node) && ctrlKeyDown)
            {
                mapCtrl.MapView.SelectedNodes.Remove(node);
            }
            else
            {
                mapCtrl.MapView.SelectedNodes.Add(node, shiftKeyDown || ctrlKeyDown);

                //edit node or follow link (no children + only selected node + no key modifier)
                if (mapCtrl.MapView.SelectedNodes.Count == 1 && !node.HasChildren &&
                !shiftKeyDown && !ctrlKeyDown)
                {
                    if (node.Link == null)
                    {
                        mapCtrl.BeginNodeEdit(node, TextCursorPosition.End);
                    }
                    else
                    {
                        mapCtrl.FollowLink(node);
                    }
                }
            }
        }
Пример #25
0
 public void GenerateImage()
 {
     MetaModel.MetaModel.Initialize();
     var n = new MapNode(
         new MapNode(new MapTree(), null),
         "Sample",
         NodePosition.Left);
     var sut = new StyleImageGenerator(n);
     using (var image = sut.GenerateImage())
     {
         using (var refImage = Image.FromFile(@"Resources\NodeStyle-GenerateImage.bmp"))
         {
             Assert.AreEqual(0.0f, image.PercentageDifference(refImage, 0));
         }
         if (SaveActualImage) image.Save(@"Resources\NodeStyle-GenerateImage-Actual.bmp");
     }
 }
Пример #26
0
        public void AttachTo_ChildrenAttached()
        {
            var r = new MapNode(new MapTree(), "r");
            var c1 = new MapNode(r, "c1");
            var c11 = new MapNode(c1, "c11");
            var c12 = new MapNode(c1, "c12");
            var c13 = new MapNode(c1, "c13");
            var c2 = new MapNode(r, "c2");
            var c3 = new MapNode(r, "c3", NodePosition.Left);
            var c31 = new MapNode(c3, "c31");
            var c32 = new MapNode(c3, "c32");

            c3.Detach();
            c3.AttachTo(c2);

            Assert.IsTrue(c32.IsDescendent(c2));
        }
Пример #27
0
        public void AttachTo()
        {
            var r = new MapNode(new MapTree(), "r");
            var c1 = new MapNode(r, "c1");
            var c11 = new MapNode(c1, "c11");
            var c12 = new MapNode(c1, "c12");
            var c13 = new MapNode(c1, "c13");
            var c2 = new MapNode(r, "c2");
            var c3 = new MapNode(r, "c3", NodePosition.Left);
            var c31 = new MapNode(c3, "c31");
            var c32 = new MapNode(c3, "c32");

            c3.Detach();
            c3.AttachTo(c2);

            Assert.AreEqual(c2.FirstChild, c3);
        }
Пример #28
0
        internal IChange CreateChange(MapNode node, NodePropertyChangedEventArgs e)
        {
            switch (e.ChangedProperty)
            {
                case NodeProperties.Text:
                    return new TextChange(node, (string)e.OldValue);
                case NodeProperties.Bold:
                    return new BoldChange(node, (bool)e.OldValue);
                case NodeProperties.Italic:
                    return new ItalicChange(node, (bool)e.OldValue);
                case NodeProperties.Folded:
                    return new FoldChange(node, (bool)e.OldValue);
                case NodeProperties.FontName:
                    return new FontNameChange(node, (string)e.OldValue);
                case NodeProperties.FontSize:
                    return new FontSizeChange(node, (float)e.OldValue);
                case NodeProperties.Link:
                    return new LinkChange(node, (string)e.OldValue);
                case NodeProperties.BackColor:
                    return new BackColorChange(node, (Color)e.OldValue);
                case NodeProperties.Color:
                    return new ColorChange(node, (Color)e.OldValue);
                case NodeProperties.Shape:
                    return new ShapeChange(node, (NodeShape)e.OldValue);
                case NodeProperties.LineWidth:
                    return new LineWidthChange(node, (int)e.OldValue);
                case NodeProperties.LinePattern:
                    return new LinePatternChange(node, (System.Drawing.Drawing2D.DashStyle)e.OldValue);
                case NodeProperties.LineColor:
                    return new LineColorChange(node, (Color)e.OldValue);
                case NodeProperties.NoteText:
                    return new NoteTextChange(node, (string)e.OldValue);
                case NodeProperties.Image:
                    return new ImageChange(node, (Image)e.OldValue);
                case NodeProperties.ImageAlignment:
                    return new ImageAlignmentChange(node, (ImageAlignment)e.OldValue);
                case NodeProperties.Label:
                    return new LabelChange(node, (string)e.OldValue);
                case NodeProperties.Strikeout:
                    return new StrikeoutChange(node, (bool)e.OldValue);

                default:
                    return null;
            }
        }
Пример #29
0
        private void Reminder_TaskDue(MindMate.Model.MapNode node, ReminderType reminderType)
        {
            if (reminderType == ReminderType.Final)
            {
                TaskReminderDialog dialog = GetOpenDialog(node);
                if (dialog != null)
                {
                    dialog.Close();
                }
            }

            TaskReminderDialog dlg = new TaskReminderDialog(node, reminderType);

            dlg.Left           = Screen.PrimaryScreen.Bounds.Width - 50 - dlg.Width;
            dlg.Top            = Screen.PrimaryScreen.Bounds.Height - 100 - dlg.Height;
            dlg.TaskViewEvent += taskPlugin.OnTaskViewEvent;
            openDialogs.Add(dlg);
            dlg.FormClosing += Dlg_FormClosing;
            dlg.Show();
        }
Пример #30
0
 internal IChange CreateChange(MapNode node, TreeStructureChangedEventArgs e)
 {
     switch(e.ChangeType)
     {
         case TreeStructureChange.Deleted:
             return new NodeDelete(node);
         case TreeStructureChange.Detached:
             return new NodeDetach(node);
         case TreeStructureChange.Attached:
         case TreeStructureChange.New:
             return new NodeAttach(node);
         case TreeStructureChange.MovedLeft:
         case TreeStructureChange.MovedDown:
             return new MoveDown(node);
         case TreeStructureChange.MovedRight:
         case TreeStructureChange.MovedUp:
             return new MoveUp(node);
         default:
             return null;
     }
 }
Пример #31
0
        public void GetDescendentsCount()
        {
            var r = new MapNode(new MapTree(), "r");
            var c1 = new MapNode(r, "C");
            var c11 = new MapNode(c1, "6");
            var c12 = new MapNode(c1, "2");
            var c121 = new MapNode(c12, "c121");
            var c13 = new MapNode(c1, "4");
            var c14 = new MapNode(c1, "7");
            var c15 = new MapNode(c1, "1");
            var c16 = new MapNode(c1, "5");
            var c17 = new MapNode(c1, "3");
            var c2 = new MapNode(r, "B");
            var c3 = new MapNode(r, "C", NodePosition.Left);
            var c31 = new MapNode(c3, "c31");
            var c32 = new MapNode(c3, "c32");

            int count = r.GetDescendentsCount();

            Assert.AreEqual(13, count);
        }
Пример #32
0
        public void AddToSelection()
        {
            var r = new MapNode(new MapTree(), "r");
            var c1 = new MapNode(r, "C");
            var c11 = new MapNode(c1, "6");
            var c12 = new MapNode(c1, "2");
            var c121 = new MapNode(c12, "c121");
            var c13 = new MapNode(c1, "4");
            var c14 = new MapNode(c1, "7");
            var c15 = new MapNode(c1, "1");
            var c16 = new MapNode(c1, "5");
            var c17 = new MapNode(c1, "3");
            var c2 = new MapNode(r, "B");
            var c3 = new MapNode(r, "C", NodePosition.Left);
            var c31 = new MapNode(c3, "c31");
            var c32 = new MapNode(c3, "c32");

            r.AddToSelection();
            c1.AddToSelection();

            Assert.AreEqual(2, r.Tree.SelectedNodes.Count);
        }
Пример #33
0
 private static void PasteImage(MapNode pasteLocation)
 {
     new MapNode(pasteLocation, "").InsertImage(Clipboard.GetImage(), true);
 }
Пример #34
0
        public static void Paste(MapNode pasteLocation, bool asText = false, bool pasteFileAsImage = false)
        {
            if (Clipboard.ContainsData(MindMateClipboardFormat))
            {
                foreach (MapNode node in internalClipboard)
                {
                    if (asText)
                    {
                        new MapNode(pasteLocation, node.Text);
                    }
                    else
                    {
                        node.CloneAsDetached().AttachTo(pasteLocation);
                    }
                }
            }
            else if (Clipboard.ContainsText())
            {
                string            link       = GetBrowserSourceLink();
                MapTextSerializer serializer = new MapTextSerializer();

                serializer.Deserialize(Clipboard.GetText(TextDataFormat.Text), pasteLocation,
                                       (parent, text) =>
                {
                    if (asText)
                    {
                        return(new MapNode(parent, text));
                    }
                    else
                    {
                        string tempLink = link;     // add link to source website in case text itself is not a URL (if text is URL, link to it)
                        if (text.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ||
                            text.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
                        {
                            tempLink = text;
                        }
                        return(new MapNode(parent, text)
                        {
                            Link = tempLink
                        });
                    }
                });
            }
            else if (Clipboard.ContainsImage())
            {
                PasteImage(pasteLocation);
            }
            else if (Clipboard.ContainsFileDropList())
            {
                if (pasteFileAsImage)
                {
                    PasteFileListAsImage(pasteLocation);
                }
                else
                {
                    PasteFileDropList(pasteLocation, asText);
                }
            }

            hasCutNode = false;
            StatusChanged?.Invoke();
            if (pasteLocation.Folded)
            {
                pasteLocation.Folded = false;
            }
        }
Пример #35
0
 internal void FireEvent(MapNode node, AttributeChangingEventArgs args)
 {
     AttributeChanging(node, args);
 }
Пример #36
0
 public IconList(MapNode node)
 {
     this.node = node;
 }