private void showAddBundlesFileChooser() {

		GhidraFileChooser fileChooser = new GhidraFileChooser(getComponent());
		fileChooser.setMultiSelectionEnabled(true);
		fileChooser.setFileSelectionMode(GhidraFileChooserMode.FILES_AND_DIRECTORIES);
		fileChooser.setTitle("Select Bundle(s)");
		// fileChooser.setApproveButtonToolTipText(title);
		if (filter != null) {
			fileChooser.addFileFilter(new GhidraFileFilter() {
				@Override
				public String getDescription() {
					return filter.getDescription();
				}

				@Override
				public boolean accept(File f, GhidraFileChooserModel model) {
					return filter.accept(f, model);
				}
			});
		}
		String lastSelected = Preferences.getProperty(PREFERENCE_LAST_SELECTED_BUNDLE);
		if (lastSelected != null) {
			File lastSelectedFile = new File(lastSelected);
			fileChooser.setSelectedFile(lastSelectedFile);
		}

		List<File> files = fileChooser.getSelectedFiles();
		if (!files.isEmpty()) {
			Preferences.setProperty(PREFERENCE_LAST_SELECTED_BUNDLE,
				files.get(0).getAbsolutePath());
			List<ResourceFile> resourceFiles =
				files.stream().map(ResourceFile::new).collect(Collectors.toUnmodifiableList());
			Collection<GhidraBundle> bundles = bundleHost.add(resourceFiles, true, false);

			TaskLauncher.launchModal("Activating New Bundles", (monitor) -> {
				try {
					bundleHost.activateAll(bundles, monitor,
						getTool().getService(ConsoleService.class).getStdErr());
				}
				catch (Exception e) {
					if (!isDisposed) {
						Msg.showError(this, bundleStatusTable, "Error Activating Bundles",
							"Unexpected error activating new bundles", e);
					}
				}
			});
		}

		fileChooser.dispose();
	}
get the currently selected rows and translate to model rows

@return selected model rows
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/osgi/BundleStatusComponentProvider.java