             
             selectionLayer.select(selectedCells);
         }
+        
+        private function calculateCellsPerPage():Number
+        {
+            var result:int = int(Math.floor(assemblyTableHeight / CellRenderer.CELL_HEIGHT));
+            
+            result = (result <= 1) ? 1 : (result - 1);
+            
+            return result;
+        }
     }
 }
                tryToMoveCaretUp();
            } else if(event.keyCode == Keyboard.DOWN) {
                tryToMoveCaretDown();
            }
            
            selectCellsInRange(shiftSelectionStartCell, activeCell);

        {
            if(activeCell.index > 0) {
                updateActiveCell(columns[activeCell.column.index].column.cells[activeCell.index - 1]);
            }
        }
        
        private function tryToMoveCaretPageDown():void
        {
            var numberOfCellsPerPage:int = calculateCellsPerPage();
            
            if(activeCell.column.cells.length == activeCell.index + numberOfCellsPerPage) {
                return; // already at last cell
            }
            
            if(activeCell.index + numberOfCellsPerPage >= activeCell.column.cells.length) {
                updateActiveCell(columns[activeCell.column.index].column.cells[activeCell.column.cells.length - 1]);
            } else {
                updateActiveCell(columns[activeCell.column.index].column.cells[activeCell.index + numberOfCellsPerPage]);
            }
        }
        
        private function tryToMoveCaretPageUp():void
        {
            var numberOfCellsPerPage:int = calculateCellsPerPage();
            
            if(activeCell.index == 0) {
                return; // nothing to scroll up
            }
            
            if(activeCell.index - numberOfCellsPerPage <= 0) {
                updateActiveCell(columns[activeCell.column.index].column.cells[0]);
            } else {
                updateActiveCell(columns[activeCell.column.index].column.cells[activeCell.index - numberOfCellsPerPage]);
            }
        }
        
