public void moveFile(@Nonnull Workspace workspace,
	                     @Nonnull WorkspaceResource resource,
	                     @Nonnull FileBundle bundle,
	                     @Nonnull FileInfo info) {
		boolean isRootDirectory = isNullOrEmpty(info.getDirectoryName());
		ItemTreeSelectionPopup.forDirectoryNames(bundle, chosenDirectories -> {
					// We only allow a single directory, so the list should contain just one item.
					if (chosenDirectories.isEmpty()) return;
					String oldDirectoryName = isRootDirectory ? "" : info.getDirectoryName() + "/";
					String newDirectoryName = chosenDirectories.get(0);
					if (Objects.equals(oldDirectoryName, newDirectoryName)) return;
					if (!newDirectoryName.isEmpty()) newDirectoryName += "/";

					String newName = replacePrefix(info.getName(), oldDirectoryName, newDirectoryName);

					bundle.remove(info.getName());
					bundle.put(info.toFileBuilder().withName(newName).build());
				}).withTitle(Lang.getBinding("dialog.title.move-file"))
				.withTextMapping(name -> textService.getDirectoryTextProvider(workspace, resource, bundle, name).makeText())
				.withGraphicMapping(name -> iconService.getDirectoryIconProvider(workspace, resource, bundle, name).makeIcon())
				.show();
	}
Prompts the user to select a directory to move the given file into.

@param workspace
		Containing workspace.
@param resource
		Containing resource.
@param bundle
		Containing bundle.
@param info
		File to move into a different directory.
recaf-ui/src/main/java/software/coley/recaf/services/navigation/Actions.java