private void selectionChanged(ItemEvent e) {
		if (e.getStateChange() == ItemEvent.SELECTED) {
			loadProfile();
			return;
		}

		ComboBoxItem item = (ComboBoxItem) e.getItem();
		if (!item.isChanged) {
			return;
		}
		if (saveAsInProgress) {
			return;
		}
		if (initialBuild) {
			return;
		}

		if (item.isUserDefined) {
			if (OptionDialog.showOptionDialog(rootPanel, "Save Changes to Profile?",
				"Profile " + item.file.getName() +
					" has changed.\nDo you want to save your changes?",
				"Yes", OptionDialog.QUESTION_MESSAGE) == OptionDialog.OPTION_ONE) {
				save(item);
			}
		}
		else {
			if (OptionDialog.showOptionDialog(rootPanel, "Save Changes to Another Profile?",
				"You have made changes to the default profile " + item.file.getName() +
					",\nhowever, updating default profiles is not allowed." +
					"\nDo you want to save your changes to another profile?",
				"Yes", OptionDialog.QUESTION_MESSAGE) == OptionDialog.OPTION_ONE) {
				saveAs(item);
			}
		}
	}
Dialog that shows files used for parsing C header files. The profile has a list of source header
files to parse, followed by parse options (compiler directives). Ghidra supplies a Windows
profile by default in core/parserprofiles. The user can do "save as" on this default profile to
create new profiles that will be written to the user's {@code <home>/userprofiles} directory. The
CParserPlugin creates this directory if it doesn't exist.
<p>
The data types resulting from the parse operation can either be added to the data type manager in
the current program, or written to an archive data file.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/cparser/ParseDialog.java