131 lines
3.2 KiB
C#
131 lines
3.2 KiB
C#
using Telerik.WinControls;
|
|
|
|
namespace Pilz.UI.Telerik.Dialogs;
|
|
|
|
public partial class RadFlyoutBase : UserControl
|
|
{
|
|
public static RadSvgImage? CancelSvg { get; set; } = null;
|
|
public static RadSvgImage? ConfirmSvg { get; set; } = null;
|
|
|
|
public DialogResult Result { get; protected set; }
|
|
public bool RegisterDialogAccept { get; set; } = true;
|
|
public bool RegisterDialogCancel { get; set; } = false;
|
|
|
|
protected bool ActionPanelVisible
|
|
{
|
|
get => tableLayoutPanel_ActionPanel.Visible;
|
|
set => tableLayoutPanel_ActionPanel.Visible = value;
|
|
}
|
|
|
|
protected bool CancelButtonVisible
|
|
{
|
|
get => radButton_Cancel.Visible;
|
|
set => radButton_Cancel.Visible = value;
|
|
}
|
|
|
|
protected bool CancelButtonEnable
|
|
{
|
|
get => radButton_Cancel.Enabled;
|
|
set => radButton_Cancel.Enabled = value;
|
|
}
|
|
|
|
protected bool ConfirmButtonEnable
|
|
{
|
|
get => radButton_Confirm.Enabled;
|
|
set => radButton_Confirm.Enabled = value;
|
|
}
|
|
|
|
public string Title
|
|
{
|
|
get => radLabel_Title.Text;
|
|
set
|
|
{
|
|
radLabel_Title.Text = value;
|
|
SetShowTitlePanel();
|
|
}
|
|
}
|
|
|
|
public RadSvgImage TitleIcon
|
|
{
|
|
get => radLabel_Title.SvgImage;
|
|
set
|
|
{
|
|
radLabel_Title.SvgImage = value;
|
|
SetShowTitlePanel();
|
|
}
|
|
}
|
|
|
|
protected RadFlyoutBase()
|
|
{
|
|
InitializeComponent();
|
|
ParentChanged += FlyoutDialogBase_ParentChanged;
|
|
|
|
// Change TabIndex to a very high value
|
|
// -> prevent conflicts with controls based on this class
|
|
radButton_Cancel.TabIndex = int.MaxValue - 1;
|
|
radButton_Cancel.TabIndex = int.MaxValue;
|
|
|
|
// SVG Symbols
|
|
radButton_Cancel.SvgImage = CancelSvg;
|
|
radButton_Confirm.SvgImage = ConfirmSvg;
|
|
|
|
// Hide bars in Designer
|
|
//if (DesignMode)
|
|
//{
|
|
// tableLayoutPanel_ActionPanel.Visible = false;
|
|
// tableLayoutPanel_TitlePanel.Visible = false;
|
|
//}
|
|
}
|
|
|
|
private void FlyoutDialogBase_ParentChanged(object? sender, EventArgs e)
|
|
{
|
|
var frm = FindForm();
|
|
|
|
if (frm != null)
|
|
{
|
|
if (RegisterDialogAccept)
|
|
frm.AcceptButton = radButton_Confirm;
|
|
|
|
if (RegisterDialogCancel)
|
|
frm.CancelButton = radButton_Cancel;
|
|
|
|
if (AutoSize)
|
|
{
|
|
frm.AutoSize = true;
|
|
frm.AutoSizeMode = AutoSizeMode.GrowAndShrink;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void Close(DialogResult result)
|
|
{
|
|
Result = result;
|
|
|
|
if (FindForm() is RadDialogBase dialogForm)
|
|
dialogForm.Close();
|
|
else
|
|
CloseFlyout();
|
|
}
|
|
|
|
protected virtual bool ValidateOK()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
private void SetShowTitlePanel()
|
|
{
|
|
tableLayoutPanel_TitlePanel.Visible = !string.IsNullOrWhiteSpace(radLabel_Title.Text) || radLabel_Title.SvgImage != null;
|
|
}
|
|
|
|
private void RadButton_Confirm_Click(object sender, EventArgs e)
|
|
{
|
|
if (ValidateOK())
|
|
Close(DialogResult.OK);
|
|
}
|
|
|
|
private void RadButton_Cancel_Click(object sender, EventArgs e)
|
|
{
|
|
Close(DialogResult.Cancel);
|
|
}
|
|
}
|