@Override
	protected void updateValueFromComponent() throws ValuesMapParseException {
		if (domainFilePanel != null) {
			DomainFile domainFile = domainFilePanel.getDomainFile();
			if (domainFile == null) {
				String text = domainFilePanel.getText();
				if (text.isBlank()) {
					setValue(null);
					return;
				}
				throw new ValuesMapParseException(getName(), "Project File",
					"No file found for \"" + text + "\"");
			}
			Class<? extends DomainObject> domainObjectClass = domainFile.getDomainObjectClass();
			if (!projectFileClass.isAssignableFrom(domainObjectClass)) {
				throw new ValuesMapParseException(getName(), "Project File",
					"Selected path is not a " + projectFileClass.getSimpleName());
			}
			setValue(domainFile);
		}
	}
Constructor for ProgramValue when wanting to pick from a different project than the
active project, such as a read-only project.
@param name the name of the value
@param project The project from which to pick a project.
@param startingPath the path to a starting folder (Can also be a path to program)
@param projectFileClass a {@link DomainFile} class to filter on. (Only those types
will appear in the chooser)
Ghidra/Features/Base/src/main/java/ghidra/features/base/values/ProjectFileValue.java