/
githubmirror
/
brackets
Обзор
Документация
Войти
/
githubmirror
/
brackets
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/extensions/default/CloseOthers/main.js
190 строк
8 KB
ficristo
Move most inline jslint directives to config files
12 авг 2016, 10:22
12 авг 2016, 10:22
074382a
Код
Авторство
О чём код?
/* * Copyright (c) 2013 - present Adobe Systems Incorporated. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * */ define(function (require, exports, module) { "use strict"; var Menus = brackets.getModule("command/Menus"), CommandManager = brackets.getModule("command/CommandManager"), Commands = brackets.getModule("command/Commands"), MainViewManager = brackets.getModule("view/MainViewManager"), Strings = brackets.getModule("strings"), PreferencesManager = brackets.getModule("preferences/PreferencesManager"), workingSetListCmenu = Menus.getContextMenu(Menus.ContextMenuIds.WORKING_SET_CONTEXT_MENU); // Constants var closeOthers = "file.close_others", closeAbove = "file.close_above", closeBelow = "file.close_below"; // Global vars and preferences var prefs = PreferencesManager.getExtensionPrefs("closeOthers"), menuEntriesShown = {}; prefs.definePreference("below", "boolean", true, { description: Strings.DESCRIPTION_CLOSE_OTHERS_BELOW }); prefs.definePreference("others", "boolean", true, { description: Strings.DESCRIPTION_CLOSE_OTHERS }); prefs.definePreference("above", "boolean", true, { description: Strings.DESCRIPTION_CLOSE_OTHERS_ABOVE }); /** * Handle the different Close Other commands * @param {string} mode */ function handleClose(mode) { var targetIndex = MainViewManager.findInWorkingSet(MainViewManager.ACTIVE_PANE, MainViewManager.getCurrentlyViewedPath(MainViewManager.ACTIVE_PANE)), workingSetList = MainViewManager.getWorkingSet(MainViewManager.ACTIVE_PANE), start = (mode === closeBelow) ? (targetIndex + 1) : 0, end = (mode === closeAbove) ? (targetIndex) : (workingSetList.length), files = [], i; for (i = start; i < end; i++) { if ((mode === closeOthers && i !== targetIndex) || (mode !== closeOthers)) { files.push(workingSetList[i]); } } CommandManager.execute(Commands.FILE_CLOSE_LIST, {fileList: files}); } /** * Enable/Disable the menu items depending on which document is selected in the working set */ function contextMenuOpenHandler() { var file = MainViewManager.getCurrentlyViewedFile(MainViewManager.ACTIVE_PANE); if (file) { var targetIndex = MainViewManager.findInWorkingSet(MainViewManager.ACTIVE_PANE, file.fullPath), workingSetListSize = MainViewManager.getWorkingSetSize(MainViewManager.ACTIVE_PANE); if (targetIndex === workingSetListSize - 1) { // hide "Close Others Below" if the last file in Working Files is selected CommandManager.get(closeBelow).setEnabled(false); } else { CommandManager.get(closeBelow).setEnabled(true); } if (workingSetListSize === 1) { // hide "Close Others" if there is only one file in Working Files CommandManager.get(closeOthers).setEnabled(false); } else { CommandManager.get(closeOthers).setEnabled(true); } if (targetIndex === 0) { // hide "Close Others Above" if the first file in Working Files is selected CommandManager.get(closeAbove).setEnabled(false); } else { CommandManager.get(closeAbove).setEnabled(true); } } } /** * Returns the preferences used to add/remove the menu items * @return {{closeBelow: boolean, closeOthers: boolean, closeAbove: boolean}} */ function getPreferences() { // It's senseless to look prefs up for the current file, instead look them up for // the current project (or globally) return { closeBelow : prefs.get("below", PreferencesManager.CURRENT_PROJECT), closeOthers : prefs.get("others", PreferencesManager.CURRENT_PROJECT), closeAbove : prefs.get("above", PreferencesManager.CURRENT_PROJECT) }; } /** * When the preferences changed, add/remove the required menu items */ function prefChangeHandler() { var prefs = getPreferences(); if (prefs.closeBelow !== menuEntriesShown.closeBelow) { if (prefs.closeBelow) { workingSetListCmenu.addMenuItem(closeBelow, "", Menus.AFTER, Commands.FILE_CLOSE); } else { workingSetListCmenu.removeMenuItem(closeBelow); } } if (prefs.closeOthers !== menuEntriesShown.closeOthers) { if (prefs.closeOthers) { workingSetListCmenu.addMenuItem(closeOthers, "", Menus.AFTER, Commands.FILE_CLOSE); } else { workingSetListCmenu.removeMenuItem(closeOthers); } } if (prefs.closeAbove !== menuEntriesShown.closeAbove) { if (prefs.closeAbove) { workingSetListCmenu.addMenuItem(closeAbove, "", Menus.AFTER, Commands.FILE_CLOSE); } else { workingSetListCmenu.removeMenuItem(closeAbove); } } menuEntriesShown = prefs; } /** * Register the Commands and add the Menu Items, if required */ function initializeCommands() { var prefs = getPreferences(); CommandManager.register(Strings.CMD_FILE_CLOSE_BELOW, closeBelow, function () { handleClose(closeBelow); }); CommandManager.register(Strings.CMD_FILE_CLOSE_OTHERS, closeOthers, function () { handleClose(closeOthers); }); CommandManager.register(Strings.CMD_FILE_CLOSE_ABOVE, closeAbove, function () { handleClose(closeAbove); }); if (prefs.closeBelow) { workingSetListCmenu.addMenuItem(closeBelow, "", Menus.AFTER, Commands.FILE_CLOSE); } if (prefs.closeOthers) { workingSetListCmenu.addMenuItem(closeOthers, "", Menus.AFTER, Commands.FILE_CLOSE); } if (prefs.closeAbove) { workingSetListCmenu.addMenuItem(closeAbove, "", Menus.AFTER, Commands.FILE_CLOSE); } menuEntriesShown = prefs; } // Initialize using the prefs initializeCommands(); // Add a context menu open handler workingSetListCmenu.on("beforeContextMenuOpen", contextMenuOpenHandler); prefs.on("change", prefChangeHandler); });