
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_swing_plaf_metal_MetalFileChooserUI$TableFileRenderer__
#define __javax_swing_plaf_metal_MetalFileChooserUI$TableFileRenderer__

#pragma interface

#include <javax/swing/table/DefaultTableCellRenderer.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JTable;
      namespace plaf
      {
        namespace metal
        {
            class MetalFileChooserUI;
            class MetalFileChooserUI$TableFileRenderer;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalFileChooserUI$TableFileRenderer : public ::javax::swing::table::DefaultTableCellRenderer
{

public:
  MetalFileChooserUI$TableFileRenderer(::javax::swing::plaf::metal::MetalFileChooserUI *);
  virtual ::java::awt::Component * getTableCellRendererComponent(::javax::swing::JTable *, ::java::lang::Object *, jboolean, jboolean, jint, jint);
public: // actually package-private
  ::javax::swing::plaf::metal::MetalFileChooserUI * __attribute__((aligned(__alignof__( ::javax::swing::table::DefaultTableCellRenderer)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalFileChooserUI$TableFileRenderer__
