Bläddra i källkod

Cleaned Up DynamicEditorGrid handling

frogsoftware 1 år sedan
förälder
incheckning
3108162bb2

+ 1 - 1
InABox.Core/Classes/Document/EntityDocument.cs

@@ -17,7 +17,7 @@ namespace InABox.Core
         [EntityRelationship(DeleteAction.Cascade)]
         [NullEditor]
         public T EntityLink { get; set; }
-
+        
         [EntityRelationship(DeleteAction.Cascade)]
         [EditorSequence(1)]
         public DocumentLink DocumentLink { get; set; }

+ 1 - 0
InABox.Core/Classes/Document/IEntityDocument.cs

@@ -4,6 +4,7 @@ namespace InABox.Core
 {
     public interface IEntityDocument : IEntity
     {
+        
         DocumentLink DocumentLink { get; set; }
 
         DateTime Superceded { get; set; }

+ 0 - 1
InABox.Core/EntityLink.cs

@@ -13,7 +13,6 @@ namespace InABox.Core
         bool Synchronise(object entity);
         bool Clear();
         bool IsValid();
-        
     }
 
     public interface IEntityLink<T> : IEntityLink

+ 1 - 1
inabox.wpf/DynamicGrid/BaseDynamicGrid.cs

@@ -81,7 +81,7 @@ namespace InABox.DynamicGrid
         protected DynamicGridRowStyleSelector<T> RowStyleSelector;
 
         public event IDynamicGrid.ReconfigureEvent? OnReconfigure;
-
+        
         public BaseDynamicGrid()
         {
             Options = new FluentList<DynamicGridOption>();

+ 39 - 5
inabox.wpf/DynamicGrid/DynamicDataGrid.cs

@@ -29,9 +29,9 @@ namespace InABox.DynamicGrid
 
     public class DynamicDataGrid<TEntity> : DynamicGrid<TEntity>, IDynamicDataGrid where TEntity : Entity, IRemotable, IPersistent, new()
     {
-        public delegate bool FilterSelected(CoreFilterDefinition filter);
+        public delegate bool FilterSelectedHandler(CoreFilterDefinition filter);
 
-        public event FilterSelected OnFilterSelected;
+        public event FilterSelectedHandler OnFilterSelected;
 
         public delegate void OnReloadEventHandler(object sender, Filters<TEntity> criteria, Columns<TEntity> columns, ref SortOrder<TEntity>? sortby);
 
@@ -711,6 +711,31 @@ namespace InABox.DynamicGrid
             return false;
         }
 
+        protected virtual void FilterSelected(CoreFilterDefinition filter)
+        {
+            
+        }
+        
+        private void DoFilterSelected(CoreFilterDefinition filter)
+        {
+            FilterSelected(filter);
+            OnFilterSelected?.Invoke(filter);
+        }
+
+        public void SelectFilter(CoreFilterDefinition? filter, bool refresh)
+        {
+            SelectedFilter = filter != null
+                ? new(filter.Name, Serialization.Deserialize<Filter<TEntity>>(filter.Filter))
+                : null;
+            Bitmap image = SelectedFilter != null
+                ? Wpf.Resources.filter_set
+                : Wpf.Resources.filter;
+            String text = SelectedFilter?.Item1 ?? "";
+            UpdateButton(FilterBtn, image.AsBitmapImage(), text);
+            if (refresh)
+                Refresh(false, true);
+        }
+
         private void Filter_Click(object sender, RoutedEventArgs e)
         {
             var tag = (sender as MenuItem)?.Tag;
@@ -721,15 +746,14 @@ namespace InABox.DynamicGrid
                 SelectedFilter = new(filter.Name, Serialization.Deserialize<Filter<TEntity>>(filter.Filter));
                 image = Wpf.Resources.filter_set;
                 text = filter.Name;
-                OnFilterSelected?.Invoke(filter);
-
+                DoFilterSelected(filter);
             }
             else
             {
                 SelectedFilter = null;
                 image = Wpf.Resources.filter;
                 text = "";
-                OnFilterSelected?.Invoke(new CoreFilterDefinition());
+                DoFilterSelected(null);
             }
             UpdateButton(FilterBtn, image.AsBitmapImage(), text);
             Refresh(false, true);
@@ -927,5 +951,15 @@ namespace InABox.DynamicGrid
         {
             UpdateButton(FilterBtn, image.AsBitmapImage(), text);
         }
+
+        public void UpdateFilterButton(string text)
+        {
+            UpdateFilterButton(String.IsNullOrWhiteSpace(text) 
+                ? Wpf.Resources.filter_set
+                : Wpf.Resources.filter,
+                text
+            );
+        }
+        
     }
 }

+ 7 - 1
inabox.wpf/DynamicGrid/DynamicEditorForm/DynamicEditorForm.xaml.cs

@@ -77,7 +77,11 @@ namespace InABox.DynamicGrid
 
         public event OnValidateData? OnValidateData { add => Form.OnValidateData += value; remove => Form.OnValidateData -= value; }
 
-        public OnCustomiseColumns? OnCustomiseColumns { get => Form.OnCustomiseColumns; set { Form.OnCustomiseColumns = value; } }
+        public OnCustomiseColumns? OnCustomiseColumns
+        {
+            get => Form.OnCustomiseColumns; 
+            set => Form.OnCustomiseColumns = value;
+        }
         public OnDefineFilter? OnDefineFilter { get => Form.OnDefineFilter; set { Form.OnDefineFilter = value; } }
 
         public OnDefineLookup? OnDefineLookups { get => Form.OnDefineLookups; set { Form.OnDefineLookups = value; } }
@@ -144,6 +148,8 @@ namespace InABox.DynamicGrid
                         break;
                 }
             }
+            else
+                DialogResult = false;
         }
 
         private void Form_OnOK()

+ 2 - 10
inabox.wpf/DynamicGrid/DynamicEditorForm/EmbeddedDynamicEditorForm.xaml

@@ -55,11 +55,7 @@
             Grid.Row="1"
             Grid.Column="1" 
             Margin="0,5,5,5" 
-            Click="OKButton_Click" 
-            BorderBrush="DarkGreen"
-            Background="LimeGreen"
-            Foreground="White"
-            FontWeight="Bold"/>
+            Click="OKButton_Click"/>
         
         <Button 
             x:Name="CancelButton" 
@@ -67,11 +63,7 @@
             Grid.Row="1" 
             Grid.Column="2" 
             Margin="0,5,5,5" 
-            Click="CancelButton_Click"
-            BorderBrush="Firebrick"
-            Background="Red"
-            Foreground="White"
-            FontWeight="Bold"/>
+            Click="CancelButton_Click"/>
         
     </Grid>
 </UserControl>

+ 3 - 0
inabox.wpf/DynamicGrid/DynamicEditorForm/EmbeddedDynamicEditorForm.xaml.cs

@@ -101,6 +101,9 @@ namespace InABox.DynamicGrid
             button.Foreground = _highlightButtons
                 ? new SolidColorBrush(foreground)
                 : new SolidColorBrush(Colors.Black);
+            button.FontWeight = _highlightButtons
+                ? FontWeights.Bold
+                : FontWeights.Normal;
         }
 
         public static readonly DependencyProperty ButtonsVisibleProperty =

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

@@ -2832,7 +2832,7 @@ namespace InABox.DynamicGrid
 
             editor.OnAfterEditorValueChanged += (g, n) => AfterEditorValueChanged(g, items, n);
 
-            editor.OnReconfigureEditors = g => ReconfigureEditors(g, items);
+            editor.OnReconfigureEditors = g => DoReconfigureEditors(g, items);
 
             editor.OnValidateData += (o, i) => ValidateData(items);
 
@@ -2904,8 +2904,8 @@ namespace InABox.DynamicGrid
         protected virtual void OnAfterEditorValueChanged(DynamicEditorGrid grid, T[] items, String columnnname, Dictionary<String, object?> changes)
         {
         }
-
-        protected virtual void ReconfigureEditors(DynamicEditorGrid grid, T[] items)
+        
+        protected virtual void DoReconfigureEditors(DynamicEditorGrid grid, T[] items)
         {
             /*if (items.First() is IDimensioned dimensioned)
             {

+ 1 - 1
inabox.wpf/DynamicGrid/IDynamicGrid.cs

@@ -49,7 +49,7 @@ namespace InABox.DynamicGrid
 
         delegate void ReconfigureEvent(FluentList<DynamicGridOption> options);
         event ReconfigureEvent? OnReconfigure;
-
+        
         FluentList<DynamicGridOption> DefaultOptions { get; }
 
         void AddVisualFilter(string column, string value, FilterType filtertype = FilterType.Contains);