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

#ifndef __java_beans_PropertyEditor__
#define __java_beans_PropertyEditor__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Component;
        class Graphics;
        class Rectangle;
    }
    namespace beans
    {
        class PropertyChangeListener;
        class PropertyEditor;
    }
  }
}

class java::beans::PropertyEditor : public ::java::lang::Object
{

public:
  virtual void setValue(::java::lang::Object *) = 0;
  virtual ::java::lang::Object * getValue() = 0;
  virtual void setAsText(::java::lang::String *) = 0;
  virtual ::java::lang::String * getAsText() = 0;
  virtual JArray< ::java::lang::String * > * getTags() = 0;
  virtual jboolean isPaintable() = 0;
  virtual void paintValue(::java::awt::Graphics *, ::java::awt::Rectangle *) = 0;
  virtual jboolean supportsCustomEditor() = 0;
  virtual ::java::awt::Component * getCustomEditor() = 0;
  virtual void addPropertyChangeListener(::java::beans::PropertyChangeListener *) = 0;
  virtual void removePropertyChangeListener(::java::beans::PropertyChangeListener *) = 0;
  virtual ::java::lang::String * getJavaInitializationString() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __java_beans_PropertyEditor__
