87 lines
2.4 KiB
C#
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;
|
|
}
|
|
}
|