@Override
	protected void calculateThumbSize() {
		
		super.calculateThumbSize();
		
		// Average the number of bytes in a row to get a reasonable row-to-byte factor.
		long fileSize;
		try {
			fileSize = reader.getFileSize();
		}
		catch (IOException e) {
			Msg.error(this,  "error reading file size: " + e);
			return;
		}
		
		int rows = table.getRowCount();
		if (rows == 0) {
			return;
		}
		long bytesInView = 0;
		Iterator<Chunk> iter = model.iterator();
		while (iter.hasNext()) {
			Chunk chunk = iter.next();
			bytesInView += (chunk.end - chunk.start);
		}
		long bytesPerLine = bytesInView / rows;
		long totalLinesInFile = fileSize / bytesPerLine;

		if (scrollPane.getViewport() != null) {
			float viewableRatio;
			viewableRatio = (float) scrollPane.getViewport().getHeight() / totalLinesInFile;
			float thumbHeight = viewableRatio * table.getRowHeight();
			thumbRect.setSize(THUMB_WIDTH, MINIMUM_THUMB_HEIGHT + (int) thumbHeight);
		}		
	}
This is the method that the base class uses to determine thumb size. We override so it
can be determined by the size of the table and the viewport.
Ghidra/Framework/Project/src/main/java/ghidra/framework/main/logviewer/ui/FVSliderUI.java