ActionCallback (@Nullable Place place, boolean requestFocus) { if (place == null) return ActionCallback.DONE; Object value = place.getPath(PLACE_KEY); if (!(value instanceof Integer commitIndex)) return ActionCallback.REJECTED; ActionCallback callback = new ActionCallback(); ListenableFuture<Boolean> future = VcsLogNavigationUtil.jumpToCommit(myUi, commitIndex, false, true); Futures.addCallback(future, new FutureCallback<>() { @Override public void onSuccess(Boolean result) { if (result) { if (requestFocus) myUi.getTable().requestFocusInWindow(); callback.setDone(); } else { callback.setRejected(); } } @Override public void onFailure(@NotNull Throwable t) { callback.setRejected(); } }, EdtExecutorService.getInstance()); return callback; }