@Override
	public void mouseDragged(MouseEvent e) {

		this.mouseDragging = true;

		int[] selectedRows = getSelectedRows();

		// First get the bounds of the table so we can tell if the mouse is below or above it. This
		// will tell us if we're dragging up or down.
		int tableTop = (int) this.getParent().getLocationOnScreen().getY();
		int tableBottom = (int) (tableTop + this.getSize().getHeight());

		// See if the last row is selected; if so, and we're dragging up, we need to load a new 
		// chunk. 
		if (e.getLocationOnScreen().getY() < tableTop) {
			if (IntStream.of(selectedRows).anyMatch(x -> x == 0)) {
				FVEvent decrementEvt = new FVEvent(EventType.DECREMENT_AND_ADD_SELECTION, 1);
				eventListener.send(decrementEvt);
				return;
			}
		}

		// See if the first row is selected; if so, and we're dragging down, we need to load a new
		// chunk;
		else if (e.getLocationOnScreen().getY() > tableBottom) {
			if (IntStream.of(selectedRows).anyMatch(x -> x == (getRowCount() - 1))) {
				FVEvent incrementEvt = new FVEvent(EventType.INCREMENT_AND_ADD_SELECTION, 1);
				eventListener.send(incrementEvt);
				return;
			}
		}
	}
Returns true if the rows provided are both in the table.

@param rowStart
@param rowEnd
@return
Ghidra/Framework/Project/src/main/java/ghidra/framework/main/logviewer/ui/FVTable.java