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

#ifndef __gen_nsIWindowMediator_h__
#define __gen_nsIWindowMediator_h__


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

#ifndef __gen_nsISimpleEnumerator_h__
#include "nsISimpleEnumerator.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
#define NS_WINDOWMEDIATOR_CID \
{ 0x0659cb83, 0xfaad, 0x11d2, { 0x8e, 0x19, 0xb2, 0x06, 0x62, 0x0a, 0x65, 0x7c } }
#define NS_WINDOWMEDIATOR_CONTRACTID \
  "@mozilla.org/appshell/window-mediator;1"
class nsIXULWindow; /* forward declaration */

class nsIWidget; /* forward declaration */

class nsIDOMWindowInternal; /* forward declaration */

class nsIWindowMediatorListener; /* forward declaration */


/* starting interface:    nsIWindowMediator */
#define NS_IWINDOWMEDIATOR_IID_STR "0659cb81-faad-11d2-8e19-b206620a657c"

#define NS_IWINDOWMEDIATOR_IID \
  {0x0659cb81, 0xfaad, 0x11d2, \
    { 0x8e, 0x19, 0xb2, 0x06, 0x62, 0x0a, 0x65, 0x7c }}

class NS_NO_VTABLE nsIWindowMediator : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IWINDOWMEDIATOR_IID)

  /* nsISimpleEnumerator getEnumerator (in wstring inType); */
  NS_IMETHOD GetEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getXULWindowEnumerator (in wstring inType); */
  NS_IMETHOD GetXULWindowEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getZOrderDOMWindowEnumerator (in wstring aWindowType, in boolean aFrontToBack); */
  NS_IMETHOD GetZOrderDOMWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval) = 0;

  /* nsISimpleEnumerator getZOrderXULWindowEnumerator (in wstring aWindowType, in boolean aFrontToBack); */
  NS_IMETHOD GetZOrderXULWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval) = 0;

  /* nsIDOMWindowInternal getMostRecentWindow (in wstring inType); */
  NS_IMETHOD GetMostRecentWindow(const PRUnichar *inType, nsIDOMWindowInternal **_retval) = 0;

  /* [noscript] void registerWindow (in nsIXULWindow inWindow); */
  NS_IMETHOD RegisterWindow(nsIXULWindow *inWindow) = 0;

  /* [noscript] void unregisterWindow (in nsIXULWindow inWindow); */
  NS_IMETHOD UnregisterWindow(nsIXULWindow *inWindow) = 0;

  /* [noscript] void updateWindowTimeStamp (in nsIXULWindow inWindow); */
  NS_IMETHOD UpdateWindowTimeStamp(nsIXULWindow *inWindow) = 0;

  /* [noscript] void updateWindowTitle (in nsIXULWindow inWindow, in wstring inTitle); */
  NS_IMETHOD UpdateWindowTitle(nsIXULWindow *inWindow, const PRUnichar *inTitle) = 0;

  enum { zLevelTop = 1U };

  enum { zLevelBottom = 2U };

  enum { zLevelBelow = 3U };

  /* [noscript] boolean calculateZPosition (in nsIXULWindow inWindow, in unsigned long inPosition, in nsIWidget inBelow, out unsigned long outPosition, out nsIWidget outBelow); */
  NS_IMETHOD CalculateZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIWidget *inBelow, PRUint32 *outPosition, nsIWidget **outBelow, PRBool *_retval) = 0;

  /* [noscript] void setZPosition (in nsIXULWindow inWindow, in unsigned long inPosition, in nsIXULWindow inBelow); */
  NS_IMETHOD SetZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIXULWindow *inBelow) = 0;

  /** 
     * addListener
     * keeps strong ref? (to be decided)
     */
  /* void addListener (in nsIWindowMediatorListener listener); */
  NS_IMETHOD AddListener(nsIWindowMediatorListener *listener) = 0;

  /**
     * removeListener
     */
  /* void removeListener (in nsIWindowMediatorListener listener); */
  NS_IMETHOD RemoveListener(nsIWindowMediatorListener *listener) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIWINDOWMEDIATOR \
  NS_IMETHOD GetEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetXULWindowEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetZOrderDOMWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetZOrderXULWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval); \
  NS_IMETHOD GetMostRecentWindow(const PRUnichar *inType, nsIDOMWindowInternal **_retval); \
  NS_IMETHOD RegisterWindow(nsIXULWindow *inWindow); \
  NS_IMETHOD UnregisterWindow(nsIXULWindow *inWindow); \
  NS_IMETHOD UpdateWindowTimeStamp(nsIXULWindow *inWindow); \
  NS_IMETHOD UpdateWindowTitle(nsIXULWindow *inWindow, const PRUnichar *inTitle); \
  NS_IMETHOD CalculateZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIWidget *inBelow, PRUint32 *outPosition, nsIWidget **outBelow, PRBool *_retval); \
  NS_IMETHOD SetZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIXULWindow *inBelow); \
  NS_IMETHOD AddListener(nsIWindowMediatorListener *listener); \
  NS_IMETHOD RemoveListener(nsIWindowMediatorListener *listener); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIWINDOWMEDIATOR(_to) \
  NS_IMETHOD GetEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval) { return _to GetEnumerator(inType, _retval); } \
  NS_IMETHOD GetXULWindowEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval) { return _to GetXULWindowEnumerator(inType, _retval); } \
  NS_IMETHOD GetZOrderDOMWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval) { return _to GetZOrderDOMWindowEnumerator(aWindowType, aFrontToBack, _retval); } \
  NS_IMETHOD GetZOrderXULWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval) { return _to GetZOrderXULWindowEnumerator(aWindowType, aFrontToBack, _retval); } \
  NS_IMETHOD GetMostRecentWindow(const PRUnichar *inType, nsIDOMWindowInternal **_retval) { return _to GetMostRecentWindow(inType, _retval); } \
  NS_IMETHOD RegisterWindow(nsIXULWindow *inWindow) { return _to RegisterWindow(inWindow); } \
  NS_IMETHOD UnregisterWindow(nsIXULWindow *inWindow) { return _to UnregisterWindow(inWindow); } \
  NS_IMETHOD UpdateWindowTimeStamp(nsIXULWindow *inWindow) { return _to UpdateWindowTimeStamp(inWindow); } \
  NS_IMETHOD UpdateWindowTitle(nsIXULWindow *inWindow, const PRUnichar *inTitle) { return _to UpdateWindowTitle(inWindow, inTitle); } \
  NS_IMETHOD CalculateZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIWidget *inBelow, PRUint32 *outPosition, nsIWidget **outBelow, PRBool *_retval) { return _to CalculateZPosition(inWindow, inPosition, inBelow, outPosition, outBelow, _retval); } \
  NS_IMETHOD SetZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIXULWindow *inBelow) { return _to SetZPosition(inWindow, inPosition, inBelow); } \
  NS_IMETHOD AddListener(nsIWindowMediatorListener *listener) { return _to AddListener(listener); } \
  NS_IMETHOD RemoveListener(nsIWindowMediatorListener *listener) { return _to RemoveListener(listener); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIWINDOWMEDIATOR(_to) \
  NS_IMETHOD GetEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEnumerator(inType, _retval); } \
  NS_IMETHOD GetXULWindowEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXULWindowEnumerator(inType, _retval); } \
  NS_IMETHOD GetZOrderDOMWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetZOrderDOMWindowEnumerator(aWindowType, aFrontToBack, _retval); } \
  NS_IMETHOD GetZOrderXULWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetZOrderXULWindowEnumerator(aWindowType, aFrontToBack, _retval); } \
  NS_IMETHOD GetMostRecentWindow(const PRUnichar *inType, nsIDOMWindowInternal **_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMostRecentWindow(inType, _retval); } \
  NS_IMETHOD RegisterWindow(nsIXULWindow *inWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->RegisterWindow(inWindow); } \
  NS_IMETHOD UnregisterWindow(nsIXULWindow *inWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->UnregisterWindow(inWindow); } \
  NS_IMETHOD UpdateWindowTimeStamp(nsIXULWindow *inWindow) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateWindowTimeStamp(inWindow); } \
  NS_IMETHOD UpdateWindowTitle(nsIXULWindow *inWindow, const PRUnichar *inTitle) { return !_to ? NS_ERROR_NULL_POINTER : _to->UpdateWindowTitle(inWindow, inTitle); } \
  NS_IMETHOD CalculateZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIWidget *inBelow, PRUint32 *outPosition, nsIWidget **outBelow, PRBool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->CalculateZPosition(inWindow, inPosition, inBelow, outPosition, outBelow, _retval); } \
  NS_IMETHOD SetZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIXULWindow *inBelow) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetZPosition(inWindow, inPosition, inBelow); } \
  NS_IMETHOD AddListener(nsIWindowMediatorListener *listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->AddListener(listener); } \
  NS_IMETHOD RemoveListener(nsIWindowMediatorListener *listener) { return !_to ? NS_ERROR_NULL_POINTER : _to->RemoveListener(listener); } 

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

/* Header file */
class nsWindowMediator : public nsIWindowMediator
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWINDOWMEDIATOR

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

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsWindowMediator, nsIWindowMediator)

nsWindowMediator::nsWindowMediator()
{
  /* member initializers and constructor code */
}

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

/* nsISimpleEnumerator getEnumerator (in wstring inType); */
NS_IMETHODIMP nsWindowMediator::GetEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getXULWindowEnumerator (in wstring inType); */
NS_IMETHODIMP nsWindowMediator::GetXULWindowEnumerator(const PRUnichar *inType, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getZOrderDOMWindowEnumerator (in wstring aWindowType, in boolean aFrontToBack); */
NS_IMETHODIMP nsWindowMediator::GetZOrderDOMWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsISimpleEnumerator getZOrderXULWindowEnumerator (in wstring aWindowType, in boolean aFrontToBack); */
NS_IMETHODIMP nsWindowMediator::GetZOrderXULWindowEnumerator(const PRUnichar *aWindowType, PRBool aFrontToBack, nsISimpleEnumerator **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMWindowInternal getMostRecentWindow (in wstring inType); */
NS_IMETHODIMP nsWindowMediator::GetMostRecentWindow(const PRUnichar *inType, nsIDOMWindowInternal **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void registerWindow (in nsIXULWindow inWindow); */
NS_IMETHODIMP nsWindowMediator::RegisterWindow(nsIXULWindow *inWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void unregisterWindow (in nsIXULWindow inWindow); */
NS_IMETHODIMP nsWindowMediator::UnregisterWindow(nsIXULWindow *inWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void updateWindowTimeStamp (in nsIXULWindow inWindow); */
NS_IMETHODIMP nsWindowMediator::UpdateWindowTimeStamp(nsIXULWindow *inWindow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void updateWindowTitle (in nsIXULWindow inWindow, in wstring inTitle); */
NS_IMETHODIMP nsWindowMediator::UpdateWindowTitle(nsIXULWindow *inWindow, const PRUnichar *inTitle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] boolean calculateZPosition (in nsIXULWindow inWindow, in unsigned long inPosition, in nsIWidget inBelow, out unsigned long outPosition, out nsIWidget outBelow); */
NS_IMETHODIMP nsWindowMediator::CalculateZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIWidget *inBelow, PRUint32 *outPosition, nsIWidget **outBelow, PRBool *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] void setZPosition (in nsIXULWindow inWindow, in unsigned long inPosition, in nsIXULWindow inBelow); */
NS_IMETHODIMP nsWindowMediator::SetZPosition(nsIXULWindow *inWindow, PRUint32 inPosition, nsIXULWindow *inBelow)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void addListener (in nsIWindowMediatorListener listener); */
NS_IMETHODIMP nsWindowMediator::AddListener(nsIWindowMediatorListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void removeListener (in nsIWindowMediatorListener listener); */
NS_IMETHODIMP nsWindowMediator::RemoveListener(nsIWindowMediatorListener *listener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

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


#endif /* __gen_nsIWindowMediator_h__ */
