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

Unified Diff: Source/devtools/front_end/SourcesPanel.js

Issue 206063003: DevTools: Extract SourcesEditor from SourcesPanel. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: Source/devtools/front_end/SourcesPanel.js
diff --git a/Source/devtools/front_end/SourcesPanel.js b/Source/devtools/front_end/SourcesPanel.js
index 034592c733fc2db7ff5b74ed41f82204782c83c2..c35e32efc7195dbcaa4956a30976ecbfc0d2ec00 100644
--- a/Source/devtools/front_end/SourcesPanel.js
+++ b/Source/devtools/front_end/SourcesPanel.js
@@ -46,13 +46,11 @@ importScript("ThreadsToolbar.js");
importScript("ScriptFormatterEditorAction.js");
importScript("InplaceFormatterEditorAction.js");
importScript("ScriptFormatter.js");
+importScript("SourcesEditor.js");
/**
* @constructor
- * @implements {WebInspector.TabbedEditorContainerDelegate}
* @implements {WebInspector.ContextMenu.Provider}
- * @implements {WebInspector.Searchable}
- * @implements {WebInspector.Replaceable}
* @extends {WebInspector.Panel}
* @param {!WebInspector.Workspace=} workspaceForTest
*/
@@ -92,25 +90,16 @@ WebInspector.SourcesPanel = function(workspaceForTest)
this._navigator = new WebInspector.SourcesNavigator(this._workspace);
this._navigator.view.show(this.editorView.sidebarElement());
-
- var tabbedEditorPlaceholderText = WebInspector.isMac() ? WebInspector.UIString("Hit Cmd+O to open a file") : WebInspector.UIString("Hit Ctrl+O to open a file");
-
- this._drawerEditorView = new WebInspector.SourcesPanel.DrawerEditorView();
- this.sourcesView = new WebInspector.SourcesView();
- this.sourcesView.show(this._drawerEditorView.element);
-
- this._searchableView = new WebInspector.SearchableView(this);
- this._searchableView.setMinimalSearchQuerySize(0);
- this._searchableView.show(this.sourcesView.element);
-
- this._editorContainer = new WebInspector.TabbedEditorContainer(this, "previouslyViewedFiles", tabbedEditorPlaceholderText);
- this._editorContainer.show(this._searchableView.element);
-
this._navigator.addEventListener(WebInspector.SourcesNavigator.Events.SourceSelected, this._sourceSelected, this);
this._navigator.addEventListener(WebInspector.SourcesNavigator.Events.SourceRenamed, this._sourceRenamed, this);
- this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorSelected, this._editorSelected, this);
- this._editorContainer.addEventListener(WebInspector.TabbedEditorContainer.Events.EditorClosed, this._editorClosed, this);
+ this._sourcesEditor = new WebInspector.SourcesEditor(this._workspace, this);
+ this._sourcesEditor.addEventListener(WebInspector.SourcesEditor.Events.EditorSelected, this._editorSelected.bind(this));
+ this._sourcesEditor.addEventListener(WebInspector.SourcesEditor.Events.EditorClosed, this._editorClosed.bind(this));
+ this._sourcesEditor.registerShortcuts(this.registerShortcuts.bind(this));
+
+ this._drawerEditorView = new WebInspector.SourcesPanel.DrawerEditorView();
+ this._sourcesEditor.sourcesView().show(this._drawerEditorView.element);
this._debugSidebarResizeWidgetElement = document.createElementWithClass("div", "resizer-widget");
this._debugSidebarResizeWidgetElement.id = "scripts-debug-sidebar-resizer-widget";
@@ -123,9 +112,10 @@ WebInspector.SourcesPanel = function(workspaceForTest)
this.sidebarPanes.callstack = new WebInspector.CallStackSidebarPane();
this.sidebarPanes.callstack.addEventListener(WebInspector.CallStackSidebarPane.Events.CallFrameSelected, this._callFrameSelectedInSidebar.bind(this));
this.sidebarPanes.callstack.addEventListener(WebInspector.CallStackSidebarPane.Events.CallFrameRestarted, this._callFrameRestartedInSidebar.bind(this));
+ this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this));
this.sidebarPanes.scopechain = new WebInspector.ScopeChainSidebarPane();
- this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(WebInspector.debuggerModel, WebInspector.breakpointManager, this._showSourceLocation.bind(this));
+ this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(WebInspector.debuggerModel, WebInspector.breakpointManager, this.showUISourceCode.bind(this));
this.sidebarPanes.domBreakpoints = WebInspector.domBreakpointsSidebarPane.createProxy(this);
this.sidebarPanes.xhrBreakpoints = new WebInspector.XHRBreakpointsSidebarPane();
this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane();
@@ -133,48 +123,14 @@ WebInspector.SourcesPanel = function(workspaceForTest)
if (Capabilities.isMainFrontend)
this.sidebarPanes.workerList = new WebInspector.WorkersSidebarPane();
- this._historyManager = new WebInspector.EditingLocationHistoryManager(this, this.currentSourceFrame.bind(this));
- this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.JumpToPreviousLocation, this._onJumpToPreviousLocation.bind(this));
- this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.JumpToNextLocation, this._onJumpToNextLocation.bind(this));
- this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.CloseEditorTab, this._onCloseEditorTab.bind(this));
-
- this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this));
- this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.GoToLine, this._showGoToLineDialog.bind(this));
- this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.GoToMember, this._showOutlineDialog.bind(this));
- this.registerShortcuts(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.ToggleBreakpoint, this._toggleBreakpoint.bind(this));
-
this._extensionSidebarPanes = [];
- this._scriptViewStatusBarItemsContainer = document.createElement("div");
- this._scriptViewStatusBarItemsContainer.className = "inline-block";
-
- this._scriptViewStatusBarTextContainer = document.createElement("div");
- this._scriptViewStatusBarTextContainer.className = "hbox";
-
- this._statusBarContainerElement = this.sourcesView.element.createChild("div", "sources-status-bar");
-
- /**
- * @this {WebInspector.SourcesPanel}
- * @param {!WebInspector.SourcesPanel.EditorAction} EditorAction
- */
- function appendButtonForExtension(EditorAction)
- {
- this._statusBarContainerElement.appendChild(EditorAction.button(this));
- }
- var editorActions = /** @type {!Array.<!WebInspector.SourcesPanel.EditorAction>} */ (WebInspector.moduleManager.instances(WebInspector.SourcesPanel.EditorAction));
- editorActions.forEach(appendButtonForExtension.bind(this));
-
- this._statusBarContainerElement.appendChild(this._scriptViewStatusBarItemsContainer);
- this._statusBarContainerElement.appendChild(this._scriptViewStatusBarTextContainer);
-
this._installDebuggerSidebarController();
WebInspector.dockController.addEventListener(WebInspector.DockController.Events.DockSideChanged, this._dockSideChanged.bind(this));
WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(this._dockSideChanged.bind(this));
this._dockSideChanged();
- /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.SourceFrame>} */
- this._sourceFramesByUISourceCode = new Map();
this._updateDebuggerButtons();
this._pauseOnExceptionEnabledChanged();
if (WebInspector.debuggerModel.isPaused())
@@ -188,76 +144,18 @@ WebInspector.SourcesPanel = function(workspaceForTest)
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.CallFrameSelected, this._callFrameSelected, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame, this._consoleCommandEvaluatedInSelectedCallFrame, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this);
-
- WebInspector.startBatchUpdate();
- this._workspace.uiSourceCodes().forEach(this._addUISourceCode.bind(this));
- WebInspector.endBatchUpdate();
-
- this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this);
- this._workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this);
- this._workspace.addEventListener(WebInspector.Workspace.Events.ProjectWillReset, this._projectWillReset.bind(this), this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this);
-
- function handleBeforeUnload(event)
- {
- if (event.returnValue)
- return;
- var unsavedSourceCodes = WebInspector.workspace.unsavedSourceCodes();
- if (!unsavedSourceCodes.length)
- return;
-
- event.returnValue = WebInspector.UIString("DevTools have unsaved changes that will be permanently lost.");
- WebInspector.inspectorView.showPanel("sources");
- for (var i = 0; i < unsavedSourceCodes.length; ++i)
- WebInspector.panels.sources.showUISourceCode(unsavedSourceCodes[i]);
- }
- window.addEventListener("beforeunload", handleBeforeUnload, true);
}
WebInspector.SourcesPanel.minToolbarWidth = 215;
-WebInspector.SourcesPanel.Events = {
- EditorClosed: "EditorClosed",
- EditorSelected: "EditorSelected",
-}
-
WebInspector.SourcesPanel.prototype = {
/**
- * @param {?Event=} event
- */
- _onCloseEditorTab: function(event)
- {
- var uiSourceCode = this.currentUISourceCode();
- if (!uiSourceCode)
- return false;
- this._editorContainer.closeFile(uiSourceCode);
- return true;
- },
-
- /**
- * @param {?Event=} event
- */
- _onJumpToPreviousLocation: function(event)
- {
- this._historyManager.rollback();
- return true;
- },
-
- /**
- * @param {?Event=} event
- */
- _onJumpToNextLocation: function(event)
- {
- this._historyManager.rollover();
- return true;
- },
-
- /**
* @return {!Element}
*/
defaultFocusedElement: function()
{
- return this._editorContainer.view.defaultFocusedElement() || this._navigator.view.defaultFocusedElement();
+ return this._sourcesEditor.defaultFocusedElement() || this._navigator.view.defaultFocusedElement();
},
get paused()
@@ -278,7 +176,7 @@ WebInspector.SourcesPanel.prototype = {
wasShown: function()
{
this._drawerEditor()._panelWasShown();
- this.sourcesView.show(this.editorView.mainElement());
+ this._sourcesEditor.sourcesView().show(this.editorView.mainElement());
WebInspector.Panel.prototype.wasShown.call(this);
},
@@ -286,7 +184,7 @@ WebInspector.SourcesPanel.prototype = {
{
WebInspector.Panel.prototype.willHide.call(this);
this._drawerEditor()._panelWillHide();
- this.sourcesView.show(this._drawerEditorView.element);
+ this._sourcesEditor.sourcesView().show(this._drawerEditorView.element);
},
/**
@@ -294,50 +192,7 @@ WebInspector.SourcesPanel.prototype = {
*/
searchableView: function()
{
- return this._searchableView;
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _uiSourceCodeAdded: function(event)
- {
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
- this._addUISourceCode(uiSourceCode);
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- */
- _addUISourceCode: function(uiSourceCode)
- {
- if (uiSourceCode.project().isServiceProject())
- return;
- this._editorContainer.addUISourceCode(uiSourceCode);
- // Replace debugger script-based uiSourceCode with a network-based one.
- var currentUISourceCode = this._currentUISourceCode;
- if (currentUISourceCode && currentUISourceCode.project().isServiceProject() && currentUISourceCode !== uiSourceCode && currentUISourceCode.url === uiSourceCode.url) {
- this._showFile(uiSourceCode);
- this._editorContainer.removeUISourceCode(currentUISourceCode);
- }
- },
-
- _uiSourceCodeRemoved: function(event)
- {
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
- this._removeUISourceCodes([uiSourceCode]);
- },
-
- /**
- * @param {!Array.<!WebInspector.UISourceCode>} uiSourceCodes
- */
- _removeUISourceCodes: function(uiSourceCodes)
- {
- for (var i = 0; i < uiSourceCodes.length; ++i) {
- this._removeSourceFrame(uiSourceCodes[i]);
- this._historyManager.removeHistoryForSourceCode(uiSourceCodes[i]);
- }
- this._editorContainer.removeUISourceCodes(uiSourceCodes);
+ return this._sourcesEditor.searchableView();
},
_consoleCommandEvaluatedInSelectedCallFrame: function(event)
@@ -442,48 +297,12 @@ WebInspector.SourcesPanel.prototype = {
delete this._skipExecutionLineRevealing;
},
- _projectWillReset: function(event)
- {
- var project = event.data;
- var uiSourceCodes = project.uiSourceCodes();
- this._removeUISourceCodes(uiSourceCodes);
- if (project.type() === WebInspector.projectTypes.Network)
- this._editorContainer.reset();
- },
-
/**
* @return {!WebInspector.View}
*/
get visibleView()
{
- return this._editorContainer.visibleView;
- },
-
- /**
- * @return {?WebInspector.SourceFrame}
- */
- currentSourceFrame: function()
- {
- var view = this.visibleView;
- if (!(view instanceof WebInspector.SourceFrame))
- return null;
- return /** @type {!WebInspector.SourceFrame} */ (view);
- },
-
- _updateScriptViewStatusBarItems: function()
- {
- this._scriptViewStatusBarItemsContainer.removeChildren();
- this._scriptViewStatusBarTextContainer.removeChildren();
- var sourceFrame = this.currentSourceFrame();
- if (!sourceFrame)
- return;
-
- var statusBarItems = sourceFrame.statusBarItems() || [];
- for (var i = 0; i < statusBarItems.length; ++i)
- this._scriptViewStatusBarItemsContainer.appendChild(statusBarItems[i]);
- var statusBarText = sourceFrame.statusBarText();
- if (statusBarText)
- this._scriptViewStatusBarTextContainer.appendChild(statusBarText);
+ return this._sourcesEditor.visibleView();
},
/**
@@ -494,15 +313,13 @@ WebInspector.SourcesPanel.prototype = {
*/
showUISourceCode: function(uiSourceCode, lineNumber, columnNumber, forceShowInPanel)
{
- this._showSourceLocation(uiSourceCode, lineNumber, columnNumber, forceShowInPanel);
+ this._showEditor(forceShowInPanel);
+ this._sourcesEditor.showSourceLocation(uiSourceCode, lineNumber, columnNumber);
},
- /**
- * @param {boolean=} forceShowInPanel
- */
_showEditor: function(forceShowInPanel)
{
- if (this.sourcesView.isShowing())
+ if (this._sourcesEditor.sourcesView().isShowing())
return;
if (this._shouldShowEditorInDrawer() && !forceShowInPanel)
@@ -512,20 +329,12 @@ WebInspector.SourcesPanel.prototype = {
},
/**
- * @return {?WebInspector.UISourceCode}
- */
- currentUISourceCode: function()
- {
- return this._currentUISourceCode;
- },
-
- /**
* @param {!WebInspector.UILocation} uiLocation
* @param {boolean=} forceShowInPanel
*/
showUILocation: function(uiLocation, forceShowInPanel)
{
- this._showSourceLocation(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, forceShowInPanel);
+ this.showUISourceCode(uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber, forceShowInPanel);
},
/**
@@ -538,184 +347,20 @@ WebInspector.SourcesPanel.prototype = {
/**
* @param {!WebInspector.UISourceCode} uiSourceCode
- * @param {number=} lineNumber
- * @param {number=} columnNumber
- * @param {boolean=} forceShowInPanel
- * @param {boolean=} omitFocus
- * @param {boolean=} omitHighlight
- */
- _showSourceLocation: function(uiSourceCode, lineNumber, columnNumber, forceShowInPanel, omitFocus, omitHighlight)
- {
- this._showEditor(forceShowInPanel);
- this._historyManager.updateCurrentState();
- var sourceFrame = this._showFile(uiSourceCode);
- if (typeof lineNumber === "number")
- sourceFrame.revealPosition(lineNumber, columnNumber, !omitHighlight);
- this._historyManager.pushNewState();
- if (!omitFocus)
- sourceFrame.focus();
- WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
- action: WebInspector.UserMetrics.UserActionNames.OpenSourceLink,
- url: uiSourceCode.originURL(),
- lineNumber: lineNumber
- });
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- * @return {!WebInspector.SourceFrame}
- */
- _showFile: function(uiSourceCode)
- {
- var sourceFrame = this._getOrCreateSourceFrame(uiSourceCode);
- if (this._currentUISourceCode === uiSourceCode)
- return sourceFrame;
-
- this._currentUISourceCode = uiSourceCode;
- this._editorContainer.showFile(uiSourceCode);
- this._updateScriptViewStatusBarItems();
-
- if (this._currentUISourceCode.project().type() === WebInspector.projectTypes.Snippets)
- this._runSnippetButton.element.classList.remove("hidden");
- else
- this._runSnippetButton.element.classList.add("hidden");
-
- return sourceFrame;
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- * @return {!WebInspector.SourceFrame}
- */
- _createSourceFrame: function(uiSourceCode)
- {
- var sourceFrame;
- switch (uiSourceCode.contentType()) {
- case WebInspector.resourceTypes.Script:
- sourceFrame = new WebInspector.JavaScriptSourceFrame(this, uiSourceCode);
- break;
- case WebInspector.resourceTypes.Document:
- sourceFrame = new WebInspector.JavaScriptSourceFrame(this, uiSourceCode);
- break;
- case WebInspector.resourceTypes.Stylesheet:
- sourceFrame = new WebInspector.CSSSourceFrame(uiSourceCode);
- break;
- default:
- sourceFrame = new WebInspector.UISourceCodeFrame(uiSourceCode);
- break;
- }
- sourceFrame.setHighlighterType(uiSourceCode.highlighterType());
- this._sourceFramesByUISourceCode.put(uiSourceCode, sourceFrame);
- this._historyManager.trackSourceFrameCursorJumps(sourceFrame);
- return sourceFrame;
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- * @return {!WebInspector.SourceFrame}
- */
- _getOrCreateSourceFrame: function(uiSourceCode)
- {
- return this._sourceFramesByUISourceCode.get(uiSourceCode) || this._createSourceFrame(uiSourceCode);
- },
-
- /**
- * @param {!WebInspector.SourceFrame} sourceFrame
- * @param {!WebInspector.UISourceCode} uiSourceCode
- * @return {boolean}
- */
- _sourceFrameMatchesUISourceCode: function(sourceFrame, uiSourceCode)
- {
- switch (uiSourceCode.contentType()) {
- case WebInspector.resourceTypes.Script:
- case WebInspector.resourceTypes.Document:
- return sourceFrame instanceof WebInspector.JavaScriptSourceFrame;
- case WebInspector.resourceTypes.Stylesheet:
- return sourceFrame instanceof WebInspector.CSSSourceFrame;
- default:
- return !(sourceFrame instanceof WebInspector.JavaScriptSourceFrame);
- }
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- */
- _recreateSourceFrameIfNeeded: function(uiSourceCode)
- {
- var oldSourceFrame = this._sourceFramesByUISourceCode.get(uiSourceCode);
- if (!oldSourceFrame)
- return;
- if (this._sourceFrameMatchesUISourceCode(oldSourceFrame, uiSourceCode)) {
- oldSourceFrame.setHighlighterType(uiSourceCode.highlighterType());
- } else {
- this._editorContainer.removeUISourceCode(uiSourceCode);
- this._removeSourceFrame(uiSourceCode);
- }
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- * @return {!WebInspector.SourceFrame}
- */
- viewForFile: function(uiSourceCode)
- {
- return this._getOrCreateSourceFrame(uiSourceCode);
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
*/
_revealInNavigator: function(uiSourceCode)
{
this._navigator.revealUISourceCode(uiSourceCode);
},
- /**
- * @return {?WebInspector.UISourceCode}
- */
- selectedUISourceCode: function()
- {
- return this._currentUISourceCode;
- },
-
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- */
- _removeSourceFrame: function(uiSourceCode)
- {
- var sourceFrame = this._sourceFramesByUISourceCode.get(uiSourceCode);
- if (!sourceFrame)
- return;
- this._sourceFramesByUISourceCode.remove(uiSourceCode);
- sourceFrame.dispose();
- },
-
- _clearCurrentExecutionLine: function()
- {
- if (this._executionSourceFrame)
- this._executionSourceFrame.clearExecutionLine();
- delete this._executionSourceFrame;
- },
-
- _setExecutionLine: function(uiLocation)
- {
- var sourceFrame = this._getOrCreateSourceFrame(uiLocation.uiSourceCode);
- sourceFrame.setExecutionLine(uiLocation.lineNumber);
- this._executionSourceFrame = sourceFrame;
- },
-
_executionLineChanged: function(uiLocation)
{
- this._historyManager.updateCurrentState();
- this._clearCurrentExecutionLine();
- this._setExecutionLine(uiLocation);
-
- var uiSourceCode = uiLocation.uiSourceCode;
- var scriptFile = this._currentUISourceCode ? this._currentUISourceCode.scriptFile() : null;
+ this._sourcesEditor.clearCurrentExecutionLine();
+ this._sourcesEditor.setExecutionLine(uiLocation);
if (this._skipExecutionLineRevealing)
return;
this._skipExecutionLineRevealing = true;
- this._showSourceLocation(uiSourceCode, uiLocation.lineNumber, 0, undefined, undefined, true);
+ this._sourcesEditor.showSourceLocation(uiLocation.uiSourceCode, uiLocation.lineNumber, 0, undefined, true);
},
_callFrameSelected: function(event)
@@ -731,50 +376,13 @@ WebInspector.SourcesPanel.prototype = {
callFrame.createLiveLocation(this._executionLineChanged.bind(this));
},
- _editorClosed: function(event)
- {
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
- this._historyManager.removeHistoryForSourceCode(uiSourceCode);
-
- var wasSelected = false;
- if (this._currentUISourceCode === uiSourceCode) {
- delete this._currentUISourceCode;
- wasSelected = true;
- }
-
- // SourcesNavigator does not need to update on EditorClosed.
- this._updateScriptViewStatusBarItems();
- this._searchableView.resetSearch();
-
- var data = {};
- data.uiSourceCode = uiSourceCode;
- data.wasSelected = wasSelected;
- this.dispatchEventToListeners(WebInspector.SourcesPanel.Events.EditorClosed, data);
- },
-
- _editorSelected: function(event)
- {
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data.currentFile);
- var shouldUseHistoryManager = uiSourceCode !== this._currentUISourceCode && event.data.userGesture;
- if (shouldUseHistoryManager)
- this._historyManager.updateCurrentState();
- var sourceFrame = this._showFile(uiSourceCode);
- if (shouldUseHistoryManager)
- this._historyManager.pushNewState();
-
- this._searchableView.setReplaceable(!!sourceFrame && sourceFrame.canEditSource());
- this._searchableView.resetSearch();
-
- this.dispatchEventToListeners(WebInspector.SourcesPanel.Events.EditorSelected, uiSourceCode);
- },
-
/**
* @param {!WebInspector.Event} event
*/
_sourceSelected: function(event)
{
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data.uiSourceCode);
- this._showSourceLocation(uiSourceCode, undefined, undefined, undefined, !event.data.focusSource)
+ this._sourcesEditor.showSourceLocation(uiSourceCode, undefined, undefined, !event.data.focusSource)
},
/**
@@ -783,7 +391,7 @@ WebInspector.SourcesPanel.prototype = {
_sourceRenamed: function(event)
{
var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
- this._recreateSourceFrameIfNeeded(uiSourceCode);
+ this._sourcesEditor.sourceRenamed(uiSourceCode);
},
_pauseOnExceptionEnabledChanged: function()
@@ -826,7 +434,7 @@ WebInspector.SourcesPanel.prototype = {
this.sidebarPanes.eventListenerBreakpoints.clearBreakpointHighlight();
this.sidebarPanes.xhrBreakpoints.clearBreakpointHighlight();
- this._clearCurrentExecutionLine();
+ this._sourcesEditor.clearCurrentExecutionLine();
this._updateDebuggerButtons();
},
@@ -840,13 +448,42 @@ WebInspector.SourcesPanel.prototype = {
*/
_runSnippet: function()
{
- if (this._currentUISourceCode.project().type() !== WebInspector.projectTypes.Snippets)
+ var uiSourceCode = this._sourcesEditor.currentUISourceCode();
+ if (uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets)
return false;
- WebInspector.scriptSnippetModel.evaluateScriptSnippet(this._currentUISourceCode);
+ WebInspector.scriptSnippetModel.evaluateScriptSnippet(uiSourceCode);
return true;
},
/**
+ * @param {!WebInspector.Event} event
+ */
+ _editorSelected: function(event)
+ {
+ var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
+ this._editorChanged(uiSourceCode);
+ },
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _editorClosed: function(event)
+ {
+ var wasSelected = /** @type {boolean} */ (event.data.wasSelected);
+ if (wasSelected)
+ this._editorChanged(null);
+ },
+
+ /**
+ * @param {?WebInspector.UISourceCode} uiSourceCode
+ */
+ _editorChanged: function(uiSourceCode)
+ {
+ var isSnippet = uiSourceCode && uiSourceCode.project().type() === WebInspector.projectTypes.Snippets;
+ this._runSnippetButton.element.classList.toggle("hidden", !isSnippet);
+ },
+
+ /**
* @return {boolean}
*/
_togglePause: function()
@@ -970,15 +607,12 @@ WebInspector.SourcesPanel.prototype = {
{
var active = event.data;
this._toggleBreakpointsButton.toggled = !active;
- if (active) {
+ this.sidebarPanes.jsBreakpoints.listElement.classList.toggle("breakpoints-list-deactivated", !active);
+ this._sourcesEditor.toggleBreakpointsActiveState(active);
+ if (active)
this._toggleBreakpointsButton.title = WebInspector.UIString("Deactivate breakpoints.");
- this._editorContainer.view.element.classList.remove("breakpoints-deactivated");
- this.sidebarPanes.jsBreakpoints.listElement.classList.remove("breakpoints-list-deactivated");
- } else {
+ else
this._toggleBreakpointsButton.title = WebInspector.UIString("Activate breakpoints.");
- this._editorContainer.view.element.classList.add("breakpoints-deactivated");
- this.sidebarPanes.jsBreakpoints.listElement.classList.add("breakpoints-list-deactivated");
- }
},
_createDebugToolbar: function()
@@ -1080,162 +714,11 @@ WebInspector.SourcesPanel.prototype = {
return button;
},
- searchCanceled: function()
- {
- if (this._searchView)
- this._searchView.searchCanceled();
-
- delete this._searchView;
- delete this._searchQuery;
- },
-
- /**
- * @param {string} query
- * @param {boolean} shouldJump
- */
- performSearch: function(query, shouldJump)
- {
- this._searchableView.updateSearchMatchesCount(0);
-
- var sourceFrame = this.currentSourceFrame();
- if (!sourceFrame)
- return;
-
- this._searchView = sourceFrame;
- this._searchQuery = query;
-
- /**
- * @param {!WebInspector.View} view
- * @param {number} searchMatches
- * @this {WebInspector.SourcesPanel}
- */
- function finishedCallback(view, searchMatches)
- {
- if (!searchMatches)
- return;
-
- this._searchableView.updateSearchMatchesCount(searchMatches);
- }
-
- /**
- * @param {number} currentMatchIndex
- * @this {WebInspector.SourcesPanel}
- */
- function currentMatchChanged(currentMatchIndex)
- {
- this._searchableView.updateCurrentMatchIndex(currentMatchIndex);
- }
-
- /**
- * @this {WebInspector.SourcesPanel}
- */
- function searchResultsChanged()
- {
- this._searchableView.cancelSearch();
- }
-
- this._searchView.performSearch(query, shouldJump, finishedCallback.bind(this), currentMatchChanged.bind(this), searchResultsChanged.bind(this));
- },
-
- jumpToNextSearchResult: function()
- {
- if (!this._searchView)
- return;
-
- if (this._searchView !== this.currentSourceFrame()) {
- this.performSearch(this._searchQuery, true);
- return;
- }
-
- this._searchView.jumpToNextSearchResult();
- },
-
- jumpToPreviousSearchResult: function()
- {
- if (!this._searchView)
- return;
-
- if (this._searchView !== this.currentSourceFrame()) {
- this.performSearch(this._searchQuery, true);
- if (this._searchView)
- this._searchView.jumpToLastSearchResult();
- return;
- }
-
- this._searchView.jumpToPreviousSearchResult();
- },
-
- /**
- * @param {string} text
- */
- replaceSelectionWith: function(text)
- {
- var sourceFrame = this.currentSourceFrame();
- if (!sourceFrame) {
- console.assert(sourceFrame);
- return;
- }
- sourceFrame.replaceSelectionWith(text);
- },
-
- /**
- * @param {string} query
- * @param {string} text
- */
- replaceAllWith: function(query, text)
- {
- var sourceFrame = this.currentSourceFrame();
- if (!sourceFrame) {
- console.assert(sourceFrame);
- return;
- }
- sourceFrame.replaceAllWith(query, text);
- },
-
addToWatch: function(expression)
{
this.sidebarPanes.watchExpressions.addExpression(expression);
},
- /**
- * @return {boolean}
- */
- _toggleBreakpoint: function()
- {
- var sourceFrame = this.currentSourceFrame();
- if (!sourceFrame)
- return false;
-
- if (sourceFrame instanceof WebInspector.JavaScriptSourceFrame) {
- var javaScriptSourceFrame = /** @type {!WebInspector.JavaScriptSourceFrame} */ (sourceFrame);
- javaScriptSourceFrame.toggleBreakpointOnCurrentLine();
- return true;
- }
- return false;
- },
-
- /**
- * @param {?Event=} event
- * @return {boolean}
- */
- _showOutlineDialog: function(event)
- {
- var uiSourceCode = this._editorContainer.currentFile();
- if (!uiSourceCode)
- return false;
-
- switch (uiSourceCode.contentType()) {
- case WebInspector.resourceTypes.Document:
- case WebInspector.resourceTypes.Script:
- WebInspector.JavaScriptOutlineDialog.show(this.visibleView, uiSourceCode, this.showUISourceCode.bind(this, uiSourceCode));
- return true;
- case WebInspector.resourceTypes.Stylesheet:
- WebInspector.StyleSheetOutlineDialog.show(this.visibleView, uiSourceCode, this.showUISourceCode.bind(this, uiSourceCode));
- return true;
- }
- return false;
- },
-
_installDebuggerSidebarController: function()
{
this._toggleNavigatorSidebarButton = this.editorView.createShowHideSidebarButton("navigator", "scripts-navigator-show-hide-button");
@@ -1423,32 +906,9 @@ WebInspector.SourcesPanel.prototype = {
contextMenu.appendItem(WebInspector.UIString(WebInspector.useLowerCaseMenuTitles() ? "Show function definition" : "Show Function Definition"), revealFunction.bind(this));
},
- /**
- * @param {string=} query
- */
- _showOpenResourceDialog: function(query)
- {
- var uiSourceCodes = this._editorContainer.historyUISourceCodes();
- /** @type {!Map.<!WebInspector.UISourceCode, number>} */
- var defaultScores = new Map();
- for (var i = 1; i < uiSourceCodes.length; ++i) // Skip current element
- defaultScores.put(uiSourceCodes[i], uiSourceCodes.length - i);
- WebInspector.OpenResourceDialog.show(this, this.editorView.mainElement(), query, defaultScores);
- },
-
- /**
- * @param {?Event=} event
- * @return {boolean}
- */
- _showGoToLineDialog: function(event)
- {
- this._showOpenResourceDialog(":");
- return true;
- },
-
showGoToSourceDialog: function()
{
- this._showOpenResourceDialog();
+ this._sourcesEditor.showOpenResourceDialog();
},
_dockSideChanged: function()
@@ -1471,9 +931,9 @@ WebInspector.SourcesPanel.prototype = {
this._splitView.setVertical(!vertically);
if (!vertically)
- this._splitView.uninstallResizer(this._statusBarContainerElement);
+ this._splitView.uninstallResizer(this._sourcesEditor.statusBarContainerElement());
else
- this._splitView.installResizer(this._statusBarContainerElement);
+ this._splitView.installResizer(this._sourcesEditor.statusBarContainerElement());
// Create vertical box with stack.
var vbox = new WebInspector.VBox();
@@ -1538,11 +998,11 @@ WebInspector.SourcesPanel.prototype = {
},
/**
- * @return {!WebInspector.TabbedEditorContainer}
+ * @return {!WebInspector.SourcesEditor}
*/
- get tabbedEditorContainer()
+ sourcesEditor: function()
{
- return this._editorContainer;
+ return this._sourcesEditor;
},
__proto__: WebInspector.Panel.prototype
@@ -1550,69 +1010,6 @@ WebInspector.SourcesPanel.prototype = {
/**
* @constructor
- * @extends {WebInspector.VBox}
- */
-WebInspector.SourcesView = function()
-{
- WebInspector.VBox.call(this);
- this.registerRequiredCSS("sourcesView.css");
- this.element.id = "sources-panel-sources-view";
- this.element.addEventListener("dragenter", this._onDragEnter.bind(this), true);
- this.element.addEventListener("dragover", this._onDragOver.bind(this), true);
-}
-
-WebInspector.SourcesView.dragAndDropFilesType = "Files";
-
-WebInspector.SourcesView.prototype = {
- _onDragEnter: function (event)
- {
- if (event.dataTransfer.types.indexOf(WebInspector.SourcesView.dragAndDropFilesType) === -1)
- return;
- event.consume(true);
- },
-
- _onDragOver: function (event)
- {
- if (event.dataTransfer.types.indexOf(WebInspector.SourcesView.dragAndDropFilesType) === -1)
- return;
- event.consume(true);
- if (this._dragMaskElement)
- return;
- this._dragMaskElement = this.element.createChild("div", "fill drag-mask");
- this._dragMaskElement.addEventListener("drop", this._onDrop.bind(this), true);
- this._dragMaskElement.addEventListener("dragleave", this._onDragLeave.bind(this), true);
- },
-
- _onDrop: function (event)
- {
- event.consume(true);
- this._removeMask();
- var items = /** @type {!Array.<!DataTransferItem>} */ (event.dataTransfer.items);
- if (!items.length)
- return;
- var entry = items[0].webkitGetAsEntry();
- if (!entry.isDirectory)
- return;
- InspectorFrontendHost.upgradeDraggedFileSystemPermissions(entry.filesystem);
- },
-
- _onDragLeave: function (event)
- {
- event.consume(true);
- this._removeMask();
- },
-
- _removeMask: function ()
- {
- this._dragMaskElement.remove();
- delete this._dragMaskElement;
- },
-
- __proto__: WebInspector.VBox.prototype
-}
-
-/**
- * @constructor
* @implements {WebInspector.DrawerEditor}
*/
WebInspector.SourcesPanel.DrawerEditor = function()
@@ -1708,18 +1105,3 @@ WebInspector.SourcesPanel.UILocationRevealer.prototype = {
/** @type {!WebInspector.SourcesPanel} */ (WebInspector.inspectorView.panel("sources")).showUILocation(uiLocation);
}
}
-
-/**
- * @interface
- */
-WebInspector.SourcesPanel.EditorAction = function()
-{
-}
-
-WebInspector.SourcesPanel.EditorAction.prototype = {
- /**
- * @param {!WebInspector.SourcesPanel} panel
- * @return {!Element}
- */
- button: function(panel) { }
-}

Powered by Google App Engine
This is Rietveld 408576698