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

#ifndef __javax_swing_text_NavigationFilter__
#define __javax_swing_text_NavigationFilter__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class JTextComponent;
          class NavigationFilter;
          class NavigationFilter$FilterBypass;
          class Position$Bias;
      }
    }
  }
}

class javax::swing::text::NavigationFilter : public ::java::lang::Object
{

public:
  NavigationFilter();
  virtual void moveDot(::javax::swing::text::NavigationFilter$FilterBypass *, jint, ::javax::swing::text::Position$Bias *);
  virtual void setDot(::javax::swing::text::NavigationFilter$FilterBypass *, jint, ::javax::swing::text::Position$Bias *);
  virtual jint getNextVisualPositionFrom(::javax::swing::text::JTextComponent *, jint, ::javax::swing::text::Position$Bias *, jint, JArray< ::javax::swing::text::Position$Bias * > *);
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_NavigationFilter__
