@Override
  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    int modelRow  = table.convertRowIndexToModel(row);
    final boolean lineHasFocus = table.hasFocus();

    if (myTreeCellRenderer != null)
      myTree.setCellRenderer(myTreeCellRenderer);
    if (isSelected){
      myTree.setBackground(lineHasFocus ? RenderingUtil.getSelectionBackground(table) : UIUtil.getTreeUnfocusedSelectionBackground());
      myTree.setForeground(RenderingUtil.getSelectionForeground(table));
    }
    else {
      myTree.setBackground(RenderingUtil.getBackground(table));
      myTree.setForeground(RenderingUtil.getForeground(table));
    }

    myCellRendererComponent.setBackground(isSelected ? RenderingUtil.getSelectionBackground(table) : RenderingUtil.getBackground(table));
    myCellRendererComponent.setForeground(isSelected ? RenderingUtil.getSelectionForeground(table) : RenderingUtil.getForeground(table));

    //TableModel model = myTreeTable.getModel();
    //myTree.setTreeTableTreeBorder(hasFocus && model.getColumnClass(column).equals(TreeTableModel.class) ? myDefaultBorder : null);
    myTree.setVisibleRow(modelRow);

    final Object treeObject = myTree.getPathForRow(modelRow).getLastPathComponent();
    boolean leaf = myTree.getModel().isLeaf(treeObject);
    final boolean expanded = myTree.isExpanded(modelRow);
    Component component = myTree.getCellRenderer().getTreeCellRendererComponent(myTree, treeObject, isSelected, expanded, leaf, modelRow, lineHasFocus);
    if (component instanceof JComponent) {
      table.setToolTipText(((JComponent)component).getToolTipText());
    }

    //myTree.setCellFocused(false);

    myCellRendererComponent.setComponent(component, expanded, leaf);
    return myCellRendererComponent;
  }
@Override
  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)