From 2801cbed7243b2d66ac091c986b549cd0addfe91 Mon Sep 17 00:00:00 2001 From: Alessandro Artoni Date: Mon, 25 Nov 2013 21:58:56 +0100 Subject: [PATCH 1/8] Improve working-set context menu UI/UX This commit refers to issue #6012 It rearrange items whitin the working sets and move all those related to "sorting" to a new drop down menu accessible through a new cog button in the working set header --- src/command/DefaultMenus.js | 36 +++++++++++++++++++---- src/command/Menus.js | 15 +++++++--- src/htmlContent/main-view.html | 4 ++- src/styles/brackets.less | 19 ++++++++++++ src/styles/images/topcoat-settings-16.svg | 8 +++++ 5 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 src/styles/images/topcoat-settings-16.svg diff --git a/src/command/DefaultMenus.js b/src/command/DefaultMenus.js index 8b8b6517bfc..60e5fa25e8d 100644 --- a/src/command/DefaultMenus.js +++ b/src/command/DefaultMenus.js @@ -195,7 +195,6 @@ define(function (require, exports, module) { project_cmenu.addMenuItem(Commands.FILE_REFRESH); var working_set_cmenu = Menus.registerContextMenu(Menus.ContextMenuIds.WORKING_SET_MENU); - working_set_cmenu.addMenuItem(Commands.FILE_CLOSE); working_set_cmenu.addMenuItem(Commands.FILE_SAVE); working_set_cmenu.addMenuItem(Commands.FILE_SAVE_AS); working_set_cmenu.addMenuItem(Commands.FILE_RENAME); @@ -204,11 +203,15 @@ define(function (require, exports, module) { working_set_cmenu.addMenuDivider(); working_set_cmenu.addMenuItem(Commands.EDIT_FIND_IN_SUBTREE); working_set_cmenu.addMenuDivider(); - working_set_cmenu.addMenuItem(Commands.SORT_WORKINGSET_BY_ADDED); - working_set_cmenu.addMenuItem(Commands.SORT_WORKINGSET_BY_NAME); - working_set_cmenu.addMenuItem(Commands.SORT_WORKINGSET_BY_TYPE); - working_set_cmenu.addMenuDivider(); - working_set_cmenu.addMenuItem(Commands.SORT_WORKINGSET_AUTO); + working_set_cmenu.addMenuItem(Commands.FILE_CLOSE); + + + var working_set_settings_cmenu = Menus.registerContextMenu(Menus.ContextMenuIds.WORKING_SET_SETTINGS_MENU); + working_set_settings_cmenu.addMenuItem(Commands.SORT_WORKINGSET_BY_ADDED); + working_set_settings_cmenu.addMenuItem(Commands.SORT_WORKINGSET_BY_NAME); + working_set_settings_cmenu.addMenuItem(Commands.SORT_WORKINGSET_BY_TYPE); + working_set_settings_cmenu.addMenuDivider(); + working_set_settings_cmenu.addMenuItem(Commands.SORT_WORKINGSET_AUTO); var editor_cmenu = Menus.registerContextMenu(Menus.ContextMenuIds.EDITOR_MENU); // editor_cmenu.addMenuItem(Commands.NAVIGATE_JUMPTO_DEFINITION); @@ -274,6 +277,27 @@ define(function (require, exports, module) { working_set_cmenu.open(e); }); + /** + * Dropdown menu for workspace sorting + */ + $("#working-set-option-btn").on("click", function (e) { + var buttonOffset, + buttonHeight; + + e.stopPropagation(); + + if (working_set_settings_cmenu.isOpen()) { + working_set_settings_cmenu.close(); + } else { + buttonOffset = $(this).offset(); + buttonHeight = $(this).outerHeight(); + working_set_settings_cmenu.open({ + pageX: buttonOffset.left, + pageY: buttonOffset.top + buttonHeight + }); + } + }); + // Prevent the browser context menu since Brackets creates a custom context menu $(window).contextmenu(function (e) { e.preventDefault(); diff --git a/src/command/Menus.js b/src/command/Menus.js index e01b1666014..874acd4c2ae 100644 --- a/src/command/Menus.js +++ b/src/command/Menus.js @@ -56,10 +56,11 @@ define(function (require, exports, module) { * @enum {string} */ var ContextMenuIds = { - EDITOR_MENU: "editor-context-menu", - INLINE_EDITOR_MENU: "inline-editor-context-menu", - PROJECT_MENU: "project-context-menu", - WORKING_SET_MENU: "working-set-context-menu" + EDITOR_MENU: "editor-context-menu", + INLINE_EDITOR_MENU: "inline-editor-context-menu", + PROJECT_MENU: "project-context-menu", + WORKING_SET_MENU: "working-set-context-menu", + WORKING_SET_SETTINGS_MENU: "working-set-settings-context-menu" }; @@ -1081,6 +1082,12 @@ define(function (require, exports, module) { $("#" + StringUtils.jQueryIdEscape(this.id)).removeClass("open"); }; + /** + * Detect if current context menu is already open + */ + ContextMenu.prototype.isOpen = function () { + return $("#" + StringUtils.jQueryIdEscape(this.id)).hasClass("open"); + }; /** * Registers new context menu with Brackets. diff --git a/src/htmlContent/main-view.html b/src/htmlContent/main-view.html index e50f3595797..1664af2e5e2 100644 --- a/src/htmlContent/main-view.html +++ b/src/htmlContent/main-view.html @@ -41,7 +41,9 @@