public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      try {
        // managing colors
        if (isSelected) {
          this.setBackground(table.getSelectionBackground());
          this.setForeground(table.getSelectionForeground());
        } else {
          this.setBackground(table.getSelectionForeground());
          this.setForeground(Color.BLACK);
        }

        OWLDescription desc = (OWLDescription) value;
        desc.accept(myVisitor);
        String str = myVisitor.result();
        myVisitor.reset();

        this.setText(str);
        // System.out.println( this.getText() );
      } catch (Exception e) {
        e.printStackTrace();
      }

      return this;
    }
  public ClassExpTable(
      AxiomIndexer indexer,
      ConcisePlainVisitor visitor,
      HashedCounts classExpCounts,
      Hashtable classExpDepths) {
    this.myIndexer = indexer;
    String[] colNames = {"Class Expression", "#Occurences", "Depth", "Score"};

    Object[][] data = new Object[classExpCounts.keySet().size()][4];

    int i = 0;
    for (Iterator it = classExpCounts.keySet().iterator(); it.hasNext(); ) {
      OWLDescription desc = (OWLDescription) it.next();
      if (desc == null) System.out.println("description is null at " + i);
      Integer count = new Integer(classExpCounts.getCount(desc));
      Integer depth = (Integer) classExpDepths.get(desc);
      try {
        if (depth == null) {
          System.out.println(" depth is null at " + i);
          desc.accept(visitor);
          String str = visitor.result();
          System.out.println("        [" + str + "]");
          visitor.reset();
        }
      } catch (Exception e) {
        e.printStackTrace();
      }

      data[i][0] = desc;
      data[i][1] = count;
      data[i][2] = depth;
      data[i][3] = new Double(Math.pow(count.intValue(), (depth.intValue() + 1)));
      i++;
    }
    myDataModel = new ClassExpTableModel(colNames, data);
    myManipModel = new TableSorter(myDataModel);
    myTable = new JTable(myManipModel);
    myManipModel.setTableHeader(myTable.getTableHeader());

    /*
    for ( int vColIndex = 0; vColIndex < 3; vColIndex++ )
    {
    	TableColumn col = myTable.getColumnModel().getColumn(vColIndex);
    	col.setHeaderRenderer(new RichHeaderRenderer());
    }
    */

    myTable.setDefaultRenderer(OWLObjectImpl.class, new ClassExpRenderer(visitor));

    setupUI();

    this.addWindowListener(this);
    this.addComponentListener(this);
    myTable.addMouseListener(this);
    this.setSize(300, 600);
    this.setVisible(true);
  }