Ejemplo n.º 1
0
        private void AddGroupColumn(GridViewColumnGroup group)
        {
            if (!group.IsVisible)
            {
                return;
            }
            GridViewGroupColumn gridViewGroupColumn = new GridViewGroupColumn(group);

            gridViewGroupColumn.OwnerTemplate = this.ViewTemplate;
            this.groupColumns.Add(group, gridViewGroupColumn);
            this.AddColumn(group, (GridViewColumn)gridViewGroupColumn);
            foreach (GridViewColumnGroup group1 in (Collection <GridViewColumnGroup>)group.Groups)
            {
                this.AddGroupColumn(group1);
            }
            if (group.Groups.Count != 0)
            {
                return;
            }
            foreach (GridViewColumnGroupRow row in (Collection <GridViewColumnGroupRow>)group.Rows)
            {
                foreach (string columnName in (Collection <string>)row.ColumnNames)
                {
                    if (this.ColumnIsVisible((GridViewColumn)this.ViewTemplate.Columns[columnName]) || this.IgnoreColumnVisibility)
                    {
                        this.AddColumn(group, (GridViewColumn)this.ViewTemplate.Columns[columnName]);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private void FindColumnNode(
            GridViewColumn column,
            out ColumnGroupLayoutNode node,
            out ColumnGroupColumnData data)
        {
            Queue <ColumnGroupLayoutNode> columnGroupLayoutNodeQueue = new Queue <ColumnGroupLayoutNode>();
            GridViewGroupColumn           gridViewGroupColumn        = column as GridViewGroupColumn;

            columnGroupLayoutNodeQueue.Enqueue(this.root);
            while (columnGroupLayoutNodeQueue.Count > 0)
            {
                foreach (ColumnGroupLayoutNode child in columnGroupLayoutNodeQueue.Dequeue().Children)
                {
                    if (gridViewGroupColumn != null && gridViewGroupColumn.Group == child.Group && child.Group != null)
                    {
                        node = child;
                        data = (ColumnGroupColumnData)null;
                        return;
                    }
                    if (child.ColumnData.ContainsKey(column))
                    {
                        node = child;
                        data = child.ColumnData[column];
                        return;
                    }
                    columnGroupLayoutNodeQueue.Enqueue(child);
                }
            }
            node = (ColumnGroupLayoutNode)null;
            data = (ColumnGroupColumnData)null;
        }
        protected override bool ProcessDragOver(Point currentMouseLocation, ISupportDrag dragObject)
        {
            object dataContext = dragObject.GetDataContext();

            if (!this.ViewTemplate.AllowColumnReorder)
            {
                return(false);
            }
            if (dataContext is GridViewColumnGroup)
            {
                return(true);
            }
            if (dataContext is GridViewGroupColumn)
            {
                GridViewGroupColumn gridViewGroupColumn = (GridViewGroupColumn)dataContext;
                for (GridViewColumnGroup gridViewColumnGroup = this.GridViewGroupColumn.Group; gridViewColumnGroup != null; gridViewColumnGroup = gridViewColumnGroup.Parent)
                {
                    if (gridViewColumnGroup == gridViewGroupColumn.Group)
                    {
                        return(false);
                    }
                }
            }
            return(base.ProcessDragOver(currentMouseLocation, dragObject));
        }
Ejemplo n.º 4
0
        public GridViewColumnGroup FindGroup(GridViewColumn column)
        {
            GridViewGroupColumn gridViewGroupColumn = column as GridViewGroupColumn;

            if (gridViewGroupColumn != null)
            {
                return(gridViewGroupColumn.Group);
            }
            return(this.FindGroup(this.ColumnGroups, column));
        }
Ejemplo n.º 5
0
 public void ProcessRequests()
 {
     if (this.processing > 0 || this.tableElement == null || this.tableElement.ViewTemplate == null)
     {
         return;
     }
     ++this.processing;
     if (this.BestFitQueue.Count == 0 || !this.TableElement.CanBestFit())
     {
         --this.processing;
     }
     else
     {
         this.TableElement.UpdateLayout();
         if (this.TableElement.VisualRows.Count == 0 || this.tableElement.ViewTemplate == null || this.TableElement.ViewTemplate.Columns.Count == 0)
         {
             --this.processing;
         }
         else if (this.TableElement.ViewInfo.ParentRow != null && this.TableElement.DesiredSize == SizeF.Empty)
         {
             this.TableElement.GridViewElement.UpdateLayout();
             --this.processing;
         }
         else
         {
             this.updateRowsHeight = false;
             while (this.BestFitQueue.Count > 0)
             {
                 BestFitQueue.BestFitRequest bestFitRequest = this.BestFitQueue.Dequeue();
                 BestFitColumnMode?          autoSizeMode   = bestFitRequest.AutoSizeMode;
                 if (bestFitRequest.Operation == BestFitQueue.BestFitOperation.BestFitAllColumns)
                 {
                     this.BestFitColumnsCore(autoSizeMode);
                 }
                 else
                 {
                     GridViewGroupColumn column = bestFitRequest.Column as GridViewGroupColumn;
                     if (column != null)
                     {
                         this.BestFitGroupColumn(column, true, new BestFitColumnMode?());
                     }
                     else
                     {
                         BestFitColumnMode mode = autoSizeMode.HasValue ? autoSizeMode.Value : bestFitRequest.Column.AutoSizeMode;
                         this.BestFitColumnCore(bestFitRequest.Column, mode);
                     }
                 }
             }
             this.UpdateLayout();
             this.SynchronizeViews();
             --this.processing;
         }
     }
 }
Ejemplo n.º 6
0
        private List <GridViewGroupColumn> GetGroupColumns(
            ColumnGroupRowLayout columGroupRowLayout)
        {
            List <GridViewGroupColumn> gridViewGroupColumnList = new List <GridViewGroupColumn>();

            foreach (GridViewColumn scrollableColumn in (IEnumerable <GridViewColumn>)columGroupRowLayout.ScrollableColumns)
            {
                GridViewGroupColumn gridViewGroupColumn = scrollableColumn as GridViewGroupColumn;
                if (gridViewGroupColumn != null)
                {
                    gridViewGroupColumnList.Add(gridViewGroupColumn);
                }
            }
            return(gridViewGroupColumnList);
        }
Ejemplo n.º 7
0
        protected override void ProcessDragDrop(Point dropLocation, ISupportDrag dragObject)
        {
            GridViewColumn dataContext = dragObject.GetDataContext() as GridViewColumn;

            if (!dataContext.AllowHide)
            {
                return;
            }
            GridViewGroupColumn gridViewGroupColumn = dataContext as GridViewGroupColumn;

            if (gridViewGroupColumn != null && !gridViewGroupColumn.Group.AllowHide)
            {
                return;
            }
            dataContext.IsVisible = false;
        }
Ejemplo n.º 8
0
        private void BestFitGroupColumn(
            GridViewGroupColumn column,
            bool bestFitChildColumns,
            BestFitColumnMode?mode)
        {
            GridTableHeaderRowElement headerRowElement = this.GetHeaderRowElement();
            IVirtualizedElementProvider <GridViewColumn> elementProvider = this.tableElement.ColumnScroller.ElementProvider;
            ColumnGroupRowLayout rowLayout = this.tableElement.ViewElement.RowLayout as ColumnGroupRowLayout;

            if (rowLayout == null || headerRowElement == null)
            {
                return;
            }
            GridColumnGroupCellElement element = elementProvider.GetElement((GridViewColumn)column, (object)headerRowElement) as GridColumnGroupCellElement;

            if (element == null || !element.CanBestFit(column.AutoSizeMode))
            {
                return;
            }
            float num = this.MeasureCell((GridRowElement)headerRowElement, (GridViewColumn)column, element);

            this.Detach(elementProvider, (GridCellElement)element);
            ColumnGroupsCellArrangeInfo columnData = rowLayout.GetColumnData((GridViewColumn)column);

            if ((double)columnData.Bounds.Width < (double)num)
            {
                rowLayout.StartColumnResize((GridViewColumn)column);
                rowLayout.ResizeColumn((int)((double)num - (double)columnData.Bounds.Width));
                rowLayout.InvalidateLayout();
                this.TableElement.ViewElement.InvalidateMeasure(true);
                this.TableElement.ViewElement.UpdateLayout();
                rowLayout.EndColumnResize();
            }
            if (!bestFitChildColumns)
            {
                return;
            }
            foreach (GridViewColumn dataColumn in this.GetDataColumns(column.Group))
            {
                this.BestFitColumnCore(dataColumn, mode.HasValue ? mode.Value : column.AutoSizeMode);
            }
        }
        public override void UpdateDropContext(
            ISupportDrag draggedContext,
            ISupportDrop dropTarget,
            Point?location)
        {
            GridColumnGroupCellElement groupCellElement    = dropTarget as GridColumnGroupCellElement;
            GridHeaderCellElement      headerCellElement   = dropTarget as GridHeaderCellElement;
            GridViewGroupColumn        gridViewGroupColumn = groupCellElement != null ? groupCellElement.ColumnInfo as GridViewGroupColumn : (GridViewGroupColumn)null;

            if (headerCellElement == null || !location.HasValue)
            {
                this.orientation = Orientation.Vertical;
            }
            else
            {
                if (headerCellElement.RowElement == null || headerCellElement.RowElement.TableElement == null)
                {
                    return;
                }
                Rectangle boundingRectangle1 = headerCellElement.ControlBoundingRectangle;
                Rectangle boundingRectangle2 = headerCellElement.RowElement.TableElement.ViewElement.ControlBoundingRectangle;
                if (boundingRectangle1.Right > boundingRectangle2.Right)
                {
                    boundingRectangle1.Width -= boundingRectangle1.Right - boundingRectangle2.Right;
                }
                if (boundingRectangle1.X < boundingRectangle2.X)
                {
                    boundingRectangle1.Width -= boundingRectangle2.X - boundingRectangle1.X;
                    boundingRectangle1.X      = boundingRectangle2.X;
                }
                if ((RadGridViewDragDropService.GetDropPosition(headerCellElement.PointFromScreen(location.Value), headerCellElement.Size) & RadPosition.Bottom) != RadPosition.None && (gridViewGroupColumn != null && gridViewGroupColumn.Group.Rows.Count == 0 && draggedContext.GetDataContext() is GridViewGroupColumn || gridViewGroupColumn != null && gridViewGroupColumn.Group.Groups.Count == 0 && draggedContext.GetDataContext() is GridViewDataColumn || gridViewGroupColumn == null))
                {
                    this.orientation = Orientation.Horizontal;
                }
                else
                {
                    this.orientation = Orientation.Vertical;
                }
            }
        }