Explorar o código

Added DynamicGrid.HideDatabaseFilters and DynamicGridOption.HideDirectEditButton
Added virtual DynamicGrid.Changed() method
Added DefaultValue to DynamicGridUIComponent Converters

frogsoftware hai 1 ano
pai
achega
51b11f9b92

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

@@ -148,7 +148,7 @@ namespace InABox.DynamicGrid
             if (MergeBtn != null)
                 MergeBtn.Visibility = Visibility.Collapsed;
 
-            FilterComponent.ShowFilterList = HasOption(DynamicGridOption.FilterRows);
+            FilterComponent.ShowFilterList = HasOption(DynamicGridOption.FilterRows) && !HasOption(DynamicGridOption.HideDatabaseFilters);
         }
 
         protected override void SelectItems(CoreRow[]? rows)

+ 16 - 2
inabox.wpf/DynamicGrid/DynamicGrid.cs

@@ -135,7 +135,17 @@ public abstract class DynamicGrid<T> : DynamicGrid, IDynamicGridUIComponentParen
     public delegate void BeforeSelectionEvent(CancelEventArgs cancel);
     public event BeforeSelectionEvent? OnBeforeSelection;
 
-    public void DoChanged() => OnChanged?.Invoke(this, EventArgs.Empty);
+    protected virtual void Changed()
+    {
+        
+    }
+
+    public void DoChanged()  
+    {
+        Changed();
+        OnChanged?.Invoke(this, EventArgs.Empty);
+    }
+        
 
     public event EditorValueChangedHandler? OnEditorValueChanged;
 
@@ -669,7 +679,11 @@ public abstract class DynamicGrid<T> : DynamicGrid, IDynamicGridUIComponentParen
             ? Visibility.Visible
             : Visibility.Collapsed;
 
-        SwitchViewBtn.Visibility = HasOption(DynamicGridOption.DirectEdit) ? Visibility.Visible : Visibility.Collapsed;
+        SwitchViewBtn.Visibility = HasOption(DynamicGridOption.DirectEdit) 
+            ? HasOption(DynamicGridOption.HideDirectEditButton)
+                ? Visibility.Collapsed 
+                : Visibility.Visible 
+            : Visibility.Collapsed;
 
         Count.Visibility = HasOption(DynamicGridOption.RecordCount) ? Visibility.Visible : Visibility.Collapsed;
 

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

@@ -34,7 +34,9 @@ public enum DynamicGridOption
     DirectEdit,
     ShowHelp,
     Print,
-    RecordCount
+    RecordCount,
+    HideDatabaseFilters,
+    HideDirectEditButton
 }
 
 public delegate bool OnFilterRecord(CoreRow row);

+ 22 - 4
inabox.wpf/DynamicGrid/DynamicGridStyle.cs

@@ -5,6 +5,7 @@ using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Media;
+using com.sun.xml.@internal.ws.api.streaming;
 using InABox.Clients;
 using InABox.Core;
 using InABox.Scripting;
@@ -282,6 +283,19 @@ namespace InABox.DynamicGrid
         }
     }
 
+    public class DynamicGridCellStyleParameters
+    {
+        public DynamicColumnBase Column { get; }
+        
+        public object DefaultValue { get; }
+
+        public DynamicGridCellStyleParameters(DynamicColumnBase column, object? defaultValue)
+        {
+            Column = column;
+            DefaultValue = defaultValue;
+        }
+    }
+
     public class DynamicGridCellStyleConverter<T> : IValueConverter
     {
 
@@ -318,12 +332,16 @@ namespace InABox.DynamicGrid
             var row = GetRow(value);
             if (row == null)
                 return DependencyProperty.UnsetValue;
-            
-            var column = parameter as DynamicColumnBase;
-            if (column is null)
+
+            var param = parameter as DynamicGridCellStyleParameters;
+            if (param == null)
                 return DependencyProperty.UnsetValue;
             
-            return _converter.Invoke(row,column) ?? DependencyProperty.UnsetValue;
+            //var column = parameter as DynamicColumnBase;
+            //if (column is null)
+            //    return DependencyProperty.UnsetValue;
+            
+            return _converter.Invoke(row,param.Column) ?? param.DefaultValue;
         }
         
         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

+ 46 - 12
inabox.wpf/DynamicGrid/UIComponent/DynamicGridGridUIComponent.cs

@@ -725,20 +725,34 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
                         new Binding()
                         {
                             Path = new PropertyPath("."), Converter = CellBackgroundConverter,
-                            ConverterParameter = column
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
                         }));
                     cellstyle.Setters.Add(new Setter(Control.ForegroundProperty,
                         new Binding()
-                            { Converter = CellForegroundConverter, ConverterParameter = column }));
+                        {
+                            Converter = CellForegroundConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontSizeProperty,
                         new Binding()
-                            { Converter = CellFontSizeConverter, ConverterParameter = column }));
+                        { 
+                            Converter = CellFontSizeConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                            
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontStyleProperty,
                         new Binding()
-                            { Converter = CellFontStyleConverter, ConverterParameter = column }));
+                        { 
+                            Converter = CellFontStyleConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                            
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontWeightProperty,
                         new Binding()
-                            { Converter = CellFontWeightConverter, ConverterParameter = column }));
+                        {
+                            Converter = CellFontWeightConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     newcol.CellStyle = cellstyle;
 
                     DataGrid.Columns.Add(newcol);
@@ -854,13 +868,21 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
                     if (prop.Editor is null || !prop.Editor.Editable.IsDirectEditable())
                     {
                         cellstyle.Setters.Add(new Setter(Control.BackgroundProperty,
-                            new SolidColorBrush(Colors.WhiteSmoke)));
+                            new Binding()
+                            {
+                                Path = new PropertyPath("."), Converter = CellBackgroundConverter,
+                                ConverterParameter = new DynamicGridCellStyleParameters(column,new SolidColorBrush(Colors.WhiteSmoke))
+                            }));
                         newColumn.AllowEditing = false;
                     }
                     else
                     {
                         cellstyle.Setters.Add(new Setter(Control.BackgroundProperty,
-                            new SolidColorBrush(Colors.LightYellow)));
+                            new Binding()
+                            {
+                                Path = new PropertyPath("."), Converter = CellBackgroundConverter,
+                                ConverterParameter = new DynamicGridCellStyleParameters(column,new SolidColorBrush(Colors.LightYellow))
+                            }));
                         newColumn.AllowEditing = true;
                     }
 
@@ -873,20 +895,32 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
                         new Binding()
                         {
                             Path = new PropertyPath("."), Converter = CellBackgroundConverter,
-                            ConverterParameter = column
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
                         }));
                     cellstyle.Setters.Add(new Setter(Control.ForegroundProperty,
                         new Binding()
-                            { Converter = CellForegroundConverter, ConverterParameter = column }));
+                        {
+                            Converter = CellForegroundConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontSizeProperty,
                         new Binding()
-                            { Converter = CellFontSizeConverter, ConverterParameter = column }));
+                        { 
+                            Converter = CellFontSizeConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue) 
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontStyleProperty,
                         new Binding()
-                            { Converter = CellFontStyleConverter, ConverterParameter = column }));
+                        {
+                            Converter = CellFontStyleConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontWeightProperty,
                         new Binding()
-                            { Converter = CellFontWeightConverter, ConverterParameter = column }));
+                        {
+                            Converter = CellFontWeightConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     newColumn.CellStyle = cellstyle;
                 }
                 

+ 17 - 5
inabox.wpf/DynamicGrid/UIComponent/DynamicGridTreeUIComponent.cs

@@ -835,20 +835,32 @@ public class DynamicGridTreeUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
                         new Binding()
                         {
                             Path = new PropertyPath("."), Converter = CellBackgroundConverter,
-                            ConverterParameter = column.ColumnName
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
                         }));
                     cellstyle.Setters.Add(new Setter(Control.ForegroundProperty,
                         new Binding()
-                            { Converter = CellForegroundConverter, ConverterParameter = column.ColumnName }));
+                        {
+                            Converter = CellForegroundConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontSizeProperty,
                         new Binding()
-                            { Converter = CellFontSizeConverter, ConverterParameter = column.ColumnName }));
+                        {
+                            Converter = CellFontSizeConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontStyleProperty,
                         new Binding()
-                            { Converter = CellFontStyleConverter, ConverterParameter = column.ColumnName }));
+                        {
+                            Converter = CellFontStyleConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     cellstyle.Setters.Add(new Setter(Control.FontWeightProperty,
                         new Binding()
-                            { Converter = CellFontWeightConverter, ConverterParameter = column.ColumnName }));
+                        {
+                            Converter = CellFontWeightConverter, 
+                            ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
+                        }));
                     newColumn.CellStyle = cellstyle;
                 }