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

#ifndef __javax_swing_plaf_basic_BasicRootPaneUI$DefaultReleaseAction__
#define __javax_swing_plaf_basic_BasicRootPaneUI$DefaultReleaseAction__

#pragma interface

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

class javax::swing::plaf::basic::BasicRootPaneUI$DefaultReleaseAction : public ::javax::swing::AbstractAction
{

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

#endif // __javax_swing_plaf_basic_BasicRootPaneUI$DefaultReleaseAction__
