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

#ifndef __gnu_java_awt_peer_qt_QtFileDialogPeer__
#define __gnu_java_awt_peer_qt_QtFileDialogPeer__

#pragma interface

#include <gnu/java/awt/peer/qt/QtDialogPeer.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace qt
          {
              class QtFileDialogPeer;
              class QtToolkit;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class FileDialog;
    }
  }
}

class gnu::java::awt::peer::qt::QtFileDialogPeer : public ::gnu::java::awt::peer::qt::QtDialogPeer
{

public:
  QtFileDialogPeer(::gnu::java::awt::peer::qt::QtToolkit *, ::java::awt::FileDialog *);
public: // actually protected
  virtual void init();
  virtual void setup();
private:
  void setMode(jint);
  void fileDialogDone(::java::lang::String *, ::java::lang::String *);
public:
  virtual void setFile(::java::lang::String *);
  virtual void setDirectory(::java::lang::String *);
  virtual void setFilenameFilter(::java::io::FilenameFilter *);
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_qt_QtFileDialogPeer__
