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())); }
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); }