public void filter(final String search)
  {
    RowFilter<TableModel, Object> rf = new RowFilter<TableModel, Object>()
    {
      @Override
      public boolean include(RowFilter.Entry<? extends TableModel, ? extends Object> entry)
      {
        final MediaElement elt = (MediaElement) entry.getModel().getValueAt((Integer) entry.getIdentifier(), 0);
        return elt.getVisible() && (search.equals("") || elt.getName().toLowerCase().contains(search.toLowerCase()));
      }
    };
    ((TableRowSorter<TableModel>) table.getRowSorter()).setRowFilter(rf);
  }