void (@NotNull AnalyzerStatus analyzerStatus) { UIController controller = analyzerStatus.getController(); java.util.List<PassWrapper> passes = analyzerStatus.getPasses(); Set<String> presentableNames = ContainerUtil.map2Set(passes, p -> p.getPresentableName()); if (!presentableNames.isEmpty() && myProgressBarMap.keySet().equals(presentableNames)) { for (PassWrapper pass : passes) { myProgressBarMap.get(pass.getPresentableName()).setValue(pass.getPercent()); } return; } myContent.removeAll(); levelLinks.clear(); GridBag gc = new GridBag().nextLine().next(). anchor(GridBagConstraints.LINE_START). weightx(1). fillCellHorizontally(). insets(10, 10, 10, 0); boolean hasTitle = StringUtil.isNotEmpty(analyzerStatus.getTitle()); if (hasTitle) { myContent.add(new JLabel(XmlStringUtil.wrapInHtml(analyzerStatus.getTitle())), gc); } else if (StringUtil.isNotEmpty(analyzerStatus.getDetails())) { myContent.add(new JLabel(XmlStringUtil.wrapInHtml(analyzerStatus.getDetails())), gc); } else if (!analyzerStatus.getExpandedStatus().isEmpty() && analyzerStatus.getAnalyzingType() != AnalyzingType.EMPTY) { myContent.add(createDetailsPanel(analyzerStatus), gc); } Presentation presentation = new Presentation(); presentation.setIcon(AllIcons.Actions.More); presentation.putClientProperty(ActionButton.HIDE_DROPDOWN_ICON, Boolean.TRUE); java.util.List<AnAction> actions = controller.getActions(); if (!actions.isEmpty()) { ActionButton menuButton = new ActionButton(new MenuAction(actions, compactViewAction), presentation, ActionPlaces.EDITOR_POPUP, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE) { @Override protected DataContext getDataContext() { return ((EditorEx)myEditor).getDataContext(); } }; myContent.add(menuButton, gc.next().anchor(GridBagConstraints.LINE_END).weightx(0).insets(10, 6, 10, 6)); } myProgressBarMap.clear(); JPanel myProgressPanel = new NonOpaquePanel(new GridBagLayout()); GridBag progressGC = new GridBag(); for (PassWrapper pass : passes) { myProgressPanel.add(new JLabel(pass.getPresentableName() + ": "), progressGC.nextLine().next().anchor(GridBagConstraints.LINE_START).weightx(0).insets(0, 10, 0, 6)); JProgressBar pb = new JProgressBar(0, 100); pb.setValue(pass.getPercent()); myProgressPanel.add(pb, progressGC.next().anchor(GridBagConstraints.LINE_START).weightx(1).fillCellHorizontally().insets(0, 0, 0, 6)); myProgressBarMap.put(pass.getPresentableName(), pb); } myContent.add(myProgressPanel, gc.nextLine().next().anchor(GridBagConstraints.LINE_START).fillCellHorizontally().coverLine().weightx(1)); if (hasTitle) { int topIndent = !myProgressBarMap.isEmpty() ? 10 : 0; gc.nextLine().next().anchor(GridBagConstraints.LINE_START).fillCellHorizontally().coverLine().weightx(1).insets(topIndent, 10, 10, 6); if (StringUtil.isNotEmpty(analyzerStatus.getDetails())) { myContent.add(new JLabel(XmlStringUtil.wrapInHtml(analyzerStatus.getDetails())), gc); } else if (!analyzerStatus.getExpandedStatus().isEmpty() && analyzerStatus.getAnalyzingType() != AnalyzingType.EMPTY) { myContent.add(createDetailsPanel(analyzerStatus), gc); } else if (!passes.isEmpty()){ myProgressPanel.setBorder(JBUI.Borders.emptyBottom(12)); } } myContent.add(createLowerPanel(controller), gc.nextLine().next().anchor(GridBagConstraints.LINE_START).fillCellHorizontally().coverLine().weightx(1)); }