@Override
	public JComponent getHoverComponent(Program program, ProgramLocation programLocation,
			FieldLocation fieldLocation, Field field) {

		if (!enabled || programLocation == null) {
			return null;
		}

		if (!(programLocation instanceof AddressFieldLocation)) {
			return null;
		}

		StringBuilder sb = new StringBuilder("<html><table>");

		Address loc = programLocation.getAddress();
		if (isInDefaultSpace(program, loc)) {
			long imagebaseOffset = loc.subtract(program.getImageBase());
			appendTableRow(sb, "Imagebase Offset", null, imagebaseOffset);
		}

		MemoryBlock block = program.getMemory().getBlock(loc);
		long memblockOffset = loc.subtract(block.getStart());
		appendTableRow(sb, "Memory Block Offset", HTMLUtilities.escapeHTML(block.getName()),
			memblockOffset);

		addFunctionInfo(program, loc, sb);
		addDataInfo(program, loc, sb);
		addByteSourceInfo(program, loc, sb);

		return createTooltipComponent(sb.toString());
	}
A hover service to show tool tip text for hovering over a program address in the listing.
The tool tip text shows relationships to key topological elements of the program relative to
the address -- offset from image base, offset from current memory block; if the address is
within the bounds of a function, the offset from function entry point; if the address is within
the bounds of defined data, the offset from the start of the data.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/hover/ProgramAddressRelationshipListingHover.java