コード例 #1
0
        protected GridColumnSettings AddColumnSettings(Enum enumValue)
        {
            var columnSettings = new GridColumnSettings(enumValue.ToString());

            _columnSettings.Add(columnSettings);
            return(columnSettings);
        }
コード例 #2
0
 public static bool ColumnIsGroupable(GridColumnSettings gridColumnSettings)
 {
     if (_nonGroupableColumns.Contains(gridColumnSettings.PropertyNameId))
     {
         return(false);
     }
     return(true);
 }
コード例 #3
0
        public void ApplyColumnSettings(GridColumnSettings columnSettings)
        {
            if (!AllColumnSettings.Contains(columnSettings))
            {
                return;
            }

            _view.ApplyColumnSettings(columnSettings);
        }
コード例 #4
0
        public void Should_create_bound_column_from_column_settings()
        {
            var columnSettings = new GridColumnSettings<Customer>
            {
                Member = "Name"
            };

            var column = (GridBoundColumn<Customer, string>)generator.CreateColumn(columnSettings);
            Assert.Equal("Name", column.Member);
        }
コード例 #5
0
        public void Member_should_set_title()
        {
            var settings = new GridColumnSettings<Customer>
            {
                Member = "Name"
            };

            var column = (GridBoundColumn<Customer, string>)generator.CreateColumn(settings);
            Assert.Equal(column.Title, "Name");
        }
コード例 #6
0
        public void Should_create_bound_column_from_column_settings()
        {
            var columnSettings = new GridColumnSettings <Customer>
            {
                Member = "Name"
            };

            var column = (GridBoundColumn <Customer, string>)generator.CreateColumn(columnSettings);

            Assert.Equal("Name", column.Member);
        }
コード例 #7
0
        public void Member_should_set_title()
        {
            var settings = new GridColumnSettings <Customer>
            {
                Member = "Name"
            };

            var column = (GridBoundColumn <Customer, string>)generator.CreateColumn(settings);

            Assert.Equal(column.Title, "Name");
        }
コード例 #8
0
        public void ApplyColumnSettings(GridColumnSettings columnSettings)
        {
            var gridColumn = FindColumnByName(columnSettings.ColumnName);

            if (gridColumn == null)
            {
                return;
            }

            DoWithoutColumnSettingsUpdateNotification(() => columnSettings.ApplyTo(gridColumn));
        }
コード例 #9
0
 public static string GetInitialColumnHeader(GridColumnSettings gridColumnSettings)
 {
     try
     {
         var attr = GetPropertyAttribute <GridColumnAttribute>(gridColumnSettings.PropertyNameId);
         return((attr != null) ? attr.Header : null);
     }
     catch (PropertyNotFoundException)
     {
         return(null);
     }
 }
コード例 #10
0
 public static object GetColumnExampleValue(GridColumnSettings gridColumnSettings)
 {
     try
     {
         var attr = GetPropertyAttribute <GridColumnAttribute>(gridColumnSettings.PropertyNameId);
         return((attr != null) ? attr.ExampleValue : null);
     }
     catch (PropertyNotFoundException)
     {
         return(null);
     }
 }
コード例 #11
0
 public static bool ColumnIsGroupable(GridColumnSettings gridColumnSettings)
 {
     try
     {
         var attr = GetPropertyAttribute <NonGroupableAttribute>(gridColumnSettings.PropertyNameId);
         return(attr == null);
     }
     catch (PropertyNotFoundException)
     {
         return(false);
     }
 }
コード例 #12
0
        public void Should_set_template()
        {
            var settings = new GridColumnSettings <Customer>
            {
                Member   = "Name",
                Template = delegate { }
            };

            var column = (GridBoundColumn <Customer, string>)generator.CreateColumn(settings);

            Assert.Equal(column.Template, settings.Template);
        }
コード例 #13
0
        /// <summary>
        ///    updates Visibility, VisibleIndex, GroupIndex in GridColumnSettings by values of corresponding GridColumn
        /// </summary>
        /// <param name="columnSettings"></param>
        private void updateColumnSettings(GridColumnSettings columnSettings)
        {
            var gridColumn = FindColumnByName(columnSettings.ColumnName);

            if (gridColumn == null)
            {
                return;
            }

            columnSettings.GroupIndex   = gridColumn.GroupIndex;
            columnSettings.Visible      = gridColumn.Visible;
            columnSettings.VisibleIndex = gridColumn.VisibleIndex;
            columnSettings.Width        = gridColumn.Width;
        }
コード例 #14
0
        public static IList <GridColumnSettings> GetColumns(DataTable dataTable)
        {
            IList <GridColumnSettings> columnList = new List <GridColumnSettings>();
            List <DataColumn>          dc         = dataTable.Columns.Cast <DataColumn>().ToList();

            foreach (DataColumn dataColumn in dc)
            {
                GridColumnSettings gridColumnSettings = new GridColumnSettings();
                gridColumnSettings.Member     = dataColumn.ColumnName;
                gridColumnSettings.Title      = dataColumn.ColumnName;
                gridColumnSettings.MemberType = dataColumn.DataType;
                columnList.Add(gridColumnSettings);
            }
            return(columnList);
        }
コード例 #15
0
 internal static IList <ColumnSetting> GetGridColumnSettingsByEntityAlias(string langCode, EntitiesAlias entity, bool forceUpdate = false, bool isGridSetting = false)
 {
     if (!GridColumnSettings.ContainsKey(langCode))
     {
         GridColumnSettings.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <ColumnSetting> >());
     }
     if (!GridColumnSettings[langCode].ContainsKey(entity))
     {
         GridColumnSettings[langCode].GetOrAdd(entity, _commands.GetGridColumnSettingsByEntityAlias(langCode, entity, isGridSetting));
     }
     else if (!GridColumnSettings[langCode][entity].Any() || forceUpdate)
     {
         GridColumnSettings[langCode].AddOrUpdate(entity, _commands.GetGridColumnSettingsByEntityAlias(langCode, entity, isGridSetting));
     }
     return(GridColumnSettings[langCode][entity]);
 }
コード例 #16
0
 /// <summary>
 ///     To start English version of it on Application start
 /// </summary>
 /// <param name="langCode">1 for EN</param>
 public static void Initialize(string langCode)
 {
     Tables = new Dictionary <EntitiesAlias, TableReference>();
     RibbonMenus.GetOrAdd(langCode, new List <RibbonMenu>());
     IdRefLangNames.GetOrAdd(langCode, new ConcurrentDictionary <int, IList <IdRefLangName> >());
     PageInfos.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <PageInfo> >());
     Operations.GetOrAdd(langCode, new ConcurrentDictionary <LookupEnums, IList <Operation> >());
     DisplayMessages.GetOrAdd(langCode, new ConcurrentDictionary <string, DisplayMessage>());
     ColumnSettings.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <ViewModels.ColumnSetting> >());
     GridColumnSettings.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <ViewModels.ColumnSetting> >());
     ValidationRegExpressions.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <ValidationRegEx> >());
     MasterTables.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, object>());
     ConditionalOperators.GetOrAdd(langCode, new List <ConditionalOperator>());
     SysSettings.GetOrAdd(langCode, new SysSetting());
     BusinessConfiguration.GetOrAdd(langCode, new BusinessConfiguration());
 }
コード例 #17
0
        /// <summary>
        ///     To start English version of it on Application start
        /// </summary>
        /// <param name="langCode">1 for EN</param>
        public static void Initialize(string langCode)
        {
            RibbonMenus.GetOrAdd(langCode, new List <RibbonMenu>());
            IdRefLangNames.GetOrAdd(langCode, new ConcurrentDictionary <int, IList <IdRefLangName> >());
            PageInfos.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <PageInfo> >());
            Operations.GetOrAdd(langCode, new ConcurrentDictionary <LookupEnums, IList <Operation> >());
            DisplayMessages.GetOrAdd(langCode, new ConcurrentDictionary <string, DisplayMessage>());
            ColumnSettings.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <ColumnSetting> >());
            GridColumnSettings.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <ColumnSetting> >());
            ValidationRegExpressions.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, IList <ValidationRegEx> >());
            MasterTables.GetOrAdd(langCode, new ConcurrentDictionary <EntitiesAlias, object>());
            ConditionalOperators.GetOrAdd(langCode, new List <ConditionalOperator>());
            BusinessConfiguration.GetOrAdd(langCode, new BusinessConfiguration());
            List <Task> tasks = new List <Task>();

            tasks.Add(Task.Factory.StartNew(() =>
            {
                GetRibbonMenus(langCode);
                GetTables();
                InitializerOperations(langCode);
                GetSystemSettings(langCode);
            }));

            if (tasks.Count > 0)
            {
                Task.WaitAll(tasks.ToArray());
            }

            #region Nav Cache Commented Code

            ////string username = M4PBusinessContext.ComponentSettings.NavAPIUserName;
            ////string password = M4PBusinessContext.ComponentSettings.NavAPIPassword;
            ////string serviceURL = M4PBusinessContext.ComponentSettings.NavAPIUrl;
            ////NAVOrderItemResponse.GetOrAdd(langCode, new NAVOrderItemResponse());
            ////DimensionValues.GetOrAdd(langCode, new NavSalesOrderDimensionResponse());
            ////GetNavSalesOrderDimensionValues(langCode, username, password, serviceURL);
            ////CachedNavSalesOrder.GetOrAdd(langCode, new NavSalesOrderPostedInvoiceResponse());
            ////GetCachedNavSalesOrderValues(langCode, username, password, serviceURL);
            ////CachedNavPurchaseOrder.GetOrAdd(langCode, new NavPurchaseOrderPostedInvoiceResponse());
            ////GetCachedNavPurchaseOrderValues(langCode, username, password, serviceURL);
            ////CachedNavSalesLine.GetOrAdd(langCode, new NavSalesOrderItemResponse());
            ////GetCachedNavSalesOrderItemValues(langCode, username, password, serviceURL);
            ////CachedNavPurchaseLine.GetOrAdd(langCode, new NavPurchaseOrderItemResponse());
            ////GetCachedNavPurchaseOrderItemValues(langCode, username, password, serviceURL);

            #endregion Nav Cache Commented Code
        }
コード例 #18
0
        public static void ApplyTo(this GridColumnSettings columnSettings, GridColumn gridColumn)
        {
            gridColumn.Visible    = columnSettings.Visible;
            gridColumn.Caption    = columnSettings.Caption;
            gridColumn.GroupIndex = columnSettings.GroupIndex;

            if (columnSettings.Visible && columnSettings.VisibleIndex != GridColumnSettings.INDEX_NOT_DEFINED)
            {
                gridColumn.VisibleIndex = columnSettings.VisibleIndex;
            }

            gridColumn.Width = columnSettings.Width;

            if (!string.IsNullOrEmpty(columnSettings.SortColumnName) && gridColumn.View.Columns.ColumnByFieldName(columnSettings.SortColumnName) != null)
            {
                gridColumn.FieldNameSortGroup = columnSettings.SortColumnName;
            }
        }
コード例 #19
0
        public void Should_set_bound_column_properties()
        {
            var settings = new GridColumnSettings <Customer>
            {
                Member               = "Name",
                Sortable             = false,
                ClientTemplate       = "foo",
                Encoded              = false,
                Filterable           = false,
                Format               = "{0}",
                Groupable            = false,
                HeaderHtmlAttributes = { },
                Hidden               = true,
                HtmlAttributes       = { },
#if MVC2 || MVC3
                ReadOnly = true,
#endif
                Title   = "foo",
                Visible = false,
                Width   = "100"
            };

            var column = (GridBoundColumn <Customer, string>)generator.CreateColumn(settings);

            Assert.Equal(column.Sortable, settings.Sortable);
            Assert.Equal(column.ClientTemplate, settings.ClientTemplate);
            Assert.Equal(column.Encoded, settings.Encoded);
            Assert.Equal(column.Filterable, settings.Filterable);
            Assert.Equal(column.Format, settings.Format);
            Assert.Equal(column.Groupable, settings.Groupable);
            Assert.Equal(column.HeaderHtmlAttributes, settings.HeaderHtmlAttributes);
            Assert.Equal(column.Hidden, settings.Hidden);
            Assert.Equal(column.HtmlAttributes, settings.HtmlAttributes);
#if MVC2 || MVC3
            Assert.Equal(column.ReadOnly, settings.ReadOnly);
#endif
            Assert.Equal(column.Title, settings.Title);
            Assert.Equal(column.Visible, settings.Visible);
            Assert.Equal(column.Width, settings.Width);
        }
コード例 #20
0
        public static void SyncColumnSettings(ObservableCollection <DataGridColumn> columns, GridSettings gridSettings)
        {
            try
            {
                foreach (DataGridBoundColumn column in columns.OfType <DataGridBoundColumn>())
                {
                    string             propertyName   = column.GetBindedProperty();
                    GridColumnSettings columnSettings = gridSettings.Columns[propertyName];
                    if (columnSettings == null)
                    {
                        continue;
                    }

                    columnSettings.Visible      = (column.Visibility == Visibility.Visible);
                    columnSettings.DisplayIndex = column.DisplayIndex;
                    columnSettings.Width        = column.Width.IsAuto ? double.NaN : column.ActualWidth;
                }
            }
            catch (Exception ex)
            {
                ex.TraceUnknownException();
            }
        }
コード例 #21
0
        public void Should_set_type_when_bound_to_dataTable()
        {
            const string firstColumnName  = "Column1";
            const string secondColumnName = "Column2";

            var dataTable = new DataTable();

            dataTable.Columns.Add(firstColumnName, typeof(int));
            dataTable.Columns.Add(secondColumnName, typeof(DateTime));

            var grid = GridTestHelper.CreateGrid <DataRowView>();

            var settings = new GridColumnSettings
            {
                Member     = firstColumnName,
                MemberType = typeof(int)
            };

            var dataTableColumnGenerator = new GridColumnGenerator <DataRowView>(grid);

            var column = (IGridBoundColumn)dataTableColumnGenerator.CreateColumn(settings);

            column.MemberType.ShouldEqual(typeof(int));
        }
コード例 #22
0
 protected GridColumnBase(Grid <T> grid)
 {
     Grid     = grid;
     Settings = new GridColumnSettings();
     Visible  = true;
 }
コード例 #23
0
 public void ApplyColumnSettings(GridColumnSettings columnSettings) => _presentersWithColumnSettings.Each(x => x.ApplyColumnSettings(columnSettings));
コード例 #24
0
        public static void GenerateColumns(ObservableCollection <DataGridColumn> columns, GridSettings gridSettings)
        {
            try
            {
                try
                {
                    columns.Clear();
                }
                catch (ArgumentOutOfRangeException)
                {
                    // DataGrid or DataGridColumn issue?
                    // Saving VisualStudio|Options|BuildVision settings causes ArgumentOutOfRangeException (DisplayIndex)
                    // at columns.Clear if BuildVision toolwindow was hidden since VisualStudio start (only in this case).
                    // For the second time without any errors.
                    columns.Clear();
                }

                var tmpColumnsList = new List <DataGridColumn>();
                foreach (PropertyInfo property in GetItemProperties())
                {
                    GridColumnAttribute columnConfiguration = property.GetCustomAttribute <GridColumnAttribute>();
                    if (columnConfiguration == null)
                    {
                        continue;
                    }

                    string             propertyName = property.Name;
                    GridColumnSettings columnSettings;

                    if (gridSettings.Columns[propertyName] != null)
                    {
                        columnSettings = gridSettings.Columns[propertyName];
                    }
                    else
                    {
                        columnSettings = new GridColumnSettings(
                            propertyName,
                            columnConfiguration.Header,
                            columnConfiguration.Visible,
                            columnConfiguration.DisplayIndex,
                            columnConfiguration.Width,
                            columnConfiguration.ValueStringFormat);
                        gridSettings.Columns.Add(columnSettings);
                    }

                    DataGridBoundColumn column = CreateColumn(property);
                    InitColumn(column, columnConfiguration, columnSettings, gridSettings.SortDescription);
                    tmpColumnsList.Add(column);
                }

                tmpColumnsList.Sort((col1, col2) => col1.DisplayIndex.CompareTo(col2.DisplayIndex));
                for (int i = 0; i < tmpColumnsList.Count; i++)
                {
                    var column = tmpColumnsList[i];

                    // We aren't able to afford coincidence of indexes, otherwise UI will hang.
                    column.DisplayIndex = i;
                    columns.Add(column);
                }
            }
            catch (Exception ex)
            {
                ex.TraceUnknownException();
            }
        }
コード例 #25
0
        public void Should_set_template()
        {
            var settings = new GridColumnSettings<Customer>
            {
                Member = "Name",
                Template = delegate { }
            };

            var column = (GridBoundColumn<Customer, string>)generator.CreateColumn(settings);
            Assert.Equal(column.Template, settings.Template);
        }
コード例 #26
0
        private static void InitColumn(
            DataGridBoundColumn column,
            GridColumnAttribute columnConfiguration,
            GridColumnSettings columnSettings,
            SortDescription sortDescription)
        {
            if (string.IsNullOrEmpty(columnConfiguration.ImageKey))
            {
                column.Header = columnSettings.Header;
            }
            else if (columnConfiguration.ImageKey == GridColumnAttribute.EmptyHeaderImageKey)
            {
                column.Header = null;
            }
            else
            {
                const int ImgHeight = 14;
                const int ImgWidth  = 14;

                if (string.IsNullOrEmpty(columnConfiguration.ImageDictionaryUri))
                {
                    var imgRes = Resources.ResourceManager.GetObject(columnConfiguration.ImageKey);
                    var img    = (System.Drawing.Bitmap)imgRes;
                    column.Header = new Image
                    {
                        Source  = img.ToMediaBitmap(),
                        Width   = ImgWidth,
                        Height  = ImgHeight,
                        Stretch = Stretch.Uniform,
                        Tag     = columnSettings.Header
                    };
                }
                else
                {
                    var controlTemplate = VectorResources.TryGet(columnConfiguration.ImageDictionaryUri, columnConfiguration.ImageKey);
                    column.Header = new ContentControl
                    {
                        Template     = controlTemplate,
                        Width        = ImgWidth,
                        Height       = ImgHeight,
                        ClipToBounds = true,
                        Tag          = columnSettings.Header
                    };
                }
            }

            column.Visibility = columnSettings.Visible ? Visibility.Visible : Visibility.Collapsed;

            if (columnSettings.DisplayIndex != -1)
            {
                column.DisplayIndex = columnSettings.DisplayIndex;
            }

            if (!double.IsNaN(columnSettings.Width))
            {
                column.Width = new DataGridLength(columnSettings.Width);
            }

            if (columnSettings.ValueStringFormat != null)
            {
                column.Binding.StringFormat = columnSettings.ValueStringFormat;
            }

            if (column.GetBindedProperty() == sortDescription.SortPropertyName)
            {
                column.SortDirection = sortDescription.SortOrder.ToSystem();
            }

            string columnName = columnSettings.Header;

            if (string.IsNullOrEmpty(columnName))
            {
                columnName = columnConfiguration.Header;
            }

            column.SetValue(DataGridColumnExtensions.NameProperty, columnName);
        }
コード例 #27
0
        public void Should_set_type_when_bound_to_dataTable()
        {
            const string firstColumnName = "Column1";
            const string secondColumnName = "Column2";

            var dataTable = new DataTable();
            dataTable.Columns.Add(firstColumnName, typeof(int));
            dataTable.Columns.Add(secondColumnName, typeof(DateTime));

            var grid = GridTestHelper.CreateGrid<DataRowView>();

            var settings = new GridColumnSettings
            {
                Member = firstColumnName,
                MemberType = typeof(int)
            };

            var dataTableColumnGenerator = new GridColumnGenerator<DataRowView>(grid);

            var column = (IGridBoundColumn)dataTableColumnGenerator.CreateColumn(settings);
            column.MemberType.ShouldEqual(typeof(int));
        }
コード例 #28
0
        public void Should_set_bound_column_properties()
        {
            var settings = new GridColumnSettings<Customer>
            {
                Member = "Name",
                Sortable = false,
                ClientTemplate = "foo",
                Encoded = false,
                Filterable = false,
                Format = "{0}",
                Groupable = false,
                HeaderHtmlAttributes = { },
                Hidden = true,
                HtmlAttributes = { },
            #if MVC2 || MVC3
                ReadOnly = true,
            #endif
                Title = "foo",
                Visible = false,
                Width = "100"
            };

            var column = (GridBoundColumn<Customer, string>)generator.CreateColumn(settings);
            Assert.Equal(column.Sortable, settings.Sortable);
            Assert.Equal(column.ClientTemplate, settings.ClientTemplate);
            Assert.Equal(column.Encoded, settings.Encoded);
            Assert.Equal(column.Filterable, settings.Filterable);
            Assert.Equal(column.Format, settings.Format);
            Assert.Equal(column.Groupable, settings.Groupable);
            Assert.Equal(column.HeaderHtmlAttributes, settings.HeaderHtmlAttributes);
            Assert.Equal(column.Hidden, settings.Hidden);
            Assert.Equal(column.HtmlAttributes, settings.HtmlAttributes);
            #if MVC2 || MVC3
            Assert.Equal(column.ReadOnly, settings.ReadOnly);
            #endif
            Assert.Equal(column.Title, settings.Title);
            Assert.Equal(column.Visible, settings.Visible);
            Assert.Equal(column.Width, settings.Width);
        }