void (@Nullable final CheckoutProvider.Listener listener, final RepositoryTreeNode selectedNode) { if (selectedNode == null) { return; } Url url = selectedNode.getURL(); String relativePath = ""; final DirectoryEntry entry = selectedNode.getSVNDirEntry(); if (entry != null) { if (entry.getRepositoryRoot() != null) { if (!entry.getRepositoryRoot().equals(url)) { relativePath = getRelativeUrl(entry.getRepositoryRoot(), url); } } else { relativePath = entry.getRelativePath(); } } else { relativePath = url.getPath(); } File dir = selectFile(message("dialog.title.destination.directory"), message("label.select.checkout.destination.directory")); if (dir == null) { return; } CheckoutOptionsDialog dialog = new CheckoutOptionsDialog(myProject, url, dir, getVirtualFile(dir.getAbsolutePath()), relativePath); dialog.show(); dir = dialog.getTarget(); if (dialog.isOK() && dir != null) { final Revision revision; try { revision = dialog.getRevision(); } catch (ConfigurationException e) { showErrorDialog(message("message.text.cannot.checkout", e.getMessage()), message("dialog.title.check.out")); return; } SvnCheckoutProvider.doCheckout(myProject, dir, url, revision, dialog.getDepth(), dialog.isIgnoreExternals(), listener); } }