Files
Pf2eDataScrapper/Pf2eDataScrapper/Forms/EntityViewForm.cs
T

100 lines
2.8 KiB
C#

using System.ComponentModel;
using Pf2eDataScrapper.Helpers;
using Pf2eModel;
using Pf2eModel.Model.Enum;
namespace Pf2eDataScrapper.Forms;
/// <summary>
/// Основная форма приложения.
/// </summary>
internal partial class EntityViewForm : Form
{
public Pf2eDbContext Context { get; }
/// <summary>
/// Элемент управления для отображения дерева сущностей.
/// </summary>
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public EntityView? CurrentView
{
get => EntityTreeViewerControl.EntityView;
set
{
EntityTreeViewerControl.EntityView = value;
Application.DoEvents();
}
}
/// <summary>
/// Конструктор класса <see cref="EntityViewForm"/>.
/// </summary>
public EntityViewForm(Pf2eDbContext context)
{
Context = context;
InitializeComponent();
DatabaseViewer.EntityChange += DatabaseViewer_EntityChange;
Reset();
}
/// <summary>
/// Сброс состояния формы.
/// </summary>
public void Reset()
{
TypesListBox.DataSource = Context
.Entities.Select(e => e.Type)
.Distinct()
.OrderBy(t => t.ToString())
.ToList();
if (TypesListBox.Items.Count > 0)
{
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;
}
private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
private void ImportSettingsWindowsToolStripMenuItem_Click(object sender, EventArgs e)
{
ApplicationStateChange?.Invoke(this, ApplicationStage.InitialSettings);
}
public event ImportApplication.ApplicationStateChangeDelegate? ApplicationStateChange;
}