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

#ifndef __gen_nsIXULTemplateBuilder_h__
#define __gen_nsIXULTemplateBuilder_h__


#ifndef __gen_domstubs_h__
#include "domstubs.h"
#endif

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

#ifndef __gen_nsIRDFCompositeDataSource_h__
#include "nsIRDFCompositeDataSource.h"
#endif

#ifndef __gen_nsIRDFResource_h__
#include "nsIRDFResource.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif

/* starting interface:    nsIXULTemplateBuilder */
#define NS_IXULTEMPLATEBUILDER_IID_STR "fb744f8e-1dd1-11b2-a5d7-935c9ab60602"

#define NS_IXULTEMPLATEBUILDER_IID \
  {0xfb744f8e, 0x1dd1, 0x11b2, \
    { 0xa5, 0xd7, 0x93, 0x5c, 0x9a, 0xb6, 0x06, 0x02 }}

class NS_NO_VTABLE nsIXULTemplateBuilder : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXULTEMPLATEBUILDER_IID)

  /**
     * The ``root'' node in the DOM to which this builder is attached
     */
  /* readonly attribute nsIDOMElement root; */
  NS_IMETHOD GetRoot(nsIDOMElement * *aRoot) = 0;

  /**
     * The composite datasource that the template builder observes
     * and uses to create content
     */
  /* readonly attribute nsIRDFCompositeDataSource database; */
  NS_IMETHOD GetDatabase(nsIRDFCompositeDataSource * *aDatabase) = 0;

  /**
     * Force the template builder to rebuild its content.
     */
  /* void rebuild (); */
  NS_IMETHOD Rebuild(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIXULTEMPLATEBUILDER \
  NS_IMETHOD GetRoot(nsIDOMElement * *aRoot); \
  NS_IMETHOD GetDatabase(nsIRDFCompositeDataSource * *aDatabase); \
  NS_IMETHOD Rebuild(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIXULTEMPLATEBUILDER(_to) \
  NS_IMETHOD GetRoot(nsIDOMElement * *aRoot) { return _to ## GetRoot(aRoot); } \
  NS_IMETHOD GetDatabase(nsIRDFCompositeDataSource * *aDatabase) { return _to ## GetDatabase(aDatabase); } \
  NS_IMETHOD Rebuild(void) { return _to ## Rebuild(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIXULTEMPLATEBUILDER(_to) \
  NS_IMETHOD GetRoot(nsIDOMElement * *aRoot) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetRoot(aRoot); } \
  NS_IMETHOD GetDatabase(nsIRDFCompositeDataSource * *aDatabase) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##->GetDatabase(aDatabase); } \
  NS_IMETHOD Rebuild(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> Rebuild(); } 

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

/* Header file */
class nsXULTemplateBuilder : public nsIXULTemplateBuilder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIXULTEMPLATEBUILDER

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsXULTemplateBuilder, nsIXULTemplateBuilder)

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

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

/* readonly attribute nsIDOMElement root; */
NS_IMETHODIMP nsXULTemplateBuilder::GetRoot(nsIDOMElement * *aRoot)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIRDFCompositeDataSource database; */
NS_IMETHODIMP nsXULTemplateBuilder::GetDatabase(nsIRDFCompositeDataSource * *aDatabase)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void rebuild (); */
NS_IMETHODIMP nsXULTemplateBuilder::Rebuild()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIXULOutlinerBuilderObserver */
#define NS_IXULOUTLINERBUILDEROBSERVER_IID_STR "f6ed69be-1dd1-11b2-adfc-9db02ac57d88"

#define NS_IXULOUTLINERBUILDEROBSERVER_IID \
  {0xf6ed69be, 0x1dd1, 0x11b2, \
    { 0xad, 0xfc, 0x9d, 0xb0, 0x2a, 0xc5, 0x7d, 0x88 }}

/**
 * nsIXULOutlinerBuilderObserver
 *  This interface allows clients of the XULOutlinerBuilder to define domain 
 *  specific handling of specific nsIOutlinerView methods that 
 *  XULOutlinerBuilder does not implement.
 */
class NS_NO_VTABLE nsIXULOutlinerBuilderObserver : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXULOUTLINERBUILDEROBSERVER_IID)

  /** 
     * Called when an item is opened or closed. 
     */
  /* void onToggleOpenState (in long index); */
  NS_IMETHOD OnToggleOpenState(PRInt32 index) = 0;

  /** 
	 * Called when a header is clicked.
     */
  /* void onCycleHeader (in wstring colID, in nsIDOMElement elt); */
  NS_IMETHOD OnCycleHeader(const PRUnichar *colID, nsIDOMElement *elt) = 0;

  /**
     * Called when a cell in a non-selectable cycling column (e.g. 
     * unread/flag/etc.) is clicked.
     */
  /* void onCycleCell (in long row, in wstring colID); */
  NS_IMETHOD OnCycleCell(PRInt32 row, const PRUnichar *colID) = 0;

  /** 
     * Called when selection in the outliner changes
     */
  /* void onSelectionChanged (); */
  NS_IMETHOD OnSelectionChanged(void) = 0;

  /** 
     * APIs for inline editing.  isEditable is called to ask the view if the 
     * cell contents are editable.  A value of true will result in the 
     * outliner popping up a text field when the user tries to inline edit 
     * the cell. 
     */
  /* boolean isEditable (in long row, in wstring colID); */
  NS_IMETHOD IsEditable(PRInt32 row, const PRUnichar *colID, PRBool *_retval) = 0;

  /** 
     * onSetCellText is called when the contents of the cell have been edited by the user.
     */
  /* void onSetCellText (in long row, in wstring colID, in wstring value); */
  NS_IMETHOD OnSetCellText(PRInt32 row, const PRUnichar *colID, const PRUnichar *value) = 0;

  /**
     * A command API that can be used to invoke commands on the selection.  
     * The outliner will automatically invoke this method when certain keys 
     * are pressed.  For example, when the DEL key is pressed, performAction 
     * will be called with the "delete" string. 
     */
  /* void onPerformAction (in wstring action); */
  NS_IMETHOD OnPerformAction(const PRUnichar *action) = 0;

  /**
     * A command API that can be used to invoke commands on a specific row.
     */
  /* void onPerformActionOnRow (in wstring action, in long row); */
  NS_IMETHOD OnPerformActionOnRow(const PRUnichar *action, PRInt32 row) = 0;

  /**
     * A command API that can be used to invoke commands on a specific cell.
     */
  /* void onPerformActionOnCell (in wstring action, in long row, in wstring colID); */
  NS_IMETHOD OnPerformActionOnCell(const PRUnichar *action, PRInt32 row, const PRUnichar *colID) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIXULOUTLINERBUILDEROBSERVER \
  NS_IMETHOD OnToggleOpenState(PRInt32 index); \
  NS_IMETHOD OnCycleHeader(const PRUnichar *colID, nsIDOMElement *elt); \
  NS_IMETHOD OnCycleCell(PRInt32 row, const PRUnichar *colID); \
  NS_IMETHOD OnSelectionChanged(void); \
  NS_IMETHOD IsEditable(PRInt32 row, const PRUnichar *colID, PRBool *_retval); \
  NS_IMETHOD OnSetCellText(PRInt32 row, const PRUnichar *colID, const PRUnichar *value); \
  NS_IMETHOD OnPerformAction(const PRUnichar *action); \
  NS_IMETHOD OnPerformActionOnRow(const PRUnichar *action, PRInt32 row); \
  NS_IMETHOD OnPerformActionOnCell(const PRUnichar *action, PRInt32 row, const PRUnichar *colID); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIXULOUTLINERBUILDEROBSERVER(_to) \
  NS_IMETHOD OnToggleOpenState(PRInt32 index) { return _to ## OnToggleOpenState(index); } \
  NS_IMETHOD OnCycleHeader(const PRUnichar *colID, nsIDOMElement *elt) { return _to ## OnCycleHeader(colID, elt); } \
  NS_IMETHOD OnCycleCell(PRInt32 row, const PRUnichar *colID) { return _to ## OnCycleCell(row, colID); } \
  NS_IMETHOD OnSelectionChanged(void) { return _to ## OnSelectionChanged(); } \
  NS_IMETHOD IsEditable(PRInt32 row, const PRUnichar *colID, PRBool *_retval) { return _to ## IsEditable(row, colID, _retval); } \
  NS_IMETHOD OnSetCellText(PRInt32 row, const PRUnichar *colID, const PRUnichar *value) { return _to ## OnSetCellText(row, colID, value); } \
  NS_IMETHOD OnPerformAction(const PRUnichar *action) { return _to ## OnPerformAction(action); } \
  NS_IMETHOD OnPerformActionOnRow(const PRUnichar *action, PRInt32 row) { return _to ## OnPerformActionOnRow(action, row); } \
  NS_IMETHOD OnPerformActionOnCell(const PRUnichar *action, PRInt32 row, const PRUnichar *colID) { return _to ## OnPerformActionOnCell(action, row, colID); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIXULOUTLINERBUILDEROBSERVER(_to) \
  NS_IMETHOD OnToggleOpenState(PRInt32 index) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnToggleOpenState(index); } \
  NS_IMETHOD OnCycleHeader(const PRUnichar *colID, nsIDOMElement *elt) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnCycleHeader(colID, elt); } \
  NS_IMETHOD OnCycleCell(PRInt32 row, const PRUnichar *colID) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnCycleCell(row, colID); } \
  NS_IMETHOD OnSelectionChanged(void) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnSelectionChanged(); } \
  NS_IMETHOD IsEditable(PRInt32 row, const PRUnichar *colID, PRBool *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> IsEditable(row, colID, _retval); } \
  NS_IMETHOD OnSetCellText(PRInt32 row, const PRUnichar *colID, const PRUnichar *value) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnSetCellText(row, colID, value); } \
  NS_IMETHOD OnPerformAction(const PRUnichar *action) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnPerformAction(action); } \
  NS_IMETHOD OnPerformActionOnRow(const PRUnichar *action, PRInt32 row) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnPerformActionOnRow(action, row); } \
  NS_IMETHOD OnPerformActionOnCell(const PRUnichar *action, PRInt32 row, const PRUnichar *colID) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> OnPerformActionOnCell(action, row, colID); } 

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

/* Header file */
class nsXULOutlinerBuilderObserver : public nsIXULOutlinerBuilderObserver
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIXULOUTLINERBUILDEROBSERVER

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsXULOutlinerBuilderObserver, nsIXULOutlinerBuilderObserver)

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

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

/* void onToggleOpenState (in long index); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnToggleOpenState(PRInt32 index)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCycleHeader (in wstring colID, in nsIDOMElement elt); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnCycleHeader(const PRUnichar *colID, nsIDOMElement *elt)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onCycleCell (in long row, in wstring colID); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnCycleCell(PRInt32 row, const PRUnichar *colID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSelectionChanged (); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnSelectionChanged()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* boolean isEditable (in long row, in wstring colID); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::IsEditable(PRInt32 row, const PRUnichar *colID, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onSetCellText (in long row, in wstring colID, in wstring value); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnSetCellText(PRInt32 row, const PRUnichar *colID, const PRUnichar *value)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onPerformAction (in wstring action); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnPerformAction(const PRUnichar *action)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onPerformActionOnRow (in wstring action, in long row); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnPerformActionOnRow(const PRUnichar *action, PRInt32 row)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void onPerformActionOnCell (in wstring action, in long row, in wstring colID); */
NS_IMETHODIMP nsXULOutlinerBuilderObserver::OnPerformActionOnCell(const PRUnichar *action, PRInt32 row, const PRUnichar *colID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


/* starting interface:    nsIXULOutlinerBuilder */
#define NS_IXULOUTLINERBUILDER_IID_STR "06b31b15-ebf5-4e74-a0e2-6bc0a18a3969"

#define NS_IXULOUTLINERBUILDER_IID \
  {0x06b31b15, 0xebf5, 0x4e74, \
    { 0xa0, 0xe2, 0x6b, 0xc0, 0xa1, 0x8a, 0x39, 0x69 }}

class NS_NO_VTABLE nsIXULOutlinerBuilder : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IXULOUTLINERBUILDER_IID)

  /**
     * Retrieve the RDF resource associated with the specified row.
     */
  /* nsIRDFResource getResourceAtIndex (in long aRowIndex); */
  NS_IMETHOD GetResourceAtIndex(PRInt32 aRowIndex, nsIRDFResource **_retval) = 0;

  /**
     * Retrieve the index associated with specified RDF resource.
     */
  /* long getIndexOfResource (in nsIRDFResource resource); */
  NS_IMETHOD GetIndexOfResource(nsIRDFResource *resource, PRInt32 *_retval) = 0;

  /** 
     * Add a Outliner Builder Observer to handle Outliner View 
     * methods that the base builder does not implement. 
     */
  /* void addObserver (in nsIXULOutlinerBuilderObserver aObserver); */
  NS_IMETHOD AddObserver(nsIXULOutlinerBuilderObserver *aObserver) = 0;

  /** 
     * Remove an Outliner Builder Observer.
     */
  /* void removeObserver (in nsIXULOutlinerBuilderObserver aObserver); */
  NS_IMETHOD RemoveObserver(nsIXULOutlinerBuilderObserver *aObserver) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIXULOUTLINERBUILDER \
  NS_IMETHOD GetResourceAtIndex(PRInt32 aRowIndex, nsIRDFResource **_retval); \
  NS_IMETHOD GetIndexOfResource(nsIRDFResource *resource, PRInt32 *_retval); \
  NS_IMETHOD AddObserver(nsIXULOutlinerBuilderObserver *aObserver); \
  NS_IMETHOD RemoveObserver(nsIXULOutlinerBuilderObserver *aObserver); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIXULOUTLINERBUILDER(_to) \
  NS_IMETHOD GetResourceAtIndex(PRInt32 aRowIndex, nsIRDFResource **_retval) { return _to ## GetResourceAtIndex(aRowIndex, _retval); } \
  NS_IMETHOD GetIndexOfResource(nsIRDFResource *resource, PRInt32 *_retval) { return _to ## GetIndexOfResource(resource, _retval); } \
  NS_IMETHOD AddObserver(nsIXULOutlinerBuilderObserver *aObserver) { return _to ## AddObserver(aObserver); } \
  NS_IMETHOD RemoveObserver(nsIXULOutlinerBuilderObserver *aObserver) { return _to ## RemoveObserver(aObserver); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIXULOUTLINERBUILDER(_to) \
  NS_IMETHOD GetResourceAtIndex(PRInt32 aRowIndex, nsIRDFResource **_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetResourceAtIndex(aRowIndex, _retval); } \
  NS_IMETHOD GetIndexOfResource(nsIRDFResource *resource, PRInt32 *_retval) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> GetIndexOfResource(resource, _retval); } \
  NS_IMETHOD AddObserver(nsIXULOutlinerBuilderObserver *aObserver) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> AddObserver(aObserver); } \
  NS_IMETHOD RemoveObserver(nsIXULOutlinerBuilderObserver *aObserver) { return !_to ## ? NS_ERROR_NULL_POINTER : _to ##-> RemoveObserver(aObserver); } 

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

/* Header file */
class nsXULOutlinerBuilder : public nsIXULOutlinerBuilder
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIXULOUTLINERBUILDER

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsXULOutlinerBuilder, nsIXULOutlinerBuilder)

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

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

/* nsIRDFResource getResourceAtIndex (in long aRowIndex); */
NS_IMETHODIMP nsXULOutlinerBuilder::GetResourceAtIndex(PRInt32 aRowIndex, nsIRDFResource **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* long getIndexOfResource (in nsIRDFResource resource); */
NS_IMETHODIMP nsXULOutlinerBuilder::GetIndexOfResource(nsIRDFResource *resource, PRInt32 *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addObserver (in nsIXULOutlinerBuilderObserver aObserver); */
NS_IMETHODIMP nsXULOutlinerBuilder::AddObserver(nsIXULOutlinerBuilderObserver *aObserver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeObserver (in nsIXULOutlinerBuilderObserver aObserver); */
NS_IMETHODIMP nsXULOutlinerBuilder::RemoveObserver(nsIXULOutlinerBuilderObserver *aObserver)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIXULTemplateBuilder_h__ */
