OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 setFromFile: function() | 424 setFromFile: function() |
425 { | 425 { |
426 this._fromFile = true; | 426 this._fromFile = true; |
427 }, | 427 }, |
428 | 428 |
429 __proto__: WebInspector.Object.prototype | 429 __proto__: WebInspector.Object.prototype |
430 } | 430 } |
431 | 431 |
432 /** | 432 /** |
433 * @constructor | 433 * @constructor |
434 * @implements {WebInspector.Searchable} | |
435 * @implements {WebInspector.ProfileType.DataDisplayDelegate} | 434 * @implements {WebInspector.ProfileType.DataDisplayDelegate} |
436 * @extends {WebInspector.PanelWithSidebarTree} | 435 * @extends {WebInspector.PanelWithSidebarTree} |
437 */ | 436 */ |
438 WebInspector.ProfilesPanel = function() | 437 WebInspector.ProfilesPanel = function() |
439 { | 438 { |
440 WebInspector.PanelWithSidebarTree.call(this, "profiles"); | 439 WebInspector.PanelWithSidebarTree.call(this, "profiles"); |
441 this.registerRequiredCSS("components/panelEnablerView.css"); | 440 this.registerRequiredCSS("components/panelEnablerView.css"); |
442 this.registerRequiredCSS("profiler/heapProfiler.css"); | 441 this.registerRequiredCSS("profiler/heapProfiler.css"); |
443 this.registerRequiredCSS("profiler/profilesPanel.css"); | 442 this.registerRequiredCSS("profiler/profilesPanel.css"); |
444 | 443 |
445 this._searchableView = new WebInspector.SearchableView(this); | |
446 | |
447 var mainView = new WebInspector.VBox(); | 444 var mainView = new WebInspector.VBox(); |
448 this._searchableView.show(mainView.element); | |
449 mainView.show(this.mainElement()); | 445 mainView.show(this.mainElement()); |
450 | 446 |
451 this.profilesItemTreeElement = new WebInspector.ProfilesSidebarTreeElement(t
his); | 447 this.profilesItemTreeElement = new WebInspector.ProfilesSidebarTreeElement(t
his); |
452 this.sidebarTree.setFocusable(false); | 448 this.sidebarTree.setFocusable(false); |
453 this.sidebarTree.appendChild(this.profilesItemTreeElement); | 449 this.sidebarTree.appendChild(this.profilesItemTreeElement); |
454 | 450 |
455 this.profileViews = createElement("div"); | 451 this.profileViews = createElement("div"); |
456 this.profileViews.id = "profile-views"; | 452 this.profileViews.id = "profile-views"; |
457 this.profileViews.classList.add("vbox"); | 453 this.profileViews.classList.add("vbox"); |
458 this._searchableView.element.appendChild(this.profileViews); | 454 mainView.element.appendChild(this.profileViews); |
459 | 455 |
460 var statusBarContainer = createElementWithClass("div", "profiles-status-bar"
); | 456 var statusBarContainer = createElementWithClass("div", "profiles-status-bar"
); |
461 mainView.element.insertBefore(statusBarContainer, mainView.element.firstChil
d); | 457 mainView.element.insertBefore(statusBarContainer, mainView.element.firstChil
d); |
462 this._statusBarElement = statusBarContainer.createChild("div", "status-bar")
; | 458 this._statusBarElement = statusBarContainer.createChild("div", "status-bar")
; |
463 | 459 |
464 this.sidebarElement().classList.add("profiles-sidebar-tree-box"); | 460 this.sidebarElement().classList.add("profiles-sidebar-tree-box"); |
465 var statusBarContainerLeft = createElementWithClass("div", "profiles-status-
bar"); | 461 var statusBarContainerLeft = createElementWithClass("div", "profiles-status-
bar"); |
466 this.sidebarElement().insertBefore(statusBarContainerLeft, this.sidebarEleme
nt().firstChild); | 462 this.sidebarElement().insertBefore(statusBarContainerLeft, this.sidebarEleme
nt().firstChild); |
467 this._statusBarButtons = statusBarContainerLeft.createChild("div", "status-b
ar"); | 463 this._statusBarButtons = statusBarContainerLeft.createChild("div", "status-b
ar"); |
468 | 464 |
(...skipping 23 matching lines...) Expand all Loading... |
492 | 488 |
493 this._createFileSelectorElement(); | 489 this._createFileSelectorElement(); |
494 this.element.addEventListener("contextmenu", this._handleContextMenuEvent.bi
nd(this), true); | 490 this.element.addEventListener("contextmenu", this._handleContextMenuEvent.bi
nd(this), true); |
495 this._registerShortcuts(); | 491 this._registerShortcuts(); |
496 | 492 |
497 WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event
s.SuspendStateChanged, this._onSuspendStateChanged, this); | 493 WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event
s.SuspendStateChanged, this._onSuspendStateChanged, this); |
498 } | 494 } |
499 | 495 |
500 WebInspector.ProfilesPanel.prototype = { | 496 WebInspector.ProfilesPanel.prototype = { |
501 /** | 497 /** |
502 * @return {!WebInspector.SearchableView} | 498 * @return {?WebInspector.SearchableView} |
503 */ | 499 */ |
504 searchableView: function() | 500 searchableView: function() |
505 { | 501 { |
506 return this._searchableView; | 502 return this.visibleView.searchableView(); |
507 }, | 503 }, |
508 | 504 |
509 _createFileSelectorElement: function() | 505 _createFileSelectorElement: function() |
510 { | 506 { |
511 if (this._fileSelectorElement) | 507 if (this._fileSelectorElement) |
512 this.element.removeChild(this._fileSelectorElement); | 508 this.element.removeChild(this._fileSelectorElement); |
513 this._fileSelectorElement = WebInspector.createFileSelectorElement(this.
_loadFromFile.bind(this)); | 509 this._fileSelectorElement = WebInspector.createFileSelectorElement(this.
_loadFromFile.bind(this)); |
514 this.element.appendChild(this._fileSelectorElement); | 510 this.element.appendChild(this._fileSelectorElement); |
515 }, | 511 }, |
516 | 512 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 | 627 |
632 _reset: function() | 628 _reset: function() |
633 { | 629 { |
634 WebInspector.Panel.prototype.reset.call(this); | 630 WebInspector.Panel.prototype.reset.call(this); |
635 | 631 |
636 var types = WebInspector.ProfileTypeRegistry.instance.profileTypes(); | 632 var types = WebInspector.ProfileTypeRegistry.instance.profileTypes(); |
637 for (var i = 0; i < types.length; i++) | 633 for (var i = 0; i < types.length; i++) |
638 types[i]._reset(); | 634 types[i]._reset(); |
639 | 635 |
640 delete this.visibleView; | 636 delete this.visibleView; |
641 delete this.currentQuery; | |
642 this.searchCanceled(); | |
643 | 637 |
644 this._profileGroups = {}; | 638 this._profileGroups = {}; |
645 this._updateRecordButton(false); | 639 this._updateRecordButton(false); |
646 this._launcherView.profileFinished(); | 640 this._launcherView.profileFinished(); |
647 | 641 |
648 this.sidebarTree.element.classList.remove("some-expandable"); | 642 this.sidebarTree.element.classList.remove("some-expandable"); |
649 | 643 |
650 this._launcherView.detach(); | 644 this._launcherView.detach(); |
651 this.profileViews.removeChildren(); | 645 this.profileViews.removeChildren(); |
652 this._profileViewStatusBarItemsContainer.removeChildren(); | 646 this._profileViewStatusBarItemsContainer.removeChildren(); |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 }, | 858 }, |
865 | 859 |
866 closeVisibleView: function() | 860 closeVisibleView: function() |
867 { | 861 { |
868 if (this.visibleView) | 862 if (this.visibleView) |
869 this.visibleView.detach(); | 863 this.visibleView.detach(); |
870 delete this.visibleView; | 864 delete this.visibleView; |
871 }, | 865 }, |
872 | 866 |
873 /** | 867 /** |
874 * @param {!WebInspector.SearchableView.SearchConfig} searchConfig | |
875 * @param {boolean} shouldJump | |
876 * @param {boolean=} jumpBackwards | |
877 */ | |
878 performSearch: function(searchConfig, shouldJump, jumpBackwards) | |
879 { | |
880 var query = searchConfig.query; | |
881 this.searchCanceled(); | |
882 | |
883 var visibleView = this.visibleView; | |
884 if (!visibleView) | |
885 return; | |
886 | |
887 /** | |
888 * @this {WebInspector.ProfilesPanel} | |
889 */ | |
890 function finishedCallback(view, searchMatches) | |
891 { | |
892 if (!searchMatches) | |
893 return; | |
894 this._searchableView.updateSearchMatchesCount(searchMatches); | |
895 this._searchResultsView = view; | |
896 if (shouldJump) { | |
897 if (jumpBackwards) | |
898 view.jumpToLastSearchResult(); | |
899 else | |
900 view.jumpToFirstSearchResult(); | |
901 this._searchableView.updateCurrentMatchIndex(view.currentSearchR
esultIndex()); | |
902 } | |
903 } | |
904 | |
905 visibleView.currentQuery = query; | |
906 visibleView.performSearch(query, finishedCallback.bind(this)); | |
907 }, | |
908 | |
909 jumpToNextSearchResult: function() | |
910 { | |
911 if (!this._searchResultsView) | |
912 return; | |
913 if (this._searchResultsView !== this.visibleView) | |
914 return; | |
915 this._searchResultsView.jumpToNextSearchResult(); | |
916 this._searchableView.updateCurrentMatchIndex(this._searchResultsView.cur
rentSearchResultIndex()); | |
917 }, | |
918 | |
919 jumpToPreviousSearchResult: function() | |
920 { | |
921 if (!this._searchResultsView) | |
922 return; | |
923 if (this._searchResultsView !== this.visibleView) | |
924 return; | |
925 this._searchResultsView.jumpToPreviousSearchResult(); | |
926 this._searchableView.updateCurrentMatchIndex(this._searchResultsView.cur
rentSearchResultIndex()); | |
927 }, | |
928 | |
929 /** | |
930 * @return {boolean} | |
931 */ | |
932 supportsCaseSensitiveSearch: function() | |
933 { | |
934 return false; | |
935 }, | |
936 | |
937 /** | |
938 * @return {boolean} | |
939 */ | |
940 supportsRegexSearch: function() | |
941 { | |
942 return false; | |
943 }, | |
944 | |
945 searchCanceled: function() | |
946 { | |
947 if (this._searchResultsView) { | |
948 if (this._searchResultsView.searchCanceled) | |
949 this._searchResultsView.searchCanceled(); | |
950 this._searchResultsView.currentQuery = null; | |
951 this._searchResultsView = null; | |
952 } | |
953 this._searchableView.updateSearchMatchesCount(0); | |
954 }, | |
955 | |
956 /** | |
957 * @param {!Event} event | 868 * @param {!Event} event |
958 * @param {!WebInspector.ContextMenu} contextMenu | 869 * @param {!WebInspector.ContextMenu} contextMenu |
959 * @param {!Object} target | 870 * @param {!Object} target |
960 */ | 871 */ |
961 appendApplicableItems: function(event, contextMenu, target) | 872 appendApplicableItems: function(event, contextMenu, target) |
962 { | 873 { |
963 if (!(target instanceof WebInspector.RemoteObject)) | 874 if (!(target instanceof WebInspector.RemoteObject)) |
964 return; | 875 return; |
965 | 876 |
966 if (WebInspector.inspectorView.currentPanel() !== this) | 877 if (WebInspector.inspectorView.currentPanel() !== this) |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 | 1253 |
1343 WebInspector.ProfilesPanelFactory.prototype = { | 1254 WebInspector.ProfilesPanelFactory.prototype = { |
1344 /** | 1255 /** |
1345 * @return {!WebInspector.Panel} | 1256 * @return {!WebInspector.Panel} |
1346 */ | 1257 */ |
1347 createPanel: function() | 1258 createPanel: function() |
1348 { | 1259 { |
1349 return WebInspector.ProfilesPanel._instance(); | 1260 return WebInspector.ProfilesPanel._instance(); |
1350 } | 1261 } |
1351 } | 1262 } |
OLD | NEW |