1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6#include "nsISupports.idl"
7
8interface nsIController;
9interface nsIDOMXULCommandDispatcher;
10
11[scriptable, uuid(f36e3ec1-9197-4ad8-8d4c-d3b1927fd6df)]
12interface nsIControllers : nsISupports
13{
14	nsIController getControllerForCommand(in string command);
15
16	void insertControllerAt(in unsigned long index, in nsIController controller);
17	nsIController removeControllerAt(in unsigned long index);
18	nsIController getControllerAt(in unsigned long index);
19
20    void appendController(in nsIController controller);
21	void removeController(in nsIController controller);
22
23    /*
24        Return an ID for this controller which is unique to this
25        nsIControllers.
26    */
27    unsigned long getControllerId(in nsIController controller);
28    /*
29        Get the controller specified by the given ID.
30    */
31    nsIController getControllerById(in unsigned long controllerID);
32
33	unsigned long getControllerCount();
34};
35