Reseter2/Reseter2/Words/WordsCategory.cs

125 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Reseter2.Words
{
internal class WordsCategory : IWordsItem
{
private string Name;
private bool cheked;
private List<IWordsItem> items;
public WordsCategory(string name)
{
Name = name;
items = new List<IWordsItem>();
}
public void Add(IWordsItem newitem)
{
items.Add(newitem);
}
public void Insert(int index, IWordsItem newitem)
{
//if (index > items.Count) index = items.Count;
items.Insert(index, newitem);
}
public void Move(int index, IWordsItem item, WordsCategory wordsdst)
{
items.Remove(item);
wordsdst.Insert(index, item);
}
public string GetName()
{
return Name;
}
public void SetName(string name)
{
Name = name;
}
public IWordsItem Items(int item)
{
return items[item];
}
public int Count()
{
return items.Count;
}
public void DeleteItem(IWordsItem wordsItem)
{
wordsItem.Delete();
items.Remove(wordsItem);
}
public override bool ChekMove(IWordsItem wordsItem)
{
if(this == wordsItem) return false;
foreach (var item in items)
{
if(!item.ChekMove(wordsItem)) return false;
}
return true;
}
public override void Delete() {
foreach(IWordsItem item in items)
{
item.Delete();
}
items.Clear();
}
public override void ChekChange(bool chek)
{
cheked = chek;
foreach(var item in items)
{
item.ChekChange(chek);
}
}
public override List<WordsComp> ChekList()
{
List<WordsComp> itemsChek = new List<WordsComp>();
foreach (var item in items)
{
itemsChek.AddRange(item.ChekList());
}
return itemsChek;
}
public override List<WordsCategory> CategoryList()
{
List<WordsCategory> itemsCatrgory = new List<WordsCategory>();
itemsCatrgory.Add(this);
foreach (var item in items)
{
itemsCatrgory.AddRange(item.CategoryList());
}
return itemsCatrgory;
}
public override TreeNode NodeList()
{
TreeNode treeNode = new TreeNode(GetName());
treeNode.Tag = this;
treeNode.ImageIndex = 1;
foreach (var item in items)
{
treeNode.Nodes.Add(item.NodeList());
}
return treeNode;
}
}
}