Title: [120184] trunk/Source/WebCore
Revision
120184
Author
[email protected]
Date
2012-06-13 04:38:50 -0700 (Wed, 13 Jun 2012)

Log Message

Web Inspector: Make "Go to source and line" possible with "go to file" dialog
https://bugs.webkit.org/show_bug.cgi?id=88740

Reviewed by Vsevolod Vlasov.

Selection dialog now allows search query rewrite and uses line number
suffix to go to a particular line.

* inspector/front-end/FilteredItemSelectionDialog.js:
(WebInspector.FilteredItemSelectionDialog.prototype.onEnter):
(WebInspector.FilteredItemSelectionDialog.prototype._createSearchRegExp):
(WebInspector.SelectionDialogContentProvider.prototype.selectItem):
(WebInspector.SelectionDialogContentProvider.prototype.rewriteQuery):
(WebInspector._javascript_OutlineDialog.prototype.selectItem):
(WebInspector._javascript_OutlineDialog.prototype.rewriteQuery):
(WebInspector.OpenResourceDialog.prototype.selectItem):
(WebInspector.OpenResourceDialog.prototype.rewriteQuery):
* inspector/front-end/ScriptsPanel.js:
(WebInspector.ScriptsPanel.prototype.showUISourceCode):
* inspector/front-end/StylesPanel.js:
(WebInspector.StyleSheetOutlineDialog.prototype.selectItem):
(WebInspector.StyleSheetOutlineDialog.prototype.rewriteQuery):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (120183 => 120184)


--- trunk/Source/WebCore/ChangeLog	2012-06-13 11:31:20 UTC (rev 120183)
+++ trunk/Source/WebCore/ChangeLog	2012-06-13 11:38:50 UTC (rev 120184)
@@ -1203,6 +1203,41 @@
 
 2012-06-12  Pavel Feldman  <[email protected]>
 
+        Web Inspector: show revisions of all modified files in local modifications view
+        https://bugs.webkit.org/show_bug.cgi?id=88864
+
+        Reviewed by Vsevolod Vlasov.
+
+        This change allows all local modifications to be seen in a single view. View is now
+        singleton, listening to all revisions being added. Revert captions were reworked
+        (see the screenshot).
+
+        * English.lproj/localizedStrings.js:
+        * inspector/front-end/Resource.js:
+        * inspector/front-end/RevisionHistoryView.js:
+        (WebInspector.RevisionHistoryView.populateRevisions):
+        (WebInspector.RevisionHistoryView):
+        (WebInspector.RevisionHistoryView.showHistory):
+        (WebInspector.RevisionHistoryView.reset):
+        (WebInspector.RevisionHistoryView.prototype._createResourceItem.clearHistory):
+        (WebInspector.RevisionHistoryView.prototype._createResourceItem):
+        (WebInspector.RevisionHistoryView.prototype._revisionAdded.get if):
+        (WebInspector.RevisionHistoryView.prototype._revisionAdded):
+        (WebInspector.RevisionHistoryView.prototype._revealResource.get if):
+        (WebInspector.RevisionHistoryView.prototype._revealResource):
+        (WebInspector.RevisionHistoryView.prototype._reset):
+        (WebInspector.RevisionHistoryTreeElement):
+        (WebInspector.RevisionHistoryTreeElement.prototype.onattach):
+        (WebInspector.RevisionHistoryTreeElement.prototype.oncollapse):
+        * inspector/front-end/ScriptsPanel.js:
+        (WebInspector.ScriptsPanel.prototype._reset):
+        (WebInspector.ScriptsPanel.prototype._editorSelected):
+        * inspector/front-end/revisionHistory.css:
+        (.revision-history-link-row):
+        (.revision-history-drawer li.revision-history-revision):
+
+2012-06-12  Pavel Feldman  <[email protected]>
+
         Web Inspector: allow clearing revision history.
         https://bugs.webkit.org/show_bug.cgi?id=88847
 

Modified: trunk/Source/WebCore/English.lproj/localizedStrings.js (120183 => 120184)


--- trunk/Source/WebCore/English.lproj/localizedStrings.js	2012-06-13 11:31:20 UTC (rev 120183)
+++ trunk/Source/WebCore/English.lproj/localizedStrings.js	2012-06-13 11:38:50 UTC (rev 120184)
@@ -699,5 +699,6 @@
 localizedStrings["Go to source"] = "Go to source";
 localizedStrings["Delete profile"] = "Delete profile";
 localizedStrings["Local modifications..."] = "Local modifications...";
-localizedStrings["revert to original"] = "revert to original";
-localizedStrings["revert and clear history"] = "revert and clear history";
+localizedStrings["apply original content"] = "apply original content";
+localizedStrings["apply revision content"] = "apply revision content";
+localizedStrings["revert"] = "revert";

Modified: trunk/Source/WebCore/inspector/front-end/RevisionHistoryView.js (120183 => 120184)


--- trunk/Source/WebCore/inspector/front-end/RevisionHistoryView.js	2012-06-13 11:31:20 UTC (rev 120183)
+++ trunk/Source/WebCore/inspector/front-end/RevisionHistoryView.js	2012-06-13 11:38:50 UTC (rev 120184)
@@ -31,63 +31,31 @@
 /**
  * @constructor
  * @extends {WebInspector.View}
- * @param {WebInspector.UISourceCode} uiSourceCode
  */
-WebInspector.RevisionHistoryView = function(uiSourceCode)
+WebInspector.RevisionHistoryView = function()
 {
     WebInspector.View.call(this);
     this.registerRequiredCSS("revisionHistory.css");
     this.element.addStyleClass("revision-history-drawer");
     this.element.addStyleClass("fill");
     this.element.addStyleClass("outline-disclosure");
+    this._resourceItems = new Map();
 
-    this._uiSourceCode = uiSourceCode;
-    this._resource = uiSourceCode.resource();
+    var olElement = this.element.createChild("ol");
+    this._treeOutline = new TreeOutline(olElement);
 
-    var revisionCount = 0;
-    if (!this._resource || !this._resource.history.length) {
-        var label = this.element.createChild("div", "storage-empty-view");
-        label.textContent = WebInspector.UIString("No revisions");
-    } else {
-        var olElement = this.element.createChild("ol");
-        this._treeOutline = new TreeOutline(olElement);
-        revisionCount = this._resource.history.length;
+    function populateRevisions(resource)
+    {
+        if (resource.history.length)
+            this._createResourceItem(resource);
+    }
 
-        for (var i = revisionCount - 1; i >= 0; --i) {
-            var revision = this._resource.history[i];
-            var historyItem = new WebInspector.RevisionHistoryTreeElement(revision, this._resource.history[i - 1], i !== revisionCount - 1);
-            this._treeOutline.appendChild(historyItem);
-        }
+    WebInspector.resourceTreeModel.forAllResources(populateRevisions.bind(this));
+    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.ResourceContentCommitted, this._revisionAdded, this);
 
-        var baseItem = new TreeElement("", null, false);
-        baseItem.selectable = false;
-        this._treeOutline.appendChild(baseItem);
-
-        var revertToOriginal = baseItem.listItemElement.createChild("span", "revision-history-link");
-        revertToOriginal.textContent = WebInspector.UIString("revert to original");
-        revertToOriginal.addEventListener("click", this._resource.revertToOriginal.bind(this._resource));
-
-        function clearHistory()
-        {
-            this._resource.revertAndClearHistory();
-            WebInspector.RevisionHistoryView.showHistory(uiSourceCode);
-        }
-
-        var clearHistoryElement = baseItem.listItemElement.createChild("span", "revision-history-link");
-        clearHistoryElement.textContent = WebInspector.UIString("revert and clear history");
-        clearHistoryElement.addEventListener("click", clearHistory.bind(this));
-    }
-
     this._statusElement = document.createElement("span");
-    if (!revisionCount)
-        this._statusElement.textContent = WebInspector.UIString("%s: no revisions", uiSourceCode.parsedURL.displayName);
-    else if (revisionCount === 1)
-        this._statusElement.textContent = WebInspector.UIString("%s: 1 revision", uiSourceCode.parsedURL.displayName);
-    else
-        this._statusElement.textContent = WebInspector.UIString("%s: %s revisions", uiSourceCode.parsedURL.displayName, revisionCount);
+    this._statusElement.textContent = WebInspector.UIString("Local modifications");
 
-    if (this._resource)
-        this._resource.addEventListener(WebInspector.Resource.Events.RevisionAdded, this._revisionAdded, this);
 }
 
 /**
@@ -95,39 +63,100 @@
  */
 WebInspector.RevisionHistoryView.showHistory = function(uiSourceCode)
 {
-    var view = new WebInspector.RevisionHistoryView(uiSourceCode);
-    WebInspector.showViewInDrawer(view._statusElement, view, view._onclose.bind(view));
-    WebInspector.RevisionHistoryView._revisionHistoryShowing = true;
+    if (!WebInspector.RevisionHistoryView._view) 
+        WebInspector.RevisionHistoryView._view = new WebInspector.RevisionHistoryView();
+    var view = WebInspector.RevisionHistoryView._view;
+    WebInspector.showViewInDrawer(view._statusElement, view);
+    view._revealResource(uiSourceCode.resource());
 }
 
-/**
- * @param {WebInspector.UISourceCode} uiSourceCode
- */
-WebInspector.RevisionHistoryView.uiSourceCodeSelected = function(uiSourceCode)
+WebInspector.RevisionHistoryView.reset = function()
 {
-    if (WebInspector.RevisionHistoryView._revisionHistoryShowing)
-        WebInspector.RevisionHistoryView.showHistory(uiSourceCode);
+    if (WebInspector.RevisionHistoryView._view)
+        WebInspector.RevisionHistoryView._view._reset();
 }
 
 WebInspector.RevisionHistoryView.prototype = {
+    /**
+     * @param {WebInspector.Resource} resource
+     */
+    _createResourceItem: function(resource)
+    {
+        var resourceItem = new TreeElement(resource.displayName, null, true);
+        resourceItem.selectable = false;
+
+        // Insert in sorted order
+        for (var i = 0; i < this._treeOutline.children.length; ++i) {
+            if (this._treeOutline.children[i].title.localeCompare(resource.displayName) > 0) {
+                this._treeOutline.insertChild(resourceItem, i);
+                break;
+            }
+        }
+        if (i === this._treeOutline.children.length)
+            this._treeOutline.appendChild(resourceItem);
+
+        this._resourceItems.put(resource, resourceItem);
+
+        var revisionCount = resource.history.length;
+        for (var i = revisionCount - 1; i >= 0; --i) {
+            var revision = resource.history[i];
+            var historyItem = new WebInspector.RevisionHistoryTreeElement(revision, resource.history[i - 1], i !== revisionCount - 1);
+            resourceItem.appendChild(historyItem);
+        }
+
+        var linkItem = new TreeElement("", null, false);
+        linkItem.selectable = false;
+        resourceItem.appendChild(linkItem);
+
+        var revertToOriginal = linkItem.listItemElement.createChild("span", "revision-history-link revision-history-link-row");
+        revertToOriginal.textContent = WebInspector.UIString("apply original content");
+        revertToOriginal.addEventListener("click", resource.revertToOriginal.bind(resource));
+
+        function clearHistory()
+        {
+            resource.revertAndClearHistory();
+            this._treeOutline.removeChild(resourceItem);
+            this._resourceItems.remove(resource);
+        }
+
+        var clearHistoryElement = resourceItem.listItemElement.createChild("span", "revision-history-link");
+        clearHistoryElement.textContent = WebInspector.UIString("revert");
+        clearHistoryElement.addEventListener("click", clearHistory.bind(this));
+        return resourceItem;
+    },
+
     _revisionAdded: function(event)
     {
-        if (this._resource.history.length === 1) {
-            WebInspector.RevisionHistoryView.showHistory(this._uiSourceCode);
+        var resource = /** @type {WebInspector.Resource} */ event.data.resource;
+        var resourceItem = this._resourceItems.get(resource);
+        if (!resourceItem) {
+            resourceItem = this._createResourceItem(resource);
             return;
         }
-        var historyLength = this._resource.history.length;
-        var historyItem = new WebInspector.RevisionHistoryTreeElement(this._resource.history[historyLength - 1], this._resource.history[historyLength - 2], false);
-        if (this._treeOutline.children.length)
-            this._treeOutline.children[0].allowRevert();
-        this._treeOutline.insertChild(historyItem, 0);
+
+        var historyLength = resource.history.length;
+        var historyItem = new WebInspector.RevisionHistoryTreeElement(resource.history[historyLength - 1], resource.history[historyLength - 2], false);
+        if (resourceItem.children.length)
+            resourceItem.children[0].allowRevert();
+        resourceItem.insertChild(historyItem, 0);
     },
 
-    _onclose: function()
+    /**
+     * @param {WebInspector.Resource} resource
+     */
+    _revealResource: function(resource)
     {
-        if (this._resource)
-            this._resource.removeEventListener(WebInspector.Resource.Events.RevisionAdded, this._revisionAdded, this);
-        delete WebInspector.RevisionHistoryView._revisionHistoryShowing;
+        var resourceItem = this._resourceItems.get(resource);
+        if (resourceItem) {
+            resourceItem.reveal();
+            resourceItem.expand();
+        }
+    },
+
+    _reset: function()
+    {
+        this._treeOutline.removeChildren();
+        this._resourceItems.clear();
     }
 }
 
@@ -142,25 +171,30 @@
  */
 WebInspector.RevisionHistoryTreeElement = function(revision, baseRevision, allowRevert)
 {
-    var titleElement = document.createElement("span");
-    titleElement.textContent = revision.timestamp.toLocaleTimeString();
-
-    TreeElement.call(this, titleElement, null, true);
+    TreeElement.call(this, revision.timestamp.toLocaleTimeString(), null, true);
     this.selectable = false;
 
     this._revision = revision;
     this._baseRevision = baseRevision;
 
-    this._revertElement = titleElement.createChild("span", "revision-history-link");
-    this._revertElement.textContent = WebInspector.UIString("revert to this");
+    this._revertElement = document.createElement("span");
+    this._revertElement.className = "revision-history-link";
+    this._revertElement.textContent = WebInspector.UIString("apply revision content");
     this._revertElement.addEventListener("click", this._revision.revertToThis.bind(this._revision), false);
     if (!allowRevert)
         this._revertElement.addStyleClass("hidden");
 }
 
 WebInspector.RevisionHistoryTreeElement.prototype = {
+    onattach: function()
+    {
+        this.listItemElement.addStyleClass("revision-history-revision");
+    },
+
     onexpand: function()
     {
+        this.listItemElement.appendChild(this._revertElement);
+
         if (this._wasExpandedOnce)
             return;
         this._wasExpandedOnce = true;
@@ -219,6 +253,12 @@
         }
     },
 
+    oncollapse: function()
+    {
+        if (this._revertElement.parentElement)
+            this._revertElement.parentElement.removeChild(this._revertElement);
+    },
+
     /**
      * @param {?number} baseLineNumber
      * @param {?number} newLineNumber

Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (120183 => 120184)


--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2012-06-13 11:31:20 UTC (rev 120183)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2012-06-13 11:38:50 UTC (rev 120184)
@@ -369,11 +369,12 @@
         this._navigator.reset();
         this._editorContainer.reset();
         this._updateScriptViewStatusBarItems();
-
         this.sidebarPanes.jsBreakpoints.reset();
         this.sidebarPanes.watchExpressions.reset();
         if (!preserveItems && this.sidebarPanes.workers)
             this.sidebarPanes.workers.reset();
+        WebInspector.RevisionHistoryView.reset();
+
         this._loadUISourceCodes();
     },
 
@@ -580,7 +581,6 @@
     _editorSelected: function(event)
     {
         var uiSourceCode = /** @type {WebInspector.UISourceCode} */ event.data;
-        WebInspector.RevisionHistoryView.uiSourceCodeSelected(uiSourceCode);
         this._showFile(uiSourceCode);
         this._navigatorController.hideNavigatorOverlay();
     },

Modified: trunk/Source/WebCore/inspector/front-end/revisionHistory.css (120183 => 120184)


--- trunk/Source/WebCore/inspector/front-end/revisionHistory.css	2012-06-13 11:31:20 UTC (rev 120183)
+++ trunk/Source/WebCore/inspector/front-end/revisionHistory.css	2012-06-13 11:38:50 UTC (rev 120184)
@@ -59,6 +59,10 @@
     padding: 0 4px;
 }
 
+.revision-history-link-row {
+    padding-left: 16px;
+}
+
 .outline-disclosure.revision-history-drawer .revision-history-line {
     padding-left: 0;
     -webkit-user-select: text;
@@ -69,6 +73,10 @@
     background-color: #F0F0F0;    
 }
 
+.revision-history-drawer li.revision-history-revision {
+    padding-left: 16px;
+}
+
 .revision-history-line-added {
     background-color: rgb(153, 238, 153);
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to