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

#ifndef __javax_swing_plaf_metal_MetalFileChooserUI$DirectoryComboBoxAction__
#define __javax_swing_plaf_metal_MetalFileChooserUI$DirectoryComboBoxAction__

#pragma interface

#include <javax/swing/AbstractAction.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
      namespace event
      {
          class ActionEvent;
      }
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace plaf
      {
        namespace metal
        {
            class MetalFileChooserUI;
            class MetalFileChooserUI$DirectoryComboBoxAction;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalFileChooserUI$DirectoryComboBoxAction : public ::javax::swing::AbstractAction
{

public: // actually protected
  MetalFileChooserUI$DirectoryComboBoxAction(::javax::swing::plaf::metal::MetalFileChooserUI *);
public:
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
public: // actually package-private
  ::javax::swing::plaf::metal::MetalFileChooserUI * __attribute__((aligned(__alignof__( ::javax::swing::AbstractAction)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalFileChooserUI$DirectoryComboBoxAction__
