Esempio n. 1
0
 public override bool IsMerged(TabularPosition position, out TabularRange range)
 {
     range = new TabularRange(position, 1, 1);
     if ((_excel.ActiveSheet != null) && (_excel.ActiveSheet.SpanModel != null))
     {
         CellRange range2 = _excel.ActiveSheet.SpanModel.Find(position.Row, position.Column);
         if (range2 != null)
         {
             range = new TabularRange(position.Area, range2.Row, range2.Column, range2.RowCount, range2.ColumnCount);
             return(true);
         }
     }
     return(false);
 }
Esempio n. 2
0
 TabularPosition MoveLeftByPage(out TabularPosition newStartPosition)
 {
     newStartPosition = TabularPosition.Empty;
     if (CanHorizontalScroll(false))
     {
         TabularPosition position = _startNavigateCellPosition;
         if (CurrentCell.IsEmpty)
         {
             position = new TabularPosition(_startNavigateCellPosition.Area, 0, 0);
         }
         TabularRange currentViewport = CurrentViewport;
         bool         flag            = IsColumnInViewport(currentViewport, position);
         ScrollToPreviousPageOfColumns();
         TabularRange viewPort = CurrentViewport;
         if (IsColumnInViewport(viewPort, position))
         {
             return(CurrentCell);
         }
         int column = flag ? (position.Column - currentViewport.ColumnCount) : viewPort.Column;
         if (column < ContentBounds.Column)
         {
             column = ContentBounds.Column;
         }
         int num2 = flag ? position.Column : viewPort.LastColumn;
         while (column < num2)
         {
             TabularRange    range3;
             TabularPosition topLeft = new TabularPosition(_startNavigateCellPosition.Area, position.Row, column);
             if (IsMerged(topLeft, out range3))
             {
                 topLeft = range3.TopLeft;
             }
             if (CanMoveCurrentTo(topLeft))
             {
                 newStartPosition = new TabularPosition(_startNavigateCellPosition.Area, position.Row, column);
                 return(topLeft);
             }
             column += range3.ColumnCount;
         }
     }
     return(TabularPosition.Empty);
 }
Esempio n. 3
0
 TabularPosition MoveUpByPage(out TabularPosition newStartPosition)
 {
     newStartPosition = TabularPosition.Empty;
     if (CanVerticalScroll(false))
     {
         TabularPosition position = _startNavigateCellPosition;
         if (CurrentCell.IsEmpty)
         {
             position = new TabularPosition(_startNavigateCellPosition.Area, 0, 0);
         }
         TabularRange currentViewport = CurrentViewport;
         bool         flag            = IsRowInViewport(currentViewport, position);
         ScrollToPreviousPageOfRows();
         TabularRange viewPort = CurrentViewport;
         if (IsRowInViewport(viewPort, position))
         {
             return(CurrentCell);
         }
         int row  = flag ? (position.Row - currentViewport.RowCount) : viewPort.Row;
         int num2 = flag ? position.Row : viewPort.LastRow;
         if (row < ContentBounds.Row)
         {
             row = ContentBounds.Row;
         }
         while (row < num2)
         {
             TabularRange    range3;
             TabularPosition topLeft = new TabularPosition(_startNavigateCellPosition.Area, row, position.Column);
             if (IsMerged(topLeft, out range3))
             {
                 topLeft = range3.TopLeft;
             }
             if (CanMoveCurrentTo(topLeft))
             {
                 newStartPosition = new TabularPosition(_startNavigateCellPosition.Area, row, position.Column);
                 return(topLeft);
             }
             row += range3.RowCount;
         }
     }
     return(TabularPosition.Empty);
 }
Esempio n. 4
0
 TabularPosition MoveRightByPage(out TabularPosition newStartPosition)
 {
     newStartPosition = TabularPosition.Empty;
     if (CanHorizontalScroll(true))
     {
         TabularPosition position = _startNavigateCellPosition;
         if (CurrentCell.IsEmpty)
         {
             position = new TabularPosition(_startNavigateCellPosition.Area, 0, 0);
         }
         TabularRange currentViewport = CurrentViewport;
         bool         flag            = IsColumnInViewport(currentViewport, _startNavigateCellPosition);
         ScrollToNextPageOfColumns();
         TabularRange viewPort = CurrentViewport;
         if (IsColumnInViewport(viewPort, position))
         {
             return(CurrentCell);
         }
         if (flag)
         {
             int column = position.Column + currentViewport.ColumnCount;
             if (column > ContentBounds.LastColumn)
             {
                 column = ContentBounds.LastColumn;
             }
             while (column > position.Column)
             {
                 TabularRange    range3;
                 TabularPosition topLeft = new TabularPosition(position.Area, position.Row, column);
                 if (IsMerged(topLeft, out range3))
                 {
                     topLeft = range3.TopLeft;
                 }
                 if (CanMoveCurrentTo(topLeft))
                 {
                     newStartPosition = new TabularPosition(position.Area, position.Row, column);
                     return(topLeft);
                 }
                 column -= range3.ColumnCount;
             }
         }
         else
         {
             TabularRange range4;
             for (int i = viewPort.Column; i < viewPort.LastColumn; i += range4.ColumnCount)
             {
                 TabularPosition position3 = new TabularPosition(position.Area, position.Row, i);
                 if (IsMerged(position3, out range4))
                 {
                     position3 = range4.TopLeft;
                 }
                 if (CanMoveCurrentTo(position3))
                 {
                     newStartPosition = new TabularPosition(position.Area, position.Row, i);
                     return(position3);
                 }
             }
         }
     }
     return(TabularPosition.Empty);
 }
Esempio n. 5
0
 TabularPosition MoveDownByPage(out TabularPosition newStartPosition)
 {
     newStartPosition = TabularPosition.Empty;
     if (CanVerticalScroll(true))
     {
         TabularPosition position = _startNavigateCellPosition;
         if (CurrentCell.IsEmpty)
         {
             position = new TabularPosition(_startNavigateCellPosition.Area, 0, 0);
         }
         TabularRange currentViewport = CurrentViewport;
         bool         flag            = IsRowInViewport(currentViewport, position);
         ScrollToNextPageOfRows();
         TabularRange viewPort = CurrentViewport;
         if (IsRowInViewport(viewPort, position))
         {
             return(CurrentCell);
         }
         if (flag)
         {
             int row = position.Row + currentViewport.RowCount;
             if (row > ContentBounds.LastRow)
             {
                 row = ContentBounds.LastRow;
             }
             while (row > position.Row)
             {
                 TabularRange    range3;
                 TabularPosition topLeft = new TabularPosition(position.Area, row, position.Column);
                 if (IsMerged(topLeft, out range3))
                 {
                     topLeft = range3.TopLeft;
                 }
                 if (CanMoveCurrentTo(topLeft))
                 {
                     newStartPosition = new TabularPosition(position.Area, row, position.Column);
                     return(topLeft);
                 }
                 row -= range3.RowCount;
             }
         }
         else
         {
             TabularRange range4;
             for (int i = viewPort.Row; i < viewPort.LastRow; i += range4.RowCount)
             {
                 TabularPosition position3 = new TabularPosition(_startNavigateCellPosition.Area, i, position.Column);
                 if (IsMerged(position3, out range4))
                 {
                     position3 = range4.TopLeft;
                 }
                 if (CanMoveCurrentTo(position3))
                 {
                     newStartPosition = new TabularPosition(_startNavigateCellPosition.Area, i, position.Column);
                     return(position3);
                 }
             }
         }
     }
     return(TabularPosition.Empty);
 }
Esempio n. 6
0
 bool IsRowInViewport(TabularRange viewPort, TabularPosition position)
 {
     return((position.Row >= viewPort.Row) && (position.Row <= viewPort.LastRow));
 }
Esempio n. 7
0
 public abstract bool IsMerged(TabularPosition position, out TabularRange range);
Esempio n. 8
0
 bool IsColumnInViewport(TabularRange viewPort, TabularPosition position)
 {
     return((position.Column >= viewPort.Column) && (position.Column <= viewPort.LastColumn));
 }