Parcourir la source

Privated Options

Kenric Nugteren il y a 1 an
Parent
commit
585d7a3bd2

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

@@ -108,7 +108,7 @@ namespace InABox.DynamicGrid
         /// <summary>
         /// Configure custom buttons and options.
         /// </summary>
-        protected void Reconfigure(FluentList<DynamicGridOption> options)
+        private void Reconfigure(FluentList<DynamicGridOption> options)
         {
             options.BeginUpdate().Clear();
             DoReconfigure(options);
@@ -124,6 +124,7 @@ namespace InABox.DynamicGrid
             OnReconfigure += onReconfigure;
             Reconfigure();
         }
+        public bool HasOption(DynamicGridOption option) => Options.Contains(option);
 
         public List<Expression<Func<T, object?>>> HiddenColumns { get; }
 
@@ -139,7 +140,7 @@ namespace InABox.DynamicGrid
 
         //public abstract bool DirectEdit(CoreTable data);
 
-        protected FluentList<DynamicGridOption> Options { get; }
+        private FluentList<DynamicGridOption> Options { get; }
 
         public DynamicGridColumns MasterColumns { get; protected set; }
         public DynamicGridColumns VisibleColumns { get; protected set; }

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

@@ -153,13 +153,13 @@ namespace InABox.DynamicGrid
             base.OptionsChanged(sender, args);
             if (MergeBtn != null)
                 MergeBtn.Visibility = Visibility.Collapsed;
-            ShowFilterList = Options.Contains(DynamicGridOption.FilterRows);
+            ShowFilterList = HasOption(DynamicGridOption.FilterRows);
         }
 
         protected override void SelectItems(CoreRow[]? rows)
         {
             base.SelectItems(rows);
-            MergeBtn.Visibility = Options.Contains(DynamicGridOption.MultiSelect) && typeof(TEntity).IsAssignableTo(typeof(IMergeable)) && Security.CanMerge<TEntity>() && rows != null && rows.Length > 1
+            MergeBtn.Visibility = HasOption(DynamicGridOption.MultiSelect) && typeof(TEntity).IsAssignableTo(typeof(IMergeable)) && Security.CanMerge<TEntity>() && rows != null && rows.Length > 1
                 ? Visibility.Visible
                 : Visibility.Collapsed;
         }
@@ -497,7 +497,7 @@ namespace InABox.DynamicGrid
 
         protected virtual void GenerateColumns(DynamicGridColumns columns)
         {
-            var cols = new Columns<TEntity>().Default(Options.Contains(DynamicGridOption.DirectEdit)
+            var cols = new Columns<TEntity>().Default(HasOption(DynamicGridOption.DirectEdit)
                 ? new[] { ColumnType.IncludeForeignKeys, ColumnType.ExcludeID }
                 : new ColumnType[] {
                     ColumnType.IncludeLinked, ColumnType.IncludeNestedLinks, ColumnType.IncludeFormulae,

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

@@ -55,7 +55,7 @@ namespace InABox.DynamicGrid
         {
             base.DoReconfigure(options);
 
-            Options.Add(DynamicGridOption.DragTarget);
+            options.Add(DynamicGridOption.DragTarget);
         }
 
         private bool SaveDocument(CoreRow? row)

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

@@ -754,31 +754,31 @@ namespace InABox.DynamicGrid
         {
             var reloadColumns = false;
 
-            ColumnsMenu.Visibility = Options.Contains(DynamicGridOption.SelectColumns) ? Visibility.Visible : Visibility.Hidden;
-            Help.Visibility = Options.Contains(DynamicGridOption.ShowHelp) ? Visibility.Visible : Visibility.Collapsed;
+            ColumnsMenu.Visibility = HasOption(DynamicGridOption.SelectColumns) ? Visibility.Visible : Visibility.Hidden;
+            Help.Visibility = HasOption(DynamicGridOption.ShowHelp) ? Visibility.Visible : Visibility.Collapsed;
 
-            Add.Visibility = Options.Contains(DynamicGridOption.AddRows) ? Visibility.Visible : Visibility.Collapsed;
-            Edit.Visibility = Options.Contains(DynamicGridOption.EditRows) ? Visibility.Visible : Visibility.Collapsed;
+            Add.Visibility = HasOption(DynamicGridOption.AddRows) ? Visibility.Visible : Visibility.Collapsed;
+            Edit.Visibility = HasOption(DynamicGridOption.EditRows) ? Visibility.Visible : Visibility.Collapsed;
 
-            EditSpacer.Visibility = Options.Contains(DynamicGridOption.AddRows) || Options.Contains(DynamicGridOption.EditRows)
+            EditSpacer.Visibility = HasOption(DynamicGridOption.AddRows) || HasOption(DynamicGridOption.EditRows)
                 ? Visibility.Visible
                 : Visibility.Collapsed;
 
-            Print.Visibility = Options.Contains(DynamicGridOption.Print) ? Visibility.Visible : Visibility.Collapsed;
-            PrintSpacer.Visibility = Options.Contains(DynamicGridOption.Print) ? Visibility.Visible : Visibility.Collapsed;
+            Print.Visibility = HasOption(DynamicGridOption.Print) ? Visibility.Visible : Visibility.Collapsed;
+            PrintSpacer.Visibility = HasOption(DynamicGridOption.Print) ? Visibility.Visible : Visibility.Collapsed;
 
             Cut.Visibility = IsSequenced ? Visibility.Visible : Visibility.Collapsed;
             Copy.Visibility = IsSequenced ? Visibility.Visible : Visibility.Collapsed;
             Paste.Visibility = IsSequenced ? Visibility.Visible : Visibility.Collapsed;
             ClipboardSpacer.Visibility = IsSequenced ? Visibility.Visible : Visibility.Collapsed;
 
-            Export.Visibility = Options.Contains(DynamicGridOption.ExportData) ? Visibility.Visible : Visibility.Collapsed;
-            Import.Visibility = Options.Contains(DynamicGridOption.ImportData) ? Visibility.Visible : Visibility.Collapsed;
-            ExportSpacer.Visibility = Options.Contains(DynamicGridOption.ExportData) || Options.Contains(DynamicGridOption.ImportData)
+            Export.Visibility = HasOption(DynamicGridOption.ExportData) ? Visibility.Visible : Visibility.Collapsed;
+            Import.Visibility = HasOption(DynamicGridOption.ImportData) ? Visibility.Visible : Visibility.Collapsed;
+            ExportSpacer.Visibility = HasOption(DynamicGridOption.ExportData) || HasOption(DynamicGridOption.ImportData)
                 ? Visibility.Visible
                 : Visibility.Collapsed;
 
-            var allowEditing = Options.Contains(DynamicGridOption.DirectEdit);
+            var allowEditing = HasOption(DynamicGridOption.DirectEdit);
             if (DataGrid.AllowEditing != allowEditing)
             {
                 DataGrid.NavigationMode = allowEditing ? NavigationMode.Cell : NavigationMode.Row;
@@ -786,13 +786,13 @@ namespace InABox.DynamicGrid
                 reloadColumns = true;
             }
 
-            Count.Visibility = Options.Contains(DynamicGridOption.RecordCount) ? Visibility.Visible : Visibility.Collapsed;
+            Count.Visibility = HasOption(DynamicGridOption.RecordCount) ? Visibility.Visible : Visibility.Collapsed;
 
-            Delete.Visibility = Options.Contains(DynamicGridOption.DeleteRows) ? Visibility.Visible : Visibility.Collapsed;
-            DataGrid.AllowFiltering = Options.Contains(DynamicGridOption.FilterRows);
-            DataGrid.FilterRowPosition = Options.Contains(DynamicGridOption.FilterRows) ? FilterRowPosition.FixedTop : FilterRowPosition.None;
+            Delete.Visibility = HasOption(DynamicGridOption.DeleteRows) ? Visibility.Visible : Visibility.Collapsed;
+            DataGrid.AllowFiltering = HasOption(DynamicGridOption.FilterRows);
+            DataGrid.FilterRowPosition = HasOption(DynamicGridOption.FilterRows) ? FilterRowPosition.FixedTop : FilterRowPosition.None;
 
-            if (Options.Contains(DynamicGridOption.DragSource))
+            if (HasOption(DynamicGridOption.DragSource))
             {
                 if (!DataGrid.AllowDraggingRows)
                 {
@@ -809,13 +809,13 @@ namespace InABox.DynamicGrid
                 }
             }
             
-            DataGrid.AllowDrop = Options.Contains(DynamicGridOption.DragTarget);
+            DataGrid.AllowDrop = HasOption(DynamicGridOption.DragTarget);
             
-            DataGrid.SelectionMode = Options.Contains(DynamicGridOption.MultiSelect) ? GridSelectionMode.Extended : GridSelectionMode.Single;
+            DataGrid.SelectionMode = HasOption(DynamicGridOption.MultiSelect) ? GridSelectionMode.Extended : GridSelectionMode.Single;
             if (up != null)
-                up.Position = Options.Contains(DynamicGridOption.EditRows) ? DynamicActionColumnPosition.Start : DynamicActionColumnPosition.Hidden;
+                up.Position = HasOption(DynamicGridOption.EditRows) ? DynamicActionColumnPosition.Start : DynamicActionColumnPosition.Hidden;
             if (down != null)
-                down.Position = Options.Contains(DynamicGridOption.EditRows) ? DynamicActionColumnPosition.Start : DynamicActionColumnPosition.Hidden;
+                down.Position = HasOption(DynamicGridOption.EditRows) ? DynamicActionColumnPosition.Start : DynamicActionColumnPosition.Hidden;
 
             if (DuplicateBtn != null)
                 DuplicateBtn.Visibility = Visibility.Collapsed;
@@ -855,7 +855,7 @@ namespace InABox.DynamicGrid
 
         private void DataGrid_CurrentCellActivated(object? sender, CurrentCellActivatedEventArgs e)
         {
-            if (!Options.Contains(DynamicGridOption.DirectEdit))
+            if (!HasOption(DynamicGridOption.DirectEdit))
                 return;
             if ((DataGrid.SelectionController.CurrentCellManager.CurrentCell?.IsEditing != true) && e.ActivationTrigger == ActivationTrigger.Keyboard)
                 DataGrid.SelectionController.CurrentCellManager.BeginEdit();
@@ -924,7 +924,7 @@ namespace InABox.DynamicGrid
 
         private CoreRow? GetRowFromIndex(int rowIndex)
         {
-            var row = rowIndex - (Options.Contains(DynamicGridOption.FilterRows) ? 2 : 1);
+            var row = rowIndex - (HasOption(DynamicGridOption.FilterRows) ? 2 : 1);
             if (row < 0 || DataGridItems is null)
                 return null;
             row = DataGridItems.Rows.IndexOf((DataGrid.View.Records[row].Data as DataRowView)!.Row);
@@ -992,7 +992,7 @@ namespace InABox.DynamicGrid
 
         private void DataGrid_CurrentCellBeginEdit(object? sender, CurrentCellBeginEditEventArgs e)
         {
-            var headerrows = Options.Contains(DynamicGridOption.FilterRows) ? 2 : 1;
+            var headerrows = HasOption(DynamicGridOption.FilterRows) ? 2 : 1;
             if (e.RowColumnIndex.RowIndex < headerrows || DataGridItems is null)
                 return;
 
@@ -1022,7 +1022,7 @@ namespace InABox.DynamicGrid
 
         private void DataGrid_CurrentCellValueChanged(object? sender, CurrentCellValueChangedEventArgs e)
         {
-            var headerrows = Options.Contains(DynamicGridOption.FilterRows) ? 2 : 1;
+            var headerrows = HasOption(DynamicGridOption.FilterRows) ? 2 : 1;
             if (e.RowColumnIndex.RowIndex < headerrows)
                 return;
             if (e.Column is GridCheckBoxColumn)
@@ -1037,7 +1037,7 @@ namespace InABox.DynamicGrid
 
         private void DataGrid_CurrentCellDropDownSelectionChanged(object? sender, CurrentCellDropDownSelectionChangedEventArgs e)
         {
-            var headerrows = Options.Contains(DynamicGridOption.FilterRows) ? 2 : 1;
+            var headerrows = HasOption(DynamicGridOption.FilterRows) ? 2 : 1;
             if (e.RowColumnIndex.RowIndex < headerrows)
                 return;
             inplaceeditor ??= LoadItem(Data.Rows[e.RowColumnIndex.RowIndex - headerrows]);
@@ -1062,7 +1062,7 @@ namespace InABox.DynamicGrid
 
         private void DataGrid_CurrentCellEndEdit(object? sender, CurrentCellEndEditEventArgs e)
         {
-            var headerrows = Options.Contains(DynamicGridOption.FilterRows) ? 2 : 1;
+            var headerrows = HasOption(DynamicGridOption.FilterRows) ? 2 : 1;
             if (e.RowColumnIndex.RowIndex < headerrows)
                 return;
             if (inplaceeditor is not null && bChanged) 
@@ -1081,7 +1081,7 @@ namespace InABox.DynamicGrid
                 return;
             var table = DataGridItems;
             
-            var iRow = SelectedRows.First().Index; //e.RowColumnIndex.RowIndex - (Options.Contains(DynamicGridOptions.FilterRows) ? 2 : 1);
+            var iRow = SelectedRows.First().Index; //e.RowColumnIndex.RowIndex - (HasOption(DynamicGridOptions.FilterRows) ? 2 : 1);
             if (table is null || iRow > table.Rows.Count)
                 return;
             var row = table.Rows[iRow];
@@ -1223,8 +1223,8 @@ namespace InABox.DynamicGrid
             foreach (var row in rows.Where(x => x.Index > -1))
             {
                 //DataTable table = (DataTable)DataGrid.ItemsSource;
-                if (bFirst || Options.Contains(DynamicGridOption.MultiSelect))
-                    DataGrid.SelectedItems.Add(DataGrid.GetRecordAtRowIndex(row.Index + (Options.Contains(DynamicGridOption.FilterRows) ? 2 : 1)));
+                if (bFirst || HasOption(DynamicGridOption.MultiSelect))
+                    DataGrid.SelectedItems.Add(DataGrid.GetRecordAtRowIndex(row.Index + (HasOption(DynamicGridOption.FilterRows) ? 2 : 1)));
                 bFirst = false;
             }
         }
@@ -1326,7 +1326,7 @@ namespace InABox.DynamicGrid
             if ((columnindex < 0) || (columnindex >= ColumnList.Count))
                 return;
             var column = ColumnList[columnindex] as DynamicActionColumn;
-            var rowindex = rowcolumnindex.RowIndex - (Options.Contains(DynamicGridOption.FilterRows) ? 2 : 1);
+            var rowindex = rowcolumnindex.RowIndex - (HasOption(DynamicGridOption.FilterRows) ? 2 : 1);
             if (rowindex < 0)
                 return;
             var row = Data.Rows[rowindex];
@@ -1393,7 +1393,7 @@ namespace InABox.DynamicGrid
 
         protected virtual void DoDoubleClick(object sender)
         {
-            if (Options.Contains(DynamicGridOption.DirectEdit))
+            if (HasOption(DynamicGridOption.DirectEdit))
                 return;
 
             SelectItems(SelectedRows);
@@ -1401,7 +1401,7 @@ namespace InABox.DynamicGrid
             OnDoubleClick?.Invoke(sender, args);
             if (args.Handled)
                 return;
-            if (Options.Contains(DynamicGridOption.EditRows))
+            if (HasOption(DynamicGridOption.EditRows))
                 DoEdit();
         }
 
@@ -1432,7 +1432,7 @@ namespace InABox.DynamicGrid
         {
             var result = new DynamicGridColumns();
 
-            var cols = Options.Contains(DynamicGridOption.DirectEdit)
+            var cols = HasOption(DynamicGridOption.DirectEdit)
                 ? new Columns<T>().Default(ColumnType.IncludeForeignKeys, ColumnType.ExcludeID)
                 : new Columns<T>().Default(ColumnType.IncludeLinked, ColumnType.ExcludeID);
             result.AddRange(MasterColumns.Where(x => cols.Items.Any(c => c.Property.Equals(x.ColumnName)))
@@ -1834,7 +1834,7 @@ namespace InABox.DynamicGrid
                     }
                     else if (prop.PropertyType == typeof(bool))
                     {
-                        if (Options.Contains(DynamicGridOption.DirectEdit))
+                        if (HasOption(DynamicGridOption.DirectEdit))
                         {
                             var checkcol = new GridCheckBoxColumn
                             {
@@ -1916,7 +1916,7 @@ namespace InABox.DynamicGrid
                             () =>
                             {
                                 var result = new DockPanel();
-                                if (Options.Contains(DynamicGridOption.DirectEdit))
+                                if (HasOption(DynamicGridOption.DirectEdit))
                                 {
                                     var button = new Button();
                                     button.Content = "..";
@@ -2007,7 +2007,7 @@ namespace InABox.DynamicGrid
                         newcol = textcol;
                         if (prop.PropertyType == typeof(string[]))
                             newcol.DisplayBinding = new Binding { Path = new PropertyPath(scolname), Converter = new StringArrayConverter() };
-                        textcol.AllowEditing = Options.Contains(DynamicGridOption.DirectEdit);
+                        textcol.AllowEditing = HasOption(DynamicGridOption.DirectEdit);
                         textcol.UpdateTrigger = UpdateSourceTrigger.PropertyChanged;
                     }
 
@@ -2046,7 +2046,7 @@ namespace InABox.DynamicGrid
                     newcol.HeaderStyle = headstyle;
 
                     var cellstyle = new Style();
-                    if (Options.Contains(DynamicGridOption.DirectEdit))
+                    if (HasOption(DynamicGridOption.DirectEdit))
                     {
                         if (prop.Editor is null || !prop.Editor.Editable.IsDirectEditable())
                         {
@@ -2417,7 +2417,7 @@ namespace InABox.DynamicGrid
                 if (!result.Columns.Contains(colname))
                 {
                     result.Columns.Add(colname, column.DataType);
-                    if (!Options.Contains(DynamicGridOption.DirectEdit))
+                    if (!HasOption(DynamicGridOption.DirectEdit))
                         defaults.Add(column.DataType.GetDefault());
                 }
             }
@@ -2456,7 +2456,7 @@ namespace InABox.DynamicGrid
         {
             var count = DataGrid.View != null ? DataGrid.View.Records.Count : Data.Rows.Count;
             Count.Content = string.Format("{0} Records", count);
-            //Count.Visibility = _Options.Contains(DynamicGridOptions.RecordCount) && (count > 0) ? Visibility.Visible : Visibility.Collapsed;
+            //Count.Visibility = _HasOption(DynamicGridOptions.RecordCount) && (count > 0) ? Visibility.Visible : Visibility.Collapsed;
         }
 
         public IList<CoreRow> FilteredRows()
@@ -2728,7 +2728,7 @@ namespace InABox.DynamicGrid
         {
             //CoreRow row = (SelectedRow > -1) && (SelectedRow < Data.Rows.Count) ?  Data.Rows[this.SelectedRow] : null;
 
-            if (Options.Contains(DynamicGridOption.DirectEdit) && !OpenEditorOnDirectEdit)
+            if (HasOption(DynamicGridOption.DirectEdit) && !OpenEditorOnDirectEdit)
             {
                 if (!CanCreateItems())
                     return;
@@ -3585,7 +3585,7 @@ namespace InABox.DynamicGrid
         private void SelectColumnsClick(object sender, RoutedEventArgs e)
         {
             var editor = new DynamicGridColumnsEditor(typeof(T));
-            editor.DirectEdit = Options.Contains(DynamicGridOption.DirectEdit);
+            editor.DirectEdit = HasOption(DynamicGridOption.DirectEdit);
 
             editor.Columns.AddRange(VisibleColumns);
 
@@ -3614,7 +3614,7 @@ namespace InABox.DynamicGrid
         {
             Logger.Send(LogType.Information,"","DataGrid_Drop");
             
-            if (!Options.Contains(DynamicGridOption.DragTarget))
+            if (!HasOption(DynamicGridOption.DragTarget))
                 return;
             
             Logger.Send(LogType.Information,"","DataGrid_Drop::DragTarget==true");
@@ -3673,7 +3673,7 @@ namespace InABox.DynamicGrid
             Logger.Send(LogType.Information,"","RowDragDropController_DragStart");
             //e.Handled = true;
             
-            if (!Options.Contains(DynamicGridOption.DragSource))
+            if (!HasOption(DynamicGridOption.DragSource))
                 return;
             
             var rows = new List<CoreRow>();
@@ -3888,7 +3888,7 @@ namespace InABox.DynamicGrid
 
         private void CheckPreviewMouseDown(object sender, MouseButtonEventArgs e)
         {
-            if (!Options.Contains(DynamicGridOption.DragSource))
+            if (!HasOption(DynamicGridOption.DragSource))
                 return;
             if (e.LeftButton == MouseButtonState.Pressed)
             {
@@ -3901,7 +3901,7 @@ namespace InABox.DynamicGrid
         //{
         //    Logger.Send(LogType.Information, this.GetType().EntityName(), String.Format("Checking Mouse Move: StartPoint = {0},{1}", startpoint.X, startpoint.Y));
 
-        //    if (!_Options.Contains(DynamicGridOptions.DragSource))
+        //    if (!_HasOption(DynamicGridOptions.DragSource))
         //        return;
         //    Vector diff = startpoint - e.GetPosition(null);
         //    Logger.Send(LogType.Information, this.GetType().EntityName(), String.Format("Checking Mouse Move: StartPoint = {0},{1} Diff = {2},{3}", startpoint.X, startpoint.Y, diff.X, diff.Y));
@@ -3919,7 +3919,7 @@ namespace InABox.DynamicGrid
 
         private void CheckPreviewMouseUp(object sender, MouseButtonEventArgs e)
         {
-            if (!Options.Contains(DynamicGridOption.DragSource))
+            if (!HasOption(DynamicGridOption.DragSource))
                 return;
 
             Logger.Send(LogType.Information, GetType().EntityName(), "Clearing Start Point");

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

@@ -114,7 +114,7 @@ namespace InABox.DynamicGrid
 
         public virtual void Load(object item, Func<Type, CoreTable>? PageDataHandler)
         {
-            Reconfigure(Options);
+            Reconfigure();
 
             Item = (TOne)item;
             

+ 10 - 8
inabox.wpf/DynamicGrid/IDynamicGrid.cs

@@ -35,14 +35,6 @@ namespace InABox.DynamicGrid
         double FontSize { get; set; }
         void Refresh(bool columns, bool data);
 
-        public abstract void Reconfigure();
-
-        /// <summary>
-        /// Add <paramref name="onReconfigure"/> to <see cref="OnReconfigure"/>, and then call <see cref="Reconfigure"/>
-        /// </summary>
-        /// <param name="onReconfigure"></param>
-        public void Reconfigure(ReconfigureEvent onReconfigure);
-
         void InitialiseEditorForm(IDynamicEditorForm editor, object[] items, Func<Type, CoreTable>? pageDataHandler = null, bool preloadPages = false);
         bool EditItems(object[] items, Func<Type, CoreTable>? PageDataHandler = null, bool PreloadPages = false);
 
@@ -56,6 +48,16 @@ namespace InABox.DynamicGrid
         delegate void ReconfigureEvent(FluentList<DynamicGridOption> options);
         event ReconfigureEvent? OnReconfigure;
 
+        public abstract void Reconfigure();
+
+        /// <summary>
+        /// Add <paramref name="onReconfigure"/> to <see cref="OnReconfigure"/>, and then call <see cref="Reconfigure"/>
+        /// </summary>
+        /// <param name="onReconfigure"></param>
+        public void Reconfigure(ReconfigureEvent onReconfigure);
+
+        public bool HasOption(DynamicGridOption option);
+
         void AddVisualFilter(string column, string value, FilterType filtertype = FilterType.Contains);
 
         Button AddButton(string caption, BitmapImage? image, string? tooltip, Func<Button, CoreRow[], bool> action, DynamicGridButtonPosition position = DynamicGridButtonPosition.Left);