| /* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- |
| * |
| * ***** BEGIN LICENSE BLOCK ***** |
| * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| * |
| * The contents of this file are subject to the Mozilla Public License Version |
| * 1.1 (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/MPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is the Mozilla browser. |
| * |
| * The Initial Developer of the Original Code is |
| * Netscape Communications, Inc. |
| * Portions created by the Initial Developer are Copyright (C) 1999 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): |
| * Travis Bogard <travis@netscape.com> |
| * |
| * Alternatively, the contents of this file may be used under the terms of |
| * either of the GNU General Public License Version 2 or later (the "GPL"), |
| * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| * in which case the provisions of the GPL or the LGPL are applicable instead |
| * of those above. If you wish to allow use of your version of this file only |
| * under the terms of either the GPL or the LGPL, and not to allow others to |
| * use your version of this file under the terms of the MPL, indicate your |
| * decision by deleting the provisions above and replace them with the notice |
| * and other provisions required by the GPL or the LGPL. If you do not delete |
| * the provisions above, a recipient may use your version of this file under |
| * the terms of any one of the MPL, the GPL or the LGPL. |
| * |
| * ***** END LICENSE BLOCK ***** */ |
| |
| #include "nsISupports.idl" |
| |
| /** |
| * The nsIXULWindow |
| * |
| * When the window is destroyed, it will fire a "xul-window-destroyed" |
| * notification through the global observer service. |
| */ |
| |
| interface nsIDocShell; |
| interface nsIDocShellTreeItem; |
| interface nsIAppShell; |
| interface nsIXULBrowserWindow; |
| |
| [scriptable, uuid(b6c2f9e1-53a0-45f2-a2b8-fe37861fe8a8)] |
| interface nsIXULWindow : nsISupports |
| { |
| /** |
| * The docshell owning the XUL for this window. |
| */ |
| readonly attribute nsIDocShell docShell; |
| |
| /** |
| * Indicates if this window is instrinsically sized. |
| */ |
| attribute boolean intrinsicallySized; |
| |
| /** |
| * The primary content shell. |
| * |
| * Note that this is a docshell tree item and therefore can not be assured of |
| * what object it is. It could be an editor, a docshell, or a browser object. |
| * Or down the road any other object that supports being a DocShellTreeItem |
| * Query accordingly to determine the capabilities. |
| */ |
| readonly attribute nsIDocShellTreeItem primaryContentShell; |
| |
| /** |
| * The content shell specified by the supplied id. |
| * |
| * Note that this is a docshell tree item and therefore can not be assured of |
| * what object it is. It could be an editor, a docshell, or a browser object. |
| * Or down the road any other object that supports being a DocShellTreeItem |
| * Query accordingly to determine the capabilities. |
| */ |
| nsIDocShellTreeItem getContentShellById(in wstring ID); |
| |
| /** |
| * Tell this window that it has picked up a child XUL window |
| * @param aChild the child window being added |
| */ |
| void addChildWindow(in nsIXULWindow aChild); |
| |
| /** |
| * Tell this window that it has lost a child XUL window |
| * @param aChild the child window being removed |
| */ |
| void removeChildWindow(in nsIXULWindow aChild); |
| |
| /** |
| * Move the window to a centered position. |
| * @param aRelative the window relative to which the window is moved. |
| * See screen parameter for details. if null, the |
| * window is centered relative to the main screen. |
| * @param aScreen PR_TRUE to center the window relative to the screen |
| * containing aRelative. PR_FALSE to center it relative |
| * to aRelative itself. |
| * @param aAlert PR_TRUE to move the window to an alert position, |
| * generally centered horizontally and 1/3 down from the top. |
| */ |
| void center(in nsIXULWindow aRelative, in boolean aScreen, in boolean aAlert); |
| |
| /** |
| * Shows the window as a modal window. That is, ensures that it is visible |
| * and runs a local event loop, exiting only once the window has been closed. |
| */ |
| void showModal(); |
| |
| const unsigned long lowestZ = 0; |
| const unsigned long loweredZ = 4; /* "alwaysLowered" attribute */ |
| const unsigned long normalZ = 5; |
| const unsigned long raisedZ = 6; /* "alwaysRaised" attribute */ |
| const unsigned long highestZ = 9; |
| |
| attribute unsigned long zLevel; |
| |
| /** |
| * contextFlags are from nsIWindowCreator2 |
| */ |
| attribute PRUint32 contextFlags; |
| |
| attribute PRUint32 chromeFlags; |
| /** |
| * Create a new window. |
| * @param aChromeFlags see nsIWebBrowserChrome |
| * @return the newly minted window |
| */ |
| nsIXULWindow createNewWindow(in PRInt32 aChromeFlags, |
| in nsIAppShell aAppShell); |
| |
| attribute nsIXULBrowserWindow XULBrowserWindow; |
| |
| /** |
| * Back-door method to force application of chrome flags at a particular |
| * time. Do NOT call this unless you know what you're doing! In particular, |
| * calling this when this XUL window doesn't yet have a document in its |
| * docshell could cause problems. |
| */ |
| [noscript] void applyChromeFlags(); |
| }; |