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

#ifndef __javax_swing_plaf_basic_BasicFileChooserUI$NewFolderAction__
#define __javax_swing_plaf_basic_BasicFileChooserUI$NewFolderAction__

#pragma interface

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

class javax::swing::plaf::basic::BasicFileChooserUI$NewFolderAction : public ::javax::swing::AbstractAction
{

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

#endif // __javax_swing_plaf_basic_BasicFileChooserUI$NewFolderAction__
