private void updateContentPanel(@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();

    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);
    }

    java.util.List<AnAction> actions = controller.getActions();
    if (!actions.isEmpty()) {
      ActionButton menuButton = new ActionButton(new MenuAction(actions, compactViewAction),
                                                 null,
                                                 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));
  }
private void updateContentPanel(@NotNull AnalyzerStatus analyzerStatus)