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

#ifndef __javax_swing_DesktopManager__
#define __javax_swing_DesktopManager__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
        class DesktopManager;
        class JComponent;
        class JInternalFrame;
    }
  }
}

class javax::swing::DesktopManager : public ::java::lang::Object
{

public:
  virtual void openFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void closeFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void maximizeFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void minimizeFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void iconifyFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void deiconifyFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void activateFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void deactivateFrame(::javax::swing::JInternalFrame *) = 0;
  virtual void beginDraggingFrame(::javax::swing::JComponent *) = 0;
  virtual void dragFrame(::javax::swing::JComponent *, jint, jint) = 0;
  virtual void endDraggingFrame(::javax::swing::JComponent *) = 0;
  virtual void beginResizingFrame(::javax::swing::JComponent *, jint) = 0;
  virtual void resizeFrame(::javax::swing::JComponent *, jint, jint, jint, jint) = 0;
  virtual void endResizingFrame(::javax::swing::JComponent *) = 0;
  virtual void setBoundsForFrame(::javax::swing::JComponent *, jint, jint, jint, jint) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_swing_DesktopManager__
