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

#ifndef __gnu_java_awt_peer_gtk_GtkScrollbarPeer__
#define __gnu_java_awt_peer_gtk_GtkScrollbarPeer__

#pragma interface

#include <gnu/java/awt/peer/gtk/GtkComponentPeer.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace gtk
          {
              class GtkScrollbarPeer;
          }
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class Scrollbar;
    }
  }
}

class gnu::java::awt::peer::gtk::GtkScrollbarPeer : public ::gnu::java::awt::peer::gtk::GtkComponentPeer
{

public: // actually package-private
  virtual void create();
  virtual void create(jint, jint, jint, jint, jint, jint, jint);
  virtual void connectSignals();
public:
  GtkScrollbarPeer(::java::awt::Scrollbar *);
  virtual void setLineIncrement(jint);
  virtual void setPageIncrement(jint);
  virtual void setValues(jint, jint, jint, jint);
private:
  void setBarValues(jint, jint, jint, jint);
public: // actually protected
  virtual void postAdjustmentEvent(jint, jint);
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_gtk_GtkScrollbarPeer__
