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

#ifndef __javax_swing_plaf_basic_BasicTreeUI$TreeModelHandler__
#define __javax_swing_plaf_basic_BasicTreeUI$TreeModelHandler__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace swing
    {
      namespace event
      {
          class TreeModelEvent;
      }
      namespace plaf
      {
        namespace basic
        {
            class BasicTreeUI;
            class BasicTreeUI$TreeModelHandler;
        }
      }
    }
  }
}

class javax::swing::plaf::basic::BasicTreeUI$TreeModelHandler : public ::java::lang::Object
{

public:
  BasicTreeUI$TreeModelHandler(::javax::swing::plaf::basic::BasicTreeUI *);
  virtual void treeNodesChanged(::javax::swing::event::TreeModelEvent *);
  virtual void treeNodesInserted(::javax::swing::event::TreeModelEvent *);
  virtual void treeNodesRemoved(::javax::swing::event::TreeModelEvent *);
  virtual void treeStructureChanged(::javax::swing::event::TreeModelEvent *);
public: // actually package-private
  ::javax::swing::plaf::basic::BasicTreeUI * __attribute__((aligned(__alignof__( ::java::lang::Object)))) this$0;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_swing_plaf_basic_BasicTreeUI$TreeModelHandler__
