@Override
    public Component getListCellRendererComponent(
        final JList list,
        final Object value,
        final int index,
        final boolean isSelected,
        final boolean cellHasFocus) {
      if (!(value instanceof WrappedLogRecord)) {
        return new JLabel();
      }

      final WrappedLogRecord wlr = (WrappedLogRecord) value;

      final JTextPane result = new JTextPane();
      result.setDragEnabled(true);
      result.setText(wlr.formatted);
      result.setComponentOrientation(list.getComponentOrientation());
      result.setFont(list.getFont());
      result.setBorder(cellHasFocus || isSelected ? SELECTED_BORDER : EMPTY_BORDER);

      if (wlr.record.getLevel() == Level.CONFIG) {
        result.setForeground(DARK_BLUE);
      }

      if (wlr.record.getLevel() == Level.SEVERE) {
        result.setBackground(DARK_RED);
        result.setForeground(Color.WHITE);
      }

      if (wlr.record.getLevel() == Level.WARNING) {
        result.setForeground(DARK_RED);
      }

      if (wlr.record.getLevel() == Level.FINE
          || wlr.record.getLevel() == Level.FINER
          || wlr.record.getLevel() == Level.FINEST) {
        result.setForeground(DARK_GREEN);
      }

      final Object[] parameters = wlr.record.getParameters();
      if (parameters != null) {
        for (final Object parameter : parameters) {
          if (parameter == null) {
            continue;
          }

          if (parameter instanceof Color) {
            result.setForeground((Color) parameter);
          } else if (parameter instanceof Font) {
            result.setFont((Font) parameter);
          }
        }
      }

      return result;
    }