using System.ComponentModel;
using Pf2eModel;
using Pf2eModel.Model.Enum;
namespace Pf2eViewer;
///
/// Основная форма приложения.
///
public partial class MainViewForm : Form
{
///
/// Контекст базы данных.
///
public Pf2eDbContext Context = new();
///
/// Элемент управления для отображения дерева сущностей.
///
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public EntityView? CurrentView
{
get => EntityTreeViewerControl.EntityView;
set
{
EntityTreeViewerControl.EntityView = value;
Application.DoEvents();
}
}
///
/// Конструктор класса .
///
public MainViewForm()
{
InitializeComponent();
DatabaseViewer.EntityChange += DatabaseViewer_EntityChange;
Reset();
}
///
/// Сброс состояния формы.
///
public void Reset()
{
Context.Dispose();
Context = new();
TypesListBox.DataSource = Context
.Entities.Select(e => e.Type)
.Distinct()
.OrderBy(t => t.ToString())
.ToList();
TypesListBox.SelectedIndex = 0;
}
///
/// Обработчик события изменения выбранного элемента в списке типов сущностей.
///
/// Источник события.
/// Данные события.
private void TypesListBox_SelectedIndexChanged(object sender, EventArgs _)
{
if (TypesListBox.SelectedItem is null)
{
return;
}
CurrentView = null;
DatabaseViewer.Type = (EntityType)TypesListBox.SelectedItem;
}
///
/// Обработчик события изменения выбранной сущности в дереве сущностей.
///
/// Новая выбранная сущность.
private void DatabaseViewer_EntityChange(EntityView newEntity)
{
CurrentView = newEntity;
DescriptionTextBox.Text = newEntity.Entity!.Description;
}
}