コード例 #1
0
        void ContinueColumnSplitting()
        {
            HitTestInformation savedHitTestInformation = GetHitInfo();
            SheetLayout        layout = GetSheetLayout();
            int columnViewportIndex   = savedHitTestInformation.ColumnViewportIndex;

            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.RowSplitBar:
            case HitTestType.ColumnSplitBar:
                if (MousePosition.X <= _columnSplittingTracker.X1)
                {
                    _columnSplittingTracker.X1 = Math.Max(MousePosition.X, layout.GetViewportX(columnViewportIndex) + (layout.GetHorizontalSplitBarWidth(columnViewportIndex) / 2.0));
                    break;
                }
                _columnSplittingTracker.X1 = Math.Min(MousePosition.X, (layout.GetViewportX(columnViewportIndex + 1) + layout.GetViewportWidth(columnViewportIndex + 1)) - (layout.GetHorizontalSplitBarWidth(columnViewportIndex) / 2.0));
                break;

            case HitTestType.ColumnSplitBox:
                if (MousePosition.X <= _columnSplittingTracker.X1)
                {
                    _columnSplittingTracker.X1 = Math.Max(MousePosition.X, layout.GetViewportX(columnViewportIndex) + (_defaultSplitBarSize / 2.0));
                    break;
                }
                _columnSplittingTracker.X1 = Math.Min(MousePosition.X, (layout.GetViewportX(columnViewportIndex) + layout.GetViewportWidth(columnViewportIndex)) - (_defaultSplitBarSize / 2.0));
                break;
            }
            _columnSplittingTracker.X2 = _columnSplittingTracker.X1;
        }
コード例 #2
0
 void SetCursor(HitTestInformation hi)
 {
     if (CanUserDragFill && hi.ViewportInfo.InDragFillIndicator)
     {
         bool flag;
         bool flag2;
         KeyboardHelper.GetMetaKeyState(out flag, out flag2);
         CursorType cursorType = flag2 ? CursorType.DragFill_CtrlDragCursor : CursorType.DragFill_DragCursor;
         SetMouseCursor(cursorType);
     }
     else if (CanUserDragDrop && hi.ViewportInfo.InSelectionDrag)
     {
         bool flag3;
         bool flag4;
         KeyboardHelper.GetMetaKeyState(out flag3, out flag4);
         CursorType type2 = flag4 ? CursorType.DragCell_CtrlDragCursor : CursorType.DragCell_DragCursor;
         SetMouseCursor(type2);
     }
     else
     {
         if (_mouseCursor != null)
         {
             _mouseCursor.Opacity = 0.0;
         }
         ResetCursor();
     }
 }
コード例 #3
0
ファイル: Excel-Floating.cs プロジェクト: Daoting/dt
        bool InitFloatingObjectsMovingResizing()
        {
            HitTestInformation savedHitTestInformation = GetHitInfo();

            if (IsTouching)
            {
                savedHitTestInformation = _touchStartHitTestInfo;
            }
            if (((savedHitTestInformation.ViewportInfo == null) || (savedHitTestInformation.RowViewportIndex == -2)) || (savedHitTestInformation.ColumnViewportIndex == 2))
            {
                return(false);
            }
            _floatingObjectsMovingResizingStartRow    = savedHitTestInformation.ViewportInfo.Row;
            _floatingObjectsMovingResizingStartColumn = savedHitTestInformation.ViewportInfo.Column;
            _dragStartRowViewport    = savedHitTestInformation.RowViewportIndex;
            _dragStartColumnViewport = savedHitTestInformation.ColumnViewportIndex;
            _dragToRowViewport       = savedHitTestInformation.RowViewportIndex;
            _dragToColumnViewport    = savedHitTestInformation.ColumnViewportIndex;
            _floatingObjectsMovingResizingStartPoint = savedHitTestInformation.HitPoint;
            SetActiveColumnViewportIndex(savedHitTestInformation.ColumnViewportIndex);
            SetActiveRowViewportIndex(savedHitTestInformation.RowViewportIndex);
            CachFloatingObjectsMovingResizingLayoutModels();
            RowLayout    viewportRowLayoutNearY    = GetViewportRowLayoutNearY(_dragStartRowViewport, _floatingObjectsMovingResizingStartPoint.Y);
            ColumnLayout viewportColumnLayoutNearX = GetViewportColumnLayoutNearX(_dragToColumnViewport, _floatingObjectsMovingResizingStartPoint.X);

            _floatingObjectsMovingResizingStartPointCellBounds = new Rect(viewportColumnLayoutNearX.X, viewportRowLayoutNearY.Y, viewportColumnLayoutNearX.Width, viewportRowLayoutNearY.Height);
            _floatingObjectsMovingStartLocations = new Dictionary <string, Point>();
            for (int i = 0; i < _movingResizingFloatingObjects.Count; i++)
            {
                IFloatingObject obj2 = _movingResizingFloatingObjects[i];
                _floatingObjectsMovingStartLocations.Add(obj2.Name, obj2.Location);
            }
            return(true);
        }
コード例 #4
0
        void StartColumnSplitting()
        {
            if (Workbook.Protect)
            {
                return;
            }

            HitTestInformation savedHitTestInformation = GetHitInfo();
            SheetLayout        layout = GetSheetLayout();

            if (!IsTouching)
            {
                IsColumnSplitting = true;
            }
            else
            {
                IsTouchColumnSplitting = true;
            }
            IsWorking = true;
            if (_columnSplittingTracker == null)
            {
                // 动态分割线,创建后始终在可视树,通过Opacity控制是否显示
                _columnSplittingTracker        = new Line();
                _columnSplittingTracker.Stroke = BrushRes.BlackBrush;
                _trackersPanel.Children.Add(_columnSplittingTracker);
            }
            int columnViewportIndex = savedHitTestInformation.ColumnViewportIndex;

            _columnSplittingTracker.Opacity = 0.5;
            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.RowSplitBar:
            case HitTestType.ColumnSplitBar:
                _columnSplittingTracker.StrokeThickness = _defaultSplitBarSize;
                _columnSplittingTracker.X1 = layout.GetHorizontalSplitBarX(columnViewportIndex) + (_defaultSplitBarSize / 2.0);
                _columnSplittingTracker.Y1 = layout.Y;
                _columnSplittingTracker.X2 = _columnSplittingTracker.X1;
                _columnSplittingTracker.Y2 = layout.HeaderY + _availableSize.Height;
                return;

            case HitTestType.RowSplitBox:
                return;

            case HitTestType.ColumnSplitBox:
                _columnSplittingTracker.StrokeThickness = _defaultSplitBarSize;
                if (ColumnSplitBoxAlignment == SplitBoxAlignment.Leading)
                {
                    _columnSplittingTracker.X1 = layout.GetViewportX(columnViewportIndex) + (_defaultSplitBarSize / 2.0);
                }
                else
                {
                    _columnSplittingTracker.X1 = (layout.GetViewportX(columnViewportIndex) + layout.GetViewportWidth(columnViewportIndex)) - (_defaultSplitBarSize / 2.0);
                }

                _columnSplittingTracker.Y1 = layout.Y;
                _columnSplittingTracker.X2 = _columnSplittingTracker.X1;
                _columnSplittingTracker.Y2 = layout.HeaderY + _availableSize.Height;
                return;
            }
        }
コード例 #5
0
        void ContinueRowSplitting()
        {
            HitTestInformation savedHitTestInformation = GetHitInfo();
            SheetLayout        layout = GetSheetLayout();
            int rowViewportIndex      = savedHitTestInformation.RowViewportIndex;

            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.RowSplitBar:
            case HitTestType.ColumnSplitBar:
                if (MousePosition.Y <= _rowSplittingTracker.Y1)
                {
                    _rowSplittingTracker.Y1 = Math.Max(MousePosition.Y, layout.GetViewportY(rowViewportIndex) + (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0));
                    break;
                }
                _rowSplittingTracker.Y1 = Math.Min(MousePosition.Y, (layout.GetViewportY(rowViewportIndex + 1) + layout.GetViewportHeight(rowViewportIndex + 1)) - (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0));
                break;

            case HitTestType.RowSplitBox:
                if (MousePosition.Y <= _rowSplittingTracker.Y1)
                {
                    _rowSplittingTracker.Y1 = Math.Max(MousePosition.Y, layout.GetViewportY(rowViewportIndex) + (_defaultSplitBarSize / 2.0));
                    break;
                }
                _rowSplittingTracker.Y1 = Math.Min(MousePosition.Y, (layout.GetViewportY(rowViewportIndex) + layout.GetViewportHeight(rowViewportIndex)) - (_defaultSplitBarSize / 2.0));
                break;
            }
            _rowSplittingTracker.Y2 = _rowSplittingTracker.Y1;
        }
コード例 #6
0
        void AutoFitRow()
        {
            RowLayout viewportResizingRowLayoutFromY;

            if (IsResizingRows)
            {
                EndRowResizing();
            }
            HitTestInformation savedHitTestInformation = GetHitInfo();

            if (savedHitTestInformation.HitTestType == HitTestType.RowHeader)
            {
                bool flag = false;
                viewportResizingRowLayoutFromY = GetViewportResizingRowLayoutFromY(savedHitTestInformation.RowViewportIndex, savedHitTestInformation.HitPoint.Y);
                if (viewportResizingRowLayoutFromY == null)
                {
                    if (savedHitTestInformation.RowViewportIndex == 0)
                    {
                        viewportResizingRowLayoutFromY = GetViewportResizingRowLayoutFromY(-1, savedHitTestInformation.HitPoint.Y);
                    }
                    if ((viewportResizingRowLayoutFromY == null) && ((savedHitTestInformation.RowViewportIndex == -1) || (savedHitTestInformation.RowViewportIndex == 0)))
                    {
                        viewportResizingRowLayoutFromY = GetColumnHeaderResizingRowLayoutFromY(savedHitTestInformation.HitPoint.Y);
                        flag = true;
                    }
                }
                if (viewportResizingRowLayoutFromY != null)
                {
                    int row = viewportResizingRowLayoutFromY.Row;
                    if (!flag)
                    {
                        AutoFitRowInternal(row, true, false);
                    }
                    else
                    {
                        RowAutoFitUndoAction command = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(row) }, true);
                        DoCommand(command);
                    }
                }
            }
            else if (savedHitTestInformation.HitTestType == HitTestType.Corner)
            {
                viewportResizingRowLayoutFromY = GetColumnHeaderRowLayoutModel().FindRow(savedHitTestInformation.HeaderInfo.ResizingRow);
                if (viewportResizingRowLayoutFromY != null)
                {
                    int num2 = viewportResizingRowLayoutFromY.Row;
                    RowAutoFitUndoAction action2 = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(num2) }, true);
                    DoCommand(action2);
                }
            }
        }
コード例 #7
0
        void AutoFitColumn()
        {
            ColumnLayout viewportResizingColumnLayoutFromX;

            if (IsResizingColumns)
            {
                EndColumnResizing();
            }
            HitTestInformation savedHitTestInformation = GetHitInfo();

            if (savedHitTestInformation.HitTestType == HitTestType.ColumnHeader)
            {
                viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(savedHitTestInformation.ColumnViewportIndex, savedHitTestInformation.HitPoint.X);
                bool flag = false;
                if (viewportResizingColumnLayoutFromX == null)
                {
                    if (savedHitTestInformation.ColumnViewportIndex == 0)
                    {
                        viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(-1, savedHitTestInformation.HitPoint.X);
                    }
                    if ((viewportResizingColumnLayoutFromX == null) && ((savedHitTestInformation.ColumnViewportIndex == 0) || (savedHitTestInformation.ColumnViewportIndex == -1)))
                    {
                        viewportResizingColumnLayoutFromX = GetRowHeaderResizingColumnLayoutFromX(savedHitTestInformation.HitPoint.X);
                        flag = true;
                    }
                }
                if (viewportResizingColumnLayoutFromX != null)
                {
                    int column = viewportResizingColumnLayoutFromX.Column;
                    if (!flag)
                    {
                        AutoFitColumnInternal(column, true, false);
                    }
                    else
                    {
                        ColumnAutoFitUndoAction command = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(column) }, true);
                        DoCommand(command);
                    }
                }
            }
            else if (savedHitTestInformation.HitTestType == HitTestType.Corner)
            {
                viewportResizingColumnLayoutFromX = GetRowHeaderColumnLayoutModel().FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn);
                if (viewportResizingColumnLayoutFromX != null)
                {
                    int num2 = viewportResizingColumnLayoutFromX.Column;
                    ColumnAutoFitUndoAction action2 = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(num2) }, true);
                    DoCommand(action2);
                }
            }
        }
コード例 #8
0
ファイル: Excel-Floating.cs プロジェクト: Daoting/dt
        internal Rect[] GetFloatingObjectsResizingRects(int rowViewport, int columnViewport)
        {
            if ((_movingResizingFloatingObjects == null) || (_movingResizingFloatingObjects.Count == 0))
            {
                return(null);
            }
            Point mousePosition = MousePosition;
            HitTestInformation savedHitTestInformation = GetHitInfo();

            if (IsTouchingResizingFloatingObjects || IsTouchingMovingFloatingObjects)
            {
                savedHitTestInformation = _touchStartHitTestInfo;
            }
            if (savedHitTestInformation.FloatingObjectInfo == null)
            {
                Debugger.Break();
            }
            if (savedHitTestInformation.FloatingObjectInfo.InTopNWSEResize)
            {
                return(GetFloatingObjectsTopleftResizingRects(rowViewport, columnViewport, mousePosition));
            }
            if (savedHitTestInformation.FloatingObjectInfo.InTopNSResize)
            {
                return(GetFloatingObjectsTopCenterResizingRects(rowViewport, columnViewport, mousePosition));
            }
            if (savedHitTestInformation.FloatingObjectInfo.InTopNESWResize)
            {
                return(GetFloatingObjectsTopRightResizingRects(rowViewport, columnViewport, mousePosition));
            }
            if (savedHitTestInformation.FloatingObjectInfo.InLeftWEResize)
            {
                return(GetFloatingObjectsMiddleLeftResizingRects(rowViewport, columnViewport, mousePosition));
            }
            if (savedHitTestInformation.FloatingObjectInfo.InRightWEResize)
            {
                return(GetFloatingObjectsMiddleRightResizingRects(rowViewport, columnViewport, mousePosition));
            }
            if (savedHitTestInformation.FloatingObjectInfo.InBottomNESWResize)
            {
                return(GetFloatingObjectsBottomLeftResizingRects(rowViewport, columnViewport, mousePosition));
            }
            if (savedHitTestInformation.FloatingObjectInfo.InBottomNSResize)
            {
                return(GetFloatingObjectsBottomCenterResizingRects(rowViewport, columnViewport, mousePosition));
            }
            if (savedHitTestInformation.FloatingObjectInfo.InBottomNWSEResize)
            {
                return(GetFloatingObjectsBottomRighResizingRects(rowViewport, columnViewport, mousePosition));
            }
            return(new List <Rect>().ToArray());
        }
コード例 #9
0
        void AutoFitRowForTouch(HitTestInformation hi)
        {
            RowLayout viewportResizingRowLayoutFromYForTouch;

            if (IsTouchResizingRows)
            {
                EndTouchRowResizing();
            }
            if (hi.HitTestType == HitTestType.RowHeader)
            {
                bool flag = false;
                viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(hi.RowViewportIndex, hi.HitPoint.Y);
                if (viewportResizingRowLayoutFromYForTouch == null)
                {
                    if (hi.RowViewportIndex == 0)
                    {
                        viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(-1, hi.HitPoint.Y);
                    }
                    if ((viewportResizingRowLayoutFromYForTouch == null) && ((hi.RowViewportIndex == -1) || (hi.RowViewportIndex == 0)))
                    {
                        viewportResizingRowLayoutFromYForTouch = GetColumnHeaderResizingRowLayoutFromYForTouch(hi.HitPoint.Y);
                        flag = true;
                    }
                }
                if (viewportResizingRowLayoutFromYForTouch != null)
                {
                    int row = viewportResizingRowLayoutFromYForTouch.Row;
                    if (!flag)
                    {
                        AutoFitRowInternal(row, true, false);
                    }
                    else
                    {
                        RowAutoFitUndoAction command = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(row) }, true);
                        DoCommand(command);
                    }
                }
            }
            else if (hi.HitTestType == HitTestType.Corner)
            {
                viewportResizingRowLayoutFromYForTouch = GetColumnHeaderRowLayoutModel().FindRow(hi.HeaderInfo.ResizingRow);
                if (viewportResizingRowLayoutFromYForTouch != null)
                {
                    int num2 = viewportResizingRowLayoutFromYForTouch.Row;
                    RowAutoFitUndoAction action2 = new RowAutoFitUndoAction(ActiveSheet, new RowAutoFitExtent[] { new RowAutoFitExtent(num2) }, true);
                    DoCommand(action2);
                }
            }
        }
コード例 #10
0
        void AutoFitColumnForTouch(HitTestInformation hi)
        {
            ColumnLayout viewportResizingColumnLayoutFromXForTouch;

            if (IsTouchResizingColumns)
            {
                EndTouchColumnResizing();
            }
            if (hi.HitTestType == HitTestType.ColumnHeader)
            {
                viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(hi.ColumnViewportIndex, hi.HitPoint.X);
                bool flag = false;
                if (viewportResizingColumnLayoutFromXForTouch == null)
                {
                    if (hi.ColumnViewportIndex == 0)
                    {
                        viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(-1, hi.HitPoint.X);
                    }
                    if ((viewportResizingColumnLayoutFromXForTouch == null) && ((hi.ColumnViewportIndex == 0) || (hi.ColumnViewportIndex == -1)))
                    {
                        viewportResizingColumnLayoutFromXForTouch = GetRowHeaderResizingColumnLayoutFromXForTouch(hi.HitPoint.X);
                        flag = true;
                    }
                }
                if (viewportResizingColumnLayoutFromXForTouch != null)
                {
                    int column = viewportResizingColumnLayoutFromXForTouch.Column;
                    if (!flag)
                    {
                        AutoFitColumnInternal(column, true, false);
                    }
                    else
                    {
                        ColumnAutoFitUndoAction command = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(column) }, true);
                        DoCommand(command);
                    }
                }
            }
            else if (hi.HitTestType == HitTestType.Corner)
            {
                viewportResizingColumnLayoutFromXForTouch = GetRowHeaderColumnLayoutModel().FindColumn(hi.HeaderInfo.ResizingColumn);
                if (viewportResizingColumnLayoutFromXForTouch != null)
                {
                    int num2 = viewportResizingColumnLayoutFromXForTouch.Column;
                    ColumnAutoFitUndoAction action2 = new ColumnAutoFitUndoAction(ActiveSheet, new ColumnAutoFitExtent[] { new ColumnAutoFitExtent(num2) }, true);
                    DoCommand(action2);
                }
            }
        }
コード例 #11
0
        void ContinueColumnResizing()
        {
            HitTestInformation savedHitTestInformation           = GetHitInfo();
            ColumnLayout       viewportResizingColumnLayoutFromX = null;

            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.Corner:
                viewportResizingColumnLayoutFromX = GetRowHeaderColumnLayoutModel().FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn);
                break;

            case HitTestType.ColumnHeader:
                viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(savedHitTestInformation.ColumnViewportIndex, savedHitTestInformation.HitPoint.X);
                if (viewportResizingColumnLayoutFromX == null)
                {
                    viewportResizingColumnLayoutFromX = GetViewportColumnLayoutModel(savedHitTestInformation.ColumnViewportIndex).FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn);
                    if (viewportResizingColumnLayoutFromX == null)
                    {
                        if (savedHitTestInformation.ColumnViewportIndex == 0)
                        {
                            viewportResizingColumnLayoutFromX = GetViewportResizingColumnLayoutFromX(-1, savedHitTestInformation.HitPoint.X);
                        }
                        if ((viewportResizingColumnLayoutFromX == null) && ((savedHitTestInformation.ColumnViewportIndex == 0) || (savedHitTestInformation.ColumnViewportIndex == -1)))
                        {
                            viewportResizingColumnLayoutFromX = GetRowHeaderResizingColumnLayoutFromX(savedHitTestInformation.HitPoint.X);
                        }
                    }
                }
                break;
            }
            if (viewportResizingColumnLayoutFromX != null)
            {
                double x = viewportResizingColumnLayoutFromX.X;
                if (MousePosition.X > _resizingTracker.X1)
                {
                    _resizingTracker.X1 = Math.Min(base.ActualWidth, MousePosition.X) - 0.5;
                }
                else
                {
                    _resizingTracker.X1 = Math.Max(x, MousePosition.X) - 0.5;
                }
                _resizingTracker.X2 = _resizingTracker.X1;
                if ((InputDeviceType != InputDeviceType.Touch) && ((ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Both) || (ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Column)))
                {
                    UpdateResizeToolTip(GetHorizontalResizeTip(Math.Max((double)0.0, (double)(MousePosition.X - x))), true);
                }
            }
        }
コード例 #12
0
        void ContinueTouchRowResizing()
        {
            HitTestInformation savedHitTestInformation = GetHitInfo();
            RowLayout          viewportResizingRowLayoutFromYForTouch = null;

            _DoTouchResizing = true;
            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.Corner:
                viewportResizingRowLayoutFromYForTouch = GetColumnHeaderRowLayoutModel().FindRow(savedHitTestInformation.HeaderInfo.ResizingRow);
                break;

            case HitTestType.RowHeader:
                viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(savedHitTestInformation.RowViewportIndex, savedHitTestInformation.HitPoint.Y);
                if (((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.HeaderInfo != null)) && (savedHitTestInformation.HeaderInfo.ResizingRow >= 0))
                {
                    viewportResizingRowLayoutFromYForTouch = GetViewportRowLayoutModel(savedHitTestInformation.RowViewportIndex).FindRow(savedHitTestInformation.HeaderInfo.ResizingRow);
                }
                if ((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.RowViewportIndex == 0))
                {
                    viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(-1, savedHitTestInformation.HitPoint.Y);
                }
                if ((viewportResizingRowLayoutFromYForTouch == null) && ((savedHitTestInformation.RowViewportIndex == -1) || (savedHitTestInformation.RowViewportIndex == 0)))
                {
                    viewportResizingRowLayoutFromYForTouch = GetColumnHeaderResizingRowLayoutFromYForTouch(savedHitTestInformation.HitPoint.Y);
                }
                break;
            }
            if (viewportResizingRowLayoutFromYForTouch != null)
            {
                double y = viewportResizingRowLayoutFromYForTouch.Y;
                if (MousePosition.Y > _resizingTracker.Y1)
                {
                    _resizingTracker.Y1 = Math.Min(base.ActualHeight, MousePosition.Y) - 0.5;
                }
                else
                {
                    _resizingTracker.Y1 = Math.Max(y, MousePosition.Y) - 0.5;
                }
                _resizingTracker.Y2 = _resizingTracker.Y1;
                if ((InputDeviceType != InputDeviceType.Touch) && ((ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Both) || (ShowResizeTip == Dt.Cells.Data.ShowResizeTip.Row)))
                {
                    UpdateResizeToolTip(GetVerticalResizeTip(Math.Max((double)0.0, (double)(MousePosition.Y - y))), false);
                }
            }
        }
コード例 #13
0
 void UpdateCursorType()
 {
     if ((_mouseCursor != null) && (_mouseCursor.Opacity != 0.0))
     {
         HitTestInformation savedHitTestInformation = GetHitInfo();
         if ((((savedHitTestInformation != null) && (savedHitTestInformation.ViewportInfo != null)) && savedHitTestInformation.ViewportInfo.InDragFillIndicator) || IsDraggingFill)
         {
             bool flag;
             bool flag2;
             KeyboardHelper.GetMetaKeyState(out flag, out flag2);
             CursorType cursorType = flag2 ? CursorType.DragFill_CtrlDragCursor : CursorType.DragFill_DragCursor;
             UpdateMouseCursorType(cursorType);
         }
         else if ((((savedHitTestInformation != null) && (savedHitTestInformation.ViewportInfo != null)) && savedHitTestInformation.ViewportInfo.InSelectionDrag) || IsDragDropping)
         {
             bool flag3;
             bool flag4;
             KeyboardHelper.GetMetaKeyState(out flag3, out flag4);
             CursorType type2 = flag4 ? CursorType.DragCell_CtrlDragCursor : CursorType.DragCell_DragCursor;
             UpdateMouseCursorType(type2);
         }
     }
 }
コード例 #14
0
        void EndColumnSplitting()
        {
            double             num2;
            HitTestInformation savedHitTestInformation = GetHitInfo();
            SheetLayout        layout = GetSheetLayout();
            int columnViewportIndex   = savedHitTestInformation.ColumnViewportIndex;

            IsWorking = false;
            IsTouchColumnSplitting = false;
            IsColumnSplitting      = false;
            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.RowSplitBar:
            case HitTestType.ColumnSplitBar:
                if (MousePosition.X <= layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex))
                {
                    num2 = layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex) - MousePosition.X;
                }
                else
                {
                    num2 = Math.Max((double)0.0, (double)((MousePosition.X - layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex)) - layout.GetHorizontalSplitBarWidth(savedHitTestInformation.ColumnViewportIndex)));
                }
                if (num2 != 0.0)
                {
                    double deltaViewportWidth = (_columnSplittingTracker.X1 - layout.GetHorizontalSplitBarX(savedHitTestInformation.ColumnViewportIndex)) - (layout.GetHorizontalSplitBarWidth(savedHitTestInformation.ColumnViewportIndex) / 2.0);
                    int    viewportIndex      = savedHitTestInformation.ColumnViewportIndex;
                    if (!RaiseColumnViewportWidthChanging(viewportIndex, deltaViewportWidth))
                    {
                        AdjustColumnViewport(columnViewportIndex, deltaViewportWidth);
                        RaiseColumnViewportWidthChanged(viewportIndex, deltaViewportWidth);
                    }
                }
                break;

            case HitTestType.ColumnSplitBox:
                if (ColumnSplitBoxAlignment == SplitBoxAlignment.Leading)
                {
                    num2 = Math.Max(0.0, MousePosition.X - layout.GetViewportX(savedHitTestInformation.ColumnViewportIndex) - _defaultSplitBarSize);
                }
                else
                {
                    num2 = Math.Max(0.0, layout.GetViewportX(savedHitTestInformation.ColumnViewportIndex) + layout.GetViewportWidth(savedHitTestInformation.ColumnViewportIndex) - MousePosition.X - _defaultSplitBarSize);
                }

                if (num2 > 0.0)
                {
                    double num3 = (_columnSplittingTracker.X1 - layout.GetViewportX(columnViewportIndex)) - (_defaultSplitBarSize / 2.0);
                    int    num4 = (ColumnSplitBoxAlignment == SplitBoxAlignment.Leading) ? 0 : (GetViewportInfo().ColumnViewportCount - 1);
                    if (!RaiseColumnViewportWidthChanging(num4, num3))
                    {
                        AddColumnViewport(columnViewportIndex, num3);
                        RaiseColumnViewportWidthChanged(num4, num3);
                        ShowCell(GetActiveRowViewportIndex(), GetActiveColumnViewportIndex(), ActiveSheet.ActiveRowIndex, ActiveSheet.ActiveColumnIndex, VerticalPosition.Nearest, HorizontalPosition.Nearest);
                    }
                }
                break;

            default:
                break;
            }
            _columnSplittingTracker.Opacity = 0.0;
        }
コード例 #15
0
        void EndRowSplitting()
        {
            double             num2;
            HitTestInformation savedHitTestInformation = GetHitInfo();
            SheetLayout        layout = GetSheetLayout();
            int rowViewportIndex      = savedHitTestInformation.RowViewportIndex;

            IsWorking           = false;
            IsRowSplitting      = false;
            IsTouchRowSplitting = false;
            switch (savedHitTestInformation.HitTestType)
            {
            case HitTestType.RowSplitBar:
            case HitTestType.ColumnSplitBar:
                if (MousePosition.Y <= layout.GetVerticalSplitBarY(rowViewportIndex))
                {
                    num2 = layout.GetVerticalSplitBarY(rowViewportIndex) - MousePosition.Y;
                }
                else
                {
                    num2 = Math.Max(0.0, ((MousePosition.Y - layout.GetVerticalSplitBarY(rowViewportIndex)) - layout.GetVerticalSplitBarHeight(rowViewportIndex)));
                }
                if (num2 != 0.0)
                {
                    double deltaViewportHeight = (_rowSplittingTracker.Y1 - layout.GetVerticalSplitBarY(rowViewportIndex)) - (layout.GetVerticalSplitBarHeight(rowViewportIndex) / 2.0);
                    int    viewportIndex       = savedHitTestInformation.RowViewportIndex;
                    if (!RaiseRowViewportHeightChanging(viewportIndex, deltaViewportHeight))
                    {
                        AdjustRowViewport(rowViewportIndex, deltaViewportHeight);
                        RaiseRowViewportHeightChanged(viewportIndex, deltaViewportHeight);
                    }
                }
                break;

            case HitTestType.RowSplitBox:
                if (RowSplitBoxAlignment == SplitBoxAlignment.Leading)
                {
                    num2 = Math.Max(0.0, ((MousePosition.Y - layout.GetViewportY(rowViewportIndex)) - _defaultSplitBarSize));
                }
                else
                {
                    num2 = Math.Max(0.0, (((layout.GetViewportY(rowViewportIndex) + layout.GetViewportHeight(rowViewportIndex)) - MousePosition.Y) - _defaultSplitBarSize));
                }
                if (num2 > 0.0)
                {
                    double num3 = (_rowSplittingTracker.Y1 - layout.GetViewportY(rowViewportIndex)) - (_defaultSplitBarSize / 2.0);
                    int    num4 = (RowSplitBoxAlignment == SplitBoxAlignment.Leading) ? 0 : (GetViewportInfo().RowViewportCount - 1);
                    if (!RaiseRowViewportHeightChanging(num4, num3))
                    {
                        AddRowViewport(rowViewportIndex, num3);
                        RaiseRowViewportHeightChanged(num4, num3);
                        ShowCell(GetActiveRowViewportIndex(), GetActiveColumnViewportIndex(), ActiveSheet.ActiveRowIndex, ActiveSheet.ActiveColumnIndex, VerticalPosition.Nearest, HorizontalPosition.Nearest);
                    }
                }
                break;

            default:
                break;
            }
            _rowSplittingTracker.Opacity = 0.0;
        }
コード例 #16
0
        void EndTouchRowResizing()
        {
            IsWorking           = false;
            IsTouchResizingRows = false;
            HitTestInformation savedHitTestInformation = GetHitInfo();

            if ((savedHitTestInformation.HitPoint.Y == MousePosition.Y) || !_DoTouchResizing)
            {
                TooltipHelper.CloseTooltip();
                _resizingTracker.Visibility = Visibility.Collapsed;
            }
            else
            {
                RowLayout viewportResizingRowLayoutFromYForTouch = null;
                switch (savedHitTestInformation.HitTestType)
                {
                case HitTestType.Corner:
                    viewportResizingRowLayoutFromYForTouch = GetColumnHeaderRowLayoutModel().FindRow(savedHitTestInformation.HeaderInfo.ResizingRow);
                    if (viewportResizingRowLayoutFromYForTouch != null)
                    {
                        double              num6    = (_resizingTracker.Y1 - viewportResizingRowLayoutFromYForTouch.Y) - viewportResizingRowLayoutFromYForTouch.Height;
                        int                 row     = viewportResizingRowLayoutFromYForTouch.Row;
                        double              size    = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.ColumnHeader.Rows[row].ActualHeight + (num6 / ((double)ZoomFactor)))));
                        RowResizeExtent[]   rows    = new RowResizeExtent[] { new RowResizeExtent(row, row) };
                        RowResizeUndoAction command = new RowResizeUndoAction(ActiveSheet, rows, size, true);
                        DoCommand(command);
                    }
                    break;

                case HitTestType.RowHeader:
                {
                    viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(savedHitTestInformation.RowViewportIndex, savedHitTestInformation.HitPoint.Y);
                    bool flag = false;
                    if ((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.RowViewportIndex == 0))
                    {
                        viewportResizingRowLayoutFromYForTouch = GetViewportResizingRowLayoutFromYForTouch(-1, savedHitTestInformation.HitPoint.Y);
                    }
                    if (((viewportResizingRowLayoutFromYForTouch == null) && (savedHitTestInformation.HeaderInfo != null)) && (savedHitTestInformation.HeaderInfo.ResizingRow >= 0))
                    {
                        viewportResizingRowLayoutFromYForTouch = GetViewportRowLayoutModel(savedHitTestInformation.RowViewportIndex).FindRow(savedHitTestInformation.HeaderInfo.ResizingRow);
                    }
                    if ((viewportResizingRowLayoutFromYForTouch == null) && ((savedHitTestInformation.RowViewportIndex == -1) || (savedHitTestInformation.RowViewportIndex == 0)))
                    {
                        viewportResizingRowLayoutFromYForTouch = GetColumnHeaderResizingRowLayoutFromYForTouch(savedHitTestInformation.HitPoint.Y);
                        flag = true;
                    }
                    if (viewportResizingRowLayoutFromYForTouch != null)
                    {
                        double num      = (_resizingTracker.Y1 - viewportResizingRowLayoutFromYForTouch.Y) - viewportResizingRowLayoutFromYForTouch.Height;
                        int    firstRow = viewportResizingRowLayoutFromYForTouch.Row;
                        double num3     = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.Rows[firstRow].ActualHeight + (num / ((double)ZoomFactor)))));
                        if (flag)
                        {
                            RowResizeExtent[]   extentArray2 = new RowResizeExtent[] { new RowResizeExtent(firstRow, firstRow) };
                            RowResizeUndoAction action2      = new RowResizeUndoAction(ActiveSheet, extentArray2, num3, true);
                            DoCommand(action2);
                            break;
                        }
                        List <RowResizeExtent> list = new List <RowResizeExtent>();
                        if (ActiveSheet.IsSelected(firstRow, -1))
                        {
                            foreach (CellRange range in ActiveSheet.Selections)
                            {
                                if (range.Column == -1)
                                {
                                    int num4 = (range.Row == -1) ? 0 : range.Row;
                                    int num5 = ((range.Row == -1) && (range.RowCount == -1)) ? ActiveSheet.RowCount : range.RowCount;
                                    list.Add(new RowResizeExtent(num4, (num4 + num5) - 1));
                                }
                            }
                        }
                        else
                        {
                            list.Add(new RowResizeExtent(firstRow, firstRow));
                        }
                        RowResizeExtent[] extentArray = new RowResizeExtent[list.Count];
                        list.CopyTo(extentArray);
                        RowResizeUndoAction action = new RowResizeUndoAction(ActiveSheet, extentArray, num3, false);
                        DoCommand(action);
                    }
                    break;
                }
                }
                TooltipHelper.CloseTooltip();
                _resizingTracker.Visibility = Visibility.Collapsed;
                _DoTouchResizing            = false;
            }
        }
コード例 #17
0
        void EndTouchColumnResizing()
        {
            IsWorking = false;
            IsTouchResizingColumns = false;
            HitTestInformation savedHitTestInformation = GetHitInfo();

            if ((savedHitTestInformation.HitPoint.X == MousePosition.X) || !_DoTouchResizing)
            {
                TooltipHelper.CloseTooltip();
                _resizingTracker.Visibility = Visibility.Collapsed;
            }
            else
            {
                ColumnLayout viewportResizingColumnLayoutFromXForTouch;
                switch (savedHitTestInformation.HitTestType)
                {
                case HitTestType.Corner:
                    viewportResizingColumnLayoutFromXForTouch = GetRowHeaderColumnLayoutModel().FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn);
                    if (viewportResizingColumnLayoutFromXForTouch != null)
                    {
                        double num6   = (_resizingTracker.X1 - viewportResizingColumnLayoutFromXForTouch.X) - viewportResizingColumnLayoutFromXForTouch.Width;
                        int    column = viewportResizingColumnLayoutFromXForTouch.Column;
                        double size   = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.RowHeader.Columns[column].ActualWidth + (num6 / ((double)ZoomFactor)))));
                        ColumnResizeExtent[]   columns = new ColumnResizeExtent[] { new ColumnResizeExtent(column, column) };
                        ColumnResizeUndoAction command = new ColumnResizeUndoAction(ActiveSheet, columns, size, true);
                        DoCommand(command);
                    }
                    break;

                case HitTestType.ColumnHeader:
                {
                    viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(savedHitTestInformation.ColumnViewportIndex, savedHitTestInformation.HitPoint.X);
                    bool flag = false;
                    if (viewportResizingColumnLayoutFromXForTouch == null)
                    {
                        viewportResizingColumnLayoutFromXForTouch = GetViewportColumnLayoutModel(savedHitTestInformation.ColumnViewportIndex).FindColumn(savedHitTestInformation.HeaderInfo.ResizingColumn);
                        if ((viewportResizingColumnLayoutFromXForTouch == null) && (savedHitTestInformation.ColumnViewportIndex == 0))
                        {
                            viewportResizingColumnLayoutFromXForTouch = GetViewportResizingColumnLayoutFromXForTouch(-1, savedHitTestInformation.HitPoint.X);
                        }
                        if ((viewportResizingColumnLayoutFromXForTouch == null) && ((savedHitTestInformation.ColumnViewportIndex == 0) || (savedHitTestInformation.ColumnViewportIndex == -1)))
                        {
                            viewportResizingColumnLayoutFromXForTouch = GetRowHeaderResizingColumnLayoutFromXForTouch(savedHitTestInformation.HitPoint.X);
                            flag = true;
                        }
                    }
                    if (viewportResizingColumnLayoutFromXForTouch != null)
                    {
                        double num  = (_resizingTracker.X1 - viewportResizingColumnLayoutFromXForTouch.X) - viewportResizingColumnLayoutFromXForTouch.Width;
                        int    num2 = viewportResizingColumnLayoutFromXForTouch.Column;
                        double num3 = Math.Ceiling(Math.Max((double)0.0, (double)(ActiveSheet.Columns[num2].ActualWidth + (num / ((double)ZoomFactor)))));
                        if (!flag)
                        {
                            List <ColumnResizeExtent> list = new List <ColumnResizeExtent>();
                            if (ActiveSheet.IsSelected(-1, num2))
                            {
                                foreach (CellRange range in ActiveSheet.Selections)
                                {
                                    if (range.Row == -1)
                                    {
                                        int firstColumn = (range.Column == -1) ? 0 : range.Column;
                                        int num5        = ((range.Column == -1) && (range.ColumnCount == -1)) ? ActiveSheet.ColumnCount : range.ColumnCount;
                                        list.Add(new ColumnResizeExtent(firstColumn, (firstColumn + num5) - 1));
                                    }
                                }
                            }
                            else
                            {
                                list.Add(new ColumnResizeExtent(num2, num2));
                            }
                            ColumnResizeExtent[] extentArray = new ColumnResizeExtent[list.Count];
                            list.CopyTo(extentArray);
                            ColumnResizeUndoAction action = new ColumnResizeUndoAction(ActiveSheet, extentArray, num3, false);
                            DoCommand(action);
                        }
                        else
                        {
                            ColumnResizeExtent[]   extentArray2 = new ColumnResizeExtent[] { new ColumnResizeExtent(num2, num2) };
                            ColumnResizeUndoAction action2      = new ColumnResizeUndoAction(ActiveSheet, extentArray2, num3, true);
                            DoCommand(action2);
                        }
                    }
                    break;
                }
                }
                TooltipHelper.CloseTooltip();
                _resizingTracker.Visibility = Visibility.Collapsed;
                _DoTouchResizing            = false;
            }
        }