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

#ifndef __javax_swing_plaf_basic_BasicFileChooserUI$ChangeToParentDirectoryAction__
#define __javax_swing_plaf_basic_BasicFileChooserUI$ChangeToParentDirectoryAction__

#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$ChangeToParentDirectoryAction;
        }
      }
    }
  }
}

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

public: // actually protected
  BasicFileChooserUI$ChangeToParentDirectoryAction(::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$ChangeToParentDirectoryAction__
