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

#ifndef __javax_swing_plaf_metal_MetalFileChooserUI$MetalFileChooserPropertyChangeListener__
#define __javax_swing_plaf_metal_MetalFileChooserUI$MetalFileChooserPropertyChangeListener__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace beans
    {
        class PropertyChangeEvent;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace metal
        {
            class MetalFileChooserUI;
            class MetalFileChooserUI$MetalFileChooserPropertyChangeListener;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalFileChooserUI$MetalFileChooserPropertyChangeListener : public ::java::lang::Object
{

public:
  MetalFileChooserUI$MetalFileChooserPropertyChangeListener(::javax::swing::plaf::metal::MetalFileChooserUI *);
  virtual void propertyChange(::java::beans::PropertyChangeEvent *);
public: // actually package-private
  ::javax::swing::plaf::metal::MetalFileChooserUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalFileChooserUI$MetalFileChooserPropertyChangeListener__
