Files
Pf2eDataScrapper/Pf2eViewer/MainViewForm.cs
T

87 lines
2.4 KiB
C#

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