using Pilz.UI.WinForms.Extensions; using Pilz.UI.WinForms.Telerik.Extensions; using Telerik.WinControls; namespace Pilz.UI.WinForms.Telerik.Dialogs; partial class RadDialogBase { public delegate void DialogLoadingEventHandler(DialogLoadingEventArgs e); public delegate void DialogClosedEventHandler(DialogClosedEventArgs e); public static event DialogLoadingEventHandler? DialogLoading; public static event DialogClosedEventHandler? DialogClosed; public static T Show(string? title, object? icon, object? tag = null) where T : RadFlyoutBase { return Show(null, title, icon, tag); } public static T ShowDialog(string? title, object? icon, object? tag = null) where T : RadFlyoutBase { return ShowDialog(null, title, icon, tag); } public static T Show(IWin32Window? parent, string? title, object? icon, object? tag = null) where T : RadFlyoutBase { return Show(CreatePanelInstance(tag), parent, title, icon); } public static T ShowDialog(IWin32Window? parent, string? title, object? icon, object? tag = null) where T : RadFlyoutBase { return ShowDialog(CreatePanelInstance(tag), parent, title, icon); } public static T Show(T dialogPanel, string? title, object? icon) where T : RadFlyoutBase { return Show(dialogPanel, null, title, icon); } public static T ShowDialog(T dialogPanel, string? title, object? icon) where T : RadFlyoutBase { return ShowDialog(dialogPanel, null, title, icon); } public static T Show(T dialogPanel, IWin32Window? parent, string? title, object? icon) where T : RadFlyoutBase { CreateForm(dialogPanel, parent, title, icon, FormStartPosition.CenterScreen).Show(); return dialogPanel; } public static T ShowDialog(T dialogPanel, IWin32Window? parent, string? title, object? icon) where T : RadFlyoutBase { CreateForm(dialogPanel, parent, title, icon, FormStartPosition.CenterParent).ShowDialog(); return dialogPanel; } private static T CreatePanelInstance(object? tag) where T : RadFlyoutBase { T dialogPanel = Activator.CreateInstance(); dialogPanel.Tag = tag; return dialogPanel; } private static RadDialogBase CreateForm(T dialogPanel, IWin32Window? parent, string? title, object? icon, FormStartPosition startPosition) where T : RadFlyoutBase { dialogPanel.Dock = DockStyle.Fill; if (icon is RadSvgImage svg) icon = svg.ToImage(); if (icon is Image img) icon = img.ToIcon(); var dialog = new RadDialogBase(dialogPanel) { Text = title, Icon = icon as Icon, StartPosition = startPosition, ClientSize = dialogPanel.Size }; dialog.Controls.Add(dialogPanel); return dialog; } }