/**
   * Constructs cell renderer for the specified file list.
   *
   * @param fileList file list in which this cell renderer is used
   */
  public WebFileListCellRenderer(final WebFileList fileList) {
    super();

    this.fileList = fileList;

    iconLabel = new WebLabel();
    iconLabel.setHorizontalAlignment(JLabel.CENTER);
    iconLabel.setPreferredSize(new Dimension(imageSide, imageSide));

    nameLabel = new WebLabel();
    nameLabel.setFont(nameLabel.getFont().deriveFont(Font.PLAIN));
    nameLabel.setForeground(Color.BLACK);
    nameLabel.setVerticalAlignment(JLabel.CENTER);

    descriptionLabel = new WebLabel(WebLabel.LEADING);
    descriptionLabel.setFont(descriptionLabel.getFont().deriveFont(Font.PLAIN));
    descriptionLabel.setForeground(Color.GRAY);

    sizeLabel = new WebLabel(WebLabel.LEADING);
    sizeLabel.setFont(sizeLabel.getFont().deriveFont(Font.PLAIN));
    sizeLabel.setForeground(new Color(49, 77, 179));

    setLayout(new FileCellLayout());
    add(iconLabel);
    add(nameLabel);
    add(descriptionLabel);
    add(sizeLabel);

    fileList.addPropertyChangeListener(
        WebLookAndFeel.COMPONENT_ENABLED_PROPERTY,
        new PropertyChangeListener() {
          @Override
          public void propertyChange(final PropertyChangeEvent evt) {
            final boolean enabled = fileList.isEnabled();
            iconLabel.setEnabled(enabled);
            nameLabel.setEnabled(enabled);
            descriptionLabel.setEnabled(enabled);
            sizeLabel.setEnabled(enabled);
          }
        });

    fileList.addPropertyChangeListener(
        WebLookAndFeel.COMPONENT_ORIENTATION_PROPERTY,
        new PropertyChangeListener() {
          @Override
          public void propertyChange(final PropertyChangeEvent evt) {
            final ComponentOrientation orientation = fileList.getComponentOrientation();
            nameLabel.setComponentOrientation(orientation);
            descriptionLabel.setComponentOrientation(orientation);
            sizeLabel.setComponentOrientation(orientation);
          }
        });

    updateFilesView();
  }