@Override
    public void layoutContainer(Container parent) {
      Insets insets = getInsets();
      int x = insets.left;
      int y = insets.top;

      if (myProgressComponent == null && myCheckBoxComponent != null) {
        Dimension size = myCheckBoxComponent.getPreferredSize();
        myCheckBoxComponent.setBounds(x, (parent.getHeight() - size.height) / 2, size.width, size.height);
        x += size.width + myHGap.get();
      }

      Dimension iconSize = myIconComponent.getPreferredSize();
      myIconComponent.setBounds(x, y, iconSize.width, iconSize.height);
      x += iconSize.width + myHGap.get();
      y += JBUIScale.scale(2);

      int width20 = JBUIScale.scale(20);
      int calcNameWidth = Math.max(width20, calculateNameWidth());
      Dimension nameSize = myNameComponent.getPreferredSize();
      int baseline = y + myNameComponent.getBaseline(nameSize.width, nameSize.height);

      myNameComponent.setToolTipText(calcNameWidth < nameSize.width ? myNameComponent.getText() : null);
      nameSize.width = Math.min(nameSize.width, calcNameWidth);
      myNameComponent.setBounds(x, y, nameSize.width, nameSize.height);
      y += nameSize.height;

      int width = getWidth();

      if (myProgressComponent == null) {
        int nextX = x + nameSize.width + myHOffset.get();

        if (myTagComponent != null) {
          Dimension size = myTagComponent.getPreferredSize();
          setBaselineBounds(nextX, baseline, myTagComponent, size);
          nextX += size.width;
        }

        int lastX = width - insets.right;

        if (calcNameWidth > width20) {
          for (int i = myButtonComponents.size() - 1; i >= 0; i--) {
            Component component = myButtonComponents.get(i);
            if (!component.isVisible()) {
              continue;
            }
            Dimension size = component.getPreferredSize();
            lastX -= size.width;
            setBaselineBounds(lastX, baseline, component, size);
            lastX -= myButtonOffset.get();
          }
        }
        else {
          for (JComponent component : myButtonComponents) {
            if (component.isVisible()) {
              Dimension size = component.getPreferredSize();
              setBaselineBounds(nextX, baseline, component, size);
              nextX += size.width + myButtonOffset.get();
            }
          }
        }
      }
      else {
        Dimension size = myProgressComponent.getPreferredSize();
        setBaselineBounds(width - size.width - insets.right, baseline, myProgressComponent, size);
      }

      int lineWidth = width - x - insets.right;

      for (JComponent component : myLineComponents) {
        if (component.isVisible()) {
          int lineHeight = component.getPreferredSize().height;
          component.setBounds(x, y, lineWidth, lineHeight);
          y += lineHeight;
        }
      }
    }
@Override
    public void layoutContainer(Container parent)