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

#ifndef __javax_swing_plaf_basic_BasicTreeUI__
#define __javax_swing_plaf_basic_BasicTreeUI__

#pragma interface

#include <javax/swing/plaf/TreeUI.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace beans
    {
      class PropertyChangeListener;
    }
    namespace awt
    {
      class Insets;
      class Graphics;
      class Rectangle;
      namespace event
      {
        class MouseEvent;
        class ComponentListener;
        class KeyListener;
        class MouseListener;
        class FocusListener;
      }
      class Color;
      class Component;
      class Dimension;
    }
  }
  namespace javax
  {
    namespace swing
    {
      class ActionMap;
      namespace plaf
      {
        namespace basic
        {
          class BasicTreeUI;
        }
        class ComponentUI;
      }
      class JComponent;
      class Timer;
      namespace event
      {
        class TreeModelListener;
        class TreeExpansionListener;
        class CellEditorListener;
        class TreeSelectionListener;
      }
      class CellRendererPane;
      namespace tree
      {
        class TreePath;
        class TreeSelectionModel;
        class TreeModel;
        class AbstractLayoutCache$NodeDimensions;
        class AbstractLayoutCache;
        class TreeCellEditor;
        class TreeCellRenderer;
      }
      class JTree;
      class Icon;
    }
  }
}

class javax::swing::plaf::basic::BasicTreeUI : public ::javax::swing::plaf::TreeUI
{
public:
  BasicTreeUI ();
  static ::javax::swing::plaf::ComponentUI *createUI (::javax::swing::JComponent *);
public:  // actually protected
  virtual ::java::awt::Color *getHashColor () { return hashColor; }
  virtual void setHashColor (::java::awt::Color *);
public:
  virtual void setLeftChildIndent (jint);
  virtual jint getLeftChildIndent () { return leftChildIndent; }
  virtual void setRightChildIndent (jint);
  virtual jint getRightChildIndent () { return rightChildIndent; }
  virtual void setExpandedIcon (::javax::swing::Icon *);
  virtual ::javax::swing::Icon *getExpandedIcon () { return expandedIcon; }
  virtual void setCollapsedIcon (::javax::swing::Icon *);
  virtual ::javax::swing::Icon *getCollapsedIcon () { return collapsedIcon; }
public:  // actually protected
  virtual void setLargeModel (jboolean);
  virtual jboolean isLargeModel () { return largeModel; }
  virtual void setRowHeight (jint);
  virtual jint getRowHeight ();
  virtual void setCellRenderer (::javax::swing::tree::TreeCellRenderer *);
  virtual ::javax::swing::tree::TreeCellRenderer *getCellRenderer ();
  virtual void setModel (::javax::swing::tree::TreeModel *);
  virtual ::javax::swing::tree::TreeModel *getModel () { return treeModel; }
  virtual void setRootVisible (jboolean);
  virtual jboolean isRootVisible ();
  virtual void setShowsRootHandles (jboolean);
  virtual jboolean getShowsRootHandles ();
  virtual void setCellEditor (::javax::swing::tree::TreeCellEditor *);
  virtual ::javax::swing::tree::TreeCellEditor *getCellEditor () { return cellEditor; }
  virtual void setEditable (jboolean);
  virtual jboolean isEditable ();
  virtual void setSelectionModel (::javax::swing::tree::TreeSelectionModel *);
  virtual ::javax::swing::tree::TreeSelectionModel *getSelectionModel () { return treeSelectionModel; }
public:
  virtual ::java::awt::Rectangle *getPathBounds (::javax::swing::JTree *, ::javax::swing::tree::TreePath *);
public: // actually package-private
  virtual jint getMaxHeight (::javax::swing::JTree *);
  virtual ::javax::swing::Icon *getNodeIcon (::javax::swing::tree::TreePath *);
public:
  virtual ::javax::swing::tree::TreePath *getPathForRow (::javax::swing::JTree *, jint);
  virtual jint getRowForPath (::javax::swing::JTree *, ::javax::swing::tree::TreePath *);
  virtual jint getRowCount (::javax::swing::JTree *);
  virtual ::javax::swing::tree::TreePath *getClosestPathForLocation (::javax::swing::JTree *, jint, jint);
  virtual jboolean isEditing (::javax::swing::JTree *) { return isEditing__; }
  virtual jboolean stopEditing (::javax::swing::JTree *);
  virtual void cancelEditing (::javax::swing::JTree *);
  virtual void startEditingAtPath (::javax::swing::JTree *, ::javax::swing::tree::TreePath *);
  virtual ::javax::swing::tree::TreePath *getEditingPath (::javax::swing::JTree *) { return editingPath; }
public:  // actually protected
  virtual void prepareForUIInstall ();
  virtual void completeUIInstall ();
  virtual void completeUIUninstall ();
  virtual void installComponents ();
  virtual ::javax::swing::tree::AbstractLayoutCache$NodeDimensions *createNodeDimensions ();
  virtual ::java::beans::PropertyChangeListener *createPropertyChangeListener ();
  virtual ::java::awt::event::MouseListener *createMouseListener ();
  virtual ::java::awt::event::FocusListener *createFocusListener ();
  virtual ::java::awt::event::KeyListener *createKeyListener ();
  virtual ::java::beans::PropertyChangeListener *createSelectionModelPropertyChangeListener ();
  virtual ::javax::swing::event::TreeSelectionListener *createTreeSelectionListener ();
  virtual ::javax::swing::event::CellEditorListener *createCellEditorListener ();
  virtual ::java::awt::event::ComponentListener *createComponentListener ();
  virtual ::javax::swing::event::TreeExpansionListener *createTreeExpansionListener ();
  virtual ::javax::swing::tree::AbstractLayoutCache *createLayoutCache ();
  virtual ::javax::swing::CellRendererPane *createCellRendererPane ();
  virtual ::javax::swing::tree::TreeCellEditor *createDefaultCellEditor ();
  virtual ::javax::swing::tree::TreeCellRenderer *createDefaultCellRenderer ();
  virtual ::javax::swing::event::TreeModelListener *createTreeModelListener ();
  virtual void uninstallListeners ();
  virtual void uninstallKeyboardActions ();
  virtual void uninstallComponents ();
  virtual jint getVerticalLegBuffer ();
  virtual jint getHorizontalLegBuffer ();
  virtual void updateLayoutCacheExpandedNodes ();
  virtual void updateExpandedDescendants (::javax::swing::tree::TreePath *);
  virtual ::javax::swing::tree::TreePath *getLastChildPath (::javax::swing::tree::TreePath *);
  virtual void updateDepthOffset ();
  virtual void updateCellEditor ();
  virtual void updateRenderer ();
  virtual void configureLayoutCache ();
  virtual void updateSize ();
  virtual void updateCachedPreferredSize ();
  virtual void pathWasExpanded (::javax::swing::tree::TreePath *);
  virtual void pathWasCollapsed (::javax::swing::tree::TreePath *);
  virtual void installDefaults ();
  virtual void installKeyboardActions ();
private:
  ::javax::swing::ActionMap *getActionMap ();
  ::javax::swing::ActionMap *createDefaultActions ();
  jint convertModifiers (jint);
public:  // actually protected
  virtual void installListeners ();
public:
  virtual void installUI (::javax::swing::JComponent *);
public:  // actually protected
  virtual void uninstallDefaults ();
public:
  virtual void uninstallUI (::javax::swing::JComponent *);
  virtual void paint (::java::awt::Graphics *, ::javax::swing::JComponent *);
private:
  jboolean isLastChild (::javax::swing::tree::TreePath *);
public:  // actually protected
  virtual void ensureRowsAreVisible (jint, jint);
public:
  virtual void setPreferredMinSize (::java::awt::Dimension *);
  virtual ::java::awt::Dimension *getPreferredMinSize ();
  virtual ::java::awt::Dimension *getPreferredSize (::javax::swing::JComponent *);
  virtual ::java::awt::Dimension *getPreferredSize (::javax::swing::JComponent *, jboolean);
  virtual ::java::awt::Dimension *getMinimumSize (::javax::swing::JComponent *);
  virtual ::java::awt::Dimension *getMaximumSize (::javax::swing::JComponent *);
public:  // actually protected
  virtual void completeEditing ();
  virtual void completeEditing (jboolean, jboolean, jboolean);
  virtual jboolean startEditing (::javax::swing::tree::TreePath *, ::java::awt::event::MouseEvent *);
  virtual void checkForClickInExpandControl (::javax::swing::tree::TreePath *, jint, jint);
  virtual jboolean isLocationInExpandControl (::javax::swing::tree::TreePath *, jint, jint);
  virtual void handleExpandControlClick (::javax::swing::tree::TreePath *, jint, jint);
  virtual void toggleExpandState (::javax::swing::tree::TreePath *);
  virtual jboolean isToggleSelectionEvent (::java::awt::event::MouseEvent *);
  virtual jboolean isMultiSelectEvent (::java::awt::event::MouseEvent *);
  virtual jboolean isToggleEvent (::java::awt::event::MouseEvent *);
  virtual void selectPathForEvent (::javax::swing::tree::TreePath *, ::java::awt::event::MouseEvent *);
  virtual jboolean isLeaf (jint);
public: // actually package-private
  virtual jboolean hasControlIcons ();
  virtual ::javax::swing::Icon *getCurrentControlIcon (::javax::swing::tree::TreePath *);
  virtual ::java::lang::Object *getParent (::java::lang::Object *, ::java::lang::Object *);
private:
  ::java::lang::Object *findNode (::java::lang::Object *, ::java::lang::Object *);
public: // actually package-private
  virtual void selectPath (::javax::swing::JTree *, ::javax::swing::tree::TreePath *);
  virtual JArray< ::java::lang::Object *> *getPathToRoot (::java::lang::Object *, jint);
public:  // actually protected
  virtual void paintVerticalLine (::java::awt::Graphics *, ::javax::swing::JComponent *, jint, jint, jint);
  virtual void paintHorizontalLine (::java::awt::Graphics *, ::javax::swing::JComponent *, jint, jint, jint);
  virtual void drawCentered (::java::awt::Component *, ::java::awt::Graphics *, ::javax::swing::Icon *, jint, jint);
  virtual void drawDashedHorizontalLine (::java::awt::Graphics *, jint, jint, jint);
  virtual void drawDashedVerticalLine (::java::awt::Graphics *, jint, jint, jint);
  virtual void paintExpandControl (::java::awt::Graphics *, ::java::awt::Rectangle *, ::java::awt::Insets *, ::java::awt::Rectangle *, ::javax::swing::tree::TreePath *, jint, jboolean, jboolean, jboolean);
  virtual void paintHorizontalPartOfLeg (::java::awt::Graphics *, ::java::awt::Rectangle *, ::java::awt::Insets *, ::java::awt::Rectangle *, ::javax::swing::tree::TreePath *, jint, jboolean, jboolean, jboolean);
  virtual void paintVerticalPartOfLeg (::java::awt::Graphics *, ::java::awt::Rectangle *, ::java::awt::Insets *, ::javax::swing::tree::TreePath *);
  virtual void paintRow (::java::awt::Graphics *, ::java::awt::Rectangle *, ::java::awt::Insets *, ::java::awt::Rectangle *, ::javax::swing::tree::TreePath *, jint, jboolean, jboolean, jboolean);
  virtual void prepareForUIUninstall () { }
  virtual jboolean shouldPaintExpandControl (::javax::swing::tree::TreePath *, jint, jboolean, jboolean, jboolean);
public: // actually package-private
  virtual void finish ();
public:  // actually protected
  virtual jint getRowX (jint, jint);
public: // actually package-private
  static jint WAIT_TILL_EDITING;
public:  // actually protected
  ::javax::swing::Icon * __attribute__((aligned(__alignof__( ::javax::swing::plaf::TreeUI )))) collapsedIcon;
  ::javax::swing::Icon *expandedIcon;
  jint leftChildIndent;
  jint rightChildIndent;
  jint totalChildIndent;
  jint lastSelectedRow;
  ::javax::swing::JTree *tree;
  ::javax::swing::tree::TreeCellRenderer *currentCellRenderer;
  jboolean createdRenderer;
  ::javax::swing::tree::TreeCellEditor *cellEditor;
  jboolean createdCellEditor;
  jboolean stopEditingInCompleteEditing;
  ::javax::swing::CellRendererPane *rendererPane;
  ::java::awt::Dimension *preferredSize;
  ::java::awt::Dimension *preferredMinSize;
  jboolean validCachedPreferredSize;
  ::javax::swing::tree::AbstractLayoutCache *treeState;
  ::java::util::Hashtable *drawingCache;
  jboolean largeModel;
  ::javax::swing::tree::AbstractLayoutCache$NodeDimensions *nodeDimensions;
  ::javax::swing::tree::TreeModel *treeModel;
  ::javax::swing::tree::TreeSelectionModel *treeSelectionModel;
  jint depthOffset;
  ::java::awt::Component *editingComponent;
  ::javax::swing::tree::TreePath *editingPath;
  jint editingRow;
  jboolean editorHasDifferentSize;
public: // actually package-private
  jboolean isEditing__;
  ::javax::swing::tree::TreePath *currentVisiblePath;
  jint gap;
  jint maxHeight;
  ::java::awt::Color *hashColor;
  ::java::beans::PropertyChangeListener *propertyChangeListener;
  ::java::awt::event::FocusListener *focusListener;
  ::javax::swing::event::TreeSelectionListener *treeSelectionListener;
  ::java::awt::event::MouseListener *mouseListener;
  ::java::awt::event::KeyListener *keyListener;
  ::java::beans::PropertyChangeListener *selectionModelPropertyChangeListener;
  ::java::awt::event::ComponentListener *componentListener;
  ::javax::swing::event::CellEditorListener *cellEditorListener;
  ::javax::swing::event::TreeExpansionListener *treeExpansionListener;
  ::javax::swing::event::TreeModelListener *treeModelListener;
  ::javax::swing::Timer *startEditTimer;
  static ::javax::swing::Icon *nullIcon;
  static ::java::awt::event::MouseEvent *EDIT;

  friend class javax_swing_plaf_basic_BasicTreeUI$2;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeTraverseAction;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeToggleAction;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeSelectionHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreePageAction;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeModelHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeIncrementAction;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeHomeAction;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeExpansionHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeCancelEditingAction;
  friend class javax_swing_plaf_basic_BasicTreeUI$SelectionModelPropertyChangeHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$PropertyChangeHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$NodeDimensionsHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$MouseInputHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$MouseHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$KeyHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$FocusHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$CellEditorHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$ComponentHandler;
  friend class javax_swing_plaf_basic_BasicTreeUI$TreeStartEditingAction;
public:

  static ::java::lang::Class class$;
};

#endif /* __javax_swing_plaf_basic_BasicTreeUI__ */
