예제 #1
0
        public static void Play()
        {
            var e1 = new TagsWereAddedToFiles { FileNames = new[] { "file1", "file2" }, TagsThatWereAdded = new[] { "tag1", "tag2" } };
            var e2 = new TagsWereAddedToFiles { FileNames = new[] { "file1", "file2" }, TagsThatWereAdded = new[] { "tag11", "tag22" } };
            var e3 = new TagsWereAddedToFiles { FileNames = new[] { "file1", "file3" }, TagsThatWereAdded = new[] { "tag3", "tag4" } };
            var e4 = new TagsWereAddedToFiles { FileNames = new[] { "file4", "file5" }, TagsThatWereAdded = new[] { "tag1", "tag4" } };
            var e5 = new TagRenamed { OldValue = "tag1", NewValue = "tag10" };
            var e6 = new TagsWereRemovedFromFiles { FileNames = new[] { "file1", "file2" }, TagsThatWereRemoved = new[] { "tag2" } };
            var e7 = new FileRenamed { OldValue = "file1", NewValue = "file10" };

            Event[] events = { e1, e2, e3, e4, e5, e6 };
            foreach (var ev in events)
            {
                var processor = ev as IEventProcessor;
                processor.ProcessEvent();
            }

            var state = State.Populate(TaggedFile.Repository.GetFilesList());


            var filter = new TagsIntersectionCondition(
                new TagsUnionCondition(InversableTag.GetTag("tag10"), InversableTag.GetTag("tag2")),
                new TagsUnionCondition(InversableTag.GetTag("tag11"), InversableTag.GetTag("tag4"))
                );

            var newState = State.Populate(filter.Apply(state.GetFiles()));

            filter = new TagsIntersectionCondition(
                new TagsUnionCondition(InversableTag.GetInverseTag("tag10"))
                );

            newState = State.Populate(filter.Apply(state.GetFiles()));
        }
예제 #2
0
        private void btnAddTag_Click(object sender, EventArgs e)
        {
            var btn = sender as Button;
            var addTagsForm = new AddTagsForm();
            addTagsForm.SetApplyCallback(tags =>
                {
                    var ev = new TagsWereAddedToFiles { FileNames = new[] { _file.FileName }, TagsThatWereAdded = tags.ToArray() };
                    State.AddAndSaveEvent(ev);
                    

                    this.panel.Controls.Clear();
                    foreach (var tag in _file.Tags)
                    {
                        var button = new Button();
                        button.Text = tag.Value;
                        this.panel.Controls.Add(button);
                    }
                    if (this.OnChange != null)
                        this.OnChange();
                });
            addTagsForm.Show();
            addTagsForm.SetDesktopLocation(Cursor.Position.X, Cursor.Position.Y);            
        }