summaryrefslogtreecommitdiffstats
path: root/dom/html/nsIMenuBuilder.idl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/html/nsIMenuBuilder.idl')
-rw-r--r--dom/html/nsIMenuBuilder.idl76
1 files changed, 76 insertions, 0 deletions
diff --git a/dom/html/nsIMenuBuilder.idl b/dom/html/nsIMenuBuilder.idl
new file mode 100644
index 000000000..02664480f
--- /dev/null
+++ b/dom/html/nsIMenuBuilder.idl
@@ -0,0 +1,76 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+
+interface nsIDOMHTMLMenuItemElement;
+
+/**
+ * An interface used to construct native toolbar or context menus from <menu>
+ */
+
+[scriptable, uuid(93F4A48F-D043-4F45-97FD-9771EA1AF976)]
+interface nsIMenuBuilder : nsISupports
+{
+
+ /**
+ * Create the top level menu or a submenu. The implementation should create
+ * a new context for this menu, so all subsequent methods will add new items
+ * to this newly created menu.
+ */
+ void openContainer(in DOMString aLabel);
+
+ /**
+ * Add a new menu item. All menu item details can be obtained from
+ * the element. This method is not called for hidden elements or elements
+ * with no or empty label. The icon should be loaded only if aCanLoadIcon
+ * is true.
+ */
+ void addItemFor(in nsIDOMHTMLMenuItemElement aElement,
+ in boolean aCanLoadIcon);
+
+ /**
+ * Create a new separator.
+ */
+ void addSeparator();
+
+ /**
+ * Remove last added separator.
+ * Sometimes it's needed to remove last added separator, otherwise it's not
+ * possible to implement the postprocessing in one pass.
+ * See http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#building-menus-and-toolbars
+ */
+ void undoAddSeparator();
+
+ /**
+ * Set the context to the parent menu.
+ */
+ void closeContainer();
+
+ /**
+ * Returns a JSON string representing the menu hierarchy. For a context menu,
+ * it will be of the form:
+ * {
+ * type: "menu",
+ * children: [
+ * {
+ * type: "menuitem",
+ * label: "label",
+ * icon: "image.png"
+ * },
+ * {
+ * type: "separator",
+ * },
+ * ];
+ */
+ AString toJSONString();
+
+ /**
+ * Invoke the action of the menuitem with assigned id aGeneratedItemId.
+ *
+ * @param aGeneratedItemId the menuitem id
+ */
+ void click(in DOMString aGeneratedItemId);
+};