private void Capture_PointerMoved(object sender, PointerRoutedEventArgs e) { var uiElement = sender as UIElement; var p = e.GetCurrentPoint(uiElement); if (!HasPart()) { return; } if (_pointerId != (int)e.Pointer.PointerId) { return; } // Ignore pointer move when the pointing device is up if (!p.IsInContact) { return; } // Consider left button only if (!p.Properties.IsLeftButtonPressed) { return; } var pointerType = GetPointerType(e); var previousPosition = _lastPointerPosition; _lastPointerPosition = new Graphics.Point((float)p.Position.X, (float)p.Position.Y); if (!_onScroll && (pointerType == PointerType.TOUCH)) { var deltaMin = 3.0f; var deltaX = _lastPointerPosition.X - previousPosition.X; var deltaY = _lastPointerPosition.Y - previousPosition.Y; _onScroll = _editor.IsScrollAllowed() && ((System.Math.Abs(deltaX) > deltaMin) || (System.Math.Abs(deltaY) > deltaMin)); if (_onScroll) { // Entering scrolling mode, cancel previous pointerDown event _editor.PointerCancel(GetPointerId(e)); } } if (_onScroll) { // Scroll the view var deltaX = _lastPointerPosition.X - previousPosition.X; var deltaY = _lastPointerPosition.Y - previousPosition.Y; Scroll(-deltaX, -deltaY); } else { var pointList = e.GetIntermediatePoints(uiElement); if (pointList.Count > 0) { var events = new PointerEvent[pointList.Count]; // Intermediate points are stored in reverse order: // Revert the list and send the pointer events all at once int j = 0; for (int i = pointList.Count - 1; i >= 0; i--) { var p_ = pointList[i]; events[j++] = new PointerEvent(PointerEventType.MOVE, (float)p_.Position.X, (float)p_.Position.Y, GetTimestamp(p_), p_.Properties.Pressure, pointerType, GetPointerId(e)); } _editor.PointerEvents(events); } } // Prevent most handlers along the event route from handling the same event again. e.Handled = true; }
internal static void ShowFilterPanel(unvell.ReoGrid.Data.AutoColumnFilter.AutoColumnFilterBody headerBody, Point point) { if (headerBody.ColumnHeader == null || headerBody.ColumnHeader.Worksheet == null) { return; } var worksheet = headerBody.ColumnHeader.Worksheet; if (worksheet == null) { return; } RGRectF headerRect = unvell.ReoGrid.Views.ColumnHeaderView.GetColHeaderBounds(worksheet, headerBody.ColumnHeader.Index, point); if (headerRect.Width == 0 || headerRect.Height == 0) { return; } RGRectF buttonRect = headerBody.GetColumnFilterButtonRect(headerRect.Size); if (headerBody.ContextMenuStrip == null) { var filterPanel = new ColumnFilterContextMenu(); filterPanel.SortAZItem.Click += (s, e) => { try { worksheet.SortColumn(headerBody.ColumnHeader.Index, headerBody.autoFilter.ApplyRange, SortOrder.Ascending); } catch (Exception ex) { worksheet.NotifyExceptionHappen(ex); } }; filterPanel.SortZAItem.Click += (s, e) => { try { worksheet.SortColumn(headerBody.ColumnHeader.Index, headerBody.autoFilter.ApplyRange, SortOrder.Descending); } catch (Exception ex) { worksheet.NotifyExceptionHappen(ex); } }; filterPanel.OkButton.Click += (s, e) => { if (filterPanel.CheckedListBox.GetItemCheckState(0) == CheckState.Checked) { headerBody.IsSelectAll = true; } else { headerBody.IsSelectAll = false; headerBody.selectedTextItems.Clear(); for (int i = 1; i < filterPanel.CheckedListBox.Items.Count; i++) { if (filterPanel.CheckedListBox.GetItemChecked(i)) { headerBody.selectedTextItems.Add(Convert.ToString(filterPanel.CheckedListBox.Items[i])); } } } headerBody.autoFilter.Apply(); filterPanel.Hide(); }; filterPanel.CancelButton.Click += (s, e) => filterPanel.Hide(); headerBody.ContextMenuStrip = filterPanel; } if (headerBody.ContextMenuStrip != null) { if (headerBody.ContextMenuStrip is ColumnFilterContextMenu) { var filterPanel = (ColumnFilterContextMenu)headerBody.ContextMenuStrip; if (headerBody.DataDirty) { // todo: keep select status for every items before clear filterPanel.CheckedListBox.Items.Clear(); filterPanel.CheckedListBox.Items.Add(LanguageResource.Filter_SelectAll); filterPanel.CheckedListBox.SetItemChecked(0, true); try { headerBody.ColumnHeader.Worksheet.ControlAdapter.ChangeCursor(CursorStyle.Busy); var items = headerBody.GetDistinctItems(); foreach (string item in items) { filterPanel.CheckedListBox.Items.Add(item); if (headerBody.IsSelectAll) { filterPanel.CheckedListBox.SetItemChecked(filterPanel.CheckedListBox.Items.Count - 1, true); } else { filterPanel.CheckedListBox.SetItemChecked(filterPanel.CheckedListBox.Items.Count - 1, headerBody.selectedTextItems.Contains(item)); } } } finally { headerBody.ColumnHeader.Worksheet.ControlAdapter.ChangeCursor(CursorStyle.PlatformDefault); } filterPanel.SelectedCount = filterPanel.CheckedListBox.Items.Count - 1; headerBody.DataDirty = false; headerBody.IsSelectAll = true; } } var pp = new Graphics.Point(headerRect.Right - 240, buttonRect.Bottom + 1); pp = worksheet.ControlAdapter.PointToScreen(pp); headerBody.ContextMenuStrip.Show(Point.Round(pp)); } }
public override IView GetViewByPoint(Graphics.Point p) { return(GetChildrenByPoint(p)); }