void (final Project project, final CommittedChangesTableModel changes, final Mode mode) { myProject = project; myChanges = changes; myMode = mode; setTitle(VcsBundle.message("dialog.title.changes.browser")); setCancelButtonText(CommonBundle.getCloseButtonText()); final ModalityState currentState = ModalityState.current(); if ((mode != Mode.Choose) && (ModalityState.nonModal().equals(currentState))) { setModal(false); } myAppender = new AsynchConsumer<>() { @Override public void finished() { SwingUtilities.invokeLater(() -> { if (ChangesBrowserDialog.this.isShowing()) { myCommittedChangesBrowser.stopLoading(); } }); } @Override public void consume(final List<CommittedChangeList> committedChangeLists) { SwingUtilities.invokeLater(() -> { if (ChangesBrowserDialog.this.isShowing()) { final boolean selectFirst = (myChanges.getRowCount() == 0) && (!committedChangeLists.isEmpty()); myChanges.addRows(committedChangeLists); if (selectFirst) { myCommittedChangesBrowser.selectFirstIfAny(); } } }); } }; init(); if (myInitRunnable != null) { new AdjustComponentWhenShown() { @Override protected boolean init() { myInitRunnable.consume(ChangesBrowserDialog.this); return true; } }.install(myCommittedChangesBrowser); } }