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

#ifndef __javax_swing_plaf_metal_MetalFileChooserUI$FileRenderer__
#define __javax_swing_plaf_metal_MetalFileChooserUI$FileRenderer__

#pragma interface

#include <javax/swing/DefaultListCellRenderer.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JList;
      namespace plaf
      {
        namespace metal
        {
            class MetalFileChooserUI;
            class MetalFileChooserUI$FileRenderer;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalFileChooserUI$FileRenderer : public ::javax::swing::DefaultListCellRenderer
{

public: // actually protected
  MetalFileChooserUI$FileRenderer(::javax::swing::plaf::metal::MetalFileChooserUI *);
public:
  virtual ::java::awt::Component * getListCellRendererComponent(::javax::swing::JList *, ::java::lang::Object *, jint, jboolean, jboolean);
public: // actually package-private
  ::javax::swing::plaf::metal::MetalFileChooserUI * __attribute__((aligned(__alignof__( ::javax::swing::DefaultListCellRenderer)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalFileChooserUI$FileRenderer__
