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

#ifndef __javax_swing_PopupFactory__
#define __javax_swing_PopupFactory__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class Popup;
        class PopupFactory;
    }
  }
}

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

public:
  PopupFactory();
  static void setSharedInstance(::javax::swing::PopupFactory *);
  static ::javax::swing::PopupFactory * getSharedInstance();
  virtual ::javax::swing::Popup * getPopup(::java::awt::Component *, ::java::awt::Component *, jint, jint);
private:
  static ::javax::swing::PopupFactory * sharedFactory;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_PopupFactory__
