debouncer = window.setTimeout(() => { if (commands.hasCommand(recovery)) { recover(() => { commands.execute(recovery); }); } }, SPLASH_RECOVER_TIMEOUT);
function createFromCommand(commands: CommandRegistry, id: string): ToolbarButton | null { if (!commands.hasCommand(id)) { return null; } const button = new ToolbarButton({ onClick: () => { commands.execute(id); button.node.blur(); }, className: Private.commandClassName(commands, id), tooltip: Private.commandTooltip(commands, id) }); let oldClasses = Private.commandClassName(commands, id).split(/\s/); (button.node as HTMLButtonElement).disabled = !commands.isEnabled(id); Private.setNodeContentFromCommand(button.node, commands, id); // Ensure that we pick up relevant changes to the command: function onChange(sender: CommandRegistry, args: CommandRegistry.ICommandChangedArgs) { if (args.id !== id) { return; // Not our command } if (args.type === 'removed') { // Dispose of button button.dispose(); return; } if (args.type !== 'changed') { return; } // Update all fields (onClick is already indirected) const newClasses = Private.commandClassName(sender, id).split(/\s/); for (let cls of oldClasses) { if (cls && newClasses.indexOf(cls) === -1) { button.removeClass(cls); } } for (let cls of newClasses) { if (cls && oldClasses.indexOf(cls) === -1) { button.addClass(cls); } } oldClasses = newClasses; button.node.title = Private.commandTooltip(sender, id); Private.setNodeContentFromCommand(button.node, sender, id); (button.node as HTMLButtonElement).disabled = !sender.isEnabled(id); } commands.commandChanged.connect(onChange, button); return button; }
it('should add a command to the registry', () => { registry.addCommand('test', NULL_COMMAND); expect(registry.hasCommand('test')).to.equal(true); });
it('should return a disposable which will unregister the command', () => { let disposable = registry.addCommand('test', NULL_COMMAND); disposable.dispose(); expect(registry.hasCommand('test')).to.equal(false); });
it('should test whether a specific command is registerd', () => { registry.addCommand('test', NULL_COMMAND); expect(registry.hasCommand('test')).to.equal(true); expect(registry.hasCommand('foo')).to.equal(false); });