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

#ifndef __gnu_javax_activation_viewers_TextEditor__
#define __gnu_javax_activation_viewers_TextEditor__

#pragma interface

#include <java/awt/TextArea.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace activation
      {
        namespace viewers
        {
            class TextEditor;
        }
      }
    }
  }
  namespace java
  {
    namespace awt
    {
        class Dimension;
      namespace event
      {
          class ActionEvent;
      }
    }
  }
  namespace javax
  {
    namespace activation
    {
        class DataHandler;
    }
  }
}

class gnu::javax::activation::viewers::TextEditor : public ::java::awt::TextArea
{

public:
  TextEditor();
  virtual ::java::awt::Dimension * getPreferredSize();
  virtual void setCommandContext(::java::lang::String *, ::javax::activation::DataHandler *);
  virtual void actionPerformed(::java::awt::event::ActionEvent *);
private:
  ::javax::activation::DataHandler * __attribute__((aligned(__alignof__( ::java::awt::TextArea)))) dh;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_activation_viewers_TextEditor__
