100 lines
2.8 KiB
C#
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;
|
|
}
|