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

#ifndef __javax_swing_text_TableView$TableRow__
#define __javax_swing_text_TableView$TableRow__

#pragma interface

#include <javax/swing/text/BoxView.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Rectangle;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace text
      {
          class Element;
          class TableView;
          class TableView$TableRow;
          class View;
      }
    }
  }
}

class javax::swing::text::TableView$TableRow : public ::javax::swing::text::BoxView
{

public:
  TableView$TableRow(::javax::swing::text::TableView *, ::javax::swing::text::Element *);
  virtual void replace(jint, jint, JArray< ::javax::swing::text::View * > *);
public: // actually protected
  virtual void layoutMajorAxis(jint, jint, JArray< jint > *, JArray< jint > *);
  virtual void layoutMinorAxis(jint, jint, JArray< jint > *, JArray< jint > *);
public:
  virtual jint getResizeWeight(jint);
public: // actually protected
  virtual ::javax::swing::text::View * getViewAtPosition(jint, ::java::awt::Rectangle *);
public: // actually package-private
  ::javax::swing::text::TableView * __attribute__((aligned(__alignof__( ::javax::swing::text::BoxView)))) this$0;
  static jboolean $assertionsDisabled;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_text_TableView$TableRow__
