/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM nsIOutlinerSelection.idl
 */

#ifndef __gen_nsIOutlinerSelection_h__
#define __gen_nsIOutlinerSelection_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIOutlinerBoxObject; /* forward declaration */


/* starting interface:    nsIOutlinerSelection */
#define NS_IOUTLINERSELECTION_IID_STR "f848d7cf-f3d6-4775-8c9f-135546e61e1e"

#define NS_IOUTLINERSELECTION_IID \
  {0xf848d7cf, 0xf3d6, 0x4775, \
    { 0x8c, 0x9f, 0x13, 0x55, 0x46, 0xe6, 0x1e, 0x1e }}

class NS_NO_VTABLE nsIOutlinerSelection : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IOUTLINERSELECTION_IID)

  /**
   * The outliner widget for this selection.
   */
  /* attribute nsIOutlinerBoxObject outliner; */
  NS_IMETHOD GetOutliner(nsIOutlinerBoxObject * *aOutliner) = 0;
  NS_IMETHOD SetOutliner(nsIOutlinerBoxObject * aOutliner) = 0;

  /**
   * The number of rows currently selected in this outliner.
   */
  /* readonly attribute long count; */
  NS_IMETHOD GetCount(PRInt32 *aCount) = 0;

  /**
   * Indicates whether or not the row at the specified index is
   * part of the selection.
   */
  /* boolean isSelected (in long index); */
  NS_IMETHOD IsSelected(PRInt32 index, PRBool *_retval) = 0;

  /**
   * Deselect all rows and select the row at the specified index. 
   */
  /* void select (in long index); */
  NS_IMETHOD Select(PRInt32 index) = 0;

  /**
   * Perform a timed select.
   */
  /* void timedSelect (in long index, in long delay); */
  NS_IMETHOD TimedSelect(PRInt32 index, PRInt32 delay) = 0;

  /**
   * Toggle the selection state of the row at the specified index.
   */
  /* void toggleSelect (in long index); */
  NS_IMETHOD ToggleSelect(PRInt32 index) = 0;

  /**
   * Select the range specified by the indices.  If augment is true,
   * then we add the range to the selection without clearing out anything
   * else.  If augment is false, everything is cleared except for the specified range.
   */
  /* void rangedSelect (in long startIndex, in long endIndex, in boolean augment); */
  NS_IMETHOD RangedSelect(PRInt32 startIndex, PRInt32 endIndex, PRBool augment) = 0;

  /**
   * Clears the range.
   */
  /* void clearRange (in long startIndex, in long endIndex); */
  NS_IMETHOD ClearRange(PRInt32 startIndex, PRInt32 endIndex) = 0;

  /**
   * Clears the selection.
   */
  /* void clearSelection (); */
  NS_IMETHOD ClearSelection(void) = 0;

  /**
   * Inverts the selection.
   */
  /* void invertSelection (); */
  NS_IMETHOD InvertSelection(void) = 0;

  /**
   * Selects all rows.
   */
  /* void selectAll (); */
  NS_IMETHOD SelectAll(void) = 0;

  /**
   * Iterate the selection using these methods.
   */
  /* long getRangeCount (); */
  NS_IMETHOD GetRangeCount(PRInt32 *_retval) = 0;

  /* void getRangeAt (in long i, out long min, out long max); */
  NS_IMETHOD GetRangeAt(PRInt32 i, PRInt32 *min, PRInt32 *max) = 0;

  /**
   * Can be used to invalidate the selection.
   */
  /* void invalidateSelection (); */
  NS_IMETHOD InvalidateSelection(void) = 0;

  /**
   * Called when the row count changes to adjust selection indices.
   */
  /* void adjustSelection (in long index, in long count); */
  NS_IMETHOD AdjustSelection(PRInt32 index, PRInt32 count) = 0;

  /**
   * This attribute is a boolean indicating whether or not the
   * "select" event should fire when the selection is changed using
   * one of our methods.  A view can use this to temporarily suppress
   * the selection while manipulating all of the indices, e.g., on 
   * a sort.
   */
  /* attribute boolean selectEventsSuppressed; */
  NS_IMETHOD GetSelectEventsSuppressed(PRBool *aSelectEventsSuppressed) = 0;
  NS_IMETHOD SetSelectEventsSuppressed(PRBool aSelectEventsSuppressed) = 0;

  /**
   * The current item (the one that gets a focus rect in addition to being
   * selected).
   */
  /* attribute long currentIndex; */
  NS_IMETHOD GetCurrentIndex(PRInt32 *aCurrentIndex) = 0;
  NS_IMETHOD SetCurrentIndex(PRInt32 aCurrentIndex) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIOUTLINERSELECTION \
  NS_IMETHOD GetOutliner(nsIOutlinerBoxObject * *aOutliner); \
  NS_IMETHOD SetOutliner(nsIOutlinerBoxObject * aOutliner); \
  NS_IMETHOD GetCount(PRInt32 *aCount); \
  NS_IMETHOD IsSelected(PRInt32 index, PRBool *_retval); \
  NS_IMETHOD Select(PRInt32 index); \
  NS_IMETHOD TimedSelect(PRInt32 index, PRInt32 delay); \
  NS_IMETHOD ToggleSelect(PRInt32 index); \
  NS_IMETHOD RangedSelect(PRInt32 startIndex, PRInt32 endIndex, PRBool augment); \
  NS_IMETHOD ClearRange(PRInt32 startIndex, PRInt32 endIndex); \
  NS_IMETHOD ClearSelection(void); \
  NS_IMETHOD InvertSelection(void); \
  NS_IMETHOD SelectAll(void); \
  NS_IMETHOD GetRangeCount(PRInt32 *_retval); \
  NS_IMETHOD GetRangeAt(PRInt32 i, PRInt32 *min, PRInt32 *max); \
  NS_IMETHOD InvalidateSelection(void); \
  NS_IMETHOD AdjustSelection(PRInt32 index, PRInt32 count); \
  NS_IMETHOD GetSelectEventsSuppressed(PRBool *aSelectEventsSuppressed); \
  NS_IMETHOD SetSelectEventsSuppressed(PRBool aSelectEventsSuppressed); \
  NS_IMETHOD GetCurrentIndex(PRInt32 *aCurrentIndex); \
  NS_IMETHOD SetCurrentIndex(PRInt32 aCurrentIndex); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIOUTLINERSELECTION(_to) \
  NS_IMETHOD GetOutliner(nsIOutlinerBoxObject * *aOutliner) { return _to ## GetOutliner(aOutliner); } \
  NS_IMETHOD SetOutliner(nsIOutlinerBoxObject * aOutliner) { return _to ## SetOutliner(aOutliner); } \
  NS_IMETHOD GetCount(PRInt32 *aCount) { return _to ## GetCount(aCount); } \
  NS_IMETHOD IsSelected(PRInt32 index, PRBool *_retval) { return _to ## IsSelected(index, _retval); } \
  NS_IMETHOD Select(PRInt32 index) { return _to ## Select(index); } \
  NS_IMETHOD TimedSelect(PRInt32 index, PRInt32 delay) { return _to ## TimedSelect(index, delay); } \
  NS_IMETHOD ToggleSelect(PRInt32 index) { return _to ## ToggleSelect(index); } \
  NS_IMETHOD RangedSelect(PRInt32 startIndex, PRInt32 endIndex, PRBool augment) { return _to ## RangedSelect(startIndex, endIndex, augment); } \
  NS_IMETHOD ClearRange(PRInt32 startIndex, PRInt32 endIndex) { return _to ## ClearRange(startIndex, endIndex); } \
  NS_IMETHOD ClearSelection(void) { return _to ## ClearSelection(); } \
  NS_IMETHOD InvertSelection(void) { return _to ## InvertSelection(); } \
  NS_IMETHOD SelectAll(void) { return _to ## SelectAll(); } \
  NS_IMETHOD GetRangeCount(PRInt32 *_retval) { return _to ## GetRangeCount(_retval); } \
  NS_IMETHOD GetRangeAt(PRInt32 i, PRInt32 *min, PRInt32 *max) { return _to ## GetRangeAt(i, min, max); } \
  NS_IMETHOD InvalidateSelection(void) { return _to ## InvalidateSelection(); } \
  NS_IMETHOD AdjustSelection(PRInt32 index, PRInt32 count) { return _to ## AdjustSelection(index, count); } \
  NS_IMETHOD GetSelectEventsSuppressed(PRBool *aSelectEventsSuppressed) { return _to ## GetSelectEventsSuppressed(aSelectEventsSuppressed); } \
  NS_IMETHOD SetSelectEventsSuppressed(PRBool aSelectEventsSuppressed) { return _to ## SetSelectEventsSuppressed(aSelectEventsSuppressed); } \
  NS_IMETHOD GetCurrentIndex(PRInt32 *aCurrentIndex) { return _to ## GetCurrentIndex(aCurrentIndex); } \
  NS_IMETHOD SetCurrentIndex(PRInt32 aCurrentIndex) { return _to ## SetCurrentIndex(aCurrentIndex); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIOUTLINERSELECTION(_to) \
  NS_IMETHOD GetOutliner(nsIOutlinerBoxObject * *aOutliner) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetOutliner(aOutliner); } \
  NS_IMETHOD SetOutliner(nsIOutlinerBoxObject * aOutliner) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetOutliner(aOutliner); } \
  NS_IMETHOD GetCount(PRInt32 *aCount) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCount(aCount); } \
  NS_IMETHOD IsSelected(PRInt32 index, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> IsSelected(index, _retval); } \
  NS_IMETHOD Select(PRInt32 index) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> Select(index); } \
  NS_IMETHOD TimedSelect(PRInt32 index, PRInt32 delay) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> TimedSelect(index, delay); } \
  NS_IMETHOD ToggleSelect(PRInt32 index) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ToggleSelect(index); } \
  NS_IMETHOD RangedSelect(PRInt32 startIndex, PRInt32 endIndex, PRBool augment) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RangedSelect(startIndex, endIndex, augment); } \
  NS_IMETHOD ClearRange(PRInt32 startIndex, PRInt32 endIndex) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ClearRange(startIndex, endIndex); } \
  NS_IMETHOD ClearSelection(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> ClearSelection(); } \
  NS_IMETHOD InvertSelection(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> InvertSelection(); } \
  NS_IMETHOD SelectAll(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> SelectAll(); } \
  NS_IMETHOD GetRangeCount(PRInt32 *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetRangeCount(_retval); } \
  NS_IMETHOD GetRangeAt(PRInt32 i, PRInt32 *min, PRInt32 *max) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetRangeAt(i, min, max); } \
  NS_IMETHOD InvalidateSelection(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> InvalidateSelection(); } \
  NS_IMETHOD AdjustSelection(PRInt32 index, PRInt32 count) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AdjustSelection(index, count); } \
  NS_IMETHOD GetSelectEventsSuppressed(PRBool *aSelectEventsSuppressed) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetSelectEventsSuppressed(aSelectEventsSuppressed); } \
  NS_IMETHOD SetSelectEventsSuppressed(PRBool aSelectEventsSuppressed) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetSelectEventsSuppressed(aSelectEventsSuppressed); } \
  NS_IMETHOD GetCurrentIndex(PRInt32 *aCurrentIndex) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetCurrentIndex(aCurrentIndex); } \
  NS_IMETHOD SetCurrentIndex(PRInt32 aCurrentIndex) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->SetCurrentIndex(aCurrentIndex); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsOutlinerSelection : public nsIOutlinerSelection
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIOUTLINERSELECTION

  nsOutlinerSelection();
  virtual ~nsOutlinerSelection();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsOutlinerSelection, nsIOutlinerSelection)

nsOutlinerSelection::nsOutlinerSelection()
{
  NS_INIT_ISUPPORTS();
  /* member initializers and constructor code */
}

nsOutlinerSelection::~nsOutlinerSelection()
{
  /* destructor code */
}

/* attribute nsIOutlinerBoxObject outliner; */
NS_IMETHODIMP nsOutlinerSelection::GetOutliner(nsIOutlinerBoxObject * *aOutliner)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsOutlinerSelection::SetOutliner(nsIOutlinerBoxObject * aOutliner)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute long count; */
NS_IMETHODIMP nsOutlinerSelection::GetCount(PRInt32 *aCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isSelected (in long index); */
NS_IMETHODIMP nsOutlinerSelection::IsSelected(PRInt32 index, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void select (in long index); */
NS_IMETHODIMP nsOutlinerSelection::Select(PRInt32 index)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void timedSelect (in long index, in long delay); */
NS_IMETHODIMP nsOutlinerSelection::TimedSelect(PRInt32 index, PRInt32 delay)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void toggleSelect (in long index); */
NS_IMETHODIMP nsOutlinerSelection::ToggleSelect(PRInt32 index)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void rangedSelect (in long startIndex, in long endIndex, in boolean augment); */
NS_IMETHODIMP nsOutlinerSelection::RangedSelect(PRInt32 startIndex, PRInt32 endIndex, PRBool augment)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearRange (in long startIndex, in long endIndex); */
NS_IMETHODIMP nsOutlinerSelection::ClearRange(PRInt32 startIndex, PRInt32 endIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clearSelection (); */
NS_IMETHODIMP nsOutlinerSelection::ClearSelection()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invertSelection (); */
NS_IMETHODIMP nsOutlinerSelection::InvertSelection()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectAll (); */
NS_IMETHODIMP nsOutlinerSelection::SelectAll()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getRangeCount (); */
NS_IMETHODIMP nsOutlinerSelection::GetRangeCount(PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getRangeAt (in long i, out long min, out long max); */
NS_IMETHODIMP nsOutlinerSelection::GetRangeAt(PRInt32 i, PRInt32 *min, PRInt32 *max)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invalidateSelection (); */
NS_IMETHODIMP nsOutlinerSelection::InvalidateSelection()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void adjustSelection (in long index, in long count); */
NS_IMETHODIMP nsOutlinerSelection::AdjustSelection(PRInt32 index, PRInt32 count)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute boolean selectEventsSuppressed; */
NS_IMETHODIMP nsOutlinerSelection::GetSelectEventsSuppressed(PRBool *aSelectEventsSuppressed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsOutlinerSelection::SetSelectEventsSuppressed(PRBool aSelectEventsSuppressed)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute long currentIndex; */
NS_IMETHODIMP nsOutlinerSelection::GetCurrentIndex(PRInt32 *aCurrentIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsOutlinerSelection::SetCurrentIndex(PRInt32 aCurrentIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

// Initializer,

#endif /* __gen_nsIOutlinerSelection_h__ */
