Browse Source

Added some enumerables for dynamic editor grid

Kenric Nugteren 1 year ago
parent
commit
a3b51d3e2d
1 changed files with 33 additions and 14 deletions
  1. 33 14
      inabox.wpf/DynamicGrid/DynamicEditorGrid.xaml.cs

+ 33 - 14
inabox.wpf/DynamicGrid/DynamicEditorGrid.xaml.cs

@@ -97,6 +97,23 @@ namespace InABox.DynamicGrid
             }
         }
 
+        public IEnumerable<IDynamicEditorControl> Editors
+        {
+            get
+            {
+                foreach (var page in Pages)
+                {
+                    if (page is DynamicEditPage editPage)
+                    {
+                        foreach(var editor in editPage.Editors)
+                        {
+                            yield return editor;
+                        }
+                    }
+                }
+            }
+        }
+
         public bool TryFindEditor(string columnname, [NotNullWhen(true)] out IDynamicEditorControl? editor)
         {
             foreach (var page in Pages)
@@ -203,7 +220,9 @@ namespace InABox.DynamicGrid
             public DynamicEditorGrid EditorGrid { get; set; } = null!; // Set by DynamicEditorGrid
             public bool Ready { get; set; }
 
-            private List<BaseDynamicEditorControl> Editors { get; set; }
+            private List<BaseDynamicEditorControl> EditorList { get; set; }
+
+            public IEnumerable<IDynamicEditorControl> Editors => EditorList;
 
             public PageType PageType => PageType.Editor;
 
@@ -222,7 +241,7 @@ namespace InABox.DynamicGrid
                     if(_readOnly != value)
                     {
                         _readOnly = value;
-                        foreach(var editor in Editors)
+                        foreach(var editor in EditorList)
                         {
                             editor.IsEnabled = !value && editor.EditorDefinition.Editable.IsEditable();
                         }
@@ -234,7 +253,7 @@ namespace InABox.DynamicGrid
             {
                 Header = header;
 
-                Editors = new List<BaseDynamicEditorControl>();
+                EditorList = new List<BaseDynamicEditorControl>();
 
                 InitialiseContent();
             }
@@ -270,7 +289,7 @@ namespace InABox.DynamicGrid
                     element.ColumnName = columnName;
                     element.Color = editor is UniqueCodeEditor ? Color.FromArgb(0xFF, 0xF6, 0xC9, 0xE8) : Colors.LightYellow;
 
-                    Editors.Add(element);
+                    EditorList.Add(element);
 
                     element.Margin = new Thickness(5F, 2.5F, 5F, 2.5F);
 
@@ -349,35 +368,35 @@ namespace InABox.DynamicGrid
 
             public bool TryFindEditor(string columnname, [NotNullWhen(true)] out IDynamicEditorControl? editor)
             {
-                editor = Editors.FirstOrDefault(x => x.ColumnName.Equals(columnname));
-                editor ??= Editors.FirstOrDefault(x => columnname.StartsWith(x.ColumnName + '.'));
+                editor = EditorList.FirstOrDefault(x => x.ColumnName.Equals(columnname));
+                editor ??= EditorList.FirstOrDefault(x => columnname.StartsWith(x.ColumnName + '.'));
                 return editor is not null;
             }
 
             public IEnumerable<BaseDynamicEditorControl> FindEditors(DynamicGridColumn column)
             {
-                return Editors.Where(x => string.Equals(x.ColumnName, column.ColumnName));
+                return EditorList.Where(x => string.Equals(x.ColumnName, column.ColumnName));
             }
 
             #region Configure Editors
 
             private void Lookup_OnUpdateOtherEditor(string columnname, object value)
             {
-                var editor = Editors.FirstOrDefault(x => x.ColumnName.Equals(columnname));
+                var editor = EditorList.FirstOrDefault(x => x.ColumnName.Equals(columnname));
                 if (editor != null)
                     CoreUtils.SetPropertyValue(editor, "Value", value);
             }
 
             private void ConfigureEditors()
             {
-                foreach (var Editor in Editors)
+                foreach (var Editor in EditorList)
                 {
                     var editor = Editor.EditorDefinition;
                     var column = Editor.ColumnName;
 
                     Editor.Configure();
-                    if (!Editors.Any(x => x.ColumnName.Equals(Editor.ColumnName)))
-                        Editors.Add(Editor);
+                    if (!EditorList.Any(x => x.ColumnName.Equals(Editor.ColumnName)))
+                        EditorList.Add(Editor);
                     Editor.Loaded = true;
                 }
             }
@@ -455,7 +474,7 @@ namespace InABox.DynamicGrid
 
             private void LoadEditorValues(Dictionary<string, object?>? changededitors = null)
             {
-                var columnnames = changededitors != null ? changededitors.Keys.ToArray() : Editors.Select(x => x.ColumnName).ToArray();
+                var columnnames = changededitors != null ? changededitors.Keys.ToArray() : EditorList.Select(x => x.ColumnName).ToArray();
                 foreach (var columnname in columnnames)
                 {
                     if (!TryFindEditor(columnname, out var editor))
@@ -494,7 +513,7 @@ namespace InABox.DynamicGrid
                 ConfigureEditors();
                 LoadEditorValues();
 
-                foreach (var editor in Editors)
+                foreach (var editor in EditorList)
                 {
                     foreach(var (column, editorValue) in editor.GetValues())
                     {
@@ -509,7 +528,7 @@ namespace InABox.DynamicGrid
                     }
                 }
 
-                Editors.FirstOrDefault()?.SetFocus();
+                EditorList.FirstOrDefault()?.SetFocus();
 
                 Ready = true;
             }