Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: Source/devtools/front_end/sources/SourcesView.js

Issue 658403002: DevTools: Support regex search and case sensitive search in sources panel (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed tests Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @implements {WebInspector.TabbedEditorContainerDelegate} 7 * @implements {WebInspector.TabbedEditorContainerDelegate}
8 * @implements {WebInspector.Searchable} 8 * @implements {WebInspector.Searchable}
9 * @implements {WebInspector.Replaceable} 9 * @implements {WebInspector.Replaceable}
10 * @extends {WebInspector.VBox} 10 * @extends {WebInspector.VBox}
11 * @param {!WebInspector.Workspace} workspace 11 * @param {!WebInspector.Workspace} workspace
12 * @param {!WebInspector.SourcesPanel} sourcesPanel 12 * @param {!WebInspector.SourcesPanel} sourcesPanel
13 */ 13 */
14 WebInspector.SourcesView = function(workspace, sourcesPanel) 14 WebInspector.SourcesView = function(workspace, sourcesPanel)
15 { 15 {
16 WebInspector.VBox.call(this); 16 WebInspector.VBox.call(this);
17 this.registerRequiredCSS("sourcesView.css"); 17 this.registerRequiredCSS("sourcesView.css");
18 this.element.id = "sources-panel-sources-view"; 18 this.element.id = "sources-panel-sources-view";
19 this.setMinimumAndPreferredSizes(50, 25, 150, 100); 19 this.setMinimumAndPreferredSizes(50, 25, 150, 100);
20 20
21 this._workspace = workspace; 21 this._workspace = workspace;
22 this._sourcesPanel = sourcesPanel; 22 this._sourcesPanel = sourcesPanel;
23 23
24 this._searchableView = new WebInspector.SearchableView(this); 24 this._searchableView = new WebInspector.SearchableView(this, "sourcesViewSea rchConfig");
25 this._searchableView.setMinimalSearchQuerySize(0); 25 this._searchableView.setMinimalSearchQuerySize(0);
26 this._searchableView.show(this.element); 26 this._searchableView.show(this.element);
27 27
28 /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.UISourceCodeFrame >} */ 28 /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.UISourceCodeFrame >} */
29 this._sourceFramesByUISourceCode = new Map(); 29 this._sourceFramesByUISourceCode = new Map();
30 30
31 var tabbedEditorPlaceholderText = WebInspector.isMac() ? WebInspector.UIStri ng("Hit Cmd+P to open a file") : WebInspector.UIString("Hit Ctrl+P to open a fil e"); 31 var tabbedEditorPlaceholderText = WebInspector.isMac() ? WebInspector.UIStri ng("Hit Cmd+P to open a file") : WebInspector.UIString("Hit Ctrl+P to open a fil e");
32 this._editorContainer = new WebInspector.TabbedEditorContainer(this, "previo uslyViewedFiles", tabbedEditorPlaceholderText); 32 this._editorContainer = new WebInspector.TabbedEditorContainer(this, "previo uslyViewedFiles", tabbedEditorPlaceholderText);
33 this._editorContainer.show(this._searchableView.element); 33 this._editorContainer.show(this._searchableView.element);
34 this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Ev ents.EditorSelected, this._editorSelected, this); 34 this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Ev ents.EditorSelected, this._editorSelected, this);
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 { 490 {
491 this._recreateSourceFrameIfNeeded(uiSourceCode); 491 this._recreateSourceFrameIfNeeded(uiSourceCode);
492 }, 492 },
493 493
494 searchCanceled: function() 494 searchCanceled: function()
495 { 495 {
496 if (this._searchView) 496 if (this._searchView)
497 this._searchView.searchCanceled(); 497 this._searchView.searchCanceled();
498 498
499 delete this._searchView; 499 delete this._searchView;
500 delete this._searchQuery; 500 delete this._searchConfig;
501 }, 501 },
502 502
503 /** 503 /**
504 * @param {string} query 504 * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
505 * @param {boolean} shouldJump 505 * @param {boolean} shouldJump
506 * @param {boolean=} jumpBackwards 506 * @param {boolean=} jumpBackwards
507 */ 507 */
508 performSearch: function(query, shouldJump, jumpBackwards) 508 performSearch: function(searchConfig, shouldJump, jumpBackwards)
509 { 509 {
510 this._searchableView.updateSearchMatchesCount(0); 510 this._searchableView.updateSearchMatchesCount(0);
511 511
512 var sourceFrame = this.currentSourceFrame(); 512 var sourceFrame = this.currentSourceFrame();
513 if (!sourceFrame) 513 if (!sourceFrame)
514 return; 514 return;
515 515
516 this._searchView = sourceFrame; 516 this._searchView = sourceFrame;
517 this._searchQuery = query; 517 this._searchConfig = searchConfig;
518 518
519 /** 519 /**
520 * @param {!WebInspector.View} view 520 * @param {!WebInspector.View} view
521 * @param {number} searchMatches 521 * @param {number} searchMatches
522 * @this {WebInspector.SourcesView} 522 * @this {WebInspector.SourcesView}
523 */ 523 */
524 function finishedCallback(view, searchMatches) 524 function finishedCallback(view, searchMatches)
525 { 525 {
526 if (!searchMatches) 526 if (!searchMatches)
527 return; 527 return;
528 528
529 this._searchableView.updateSearchMatchesCount(searchMatches); 529 this._searchableView.updateSearchMatchesCount(searchMatches);
530 } 530 }
531 531
532 /** 532 /**
533 * @param {number} currentMatchIndex 533 * @param {number} currentMatchIndex
534 * @this {WebInspector.SourcesView} 534 * @this {WebInspector.SourcesView}
535 */ 535 */
536 function currentMatchChanged(currentMatchIndex) 536 function currentMatchChanged(currentMatchIndex)
537 { 537 {
538 this._searchableView.updateCurrentMatchIndex(currentMatchIndex); 538 this._searchableView.updateCurrentMatchIndex(currentMatchIndex);
539 } 539 }
540 540
541 /** 541 /**
542 * @this {WebInspector.SourcesView} 542 * @this {WebInspector.SourcesView}
543 */ 543 */
544 function searchResultsChanged() 544 function searchResultsChanged()
545 { 545 {
546 this.performSearch(query, false, false); 546 this.performSearch(this._searchConfig, false, false);
547 } 547 }
548 548
549 this._searchView.performSearch(query, shouldJump, !!jumpBackwards, finis hedCallback.bind(this), currentMatchChanged.bind(this), searchResultsChanged.bin d(this)); 549 this._searchView.performSearch(this._searchConfig, shouldJump, !!jumpBac kwards, finishedCallback.bind(this), currentMatchChanged.bind(this), searchResul tsChanged.bind(this));
550 }, 550 },
551 551
552 jumpToNextSearchResult: function() 552 jumpToNextSearchResult: function()
553 { 553 {
554 if (!this._searchView) 554 if (!this._searchView)
555 return; 555 return;
556 556
557 if (this._searchView !== this.currentSourceFrame()) { 557 if (this._searchView !== this.currentSourceFrame()) {
558 this.performSearch(this._searchQuery, true); 558 this.performSearch(this._searchConfig, true);
559 return; 559 return;
560 } 560 }
561 561
562 this._searchView.jumpToNextSearchResult(); 562 this._searchView.jumpToNextSearchResult();
563 }, 563 },
564 564
565 jumpToPreviousSearchResult: function() 565 jumpToPreviousSearchResult: function()
566 { 566 {
567 if (!this._searchView) 567 if (!this._searchView)
568 return; 568 return;
569 569
570 if (this._searchView !== this.currentSourceFrame()) { 570 if (this._searchView !== this.currentSourceFrame()) {
571 this.performSearch(this._searchQuery, true); 571 this.performSearch(this._searchConfig, true);
572 if (this._searchView) 572 if (this._searchView)
573 this._searchView.jumpToLastSearchResult(); 573 this._searchView.jumpToLastSearchResult();
574 return; 574 return;
575 } 575 }
576 576
577 this._searchView.jumpToPreviousSearchResult(); 577 this._searchView.jumpToPreviousSearchResult();
578 }, 578 },
579 579
580 /** 580 /**
581 * @param {string} text 581 * @return {boolean}
582 */ 582 */
583 replaceSelectionWith: function(text) 583 supportsCaseSensitiveSearch: function()
584 {
585 return true;
586 },
587
588 /**
589 * @return {boolean}
590 */
591 supportsRegexSearch: function()
592 {
593 return true;
594 },
595
596 /**
597 * @param {string} replacement
598 */
599 replaceSelectionWith: function(replacement)
584 { 600 {
585 var sourceFrame = this.currentSourceFrame(); 601 var sourceFrame = this.currentSourceFrame();
586 if (!sourceFrame) { 602 if (!sourceFrame) {
587 console.assert(sourceFrame); 603 console.assert(sourceFrame);
588 return; 604 return;
589 } 605 }
590 sourceFrame.replaceSelectionWith(text); 606 sourceFrame.replaceSelectionWith(replacement);
591 }, 607 },
592 608
593 /** 609 /**
594 * @param {string} query 610 * @param {!WebInspector.SearchableView.SearchConfig} searchConfig
595 * @param {string} text 611 * @param {string} replacement
596 */ 612 */
597 replaceAllWith: function(query, text) 613 replaceAllWith: function(searchConfig, replacement)
598 { 614 {
599 var sourceFrame = this.currentSourceFrame(); 615 var sourceFrame = this.currentSourceFrame();
600 if (!sourceFrame) { 616 if (!sourceFrame) {
601 console.assert(sourceFrame); 617 console.assert(sourceFrame);
602 return; 618 return;
603 } 619 }
604 sourceFrame.replaceAllWith(query, text); 620 sourceFrame.replaceAllWith(searchConfig, replacement);
605 }, 621 },
606 622
607 /** 623 /**
608 * @param {!Event=} event 624 * @param {!Event=} event
609 * @return {boolean} 625 * @return {boolean}
610 */ 626 */
611 _showOutlineDialog: function(event) 627 _showOutlineDialog: function(event)
612 { 628 {
613 var uiSourceCode = this._editorContainer.currentFile(); 629 var uiSourceCode = this._editorContainer.currentFile();
614 if (!uiSourceCode) 630 if (!uiSourceCode)
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 var currentUISourceCode = sourcesView.currentUISourceCode(); 799 var currentUISourceCode = sourcesView.currentUISourceCode();
784 if (!currentUISourceCode) 800 if (!currentUISourceCode)
785 return true; 801 return true;
786 var nextUISourceCode = WebInspector.SourcesView.SwitchFileActionDelegate ._nextFile(currentUISourceCode); 802 var nextUISourceCode = WebInspector.SourcesView.SwitchFileActionDelegate ._nextFile(currentUISourceCode);
787 if (!nextUISourceCode) 803 if (!nextUISourceCode)
788 return true; 804 return true;
789 sourcesView.showSourceLocation(nextUISourceCode); 805 sourcesView.showSourceLocation(nextUISourceCode);
790 return true; 806 return true;
791 } 807 }
792 } 808 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/source_frame/SourceFrame.js ('k') | Source/devtools/front_end/timeline/TimelinePanel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698