Exemplo n.º 1
0
        private void SortByHeaderCell(
            DetailListViewHeaderCellElement headerCellUnderMouse,
            Point location)
        {
            ListViewDetailColumn data = headerCellUnderMouse.Data;

            if (!data.Owner.EnableSorting || !data.Owner.EnableColumnSort || (headerCellUnderMouse.IsInResizeLocation(location) || data.Owner.ColumnResizingBehavior.IsResizing))
            {
                return;
            }
            int index = data.Owner.SortDescriptors.IndexOf(data.Name);
            ListSortDirection direction = ListSortDirection.Ascending;
            bool flag = true;

            if (index >= 0)
            {
                direction = data.Owner.SortDescriptors[index].Direction;
                if (direction == ListSortDirection.Ascending)
                {
                    direction = ListSortDirection.Descending;
                }
                else
                {
                    flag = false;
                }
            }
            data.Owner.SortDescriptors.BeginUpdate();
            data.Owner.SortDescriptors.Clear();
            if (flag)
            {
                data.Owner.SortDescriptors.Add(data.Name, direction);
            }
            data.Owner.SortDescriptors.EndUpdate();
            headerCellUnderMouse.Synchronize();
        }
        protected override void OnDoubleClick(EventArgs e)
        {
            base.OnDoubleClick(e);
            this.Data.Owner.EndEdit();
            MouseEventArgs mouseEventArgs = e as MouseEventArgs;

            if (mouseEventArgs == null || !this.IsInResizeLocation(mouseEventArgs.Location))
            {
                return;
            }
            if (mouseEventArgs.X <= this.ControlBoundingRectangle.X + 4 ^ this.RightToLeft)
            {
                int num = this.Parent.Children.IndexOf((RadElement)this);
                if (num <= 0)
                {
                    return;
                }
                DetailListViewHeaderCellElement child = this.Parent.Children[num - 1] as DetailListViewHeaderCellElement;
                if (child == null)
                {
                    return;
                }
                child.Data.AutoSizeMode = ListViewBestFitColumnMode.AllCells;
                child.Data.BestFit();
            }
            else
            {
                this.Data.AutoSizeMode = ListViewBestFitColumnMode.AllCells;
                this.Data.BestFit();
            }
        }
Exemplo n.º 3
0
        protected virtual void EnsureColumnVisibleCore(ListViewDetailColumn column)
        {
            bool start  = false;
            int  offset = 0;
            ListViewDetailColumn lastVisible =
                ((DetailListViewHeaderCellElement)this.columnContainer.Children[this.columnContainer.Children.Count - 1]).Data;
            ItemsTraverser <ListViewDetailColumn> traverser =
                (ItemsTraverser <ListViewDetailColumn>) this.ColumnScroller.Traverser.GetEnumerator();
            DetailListViewHeaderCellElement cell = null;

            while (traverser.MoveNext())
            {
                if (traverser.Current == column)
                {
                    this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value + offset);
                    this.UpdateLayout();
                    cell = this.GetHeaderCell(column);

                    if (cell != null &&
                        cell.ControlBoundingRectangle.Right > this.columnContainer.ControlBoundingRectangle.Right)
                    {
                        this.EnsureColumnVisible(column);
                    }
                    break;
                }
                if (traverser.Current == lastVisible)
                {
                    start = true;
                }
                if (start)
                {
                    offset += (int)columnContainer.ElementProvider.GetElementSize(traverser.Current).Width + columnContainer.ItemSpacing;
                }
            }
        }
Exemplo n.º 4
0
        protected virtual void EnsureColumnVisibleCore(ListViewDetailColumn column)
        {
            bool flag1 = false;
            int  num   = 0;
            ListViewDetailColumn data = ((DetailListViewCellElement)this.columnContainer.Children[this.columnContainer.Children.Count - 1]).Data;
            ItemsTraverser <ListViewDetailColumn> enumerator = (ItemsTraverser <ListViewDetailColumn>) this.ColumnScroller.Traverser.GetEnumerator();

            while (enumerator.MoveNext())
            {
                if (enumerator.Current == column)
                {
                    this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value + num);
                    this.UpdateLayout();
                    DetailListViewHeaderCellElement headerCell = this.GetHeaderCell(column);
                    bool flag2 = headerCell != null && headerCell.ControlBoundingRectangle.Right > this.columnContainer.ControlBoundingRectangle.Right;
                    bool flag3 = headerCell != null && headerCell.ControlBoundingRectangle.Left < this.columnContainer.ControlBoundingRectangle.Left && this.RightToLeft;
                    if (!flag2 && !flag3)
                    {
                        break;
                    }
                    this.EnsureColumnVisible(column);
                    break;
                }
                if (enumerator.Current == data)
                {
                    flag1 = true;
                }
                if (flag1)
                {
                    num += (int)this.columnContainer.ElementProvider.GetElementSize(enumerator.Current).Width + this.columnContainer.ItemSpacing;
                }
            }
        }
Exemplo n.º 5
0
        public virtual void EnsureColumnVisible(ListViewDetailColumn column)
        {
            DetailListViewHeaderCellElement headerCell = this.GetHeaderCell(column);

            if (headerCell == null)
            {
                this.columnContainer.UpdateLayout();
                if (this.columnContainer.Children.Count > 0)
                {
                    if (this.Owner.Columns.IndexOf(column) <= this.Owner.Columns.IndexOf(((DetailListViewCellElement)this.columnContainer.Children[0]).Data))
                    {
                        this.columnScroller.ScrollToItem(column, false);
                    }
                    else
                    {
                        this.EnsureColumnVisibleCore(column);
                    }
                }
            }
            else if (headerCell.ControlBoundingRectangle.Width > this.columnContainer.ControlBoundingRectangle.Width)
            {
                this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value - (this.RightToLeft ? this.columnContainer.ControlBoundingRectangle.Right - headerCell.ControlBoundingRectangle.Right : this.columnContainer.ControlBoundingRectangle.Left - headerCell.ControlBoundingRectangle.Left) * (this.RightToLeft ? -1 : 1));
            }
            else if (headerCell.ControlBoundingRectangle.Right > this.columnContainer.ControlBoundingRectangle.Right)
            {
                this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value + (headerCell.ControlBoundingRectangle.Right - this.columnContainer.ControlBoundingRectangle.Right) * (this.RightToLeft ? -1 : 1));
            }
            else if (headerCell.ControlBoundingRectangle.Left < this.columnContainer.ControlBoundingRectangle.Left)
            {
                this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value - (this.columnContainer.ControlBoundingRectangle.Left - headerCell.ControlBoundingRectangle.Left) * (this.RightToLeft ? -1 : 1));
            }
            this.ViewElement.InvalidateMeasure();
            this.UpdateLayout();
        }
Exemplo n.º 6
0
        protected internal override bool ProcessMouseMove(MouseEventArgs e)
        {
            bool flag = base.ProcessMouseMove(e);

            this.Owner.ColumnResizingBehavior.HandleMouseMove(e.Location);
            DetailListViewHeaderCellElement elementAtPoint = this.ElementTree.GetElementAtPoint(e.Location) as DetailListViewHeaderCellElement;

            if (this.Owner.ColumnResizingBehavior.IsResizing)
            {
                return(flag);
            }
            if (elementAtPoint != null && elementAtPoint.IsInResizeLocation(e.Location))
            {
                if (this.originalMouseCursor == (Cursor)null)
                {
                    this.originalMouseCursor = this.ElementTree.Control.Cursor;
                }
                this.ElementTree.Control.Cursor = Cursors.SizeWE;
            }
            else if (this.originalMouseCursor != (Cursor)null)
            {
                this.ElementTree.Control.Cursor = this.originalMouseCursor;
                this.originalMouseCursor        = (Cursor)null;
            }
            return(flag);
        }
Exemplo n.º 7
0
        protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
        {
            base.OnMouseDown(e);
            this.Data.Owner.EndEdit();

            if (IsInResizeLocation(e.Location))
            {
                this.CallDoMouseUp(e);
                if (e.X <= this.ControlBoundingRectangle.X + resizePointerOffset)
                {
                    int index = this.Parent.Children.IndexOf(this);
                    if (index > 0)
                    {
                        DetailListViewHeaderCellElement previousCell = this.Parent.Children[index - 1] as DetailListViewHeaderCellElement;
                        if (previousCell != null)
                        {
                            previousCell.BeginResize(e.Location);
                        }
                    }
                }
                else
                {
                    this.BeginResize(e.Location);
                }
            }
            else if (e.Button == MouseButtons.Left)
            {
                BeginDragDrop();
            }
        }
Exemplo n.º 8
0
        protected virtual float CalculateColumnWidth(
            ListViewDetailColumn column,
            ListViewBestFitColumnMode mode)
        {
            IVirtualizedElementProvider <ListViewDataItem> elementProvider = this.DetailListView.Scroller.ElementProvider;
            float val1 = 0.0f;

            if (mode == ListViewBestFitColumnMode.HeaderCells || mode == ListViewBestFitColumnMode.AllCells)
            {
                DetailListViewHeaderCellElement element = this.DetailListView.ColumnScroller.ElementProvider.GetElement(column, (object)null) as DetailListViewHeaderCellElement;
                this.DetailListView.ColumnContainer.Children.Add((RadElement)element);
                element.Attach(column, (object)null);
                element.ResetLayout(true);
                val1 = Math.Max(val1, this.GetCellDesiredWidth((DetailListViewCellElement)element));
                this.DetailListView.ColumnContainer.Children.Remove((RadElement)element);
                this.Detach(this.DetailListView.ColumnScroller.ElementProvider, (DetailListViewCellElement)element);
                if (mode == ListViewBestFitColumnMode.HeaderCells)
                {
                    return(val1);
                }
            }
            IEnumerator <ListViewDataItem> enumerator = (IEnumerator <ListViewDataItem>)null;

            if (mode == ListViewBestFitColumnMode.DataCells || mode == ListViewBestFitColumnMode.AllCells)
            {
                enumerator = (IEnumerator <ListViewDataItem>) new ListViewTraverser(this.DetailListView.Owner);
            }
            enumerator.Reset();
            while (enumerator.MoveNext())
            {
                ListViewDataItem current = enumerator.Current;
                if (this.CanBestFitItem(current))
                {
                    DetailListViewVisualItem element1 = elementProvider.GetElement(current, (object)null) as DetailListViewVisualItem;
                    element1.Attach(current, (object)null);
                    this.DetailListView.ColumnContainer.Children.Add((RadElement)element1);
                    IVirtualizedElementProvider <ListViewDetailColumn> cellElementProvider = (IVirtualizedElementProvider <ListViewDetailColumn>) new DetailListViewDataCellElementProvider(element1);
                    DetailListViewCellElement element2 = cellElementProvider.GetElement(column, (object)element1) as DetailListViewCellElement;
                    element1.Children.Add((RadElement)element2);
                    element2.Attach(column, (object)element1);
                    element2.ResetLayout(true);
                    val1 = Math.Max(val1, this.GetCellDesiredWidth(element2));
                    element1.Children.Remove((RadElement)element2);
                    this.DetailListView.ColumnContainer.Children.Remove((RadElement)element1);
                    this.Detach(cellElementProvider, element2);
                    this.Detach(elementProvider, element1);
                }
            }
            return(val1);
        }
Exemplo n.º 9
0
        public virtual void EnsureColumnVisible(ListViewDetailColumn column)
        {
            DetailListViewHeaderCellElement cell = GetHeaderCell(column);

            if (cell == null)
            {
                this.columnContainer.UpdateLayout();

                if (this.columnContainer.Children.Count > 0)
                {
                    int columnIndex       = this.owner.Columns.IndexOf(column);
                    int firstVisibleIndex = this.owner.Columns.IndexOf(
                        ((DetailListViewHeaderCellElement)this.columnContainer.Children[0]).Data);

                    if (columnIndex <= firstVisibleIndex)
                    {
                        this.columnScroller.ScrollToItem(column);
                    }
                    else
                    {
                        EnsureColumnVisibleCore(column);
                    }
                }
            }
            else
            {
                if (cell.ControlBoundingRectangle.Width > this.columnContainer.ControlBoundingRectangle.Width)
                {
                    int offset = this.columnContainer.ControlBoundingRectangle.Left - cell.ControlBoundingRectangle.Left;
                    this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value - offset);
                }
                else if (cell.ControlBoundingRectangle.Right > this.columnContainer.ControlBoundingRectangle.Right)
                {
                    int offset = cell.ControlBoundingRectangle.Right - this.columnContainer.ControlBoundingRectangle.Right;
                    this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value + offset);
                }
                else if (cell.ControlBoundingRectangle.Left < this.columnContainer.ControlBoundingRectangle.Left)
                {
                    int offset = this.columnContainer.ControlBoundingRectangle.Left - cell.ControlBoundingRectangle.Left;
                    this.SetScrollValue(this.ColumnScrollBar, this.ColumnScrollBar.Value - offset);
                }
            }

            this.ViewElement.InvalidateMeasure();
            this.UpdateLayout();
        }
Exemplo n.º 10
0
        internal override bool ProcessMouseMove(MouseEventArgs e)
        {
            bool result = base.ProcessMouseMove(e);

            this.owner.ColumnResizingBehavior.HandleMouseMove(e.Location);

            DetailListViewHeaderCellElement headerCell = this.ElementTree.GetElementAtPoint(e.Location) as DetailListViewHeaderCellElement;

            if (this.owner.ColumnResizingBehavior.IsResizing)
            {
                return(result);
            }

            if (headerCell != null && headerCell.IsInResizeLocation(e.Location))
            {
                this.ElementTree.Control.Cursor = Cursors.SizeWE;
            }
            else
            {
                this.ElementTree.Control.Cursor = Cursors.Default;
            }

            return(result);
        }
Exemplo n.º 11
0
        protected internal override bool ProcessMouseUp(MouseEventArgs e)
        {
            if (this.Owner.EnableKineticScrolling && this.ViewElement.ContainsMouse)
            {
                this.ScrollBehavior.MouseUp(e.Location);
            }
            else
            {
                if (this.Capture)
                {
                    base.ProcessMouseUp(e);
                    return(false);
                }
                this.ScrollBehavior.Stop();
            }
            bool isResizing = this.Owner.ColumnResizingBehavior.IsResizing;

            this.Owner.ColumnResizingBehavior.EndResize();
            if (e.Button == MouseButtons.Left)
            {
                ListViewDataItem                itemAt               = this.GetItemAt(e.Location);
                DetailListViewCellElement       elementAtPoint       = this.ElementTree.GetElementAtPoint(e.Location) as DetailListViewCellElement;
                DetailListViewHeaderCellElement headerCellUnderMouse = elementAtPoint as DetailListViewHeaderCellElement;
                if (headerCellUnderMouse != null && !isResizing)
                {
                    this.SortByHeaderCell(headerCellUnderMouse, e.Location);
                }
                if (itemAt == null || !itemAt.Enabled)
                {
                    this.lastModifierKeys = Keys.None;
                    this.groupSelectionTimer.Stop();
                    this.beginEditTimer.Stop();
                    this.lastClickedItem = (ListViewDataItem)null;
                    return(false);
                }
                if (itemAt is ListViewDataItemGroup)
                {
                    if (itemAt != null && !this.disableGroupSelectOnMouseUp)
                    {
                        this.lastClickedItem  = itemAt;
                        this.lastModifierKeys = Control.ModifierKeys;
                        this.groupSelectionTimer.Start();
                    }
                    else
                    {
                        this.lastClickedItem  = (ListViewDataItem)null;
                        this.lastModifierKeys = Keys.None;
                        this.groupSelectionTimer.Stop();
                    }
                    return(false);
                }
                this.lastClickedItem  = (ListViewDataItem)null;
                this.lastModifierKeys = Keys.None;
                this.groupSelectionTimer.Stop();
                bool flag = this.ElementTree.GetElementAtPoint(e.Location) is ListViewItemCheckbox;
                if (itemAt.Selected && this.Owner.ShowCheckBoxes && (!this.Owner.AllowEdit && this.Owner.CheckOnClickMode != CheckOnClickMode.Off) && !flag)
                {
                    this.ToggleItemCheckState(itemAt);
                }
                else if (!itemAt.Selected && this.Owner.ShowCheckBoxes && (this.Owner.CheckOnClickMode == CheckOnClickMode.FirstClick && !flag))
                {
                    this.ToggleItemCheckState(itemAt);
                }
                if (itemAt != null && !this.disableEditOnMouseUp && (itemAt == this.Owner.SelectedItem && Control.ModifierKeys == Keys.None) && (this.lastClickedItem == null && elementAtPoint != null && elementAtPoint.Data == this.Owner.CurrentColumn))
                {
                    this.lastClickedItem = itemAt;
                    this.beginEditTimer.Start();
                }
                else
                {
                    this.beginEditTimer.Stop();
                    this.lastClickedItem = (ListViewDataItem)null;
                    if (Control.ModifierKeys != Keys.None || itemAt != this.Owner.SelectedItem)
                    {
                        this.ProcessSelection(itemAt, Control.ModifierKeys, true);
                    }
                    if (elementAtPoint != null && elementAtPoint.Data != null)
                    {
                        elementAtPoint.Data.Current = true;
                    }
                }
            }
            else
            {
                this.lastModifierKeys = Keys.None;
                this.groupSelectionTimer.Stop();
                this.beginEditTimer.Stop();
                this.lastClickedItem = (ListViewDataItem)null;
            }
            return(false);
        }