@Override
			public void actionPerformed(ActionEvent e) {
				GhidraFileChooser fileChooser = new GhidraFileChooser(component);
				fileChooser.setFileSelectionMode(GhidraFileChooserMode.DIRECTORIES_ONLY);
				fileChooser.setTitle("Select Directory Containing XML Files");
				String baseDir = Preferences.getProperty(PATTERN_INFO_DIR);
				if (baseDir != null) {
					File dir = new File(baseDir);
					if (dir.isDirectory()) {
						fileChooser.setCurrentDirectory(dir);
					}
				}
				File xmlDir = fileChooser.getSelectedFile();
				fileChooser.dispose();
				if (xmlDir == null) {
					return;
				}
				Preferences.setProperty(PATTERN_INFO_DIR, xmlDir.getAbsolutePath());
				Preferences.store();
				patternReader = new FileBitPatternInfoReader(xmlDir, component);
				if (patternReader.getDataGatheringParams() == null) {
					Msg.showWarn(this, component, "Missing Data Gathering Parameters",
						"No Data Gathering Parameters Read");
					return;
				}
				dataSourceField.setText(xmlDir.getAbsolutePath());
				updatePanel();
			}
@param plugin plugin associated with provider
Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/FunctionBitPatternsMainProvider.java