/* ***** BEGIN LICENSE BLOCK ***** * Distributed under the BSD license: * * Copyright (c) 2013 Matthew Christopher Kastor-Inare III, Atropa Inc. Intl * All rights reserved. * * Contributed to Ajax.org under the BSD license. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Ajax.org B.V. nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ***** END LICENSE BLOCK ***** */ /*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ /*global define, require */ /** * Show Settings Menu * @fileOverview Show Settings Menu
* Displays an interactive settings menu mostly generated on the fly based on * the current state of the editor. * @author * Matthew Christopher Kastor-Inare III
* ☭ Hial Atropa!! ☭ */ define(function(require, exports, module) { "use strict"; var OptionPanel = require("ace/ext/options").OptionPanel; var overlayPage = require('./menu_tools/overlay_page').overlayPage; /** * This displays the settings menu if it is not already being shown. * @author * Matthew Christopher Kastor-Inare III
* ☭ Hial Atropa!! ☭ * @param {ace.Editor} editor An instance of the ace editor. */ function showSettingsMenu(editor) { // show if the menu isn't open already. if (!document.getElementById('ace_settingsmenu')) { var options = new OptionPanel(editor); options.render(); options.container.id = "ace_settingsmenu"; overlayPage(editor, options.container); options.container.querySelector("select,input,button,checkbox").focus(); } } /** * Initializes the settings menu extension. It adds the showSettingsMenu * method to the given editor object and adds the showSettingsMenu command * to the editor with appropriate keyboard shortcuts. * @param {ace.Editor} editor An instance of the Editor. */ module.exports.init = function(editor) { var Editor = require("ace/editor").Editor; Editor.prototype.showSettingsMenu = function() { showSettingsMenu(this); }; }; });