private FieldLocation getFieldLocationForDataAndOpenAsNeeded(Data data, Address address) {
		Data subData = data.getPrimitiveAt((int) address.subtract(data.getMinAddress()));
		if (subData != null) {
			boolean didOpen = openAllData(subData);
			if (didOpen) {
				layoutModel.dataChanged(true);
			}
		}

		while (subData != null) {
			Address addr = subData.getMinAddress();
			Program program = subData.getProgram();
			ProgramLocation location = new AddressFieldLocation(program, addr,
				subData.getComponentPath(), addr.toString(), 0);
			FieldLocation floc = layoutModel.getFieldLocation(location);
			if (floc != null) {
				return floc;
			}
			subData = subData.getParent();
		}
		return null;
	}
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