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

#ifndef __javax_swing_tree_TreeModel__
#define __javax_swing_tree_TreeModel__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace event
      {
          class TreeModelListener;
      }
      namespace tree
      {
          class TreeModel;
          class TreePath;
      }
    }
  }
}

class javax::swing::tree::TreeModel : public ::java::lang::Object
{

public:
  virtual ::java::lang::Object * getRoot() = 0;
  virtual ::java::lang::Object * getChild(::java::lang::Object *, jint) = 0;
  virtual jint getChildCount(::java::lang::Object *) = 0;
  virtual jboolean isLeaf(::java::lang::Object *) = 0;
  virtual void valueForPathChanged(::javax::swing::tree::TreePath *, ::java::lang::Object *) = 0;
  virtual jint getIndexOfChild(::java::lang::Object *, ::java::lang::Object *) = 0;
  virtual void addTreeModelListener(::javax::swing::event::TreeModelListener *) = 0;
  virtual void removeTreeModelListener(::javax::swing::event::TreeModelListener *) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_swing_tree_TreeModel__
