private void GroupSelectedItems() { var sbl = BlockList.GetSelectedBlockList(); int count = sbl.listBlocks.SelectedItems.Count; if (count == 0) { System.Media.SystemSounds.Beep.Play(); return; } string prompt; if (count == 1) { prompt = "Group Selected Block?"; } else if (count == sbl.listBlocks.Items.Count) { prompt = "Group All Blocks?"; } else { prompt = string.Format("Group {0} Selected Blocks?", count); } if (MessageBox.Show(prompt, "Block Editor", MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.OK) { inSelectionChanged = true; int index = sbl.listBlocks.SelectedItemIndex; IBlockGroup group = BlockManager.NewBlockGroup(); IBlock[] blocks = sbl.AdjacentSelectedBlocks; foreach (IBlock block in blocks) { group.Add(block); sbl.listBlocks.Items.Remove(block.BlockItem); sbl.listBlocks.ResetItemIndex(block.BlockItem); } sbl.listBlocks.Insert(index, group.BlockItem); sbl.listBlocks.SelectedItem = group.BlockItem; listCode.UnselectAll(); if (sbl.ParentGroup != null) { sbl.ParentGroup.Blocks = sbl.Blocks; } Edited = true; btnDelete.IsEnabled = btnCut.IsEnabled = btnCopy.IsEnabled = btnGroup.IsEnabled = btnUngroup.IsEnabled = true; inSelectionChanged = false; } }
public BlockList GetSelectedBlockList(bool forAdd = false) { if (GroupList == null || GroupList.ParentGroup == null) { return(this); } if (GroupList.listBlocks.SelectedItems.Count == 0) { return(forAdd ? GroupList : this); } return(GroupList.GetSelectedBlockList(forAdd)); }