void (@Nullable final Editor editor, final DataContext dataContext) { myModel.updateModelAsync(dataContext, () -> { if (myModel.isEmpty()) return; final JPanel panel = new JPanel(new BorderLayout()); panel.add(this); panel.setOpaque(true); if (ExperimentalUI.isNewUI()) { panel.setBorder(new JBEmptyBorder(JBUI.CurrentTheme.StatusBar.Breadcrumbs.floatingBorderInsets())); panel.setBackground(JBUI.CurrentTheme.StatusBar.Breadcrumbs.FLOATING_BACKGROUND); } else { panel.setBackground(UIUtil.getListBackground()); } myHint = new LightweightHint(panel) { @Override public void hide() { super.hide(); cancelPopup(); Disposer.dispose(NavBarPanel.this); } }; myHint.setForceShowAsPopup(true); myHint.setFocusRequestor(this); final KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager(); myUpdateQueue.rebuildUi(); if (editor == null) { myContextComponent = PlatformCoreDataKeys.CONTEXT_COMPONENT.getData(dataContext); getHintContainerShowPoint().doWhenDone((Consumer<RelativePoint>)relativePoint -> { final Component owner = focusManager.getFocusOwner(); final Component cmp = relativePoint.getComponent(); if (cmp instanceof JComponent && cmp.isShowing()) { myHint.show((JComponent)cmp, relativePoint.getPoint().x, relativePoint.getPoint().y, owner instanceof JComponent ? (JComponent)owner : null, new HintHint(relativePoint.getComponent(), relativePoint.getPoint())); } }); } else { myHintContainer = editor.getContentComponent(); getHintContainerShowPoint().doWhenDone((Consumer<RelativePoint>)rp -> { Point p = rp.getPointOn(myHintContainer).getPoint(); final HintHint hintInfo = new HintHint(editor, p); HintManagerImpl.getInstanceImpl().showEditorHint(myHint, editor, p, HintManager.HIDE_BY_ESCAPE, 0, true, hintInfo); }); } rebuildAndSelectLastDirectoryOrTail(true); }); }