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

#ifndef __javax_swing_plaf_metal_MetalRootPaneUI$MetalTitlePane$MaximizeAction__
#define __javax_swing_plaf_metal_MetalRootPaneUI$MetalTitlePane$MaximizeAction__

#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 MetalRootPaneUI$MetalTitlePane;
            class MetalRootPaneUI$MetalTitlePane$MaximizeAction;
        }
      }
    }
  }
}

class javax::swing::plaf::metal::MetalRootPaneUI$MetalTitlePane$MaximizeAction : public ::javax::swing::AbstractAction
{

  MetalRootPaneUI$MetalTitlePane$MaximizeAction(::javax::swing::plaf::metal::MetalRootPaneUI$MetalTitlePane *);
public:
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
public: // actually package-private
  MetalRootPaneUI$MetalTitlePane$MaximizeAction(::javax::swing::plaf::metal::MetalRootPaneUI$MetalTitlePane *, ::javax::swing::plaf::metal::MetalRootPaneUI$MetalTitlePane$MaximizeAction *);
  ::javax::swing::plaf::metal::MetalRootPaneUI$MetalTitlePane * __attribute__((aligned(__alignof__( ::javax::swing::AbstractAction)))) this$1;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_metal_MetalRootPaneUI$MetalTitlePane$MaximizeAction__
