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

#ifndef __javax_swing_plaf_basic_BasicTextAreaUI__
#define __javax_swing_plaf_basic_BasicTextAreaUI__

#pragma interface

#include <javax/swing/plaf/basic/BasicTextUI.h>
extern "Java"
{
  namespace java
  {
    namespace beans
    {
        class PropertyChangeEvent;
    }
  }
  namespace javax
  {
    namespace swing
    {
        class JComponent;
      namespace plaf
      {
          class ComponentUI;
        namespace basic
        {
            class BasicTextAreaUI;
        }
      }
      namespace text
      {
          class Element;
          class View;
      }
    }
  }
}

class javax::swing::plaf::basic::BasicTextAreaUI : public ::javax::swing::plaf::basic::BasicTextUI
{

public:
  static ::javax::swing::plaf::ComponentUI * createUI(::javax::swing::JComponent *);
  BasicTextAreaUI();
  virtual ::javax::swing::text::View * create(::javax::swing::text::Element *);
public: // actually protected
  virtual ::java::lang::String * getPropertyPrefix();
  virtual void propertyChange(::java::beans::PropertyChangeEvent *);
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicTextAreaUI__
