+2012-07-02 Taiju Tsuiki <tzik@chromium.org>
+
+ Web Inspector: Add DirectoryContentView for FileSystemView
+ https://bugs.webkit.org/show_bug.cgi?id=89961
+
+ Reviewed by Vsevolod Vlasov.
+
+ * WebCore.gypi:
+ * WebCore.vcproj/WebCore.vcproj:
+ * inspector/compile-front-end.py:
+ * inspector/front-end/DirectoryContentView.js: Added.
+ * inspector/front-end/FileSystemView.js:
+ (WebInspector.FileSystemView):
+ (WebInspector.FileSystemView.EntryTreeElement.prototype.onattach):
+ (WebInspector.FileSystemView.EntryTreeElement.prototype.onselect):
+ (WebInspector.FileSystemView.EntryTreeElement.prototype._directoryContentReceived):
+ * inspector/front-end/WebKit.qrc:
+ * inspector/front-end/inspector.html:
+
2012-07-02 Christophe Dumez <christophe.dumez@intel.com>
[EFL] Fix compilation error in GamepadsEfl.cpp in debug mode
--- /dev/null
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @constructor
+ * @extends {WebInspector.DataGrid}
+ */
+WebInspector.DirectoryContentView = function()
+{
+ const indexes = WebInspector.DirectoryContentView.columnIndexes;
+ var columns = {};
+ columns[indexes.Name] = {};
+ columns[indexes.Name].title = WebInspector.UIString("Name");
+ columns[indexes.Name].width = "20%";
+ columns[indexes.URL] = {};
+ columns[indexes.URL].title = WebInspector.UIString("URL");
+ columns[indexes.URL].width = "20%";
+ columns[indexes.Type] = {};
+ columns[indexes.Type].title = WebInspector.UIString("Type");
+ columns[indexes.Type].width = "15%";
+ columns[indexes.Size] = {};
+ columns[indexes.Size].title = WebInspector.UIString("Size");
+ columns[indexes.Size].width = "10%";
+ columns[indexes.ModificationTime] = {};
+ columns[indexes.ModificationTime].title = WebInspector.UIString("Modification Time");
+ columns[indexes.ModificationTime].width = "25%";
+
+ WebInspector.DataGrid.call(this, columns);
+}
+
+WebInspector.DirectoryContentView.columnIndexes = {
+ Name: "0",
+ URL: "1",
+ Type: "2",
+ Size: "3",
+ ModificationTime: "4"
+}
+
+WebInspector.DirectoryContentView.prototype = {
+ /**
+ * @param {Array.<WebInspector.FileSystemModel.Directory>} entries
+ */
+ showEntries: function(entries)
+ {
+ const indexes = WebInspector.DirectoryContentView.columnIndexes;
+ this.rootNode().removeChildren();
+ for (var i = 0; i < entries.length; ++i)
+ this.rootNode().appendChild(new WebInspector.DirectoryContentView.Node(entries[i]));
+ }
+}
+
+WebInspector.DirectoryContentView.prototype.__proto__ = WebInspector.DataGrid.prototype;
+
+/**
+ * @constructor
+ * @extends {WebInspector.DataGridNode}
+ * @param {WebInspector.FileSystemModel.Entry} entry
+ */
+WebInspector.DirectoryContentView.Node = function(entry)
+{
+ const indexes = WebInspector.DirectoryContentView.columnIndexes;
+ var data = {};
+ data[indexes.Name] = entry.name;
+ data[indexes.URL] = entry.url;
+ data[indexes.Type] = entry.isDirectory ? WebInspector.UIString("Directory") : entry.mimeType;
+ data[indexes.Size] = "";
+ data[indexes.ModificationTime] = "";
+
+ WebInspector.DataGridNode.call(this, data);
+ this._entry = entry;
+ this._metadata = null;
+
+ this._entry.requestMetadata(this._metadataReceived.bind(this));
+}
+
+WebInspector.DirectoryContentView.Node.prototype = {
+ /**
+ * @param {number} errorCode
+ * @param {FileSystemAgent.Metadata} metadata
+ */
+ _metadataReceived: function(errorCode, metadata)
+ {
+ const indexes = WebInspector.DirectoryContentView.columnIndexes;
+ if (errorCode !== 0)
+ return;
+
+ this._metadata = metadata;
+ var data = this.data;
+ if ("size" in metadata)
+ data[indexes.Size] = Number.bytesToString(metadata.size);
+ data[indexes.ModificationTime] = new Date(metadata.modificationTime).toGMTString();
+ this.data = data;
+ }
+}
+
+WebInspector.DirectoryContentView.Node.prototype.__proto__ = WebInspector.DataGridNode.prototype;
{
WebInspector.SplitView.call(this, WebInspector.SplitView.SidebarPosition.Left, "FileSystemViewSidebarWidth");
this.element.addStyleClass("file-system-view");
+ this.element.addStyleClass("storage-view");
var directoryTreeElement = this.element.createChild("ol", "filesystem-directory-tree");
this.directoryTree = new TreeOutline(directoryTreeElement);
{
var selection = this.listItemElement.createChild("div", "selection");
this.listItemElement.insertBefore(selection, this.listItemElement.firstChild);
-
- this.listItemElement.addEventListener("contextmenu", this._handleContextMenuEvent.bind(this), true);
},
- onpopulate: function()
+ onselect: function()
{
+ if (!this._view) {
+ if (this._entry.isDirectory)
+ this._view = new WebInspector.DirectoryContentView();
+ else
+ return;
+ }
+ this._fileSystemView.showView(this._view);
this.refresh();
},
- _handleContextMenuEvent: function(event)
+ onpopulate: function()
{
- if (!this._entry.isDirectory)
- return;
-
- var contextMenu = new WebInspector.ContextMenu();
- contextMenu.appendItem(WebInspector.UIString("Refresh"), this.refresh.bind(this));
- contextMenu.show(event);
+ this.refresh();
},
/**
}
entries.sort(WebInspector.FileSystemModel.Entry.compare);
+ if (this._view)
+ this._view.showEntries(entries);
+
var oldChildren = this.children.slice(0);
var newEntryIndex = 0;