void () { if (myIsDuringUpdate) return; try { myIsDuringUpdate = true; BlockData data = myBlockLoader.getLoadedData(); if (data.getRevisions().isEmpty()) return; if (!myRevisionsLoaded) { myRevisionsLoaded = true; JRootPane rootPane = ((RootPaneContainer)getFrame()).getRootPane(); final VcsDependentHistoryComponents components = myVcsHistoryProvider.getUICustomization(data.getSession(), rootPane); ColumnInfo[] additionalColumns = components.getColumns(); myListModel = new ListTableModel<>(ArrayUtil.mergeArrays(myDefaultColumns, additionalColumns, ColumnInfo[]::new)); myListModel.setSortable(false); myList.setModelAndUpdateColumns(myListModel); mySelectedRevisionListener = components.getRevisionListener(); myDetailsPanel.setContent(components.getDetailsComponent()); } List<VcsFileRevision> newItems; if (myChangesOnlyCheckBox.isSelected()) { newItems = filteredRevisions(data); } else { newItems = data.getRevisions(); } IntPair range = getSelectedRevisionsRange(data); List<VcsFileRevision> oldSelection = data.getRevisions().subList(range.first, range.second); myListModel.setItems(newItems); myList.setSelection(oldSelection); if (myList.getSelectedRowCount() == 0) { int index = getNearestVisibleRevision(ContainerUtil.getFirstItem(oldSelection), data); if (myList.getRowCount() != 0) myList.getSelectionModel().setSelectionInterval(index, index); } TableUtil.scrollSelectionToVisible(myList); } finally { myIsDuringUpdate = false; } updateDiff(); }