ActionCallback (final @NotNull Content content, final boolean requestFocus, final boolean forcedFocus, boolean implicit) { mySelectionHistory.remove(content); mySelectionHistory.add(0, content); if (isSelected(content) && requestFocus) { requestFocusWithFallback(content); return ActionCallback.DONE; } if (!checkSelectionChangeShouldBeProcessed(content, implicit)) { return ActionCallback.REJECTED; } if (!contents.contains(content)) { for (ContentManagerImpl manager : myNestedManagers) { ActionCallback nestedCallback = manager.setSelectedContent(content, requestFocus, forcedFocus, implicit); if (nestedCallback != ActionCallback.REJECTED) return nestedCallback; } return ActionCallback.REJECTED; } final boolean focused = isSelectionHoldsFocus(); final Content[] old = getSelectedContents(); if (myDisposed || getIndexOfContent(content) == -1) return ActionCallback.REJECTED; for (Content each : old) { removeFromSelection(each); } addSelectedContent(content); if (requestFocus || focused) { requestFocusWithFallback(content); } return ActionCallback.DONE; }