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(); } }
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; } } }
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; } } }
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(); }
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); }
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(); } }
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); }
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(); }
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); }
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); }