diff --git a/toolkit/content/globalOverlay.js b/toolkit/content/globalOverlay.js index 1fc1ba25610..bee39139c73 100644 --- a/toolkit/content/globalOverlay.js +++ b/toolkit/content/globalOverlay.js @@ -66,159 +66,86 @@ function goQuitApplication() return true; } -/** - * Command Updater - */ -var CommandUpdater = { - /** - * Gets a controller that can handle a particular command. - * @param command - * A command to locate a controller for, preferring controllers that - * show the command as enabled. - * @returns In this order of precedence: - * - the first controller supporting the specified command - * associated with the focused element that advertises the - * command as ENABLED - * - the first controller supporting the specified command - * associated with the global window that advertises the - * command as ENABLED - * - the first controller supporting the specified command - * associated with the focused element - * - the first controller supporting the specified command - * associated with the global window - */ - _getControllerForCommand: function(command) { - try { - var controller = - top.document.commandDispatcher.getControllerForCommand(command); - if (controller && controller.isCommandEnabled(command)) - return controller; - } - catch(e) { - } - var controllerCount = window.controllers.getControllerCount(); - for (var i = 0; i < controllerCount; ++i) { - var current = window.controllers.getControllerAt(i); - try { - if (current.supportsCommand(command) && current.isCommandEnabled(command)) - return current; - } - catch (e) { - } - } - return controller || window.controllers.getControllerForCommand(command); - }, - - /** - * Updates the state of a XUL element for the specified command - * depending on its state. - * @param command - * The name of the command to update the XUL element for - */ - updateCommand: function(command) { +// +// Command Updater functions +// +function goUpdateCommand(aCommand) +{ + try { + var controller = top.document.commandDispatcher + .getControllerForCommand(aCommand); + var enabled = false; - try { - var controller = this._getControllerForCommand(command); - if (controller) - enabled = controller.isCommandEnabled(command); - } - catch(ex) { } + if (controller) + enabled = controller.isCommandEnabled(aCommand); - this.enableCommand(command, enabled); - }, - - /** - * Enables or disables a XUL element. - * @param command - * The name of the command to enable or disable - * @param enabled - * true if the command should be enabled, false otherwise. - */ - enableCommand: function(command, enabled) { - var element = document.getElementById(command); - if (!element) - return; - if (enabled) - element.removeAttribute("disabled"); + goSetCommandEnabled(aCommand, enabled); + } + catch (e) { + dump("An error occurred updating the " + aCommand + " command\n"); + } +} + +function goDoCommand(aCommand) +{ + try { + var controller = top.document.commandDispatcher + .getControllerForCommand(aCommand); + if (controller && controller.isCommandEnabled(aCommand)) + controller.doCommand(aCommand); + } + catch (e) { + dump("An error occurred executing the " + aCommand + " command\n" + e + "\n"); + } +} + + +function goSetCommandEnabled(aID, aEnabled) +{ + var node = document.getElementById(aID); + + if (node) { + if (aEnabled) + node.removeAttribute("disabled"); else - element.setAttribute("disabled", "true"); - }, + node.setAttribute("disabled", "true"); + } +} - /** - * Performs the action associated with a specified command using the most - * relevant controller. - * @param command - * The command to perform. - */ - doCommand: function(command) { - var controller = this._getControllerForCommand(command); - if (!controller) - return; - controller.doCommand(command); - }, - - /** - * Changes the label attribute for the specified command. - * @param command - * The command to update. - * @param labelAttribute - * The label value to use. - */ - setMenuValue: function(command, labelAttribute) { - var commandNode = top.document.getElementById(command); - if (commandNode) - { - var label = commandNode.getAttribute(labelAttribute); - if ( label ) - commandNode.setAttribute('label', label); - } - }, - - /** - * Changes the accesskey attribute for the specified command. - * @param command - * The command to update. - * @param valueAttribute - * The value attribute to use. - */ - setAccessKey: function(command, valueAttribute) { - var commandNode = top.document.getElementById(command); - if (commandNode) - { - var value = commandNode.getAttribute(valueAttribute); - if ( value ) - commandNode.setAttribute('accesskey', value); - } - }, +function goSetMenuValue(aCommand, aLabelAttribute) +{ + var commandNode = top.document.getElementById(aCommand); + if (commandNode) { + var label = commandNode.getAttribute(aLabelAttribute); + if (label) + commandNode.setAttribute("label", label); + } +} - /** - * Inform all the controllers attached to a node that an event has occurred - * (e.g. the tree controllers need to be informed of blur events so that they can change some of the - * menu items back to their default values) - * @param node - * The node receiving the event - * @param event - * The event. - */ - onEvent: function(node, event) { - var numControllers = node.controllers.getControllerCount(); - var controller; +function goSetAccessKey(aCommand, aValueAttribute) +{ + var commandNode = top.document.getElementById(aCommand); + if (commandNode) { + var value = commandNode.getAttribute(aValueAttribute); + if (value) + commandNode.setAttribute("accesskey", value); + } +} - for ( var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++ ) - { - controller = node.controllers.getControllerAt(controllerIndex); - if ( controller ) - controller.onEvent(event); - } - } -}; -// Shim for compatibility with existing code. -function goDoCommand(command) { CommandUpdater.doCommand(command); } -function goUpdateCommand(command) { CommandUpdater.updateCommand(command); } -function goSetCommandEnabled(command, enabled) { CommandUpdater.enableCommand(command, enabled); } -function goSetMenuValue(command, labelAttribute) { CommandUpdater.setMenuValue(command, labelAttribute); } -function goSetAccessKey(command, valueAttribute) { CommandUpdater.setAccessKey(command, valueAttribute); } -function goOnEvent(node, event) { CommandUpdater.onEvent(node, event); } +// this function is used to inform all the controllers attached to a node that an event has occurred +// (e.g. the tree controllers need to be informed of blur events so that they can change some of the +// menu items back to their default values) +function goOnEvent(node, aEvent) +{ + var numControllers = aNode.controllers.getControllerCount(); + var controller; + + for (var controllerIndex = 0; controllerIndex < numControllers; controllerIndex++) { + controller = aNode.controllers.getControllerAt(controllerIndex); + if (controller) + controller.onEvent(aEvent); + } +} function visitLink(aEvent) { var node = aEvent.target;