public void setBody( final Foil f )
  {
    final StringBuilder sB = new StringBuilder();

    final int count = f.size();
    final int digits = String.valueOf( count ).length();

    sB.append( "<html>" );
    sB.append( "<pre>" );

    final int eC = f.getErrorCount();
    int index = 0;

    if ( eC > 0 )
    {
      sB.append( "<font color=\"blue\">Errors found on <font color=\"red\">" + eC + "</font> lines:<br><br>" );

      for ( final Line l : f )
      {
        index ++;

        int cnt = l.errMap.size();
        if ( cnt == 0 ) continue;

        sB.append( "\tLine <font color=\"red\">" )
        .append( index )
        .append( "</font>: column " );

        boolean newError = true;

        for ( final int i : l.errMap.keySet() )
        {
          sB.append( newError ? "" : "<font color=\"black\">, </font>" )
          .append( "<font color=\"red\">" )
          .append( i + 1 )
          .append( "</font>" );

          newError = false;
        }

        sB.append( "<br>" );
      }

      sB.append( "<br></font></pre><hr><pre>" );
    }

    index = 0;

    for ( final Line l : f )
    {
      index ++;

      final boolean ok = l.errMap.isEmpty();

      if ( !ok )
        sB.append( "<font color=\"red\">" );

      sB.append( String.format( "%" + digits + "d: ", index ) );

      if ( ok )
        sB.append( "<font color=\"green\">" );

      for ( int i = 0; i < l.bytes.length; i ++ )
      {
        esc( sB, l.bytes[ i ] );
      }

      sB.append( "</font>" );
      sB.append( "<br>" );
    }

    sB.append( "</pre>" );
    sB.append( "</html>" );

    setText( sB.toString() );
    setCaretPosition( 0 );
  }