private void openDataAsNeeded(ProgramLocation location) {
		Address address = location.getByteAddress();
		Program program = getProgram();
		CodeUnit cu = program.getListing().getCodeUnitContaining(address);
		if (!(cu instanceof Data)) {
			return;
		}

		Data data = (Data) cu;
		if (data.getComponent(0) == null) {
			// not sub data to open
			return;
		}

		Data subData = data.getPrimitiveAt((int) address.subtract(data.getMinAddress()));
		if (subData == null) {
			return;
		}

		if (openAllData(subData)) {
			layoutModel.dataChanged(true);
		}
	}
Center the view of the listing around the given location.

@param location the location
Ghidra/Features/Base/src/main/java/ghidra/app/util/viewer/listingpanel/ListingPanel.java