private void LayerMultiActionHelper_Load(object sender, EventArgs e) { GenerateActions(listBox3); // listBox2.DrawItem += new DrawItemEventHandler(ListBox2_DrawItem); // listb.OwnerDraw = true; GenerateSidebar(listBox1); foreach (AbstractDeckAction item in list_actions) { GlobalAbstractDeckAction teste = new GlobalAbstractDeckAction(); teste.Text = item.GetActionName(); teste.Value = item; listBox2.Items.Add(teste); } }
private void GenerateSidebar(Control parent) { Padding categoryPadding = new Padding(5, 0, 0, 0); Font categoryFont = new Font(parent.Font.FontFamily, 13, FontStyle.Bold); Padding itemPadding = new Padding(25, 0, 0, 0); Font itemFont = new Font(parent.Font.FontFamily, 12); var items = ReflectiveEnumerator.GetEnumerableOfType <AbstractDeckAction>(); List <Control> toAdd = new List <Control>(); foreach (DeckActionCategory enumItem in Enum.GetValues(typeof(DeckActionCategory))) { var enumItems = items.Where(i => i.GetActionCategory() == enumItem && i.IsTool() == false && i.IsPlugin() == false); if (enumItems.Any()) { toAdd.Add(new Label() { Padding = categoryPadding, TextAlign = ContentAlignment.MiddleLeft, Font = categoryFont, Dock = DockStyle.Top, Text = enumItem.ToString(), Tag = "header", Height = TextRenderer.MeasureText(enumItem.ToString(), categoryFont).Height }); foreach (var i2 in enumItems) { Label item = new Label() { Padding = itemPadding, TextAlign = ContentAlignment.MiddleLeft, Font = itemFont, Dock = DockStyle.Top, Text = i2.GetActionName(), Height = TextRenderer.MeasureText(i2.GetActionName(), itemFont).Height, Tag = i2, }; // Debug.WriteLine("TAG VINDO: " + i2); item.MouseDown += (s, ee) => { if (item.Tag is AbstractDeckAction act) { // listBox2.Items.Add(i2.GetActionName()) ; GlobalAbstractDeckAction listbox = new GlobalAbstractDeckAction(); listbox.Text = i2.GetActionName(); listbox.Value = i2; listBox2.Items.Add(listbox); //listBox2.Refresh(); // item.DoDragDrop(new DeckActionHelper(act), DragDropEffects.Copy); } }; toAdd.Add(item); } } } toAdd.AsEnumerable().Reverse().All(m => { parent.Controls.Add(m); return(true); }); }