Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Commit 34db31a

Browse files
committed
Merge pull request #7138 from adobe/tom/sort-dirs-first
New prefence for mac to sort the directories first in the project tree
2 parents 0bf10cb + 062fbd2 commit 34db31a

1 file changed

Lines changed: 29 additions & 5 deletions

File tree

src/project/ProjectManager.js

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ define(function (require, exports, module) {
7575
FileSyncManager = require("project/FileSyncManager"),
7676
EditorManager = require("editor/EditorManager");
7777

78+
79+
// Define the preference to decide how to sort the Project Tree files
80+
PreferencesManager.definePreference("sortDirectoriesFirst", "boolean", brackets.platform !== "mac");
81+
82+
7883
/**
7984
* @private
8085
* Forward declaration for the _fileSystemChange and _fileSystemRename functions to make JSLint happy.
@@ -86,9 +91,8 @@ define(function (require, exports, module) {
8691
* @private
8792
* File tree sorting for mac-specific sorting behavior
8893
*/
89-
var _isMac = brackets.platform === "mac",
90-
_sortPrefixDir = _isMac ? "" : "0",
91-
_sortPrefixFile = _isMac ? "" : "1";
94+
var _sortPrefixDir,
95+
_sortPrefixFile;
9296

9397
/**
9498
* @private
@@ -197,6 +201,17 @@ define(function (require, exports, module) {
197201
*/
198202
var _allFilesCachePromise = null;
199203

204+
205+
/**
206+
* @private
207+
* Generates the prefixes used for sorting the files in the project tree
208+
*/
209+
function _generateSortPrefixes() {
210+
var dirFirst = PreferencesManager.get("sortDirectoriesFirst");
211+
_sortPrefixDir = dirFirst ? "0" : "";
212+
_sortPrefixFile = dirFirst ? "1" : "";
213+
}
214+
200215
/**
201216
* @private
202217
*/
@@ -697,7 +712,7 @@ define(function (require, exports, module) {
697712
* @return {string}
698713
*/
699714
function _toCompareString(name, isFolder) {
700-
return ((isFolder) ? _sortPrefixDir : _sortPrefixFile) + name;
715+
return (isFolder ? _sortPrefixDir : _sortPrefixFile) + name;
701716
}
702717

703718
/**
@@ -2115,6 +2130,8 @@ define(function (require, exports, module) {
21152130
DocumentManager.notifyPathNameChanged(oldName, newName);
21162131
};
21172132

2133+
2134+
21182135
// Initialize variables and listeners that depend on the HTML DOM
21192136
AppInit.htmlReady(function () {
21202137
$projectTreeContainer = $("#project-files-container");
@@ -2187,6 +2204,13 @@ define(function (require, exports, module) {
21872204

21882205
$(exports).on("projectOpen", _reloadProjectPreferencesScope);
21892206

2207+
// Initialize the sort prefixes and make sure to change them when the sort pref changes
2208+
_generateSortPrefixes();
2209+
PreferencesManager.on("change", "sortDirectoriesFirst", function () {
2210+
_generateSortPrefixes();
2211+
refreshFileTree();
2212+
});
2213+
21902214
// Event Handlers
21912215
$(FileViewController).on("documentSelectionFocusChange", _documentSelectionFocusChange);
21922216
$(FileViewController).on("fileViewFocusChange", _fileViewFocusChange);
@@ -2195,7 +2219,7 @@ define(function (require, exports, module) {
21952219
// Commands
21962220
CommandManager.register(Strings.CMD_OPEN_FOLDER, Commands.FILE_OPEN_FOLDER, openProject);
21972221
CommandManager.register(Strings.CMD_PROJECT_SETTINGS, Commands.FILE_PROJECT_SETTINGS, _projectSettings);
2198-
CommandManager.register(Strings.CMD_FILE_REFRESH, Commands.FILE_REFRESH, refreshFileTree);
2222+
CommandManager.register(Strings.CMD_FILE_REFRESH, Commands.FILE_REFRESH, refreshFileTree);
21992223

22002224
// Init invalid characters string
22012225
if (brackets.platform === "mac") {

0 commit comments

Comments
 (0)