using DesktopTools.Helpers;
using ModuleTools.Enums;
using System;
using System.Windows.Forms;
namespace DesktopTools.Controls
{
public abstract partial class AbstractControlViewEntityElement : UserControl
{
///
/// Признак налиичия изменений
///
protected bool _haveChages = false;
///
/// Событие, вызываемое при закрытии контрола
///
protected event Action CloseEvent;
///
/// Событие, вызываемое при закрытии контрола
///
public event Action CloseEventAdd { add { CloseEvent += value; } remove { CloseEvent -= value; } }
///
/// Открытие формы
///
public abstract void Open(Guid? id);
///
/// Закрытие формы
///
public void Close()
{
if(_haveChages && DialogHelper.MessageQuestion("Имеется несохраненные данные, вы действительно хотите закрыть элемент?", "Закрытие элемента") ==
DialogResult.Yes)
{
if (!Save())
{
return;
}
}
CloseEvent?.Invoke(ControlId);
Form?.Close();
Dispose();
}
protected abstract bool Save();
///
/// Установка флага, что есть изменения
///
protected void ValueChange() => _haveChages = true;
///
/// Идентификатор контрола
///
public Guid ControlId { get; protected set; }
///
/// Идентификатор элемента с которым идет раота при редактировании
///
public Guid? ElementId { get; protected set; }
///
/// Идентификатор родителського элемента
///
public Guid? ParentEleemtId { get; protected set; }
///
/// Заголовок контрола
///
public string Title { get; protected set; }
///
/// Порядок контрола в меню
///
public int Order { get; protected set; }
///
/// Операция в системе
///
public AccessOperation AccessOperation { get; protected set; }
///
/// Форма в которой открыт контрол
///
public Form Form { get; set; }
///
/// Констркутор
///
public AbstractControlViewEntityElement()
{
InitializeComponent();
}
}
}