Example #1
0
        private void PaintGroupRow(GridGroup gridGroup, DataGridViewRowPrePaintEventArgs e)
        {
            Rectangle rect = e.RowBounds;
            var gradBrush = new LinearGradientBrush(rect, SystemColors.ControlLight, SystemColors.ControlLightLight,
                                                    LinearGradientMode.Vertical);
            e.Graphics.FillRectangle(gradBrush, rect);

            e.Graphics.DrawLine(SystemPens.ButtonShadow, rect.Left, rect.Top, rect.Width, rect.Top);
            e.Graphics.DrawLine(SystemPens.ButtonHighlight, rect.Left, rect.Top + 1, rect.Width, rect.Top + 1);
            e.Graphics.DrawLine(SystemPens.Control, rect.Left, rect.Bottom - 1, rect.Width, rect.Bottom - 1);

            var layoutRectangle = new Rectangle(rect.Left + 25, rect.Top + 9, rect.Width - 35, rect.Height - 10);
            e.Graphics.DrawString(gridGroup.HeaderText, RowsDefaultCellStyle.Font, Brushes.Black, layoutRectangle);

            e.Graphics.DrawImage(gridGroup.Collapsed ? Resources.expand : Resources.collapse, rect.Left + 5,
                                 rect.Top + 7, 16, 16);

            //var buttonPosition =  new Point((layoutRectangle.X + layoutRectangle.Width) - 150, layoutRectangle.Y);

            //e.Graphics.DrawImage(Resources.select_all, buttonPosition);
            //buttonPosition.Offset(18, 0);
            //e.Graphics.DrawString("All", RowsDefaultCellStyle.Font, Brushes.Black, buttonPosition);

            //buttonPosition.Offset(64, 0);
            //e.Graphics.DrawImage(Resources.select_none, buttonPosition);
            //buttonPosition.Offset(18, 0);
            //e.Graphics.DrawString("None", RowsDefaultCellStyle.Font, Brushes.Black, buttonPosition);
        }
Example #2
0
        public void Bind(Model model, GroupByView groupBy)
        {
            var currentSelection = GetSelectedObjects();

            SuspendLayout();
            _isBinding = true;

            DataSource = null;
            Rows.Clear();

            _model = model;
            _gridBinding = new List<GridObject>();

            List<IGrouping<string, ModelObject>> groupings;

            switch (groupBy)
            {
                case GroupByView.ObjectType:
                    groupings =
                        _model.Objects.OrderBy(x => x.Type).ThenBy(x => x.Name).GroupBy(modelObject => modelObject.Type)
                            .ToList();
                    break;
                case GroupByView.Difference:
                    groupings =
                        _model.Objects.OrderBy(x => x.Type).ThenBy(x => x.Name).GroupBy(
                            modelObject => modelObject.Difference.DisplayValue).ToList();
                    break;
                default:
                    groupings =
                        _model.Objects.OrderBy(x => x.Type).ThenBy(x => x.Name).GroupBy(x => "All").ToList();
                    break;
            }

            foreach (var grouping in groupings)
            {
                var group = new GridGroup();
                group.HeaderText = string.Format("{0} : {1} objects", grouping.Key, grouping.Count());
                group.Collapsed = true;
                _gridBinding.Add(group);

                foreach (ModelObject modelObject in grouping)
                {
                    var o = modelObject;
                    var currentValue = currentSelection.FirstOrDefault(x => x.Id == o.Id);

                    var difference = new GridDifference
                                         {
                                             Include = currentValue == null ? modelObject.Difference.Action != Action.None : currentValue.Include,
                                             Object = modelObject,
                                             SourceName = modelObject.Name,
                                             TargetName = modelObject.Name,
                                             Type = modelObject.Type,
                                             Action = modelObject.Difference.Action.ToString()
                                         };

                    _gridBinding.Add(difference);
                }
            }

            AutoGenerateColumns = false;
            DataSource = _gridBinding;

            CollapseExpandAll(true);
            _isBinding = false;

            ResumeLayout();
        }