public void TestCompositeCollectionMultiparamConstructor() { List <int> list1 = Enumerable.Range(0, 10).ToList(); List <int> list2 = Enumerable.Range(8, 10).ToList(); CompositeCollection <int> comp = new CompositeCollection <int>(list1, list2); Assert.Equal(comp.Count, 20); comp.Add(30); Assert.Equal(comp.Count, 21); Assert.True(comp.Remove(9)); Assert.False(comp.Contains(9)); Assert.True(comp.Contains(8)); comp.Clear(); Assert.Equal(comp.Count, 0); }
internal virtual void ShowContextMenu(Card card) { if (Player.LocalPlayer.Spectator) { return; } // Modify selection if (card == null || !card.Selected) { Selection.Clear(); } var menuItems = new CompositeCollection(); ContextGroup = group; ContextMenu = new ContextMenu { ItemsSource = menuItems, Tag = card }; // card has to captured somehow, otherwise it may be overwritten before released in the OnClosed handler, e.g. when rightclicking on a card, then directly right-clicking on another card. ContextMenu.Opened += (sender, args) => { ContextGroup.KeepControl(); var c = ((ContextMenu)sender).Tag as Card; if (c != null) { c.KeepControl(); } }; ContextMenu.Closed += (sender, args) => { ContextGroup.ReleaseControl(); var c = ((ContextMenu)sender).Tag as Card; if (c != null) { c.ReleaseControl(); } }; ContextCard = card; menuItems.Clear(); if (card != null) { //var cardMenuItems = await CreateCardMenuItems(card, group.Definition); var cardMenuItems = CreateCardMenuItems(card, group.Definition); var container = new CollectionContainer { Collection = cardMenuItems }; menuItems.Add(container); } if (ShouldShowGroupActions(card)) { var container = new CollectionContainer { Collection = CreateGroupMenuItems(group.Definition) }; menuItems.Add(container); } //else // Group is being shuffled // return; ContextMenu.IsOpen = false; // Required to trigger the ReleaseControl calls if the ContextMenu was already open ContextMenu.UpdateLayout(); // Required if the ContextMenu was already open ContextMenu.IsOpen = true; ContextMenu.FontFamily = groupFont; ContextMenu.FontSize = fontsize; }
internal virtual void ShowContextMenu(Card card, bool showGroupActions = true) { if (Player.LocalPlayer.Spectator) { return; } // Modify selection if (card == null || !card.Selected) { Selection.Clear(); } var menuItems = new CompositeCollection(); ContextGroup = group; ContextMenu = new ContextMenu { ItemsSource = menuItems, Tag = card }; // card has to captured somehow, otherwise it may be overwritten before released in the OnClosed handler, e.g. when rightclicking on a card, then directly right-clicking on another card. ContextMenu.Opened += (sender, args) => { ContextGroup.KeepControl(); var c = ((ContextMenu)sender).Tag as Card; if (c != null) { c.KeepControl(); } }; ContextMenu.Closed += (sender, args) => { ContextGroup.ReleaseControl(); var c = ((ContextMenu)sender).Tag as Card; if (c != null) { c.ReleaseControl(); } }; ContextCard = card; menuItems.Clear(); if (group.CanManipulate()) { if (card != null) { if (card.CanManipulate()) { if (_cardHeader != null) { _cardHeader.Header = card.Name; _cardHeader.Background = card.Controller.TransparentBrush; menuItems.Add(_cardMenu); } } else { var item = new MenuItem { Header = card.Name, Background = card.Controller.TransparentBrush }; item.SetResourceReference(StyleProperty, "MenuHeader"); menuItems.Add(item); item = new MenuItem { Header = "Take control" }; item.Click += delegate { card.TakeControl(); }; menuItems.Add(item); } if (!card.FaceUp) { var peekItem = new MenuItem { Header = "Peek", InputGestureText = "Ctrl+P" }; peekItem.Click += delegate { ContextCard.Peek(); }; if (menuItems.Count == 0) { var item = new MenuItem { Header = card.Name, Background = card.Owner.TransparentBrush }; item.SetResourceReference(StyleProperty, "MenuHeader"); menuItems.Add(item); } menuItems.Add(peekItem); } } if (showGroupActions) { menuItems.Add(_groupMenu); } } else// if (!group.WantToShuffle) { menuItems.Add(CreateGroupHeader()); var item = new MenuItem { Header = "Take control" }; item.Click += delegate { group.TakeControl(); }; menuItems.Add(item); menuItems.Add(new Separator()); item = CreateLookAtCardsMenuItem(); if (item != null) { menuItems.Add(item); } } //else // Group is being shuffled // return; ContextMenu.IsOpen = false; // Required to trigger the ReleaseControl calls if the ContextMenu was already open ContextMenu.UpdateLayout(); // Required if the ContextMenu was already open ContextMenu.IsOpen = true; ContextMenu.FontFamily = groupFont; ContextMenu.FontSize = fontsize; }