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

#ifndef __javax_swing_tree_DefaultTreeCellEditor$EditorContainer__
#define __javax_swing_tree_DefaultTreeCellEditor$EditorContainer__

#pragma interface

#include <java/awt/Container.h>
extern "Java"
{
  namespace java
  {
    namespace awt
    {
        class Dimension;
        class Graphics;
    }
  }
  namespace javax
  {
    namespace swing
    {
      namespace tree
      {
          class DefaultTreeCellEditor;
          class DefaultTreeCellEditor$EditorContainer;
      }
    }
  }
}

class javax::swing::tree::DefaultTreeCellEditor$EditorContainer : public ::java::awt::Container
{

public:
  DefaultTreeCellEditor$EditorContainer(::javax::swing::tree::DefaultTreeCellEditor *);
  virtual void EditorContainer();
  virtual void paint(::java::awt::Graphics *);
  virtual void doLayout();
  virtual ::java::awt::Dimension * getPreferredSize();
public: // actually package-private
  static const jlong serialVersionUID = 6470339600449699810LL;
  ::javax::swing::tree::DefaultTreeCellEditor * __attribute__((aligned(__alignof__( ::java::awt::Container)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_tree_DefaultTreeCellEditor$EditorContainer__
