Browse Source

Merge remote-tracking branch 'origin/frank' into kenric

Kenric Nugteren 1 year ago
parent
commit
472afb93b5

+ 1 - 1
inabox.wpf/MasterDetailPanel/MasterDetailPage.cs

@@ -24,7 +24,7 @@ public abstract class MasterDetailPage<TMaster> : IMasterDetailPage<TMaster>
     
     protected abstract IDataModelSource Refresh();
     
-    public abstract IDataModelSource DataModelSource();
+    public abstract IDataModelSource? DataModelSource();
     
     public TMaster? Master { get; set; }
 }

+ 11 - 5
inabox.wpf/MasterDetailPanel/MasterDetailPanelPage.cs

@@ -4,21 +4,27 @@ using InABox.DynamicGrid;
 
 namespace InABox.Wpf;
 
-public abstract class MasterDetailPanelPage<TMaster,TPanel> : MasterDetailPage<TMaster>
-    where TPanel : class, IBasePanel, IMasterDetailControl<TMaster>, new()
+public interface IMasterDetailPanelPage
 {
+    IBasePanel? Panel { get; }
+}
 
-    public MasterDetailPanelPage(DynamicTabItem tab) : base(tab) { }
+public abstract class MasterDetailPanelPage<TMaster,TPanel> : MasterDetailPage<TMaster>, IMasterDetailPanelPage
+    where TPanel : class, IBasePanel, IMasterDetailControl<TMaster>, new()
+{
+    protected MasterDetailPanelPage(DynamicTabItem tab) : base(tab) { }
     
     public TPanel? Panel { get; set; }
 
+    IBasePanel? IMasterDetailPanelPage.Panel => Panel;
+    
     public override Dictionary<string, object[]>? Selected() => Panel?.Selected();
 
-    protected abstract void DoRefresh(TPanel panel);
+    protected abstract void DoRefresh(TPanel? panel);
 
     public override IDataModelSource DataModelSource() => CheckPanel();
     
-    protected override IDataModelSource Refresh()
+    protected override IDataModelSource? Refresh()
     {
         
         CheckPanel();

+ 26 - 0
inabox.wpf/Panel/IPanel.cs

@@ -4,6 +4,7 @@ using System.ComponentModel;
 using System.Drawing;
 using System.Windows;
 using System.Windows.Controls;
+using ICSharpCode.AvalonEdit;
 using InABox.Configuration;
 using InABox.Core;
 
@@ -17,6 +18,31 @@ public interface IPanelActionItem
 public class PanelAction : DependencyObject, IPanelActionItem
 {
     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),