forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFindInFilesUI.js
More file actions
1 lines (1 loc) · 10.7 KB
/
FindInFilesUI.js
File metadata and controls
1 lines (1 loc) · 10.7 KB
1
define(function(require,exports,module){const AppInit=require("utils/AppInit"),CommandManager=require("command/CommandManager"),Commands=require("command/Commands"),Dialogs=require("widgets/Dialogs"),DefaultDialogs=require("widgets/DefaultDialogs"),EditorManager=require("editor/EditorManager"),WorkspaceManager=require("view/WorkspaceManager"),FileFilters=require("search/FileFilters"),FileUtils=require("file/FileUtils"),FindBar=require("search/FindBar").FindBar,FindInFiles=require("search/FindInFiles"),FindUtils=require("search/FindUtils"),InMemoryFile=require("document/InMemoryFile"),ProjectManager=require("project/ProjectManager"),SearchResultsView=require("search/SearchResultsView").SearchResultsView,TaskManager=require("features/TaskManager"),Strings=require("strings"),StringUtils=require("utils/StringUtils"),Metrics=require("utils/Metrics"),_=require("thirdparty/lodash");let searchTask;var MAX_IN_MEMORY=20,_resultsView=null,_findBar=null,_finishReplaceBatch;function _hideBusyIndicator(){searchTask&&(searchTask.close(),searchTask=null)}function _showBusyIndicator(scope){searchTask&&searchTask.close();let scopeName=scope?Phoenix.app.getDisplayPath(scope.fullPath):Phoenix.app.getDisplayPath(ProjectManager.getProjectRoot().fullPath);scopeName=StringUtils.format(Strings.FIND_IN_FILES_SEARCHING_IN,scopeName),searchTask=TaskManager.addNewTask(Strings.FIND_IN_FILES_SEARCHING,scopeName,'<i class="fa-solid fa-magnifying-glass"></i>')}function searchAndShowResults(queryInfo,scope,filter,replaceText,candidateFilesPromise){return FindInFiles.doSearchInScope(queryInfo,scope,filter,replaceText,candidateFilesPromise).done(function(zeroFilesToken){if(FindInFiles.searchModel.hasResults())_resultsView.open(),_findBar&&(_findBar.enable(!0),_findBar.showError(null),_findBar.showNoResults(!1),_findBar.focus());else if(_resultsView.showNoResults(),_findBar){var showMessage=!1;_findBar.enable(!0),zeroFilesToken===FindInFiles.ZERO_FILES_TO_SEARCH?_findBar.showError(StringUtils.format(Strings.FIND_IN_FILES_ZERO_FILES,FindUtils.labelForScope(FindInFiles.searchModel.scope)),!0,!0):showMessage=!0,_findBar.showNoResults(!0,showMessage)}_hideBusyIndicator()}).fail(function(err){console.log("find in files failed: ",err),_hideBusyIndicator()})}function searchAndReplaceResults(queryInfo,scope,filter,replaceText,candidateFilesPromise){return FindInFiles.doSearchInScope(queryInfo,scope,filter,replaceText,candidateFilesPromise).done(function(zeroFilesToken){FindInFiles.searchModel.hasResults()&&(_finishReplaceBatch(FindInFiles.searchModel),_findBar&&(_findBar.enable(!0),_findBar.focus())),_hideBusyIndicator()}).fail(function(err){console.log("replace all failed: ",err),_hideBusyIndicator()})}function _getScopeLabel(scope,isReplace){if(scope){const scopeStr=isReplace?Strings.FIND_IN_FILES_PROJECT_SCOPE_REPLACE_FILTER:Strings.FIND_IN_FILES_PROJECT_SCOPE_FILTER;return StringUtils.format(scopeStr,StringUtils.breakableUrl(ProjectManager.makeProjectRelativeIfPossible(scope.fullPath)))}return isReplace?Strings.FIND_IN_FILES_PROJECT_SCOPE_REPLACE:Strings.FIND_IN_FILES_PROJECT_SCOPE}function _showFindBar(scope,showReplace){if(FindUtils.notifySearchScopeChanged(),scope&&!EditorManager.canOpenPath(scope.fullPath))return;if(scope instanceof InMemoryFile)return void CommandManager.execute(Commands.FILE_OPEN,{fullPath:scope.fullPath}).done(function(){CommandManager.execute(Commands.CMD_FIND)});let currentEditor=EditorManager.getActiveEditor(),focussedEditor;!EditorManager.getFocusedEditor()&&_resultsView._$previewEditor&&_resultsView._$previewEditor.editor&&_resultsView._$previewEditor.editor.hasFocus()&&(currentEditor=_resultsView._$previewEditor.editor);let initialQuery=FindBar.getInitialQuery(_findBar,currentEditor);_findBar&&_findBar.close(),(_findBar=new FindBar({multifile:!0,replace:showReplace,initialQuery:initialQuery.query,historyHelp:"mac"===brackets.platform?Strings.FIND_HISTORY_TOOLTIP_MAC:Strings.FIND_HISTORY_TOOLTIP,initialReplaceText:initialQuery.replaceText,queryPlaceholder:Strings.FIND_QUERY_PLACEHOLDER,scopeLabel:_getScopeLabel(scope,showReplace)})).open(),_findBar._modalBar.isLockedOpen=function(){return!_findBar.isEnabled()||$(".modal.instance .exclusions-editor").length>0};var candidateFilesPromise=FindInFiles.getCandidateFiles(scope);function handleQueryChange(){var queryInfo=_findBar.getQueryInfo(),queryResult=FindUtils.parseQueryInfo(queryInfo);_findBar.enableReplace(queryResult.valid),queryResult.valid||queryResult.empty?(_findBar.showNoResults(!1),_findBar.showError(null)):(_findBar.showNoResults(!0,!1),_findBar.showError(queryResult.error))}function startSearch(replaceText){var queryInfo=_findBar.getQueryInfo(),disableFindBar=!!replaceText;if(queryInfo&&queryInfo.query){_findBar.enable(!disableFindBar),_showBusyIndicator(scope);let queryType="query",filter;queryInfo.isRegexp&&(queryType+=":regex"),queryInfo.isCaseSensitive&&(queryType+=":caseSensitive"),Metrics.countEvent(Metrics.EVENT_TYPE.SEARCH,"findInFiles",queryType),filter=_findBar&&_findBar._options.multifile?FileFilters.getActiveFilter():null,searchAndShowResults(queryInfo,scope,filter,replaceText,candidateFilesPromise)}return null}function startReplace(){startSearch(_findBar.getReplaceText())}_findBar.on("doFind.FindInFiles",function(){startSearch()}).on("queryChange.FindInFiles",handleQueryChange).on("close.FindInFiles",function(e){_findBar.off(".FindInFiles"),_findBar=null}).on("selectNextResult",function(){_findBar&&_findBar._options.multifile&&_resultsView.selectNextResult()}).on("selectPrevResult",function(){_findBar&&_findBar._options.multifile&&_resultsView.selectPrevResult()}).on("selectNextPage",function(){_findBar&&_findBar._options.multifile&&_resultsView.selectNextPage()}).on("selectPrevPage",function(){_findBar&&_findBar._options.multifile&&_resultsView.selectPrevPage()}).on("openSelectedFile",function(){_findBar&&_findBar._options.multifile&&_resultsView.OpenSelectedFile()}),showReplace&&_findBar.on("doReplaceBatch.FindInFiles",startReplace);var oldModalBarHeight=_findBar._modalBar.height();if(!scope||scope.isDirectory){const filterPicker=FileFilters.createFilterPicker();_findBar._modalBar.getRoot().find(".scope-group").append(...filterPicker)}handleQueryChange(),startSearch();var fullEditor=EditorManager.getCurrentFullEditor(),scrollPos;fullEditor&&((scrollPos=fullEditor.getScrollPos()).y-=oldModalBarHeight),WorkspaceManager.recomputeLayout(),fullEditor&&fullEditor._codeMirror.scrollTo(scrollPos.x,scrollPos.y+_findBar._modalBar.height())}function _finishReplaceBatch(model){var replaceText=model.replaceText;if(null!==replaceText){var resultsClone=_.cloneDeep(model.results),replacedFiles=Object.keys(resultsClone).filter(function(path){return FindUtils.hasCheckedMatches(resultsClone[path])}),isRegexp=model.queryInfo.isRegexp;replacedFiles.length<=MAX_IN_MEMORY?(_resultsView.close(),processReplace(!0)):Dialogs.showModalDialog(DefaultDialogs.DIALOG_ID_INFO,Strings.REPLACE_WITHOUT_UNDO_WARNING_TITLE,StringUtils.format(Strings.REPLACE_WITHOUT_UNDO_WARNING,MAX_IN_MEMORY),[{className:Dialogs.DIALOG_BTN_CLASS_NORMAL,id:Dialogs.DIALOG_BTN_CANCEL,text:Strings.CANCEL},{className:Dialogs.DIALOG_BTN_CLASS_PRIMARY,id:Dialogs.DIALOG_BTN_OK,text:Strings.BUTTON_REPLACE_WITHOUT_UNDO}]).done(function(id){id===Dialogs.DIALOG_BTN_OK&&(_resultsView.close(),processReplace(!1))})}function processReplace(forceFilesOpen){_showBusyIndicator(model.scope),FindInFiles.doReplace(resultsClone,replaceText,{forceFilesOpen:forceFilesOpen,isRegexp:isRegexp}).fail(function(errors){var message=Strings.REPLACE_IN_FILES_ERRORS+FileUtils.makeDialogFileList(errors.map(function(errorInfo){return ProjectManager.makeProjectRelativeIfPossible(errorInfo.item)}));Dialogs.showModalDialog(DefaultDialogs.DIALOG_ID_ERROR,Strings.REPLACE_IN_FILES_ERRORS_TITLE,message,[{className:Dialogs.DIALOG_BTN_CLASS_PRIMARY,id:Dialogs.DIALOG_BTN_OK,text:Strings.BUTTON_REPLACE_WITHOUT_UNDO}])}).always(function(){_hideBusyIndicator()})}}function _showReplaceBar(){FindUtils.notifySearchScopeChanged(),_showFindBar(null,!0)}function _showFindBarForSubtree(){var selectedEntry;FindUtils.notifySearchScopeChanged(),_showFindBar(ProjectManager.getSelectedItem())}function _showReplaceBarForSubtree(){var selectedEntry;FindUtils.notifySearchScopeChanged(),_showFindBar(ProjectManager.getSelectedItem(),!0)}function _closeFindBar(suppressAnimation){_findBar&&_findBar.close(suppressAnimation)}function _searchIndexingStarted(){_findBar&&_findBar._options.multifile&&FindUtils.isIndexingInProgress()&&_findBar.showIndexingSpinner()}function _searchIndexingProgressing(_evt,processed,total){if(_findBar&&_findBar._options.multifile&&FindUtils.isIndexingInProgress()){let progressMessage=StringUtils.format(Strings.FIND_IN_FILES_INDEXING_PROGRESS,processed,total);_findBar.setIndexingMessage(progressMessage)}}function _searchIndexingFinished(){_findBar&&_findBar.hideIndexingSpinner()}function _defferedSearch(){_findBar&&_findBar._options.multifile&&!_findBar._options.replace&&_findBar.redoInstantSearch()}function _searchIfRequired(){!FindUtils.isInstantSearchDisabled()&&_findBar&&_findBar._options.multifile&&!_findBar._options.replace&&setTimeout(_defferedSearch,100)}function closeResultsPanel(){_resultsView.close(),_closeFindBar()}AppInit.htmlReady(function(){var model=FindInFiles.searchModel;(_resultsView=new SearchResultsView(model,"find-in-files-results","find-in-files.results",void 0,Strings.SEARCH_RESULTS_PANEL_TITLE)).on("replaceBatch",function(){_finishReplaceBatch(model)}).on("close",function(){FindInFiles.clearSearch()}).on("getNextPage",function(){FindInFiles.getNextPageofSearchResults().done(function(){FindInFiles.searchModel.hasResults()&&_resultsView.showNextPage()})}).on("getLastPage",function(){FindInFiles.getAllSearchResults().done(function(){FindInFiles.searchModel.hasResults()&&_resultsView.showLastPage()})})}),ProjectManager.on("beforeProjectClose",function(){_resultsView.close(),_findBar&&!_findBar.isClosed()&&_closeFindBar(!0)}),CommandManager.register(Strings.CMD_FIND_IN_FILES,Commands.CMD_FIND_IN_FILES,_showFindBar),CommandManager.register(Strings.CMD_FIND_IN_SUBTREE,Commands.CMD_FIND_IN_SUBTREE,_showFindBarForSubtree),CommandManager.register(Strings.CMD_REPLACE_IN_FILES,Commands.CMD_REPLACE_IN_FILES,_showReplaceBar),CommandManager.register(Strings.CMD_REPLACE_IN_SUBTREE,Commands.CMD_REPLACE_IN_SUBTREE,_showReplaceBarForSubtree),FindUtils.on(FindUtils.SEARCH_INDEXING_STARTED,_searchIndexingStarted),FindUtils.on(FindUtils.SEARCH_INDEXING_PROGRESS,_searchIndexingProgressing),FindUtils.on(FindUtils.SEARCH_INDEXING_FINISHED,_searchIndexingFinished),FindUtils.on(FindUtils.SEARCH_FILE_FILTERS_CHANGED,_searchIfRequired),FindUtils.on(FindUtils.SEARCH_SCOPE_CHANGED,_searchIfRequired),exports.searchAndShowResults=searchAndShowResults,exports.searchAndReplaceResults=searchAndReplaceResults,exports.closeResultsPanel=closeResultsPanel,exports._showFindBar=_showFindBar,exports._closeFindBar=_closeFindBar});