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

#ifndef __javax_swing_plaf_basic_BasicFileChooserUI$BasicFileView__
#define __javax_swing_plaf_basic_BasicFileChooserUI$BasicFileView__

#pragma interface

#include <javax/swing/filechooser/FileView.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class Icon;
      namespace plaf
      {
        namespace basic
        {
            class BasicFileChooserUI;
            class BasicFileChooserUI$BasicFileView;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicFileChooserUI$BasicFileView : public ::javax::swing::filechooser::FileView
{

public:
  BasicFileChooserUI$BasicFileView(::javax::swing::plaf::basic::BasicFileChooserUI *);
  virtual void cacheIcon(::java::io::File *, ::javax::swing::Icon *);
  virtual void clearIconCache();
  virtual ::javax::swing::Icon * getCachedIcon(::java::io::File *);
  virtual ::java::lang::String * getDescription(::java::io::File *);
  virtual ::javax::swing::Icon * getIcon(::java::io::File *);
  virtual ::java::lang::String * getName(::java::io::File *);
  virtual ::java::lang::String * getTypeDescription(::java::io::File *);
  virtual ::java::lang::Boolean * isHidden(::java::io::File *);
public: // actually protected
  ::java::util::Hashtable * __attribute__((aligned(__alignof__( ::javax::swing::filechooser::FileView)))) iconCache;
public: // actually package-private
  ::javax::swing::plaf::basic::BasicFileChooserUI * this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicFileChooserUI$BasicFileView__
