コード例 #1
0
 public override CompositePosition GetTopLeft(CompositeRange range)
 {
     if (!range.IsEmpty)
     {
         return(new CompositePosition(range.Type, range.Row, range.Column));
     }
     return(CompositePosition.Empty);
 }
コード例 #2
0
        public override List <int> GetColumnIndexes(CompositeRange range)
        {
            List <int> list = new List <int>();

            for (int i = 0; i < range.ColumnCount; i++)
            {
                list.Add(range.Column + i);
            }
            return(list);
        }
コード例 #3
0
        int GetCurrentPageIndex(CompositePosition position)
        {
            IList <CompositeRange> selections = Selections;

            for (int i = selections.Count - 1; i >= 0; i--)
            {
                CompositeRange fixedRange = GetFixedRange(selections[i]);
                if (((position.Column >= fixedRange.Column) && (position.Column <= fixedRange.EndColumn)) && ((position.Row >= fixedRange.Row) && (position.Row <= fixedRange.EndRow)))
                {
                    return(i);
                }
            }
            return(-1);
        }
コード例 #4
0
        CompositePosition GetNextCellInRange(CompositeRange range, int rowDataIndex, List <int> columnIndexes, int startColumnDataIndex, out CompositePosition newStartPosition)
        {
            CompositePosition position = GetNextCellInRow(rowDataIndex, columnIndexes, startColumnDataIndex, out newStartPosition);

            if (position.IsEmpty)
            {
                for (int i = rowDataIndex + 1; i <= range.EndRow; i++)
                {
                    position = GetNextCellInRow(i, columnIndexes, -1, out newStartPosition);
                    if (!position.IsEmpty)
                    {
                        return(position);
                    }
                }
            }
            return(position);
        }
コード例 #5
0
 public virtual bool ShouldNavigateInSelection()
 {
     if (Selections.Count == 0)
     {
         return(false);
     }
     if (Selections.Count <= 1)
     {
         CompositeRange    fixedRange = GetFixedRange(Selections[0]);
         CompositePosition topLeft    = GetTopLeft(fixedRange);
         if (fixedRange.RowCount <= GetRowSpan(topLeft))
         {
             return(fixedRange.ColumnCount > GetColumnSpan(topLeft));
         }
     }
     return(true);
 }
コード例 #6
0
        CompositePosition GetPreviousCellInRange(CompositeRange range, int rowDataIndex, List <int> columnIndexes, int startColumnDataIndex, out CompositePosition newStartPosition)
        {
            CompositePosition position = GetPreviousCellInRow(rowDataIndex, columnIndexes, startColumnDataIndex, out newStartPosition);

            if (position.IsEmpty)
            {
                for (int i = rowDataIndex - 1; i >= range.Row; i--)
                {
                    position = GetPreviousCellInRow(i, columnIndexes, CompositeColumnCount, out newStartPosition);
                    if (!position.IsEmpty)
                    {
                        return(position);
                    }
                }
            }
            return(position);
        }
コード例 #7
0
        public override CompositeRange GetFixedRange(CompositeRange range)
        {
            int compositeRowCount    = CompositeRowCount;
            int compositeColumnCount = CompositeColumnCount;

            if ((range.Row == -1) && (range.Column == -1))
            {
                return(new CompositeRange(DataSheetElementType.Cell, 0, 0, compositeRowCount, compositeColumnCount));
            }
            if (range.Row == -1)
            {
                return(new CompositeRange(DataSheetElementType.Cell, 0, range.Column, compositeRowCount, range.ColumnCount));
            }
            if (range.Column == -1)
            {
                return(new CompositeRange(DataSheetElementType.Cell, range.Row, 0, range.RowCount, compositeColumnCount));
            }
            return(new CompositeRange(DataSheetElementType.Cell, range.Row, range.Column, range.RowCount, range.ColumnCount));
        }
コード例 #8
0
        public static CompositeRange GetFixedRange(this CompositeRange comRange, int rowCount, int columnCount)
        {
            CompositeRange empty = CompositeRange.Empty;

            if ((comRange.Row != -1) && (comRange.Column != -1))
            {
                return(new CompositeRange(DataSheetElementType.Cell, comRange.Row, comRange.Column, comRange.RowCount, comRange.ColumnCount));
            }
            if ((comRange.Row == -1) && (comRange.Column != -1))
            {
                return(new CompositeRange(DataSheetElementType.Cell, 0, comRange.Column, rowCount, comRange.ColumnCount));
            }
            if ((comRange.Row != -1) && (comRange.Column == -1))
            {
                return(new CompositeRange(DataSheetElementType.Cell, comRange.Row, 0, comRange.RowCount, columnCount));
            }
            if ((comRange.Row == -1) && (comRange.Column == -1))
            {
                empty = new CompositeRange(DataSheetElementType.Cell, 0, 0, rowCount, columnCount);
            }
            return(empty);
        }
コード例 #9
0
 public abstract CompositeRange GetFixedRange(CompositeRange range);
コード例 #10
0
 public abstract List <int> GetColumnIndexes(CompositeRange range);
コード例 #11
0
 public abstract CompositePosition GetTopLeft(CompositeRange range);