| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.ComponentModel;
 
- using System.Drawing;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using InABox.Configuration;
 
- using InABox.Core;
 
- namespace InABox.Wpf;
 
- public interface IPanelActionItem
 
- {
 
- }
 
- public interface IPanelActionEntry
 
- {
 
-     object? Data { get; set; }
 
-     string? Caption { get; set; }
 
-     Bitmap? Image { get; set; }
 
-     void Execute();
 
- }
 
- public class PanelActionEntry<T> : DependencyObject, IPanelActionEntry
 
- {
 
-     
 
-     public static readonly DependencyProperty DataProperty = DependencyProperty.Register(
 
-         nameof(Data),
 
-         typeof(T),
 
-         typeof(PanelActionEntry<T>)
 
-     );
 
-     public T? Data { get; set; }
 
-     object? IPanelActionEntry.Data
 
-     {
 
-         get => this.Data;
 
-         set => this.Data = value == null ? default(T) : (T)value;
 
-     }
 
-     
 
-     public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register(
 
-         nameof(Caption),
 
-         typeof(string),
 
-         typeof(PanelActionEntry<T>),
 
-         new PropertyMetadata("")
 
-     );
 
-     public string? Caption { get; set; }
 
-     
 
-     public static readonly DependencyProperty ImageProperty = DependencyProperty.Register(
 
-         nameof(Image),
 
-         typeof(Bitmap),
 
-         typeof(PanelActionEntry<T>)
 
-     );    
 
-     public Bitmap? Image
 
-     { 
 
-         get => GetValue(ImageProperty) as Bitmap;
 
-         set => SetValue(ImageProperty, value);
 
-     }
 
-     
 
-     public Action<PanelActionEntry<T>>? OnExecute { get; set; }
 
-     public PanelActionEntry()
 
-     {
 
-         
 
-     }
 
-     
 
-     public PanelActionEntry(string? caption, Bitmap? image, T? data, Action<PanelActionEntry<T>>? onExecute)
 
-     {
 
-         Data = data;
 
-         Caption = caption;
 
-         Image = image;
 
-         OnExecute = onExecute;
 
-     }
 
-     public void Execute()
 
-     {
 
-         OnExecute?.Invoke(this);
 
-     }
 
-     
 
- }
 
- public class PanelAction : DependencyObject, IPanelActionItem
 
- {
 
-     public Func<PanelAction,IPanelActionEntry[]>? OnPopulate { get; set; }
 
-     public Action<PanelAction>? OnExecute { get; set; }
 
-     
 
-     
 
-     public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.Register(
 
-         nameof(IsEnabled),
 
-         typeof(bool),
 
-         typeof(PanelAction),
 
-         new PropertyMetadata(true)
 
-     );
 
-     
 
-     public bool IsEnabled 
 
-     { 
 
-         get => (bool)GetValue(IsEnabledProperty);
 
-         set => SetValue(IsEnabledProperty, value);
 
-     }
 
-     
 
-     
 
-     public static readonly DependencyProperty VisibilityProperty = DependencyProperty.Register(
 
-         nameof(Visibility),
 
-         typeof(Visibility),
 
-         typeof(PanelAction),
 
-         new PropertyMetadata(Visibility.Visible)
 
-     );
 
-     
 
-     public Visibility Visibility 
 
-     { 
 
-         get => (Visibility)GetValue(VisibilityProperty);
 
-         set => SetValue(VisibilityProperty, value);
 
-     }
 
-     public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register(
 
-         nameof(Caption),
 
-         typeof(string),
 
-         typeof(PanelAction),
 
-         new PropertyMetadata("")
 
-     );
 
-     
 
-     public string Caption 
 
-     { 
 
-         get => (string)GetValue(CaptionProperty);
 
-         set => SetValue(CaptionProperty, value);
 
-     }
 
-     public static readonly DependencyProperty ImageProperty = DependencyProperty.Register(
 
-         nameof(Image),
 
-         typeof(Bitmap),
 
-         typeof(PanelAction)
 
-     );    
 
-     public Bitmap? Image
 
-     { 
 
-         get => GetValue(ImageProperty) as Bitmap;
 
-         set => SetValue(ImageProperty, value);
 
-     }
 
-     
 
-     public static readonly DependencyProperty MenuProperty = DependencyProperty.Register(
 
-         nameof(Menu),
 
-         typeof(ContextMenu),
 
-         typeof(PanelAction)
 
-     );   
 
-     
 
-     public ContextMenu? Menu
 
-     { 
 
-         get => GetValue(MenuProperty) as ContextMenu;
 
-         set => SetValue(MenuProperty, value);
 
-     }
 
-     public PanelAction()
 
-     {
 
-     }
 
-     public PanelAction(string caption, Bitmap? image, Action<PanelAction>? onExecute,
 
-         Func<PanelAction, IPanelActionEntry[]>? onPopulate = null)
 
-     {
 
-         Caption = caption;
 
-         Image = image;
 
-         OnPopulate = onPopulate;
 
-         OnExecute = onExecute;
 
-     }
 
-     
 
-     public void Execute()
 
-     {
 
-         OnExecute?.Invoke(this);
 
-     }
 
-     public IPanelActionEntry[]? Populate()
 
-     {
 
-         return OnPopulate?.Invoke(this);
 
-     }
 
-     
 
- }
 
- public class PanelActionSeparator : IPanelActionItem
 
- {
 
- }
 
- public interface ICorePanel
 
- {
 
-     void Setup();
 
-     /// <summary>
 
-     /// Shutdown the panel.
 
-     /// </summary>
 
-     /// <param name="cancel">If the operation can be cancelled, this is not <see langword="null"/></param>
 
-     void Shutdown(CancelEventArgs? cancel);
 
-     void Refresh();
 
- }
 
- public interface IBasePanel : ICorePanel, IDataModelSource
 
- {
 
-     bool IsReady { get; set; }
 
-     void CreateToolbarButtons(IPanelHost host);
 
-     Dictionary<string, object[]> Selected();
 
-     void Heartbeat(TimeSpan time);
 
- }
 
- public interface IPanel<T> : IBasePanel
 
- {
 
- }
 
- public interface IPropertiesPanel<TProperties>
 
-     where TProperties : BaseObject, IGlobalConfigurationSettings, new()
 
- {
 
-     public TProperties Properties { get; set; }
 
- }
 
- public interface IPropertiesPanel<TProperties, TSecurity> : IPropertiesPanel<TProperties>
 
-     where TProperties : BaseObject, IGlobalConfigurationSettings, new()
 
-     where TSecurity : ISecurityDescriptor, new()
 
- {
 
- }
 
- public interface IPanelHost
 
- {
 
-     void CreatePanelAction(PanelAction action);
 
-     void CreateReport(PanelAction action);
 
-     void CreateSetupAction(PanelAction action);
 
-     void CreateSetupSeparator();
 
- }
 
- public static class IPanelHostExtensions
 
- {
 
-     public static void CreateSetupAction(this IPanelHost host, string caption, Bitmap image, Action<PanelAction> onExecute, ContextMenu? menu = null)
 
-     {
 
-         host.CreateSetupAction(new PanelAction(caption, image, onExecute) { Menu = menu });
 
-     }
 
-     public static void CreateSetupActionIf(this IPanelHost host, string caption, Bitmap image, Action<PanelAction> onExecute, bool canView, ContextMenu? menu = null)
 
-     {
 
-         if (canView)
 
-         {
 
-             host.CreateSetupAction(new PanelAction(caption, image, onExecute) { Menu = menu });
 
-         }
 
-     }
 
-     public static void CreateSetupActionIf<TSecurity>(this IPanelHost host, string caption, Bitmap image, Action<PanelAction> onExecute, ContextMenu? menu = null)
 
-         where TSecurity : ISecurityDescriptor, new()
 
-     {
 
-         host.CreateSetupActionIf(caption, image, onExecute, Security.IsAllowed<TSecurity>(), menu);
 
-     }
 
-     public static void CreateSetupActionIfCanView<T>(this IPanelHost host, string caption, Bitmap image, Action<PanelAction> onExecute, ContextMenu? menu = null)
 
-         where T : Entity, new()
 
-     {
 
-         host.CreateSetupActionIf(caption, image, onExecute, Security.CanView<T>(), menu);
 
-     }
 
- }
 
 
  |