Przeglądaj źródła

Changed editor page Order from function into property

Kenric Nugteren 7 miesięcy temu
rodzic
commit
90fc0d31b3

+ 1 - 4
inabox.wpf/DigitalForms/DigitalFormReportGrid.cs

@@ -230,9 +230,6 @@ namespace InABox.DynamicGrid
             return new Size(400, 400);
         }
 
-        public int Order()
-        {
-            return int.MinValue;
-        }
+        public int Order { get; set; } = int.MinValue;
     }
 }

+ 5 - 1
inabox.wpf/DynamicGrid/DynamicEditorForm/DynamicEditorGrid.xaml.cs

@@ -526,7 +526,11 @@ public partial class DynamicEditorGrid : UserControl, IDynamicEditorHost
 
         public Size MinimumSize() => new Size(800, GeneralHeight);
 
-        public int Order() => PageOrder;
+        public int Order
+        {
+            get => PageOrder;
+            set => PageOrder = value;
+        }
     }
 
     #endregion

+ 1 - 5
inabox.wpf/DynamicGrid/Grids/DynamicDocumentGrid.cs

@@ -431,12 +431,8 @@ public class DynamicDocumentGrid<TDocument, TEntity, TEntityLink> : DynamicManyT
         options.SelectColumns = false;
         options.DragTarget = true;
     }
-    
 
-    public override int Order()
-    {
-        return int.MaxValue;
-    }
+    public override int Order { get; set; } = int.MaxValue;
 
     protected override void HandleDragOver(object sender, DragEventArgs e)
     {

+ 1 - 4
inabox.wpf/DynamicGrid/Grids/DynamicEnclosedListGrid.cs

@@ -65,10 +65,7 @@ namespace InABox.DynamicGrid
             return result;
         }
 
-        public virtual int Order()
-        {
-            return int.MinValue;
-        }
+    public virtual int Order { get; set; } = int.MinValue;
 
         public void Load(object item, Func<Type, CoreTable?>? PageDataHandler)
         {

+ 3 - 2
inabox.wpf/DynamicGrid/Grids/DynamicGrid.cs

@@ -1507,7 +1507,7 @@ public abstract class DynamicGrid<T> : DynamicGrid, IDynamicGridUIComponentParen
                 {
                     DeleteItems(rows);
                     SelectedRows = Array.Empty<CoreRow>();
-                    OnChanged?.Invoke(this, EventArgs.Empty);
+                    DoChanged();
                     Refresh(false, true);
                     SelectItems(null);
                 }
@@ -1576,7 +1576,7 @@ public abstract class DynamicGrid<T> : DynamicGrid, IDynamicGridUIComponentParen
 
         InvalidateGrid();
         SelectedRows = newRows.ToArray();
-        OnChanged?.Invoke(this, EventArgs.Empty);
+        DoChanged();
     }
 
     private void Add_Click(object sender, RoutedEventArgs e)
@@ -2238,6 +2238,7 @@ public abstract class DynamicGrid<T> : DynamicGrid, IDynamicGridUIComponentParen
         if (updates.Length != 0)
         {
             SaveItems(updates);
+            DoChanged();
             Refresh(false, true);
         }
     }

+ 1 - 4
inabox.wpf/DynamicGrid/Grids/DynamicManyToManyGrid.cs

@@ -122,10 +122,7 @@ public class DynamicManyToManyGrid<TManyToMany, TThis> : DynamicGrid<TManyToMany
         return result;
     }
 
-    public virtual int Order()
-    {
-        return int.MinValue;
-    }
+    public virtual int Order { get; set; } = int.MinValue;
 
     public bool Ready { get; set; }
 

+ 1 - 4
inabox.wpf/DynamicGrid/Grids/DynamicOneToManyGrid.cs

@@ -199,10 +199,7 @@ public class DynamicOneToManyGrid<TOne, TMany> : DynamicGrid<TMany>,
         return result;
     }
 
-    public virtual int Order()
-    {
-        return int.MinValue;
-    }
+    public virtual int Order { get; set; } = int.MinValue;
 
     #endregion
 

+ 1 - 1
inabox.wpf/DynamicGrid/Layouts/DefaultDynamicEditorGridLayout.cs

@@ -40,7 +40,7 @@ namespace InABox.DynamicGrid
         public override void LoadPages(IEnumerable<IDynamicEditorPage> pages)
         {
             Details.Items.Clear();
-            foreach (var page in pages.OrderBy(x => x.PageType).ThenBy(x => x.Order()).ThenBy(x => x.Caption()))
+            foreach (var page in pages.OrderBy(x => x.PageType).ThenBy(x => x.Order).ThenBy(x => x.Caption()))
             {
                 var tab = new DynamicTabItem();
                 tab.Header = page.Caption();

+ 62 - 63
inabox.wpf/DynamicGrid/Layouts/VerticalDynamicEditorGridLayout.xaml.cs

@@ -13,87 +13,86 @@ using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 
-namespace InABox.DynamicGrid
+namespace InABox.DynamicGrid;
+
+/// <summary>
+/// Interaction logic for VerticalDynamicEditorGridLayout.xaml
+/// </summary>
+public partial class VerticalDynamicEditorGridLayout : DynamicEditorGridLayout
 {
-    /// <summary>
-    /// Interaction logic for VerticalDynamicEditorGridLayout.xaml
-    /// </summary>
-    public partial class VerticalDynamicEditorGridLayout : DynamicEditorGridLayout
+    
+    public override bool TabStripVisible
     {
-        
-        public override bool TabStripVisible
-        {
-            get { return Editors.TabStripVisible; }
-            set { Editors.TabStripVisible = value; }
-        }
+        get { return Editors.TabStripVisible; }
+        set { Editors.TabStripVisible = value; }
+    }
 
-        private double _totalWidth;
-        public override double TotalWidth => _totalWidth;
+    private double _totalWidth;
+    public override double TotalWidth => _totalWidth;
 
-        private double _editorHeight;
-        private double _pageHeight;
-        public override double TotalHeight => _editorHeight + _pageHeight;
+    private double _editorHeight;
+    private double _pageHeight;
+    public override double TotalHeight => _editorHeight + _pageHeight;
 
-        public VerticalDynamicEditorGridLayout()
-        {
-            InitializeComponent();
-        }
+    public VerticalDynamicEditorGridLayout()
+    {
+        InitializeComponent();
+    }
 
-        public override void LoadPages(IEnumerable<IDynamicEditorPage> pages)
+    public override void LoadPages(IEnumerable<IDynamicEditorPage> pages)
+    {
+        Editors.Items.Clear();
+        OtherPages.Items.Clear();
+        foreach (var page in pages.OrderBy(x => x.PageType).ThenBy(x => x.Order).ThenBy(x => x.Caption()))
         {
-            Editors.Items.Clear();
-            OtherPages.Items.Clear();
-            foreach (var page in pages.OrderBy(x => x.PageType).ThenBy(x => x.Order()).ThenBy(x => x.Caption()))
-            {
-                var tab = new DynamicTabItem();
-                tab.Header = page.Caption();
-                if (page is FrameworkElement element)
-                    element.Margin = new Thickness(0, 2, 0, 0);
-                tab.Content = page;
+            var tab = new DynamicTabItem();
+            tab.Header = page.Caption();
+            if (page is FrameworkElement element)
+                element.Margin = new Thickness(0, 2, 0, 0);
+            tab.Content = page;
 
-                var minSize = page.MinimumSize();
-
-                if(page is DynamicEditorGrid.DynamicEditPage)
-                {
-                    Editors.Items.Add(tab);
-                    _editorHeight = Math.Max(_editorHeight, minSize.Height);
-                    _totalWidth = Math.Max(_totalWidth, minSize.Width);
-                }
-                else
-                {
-                    OtherPages.Items.Add(tab);
-                    _pageHeight = Math.Max(_pageHeight, minSize.Height);
-                }
+            var minSize = page.MinimumSize();
 
+            if(page is DynamicEditorGrid.DynamicEditPage)
+            {
+                Editors.Items.Add(tab);
+                _editorHeight = Math.Max(_editorHeight, minSize.Height);
+                _totalWidth = Math.Max(_totalWidth, minSize.Width);
+            }
+            else
+            {
+                OtherPages.Items.Add(tab);
+                _pageHeight = Math.Max(_pageHeight, minSize.Height);
             }
 
-            Editors.SelectedIndex = 0;
         }
 
-        private bool bChanging;
-        private void Editors_SelectionChanged(object sender, SelectionChangedEventArgs e)
-        {
-            if (bChanging) return;
-            if ((e.OriginalSource != Editors && e.OriginalSource != OtherPages) || e.OriginalSource is not DynamicTabControl tabControl) return;
-            if (tabControl.SelectedItem is not DynamicTabItem tab) return;
+        Editors.SelectedIndex = 0;
+    }
 
-            bChanging = true;
-            try
-            {
-                if (tab is not null && tab.Content is IDynamicEditorPage page)
-                {
-                    SelectPage(page);
-                }
-            }
-            finally
+    private bool bChanging;
+    private void Editors_SelectionChanged(object sender, SelectionChangedEventArgs e)
+    {
+        if (bChanging) return;
+        if ((e.OriginalSource != Editors && e.OriginalSource != OtherPages) || e.OriginalSource is not DynamicTabControl tabControl) return;
+        if (tabControl.SelectedItem is not DynamicTabItem tab) return;
+
+        bChanging = true;
+        try
+        {
+            if (tab is not null && tab.Content is IDynamicEditorPage page)
             {
-                bChanging = false;
+                SelectPage(page);
             }
         }
-
-        private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
+        finally
         {
-            EditorRow.MaxHeight = e.NewSize.Height - 50;
+            bChanging = false;
         }
     }
+
+    private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
+    {
+        EditorRow.MaxHeight = e.NewSize.Height - 50;
+    }
 }

+ 11 - 15
inabox.wpf/DynamicGrid/Pages/DynamicEditorPage.cs

@@ -1,6 +1,8 @@
 using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
 using System.Windows;
 using InABox.Core;
 
@@ -22,6 +24,8 @@ public interface IDynamicEditorPage
 
     bool ReadOnly { get; set; }
 
+    int Order { get; set; }
+
     void Load(object item, Func<Type, CoreTable?>? PageDataHandler);
 
     /// <summary>
@@ -45,23 +49,8 @@ public interface IDynamicEditorPage
     Size MinimumSize();
 
     string Caption();
-
-    int Order();
 }
 
-//public class DynamicEditorPage 
-//{
-//	public String Name { get; set; }
-//	public Control Page { get; set; }
-
-//	public DynamicEditorPage(String name, Control page) : base()
-//	{
-//		Name = name;
-//		Page = page;
-//	}
-
-//}
-
 public class DynamicEditorPages : List<IDynamicEditorPage>
 {
     public DynamicEditorPages() : base()
@@ -74,4 +63,11 @@ public class DynamicEditorPages : List<IDynamicEditorPage>
         foreach (var page in pages)
             Add(page);
     }
+
+    public bool TryGetPage<T>([NotNullWhen(true)] out T? page)
+        where T : IDynamicEditorPage
+    {
+        page = this.OfType<T>().FirstOrDefault();
+        return page is not null;
+    }
 }