Worms4Editor/W4Gui/Components/CollectiveListBox.cs

109 lines
2.6 KiB
C#
Raw Normal View History

2023-01-12 03:50:02 +00:00
using LibW4M.Data;
using System;
using System.Collections.Generic;
using System.ComponentModel;
2023-01-13 12:28:44 +00:00
using System.Diagnostics;
2023-01-12 03:50:02 +00:00
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace W4Gui.Components
{
2023-01-13 12:28:44 +00:00
public partial class CollectiveListBox : ListBox
2023-01-12 03:50:02 +00:00
{
2023-01-13 12:28:44 +00:00
public CollectiveListBox()
{
this.SelectedIndexChanged += selectedIndexChanged;
}
2023-01-12 03:50:02 +00:00
private int lastSelected = -1;
public int LastSelected
{
get
{
return lastSelected;
}
}
public int CurrentlySelected
{
get
{
2023-01-13 12:28:44 +00:00
return this.SelectedIndex;
2023-01-12 03:50:02 +00:00
}
}
public bool IsItemSelected
{
get
{
return this.CurrentlySelected >= 0;
}
}
private void unselectWithoutSaveTrigger()
{
this.lastSelected = -1;
2023-01-13 12:28:44 +00:00
this.SelectedIndex = -1;
2023-01-12 03:50:02 +00:00
}
2023-01-13 12:28:44 +00:00
public event EventHandler<EventArgs> Unselected;
public event EventHandler<EventArgs> Selected;
2023-01-12 03:50:02 +00:00
protected virtual void OnUnselected(EventArgs e)
{
EventHandler<EventArgs> handler = Unselected;
if (handler != null)
{
handler(this, e);
}
}
protected virtual void OnSelected(EventArgs e)
{
EventHandler<EventArgs> handler = Selected;
if (handler != null)
{
handler(this, e);
}
}
2023-01-13 12:28:44 +00:00
private void selectedIndexChanged(object? sender, EventArgs e)
2023-01-12 03:50:02 +00:00
{
if (LastSelected >= 0 && LastSelected != CurrentlySelected)
OnUnselected(e);
if (CurrentlySelected >= 0 && LastSelected != CurrentlySelected)
OnSelected(e);
lastSelected = CurrentlySelected;
}
public void Add(string name)
{
2023-01-13 12:28:44 +00:00
this.Items.Add(name);
2023-01-12 03:50:02 +00:00
}
public void Delete(int idx)
{
unselectWithoutSaveTrigger();
2023-01-13 12:28:44 +00:00
this.Items.RemoveAt(idx);
2023-01-12 03:50:02 +00:00
}
public void UpdateName(int idx, string name)
{
2023-01-13 12:28:44 +00:00
this.Items[idx] = name;
2023-01-12 03:50:02 +00:00
}
public void LoadCollective(SaveDataCollective collective)
{
unselectWithoutSaveTrigger();
2023-01-13 12:28:44 +00:00
this.Items.Clear();
2023-01-12 03:50:02 +00:00
for (int i = 0; i < collective.Length; i++)
{
string name = collective[i].FriendlyName;
2023-01-13 12:28:44 +00:00
this.Items.Add(name);
2023-01-12 03:50:02 +00:00
}
}
2023-01-13 12:28:44 +00:00
2023-01-12 03:50:02 +00:00
}
}