void (final Url src, final Url dst, final boolean move, final String comment) { final Ref<Exception> exception = new Ref<>(); Runnable command = () -> { ProgressIndicator progress = ProgressManager.getInstance().getProgressIndicator(); if (progress != null) { progress.setText( (move ? message("progress.text.browser.moving", src) : message("progress.text.browser.copying", src))); progress.setText2(message("progress.text.browser.remote.destination", dst)); } SvnVcs vcs = SvnVcs.getInstance(myProject); try { vcs.getFactoryFromSettings().createCopyMoveClient().copy(Target.on(src), Target.on(dst), Revision.HEAD, true, move, comment, null); } catch (VcsException e) { exception.set(e); } }; String progressTitle = move ? message("progress.title.browser.move") : message("progress.title.browser.copy"); ProgressManager.getInstance().runProcessWithProgressSynchronously(command, progressTitle, false, myProject); if (!exception.isNull()) { showErrorDialog(exception.get().getMessage(), message("dialog.title.error")); } }