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

Unified Diff: third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js

Issue 1412703005: [DevTools] Remove WebInspector.SettingsList. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@edit-file-system-list-widget
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/settings/settingsScreen.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
diff --git a/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js b/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
index 9f3efc40ce1683cfa836a9c0de796bf6e907bc5d..ef5d50daf5aeeee00eb6bdd97aea3ecb220a9108 100644
--- a/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
+++ b/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
@@ -353,7 +353,6 @@ WebInspector.WorkspaceSettingsTab.prototype = {
button.addEventListener("click", this._removeFileSystemClicked.bind(this, fileSystem));
toolbar.appendToolbarItem(button);
header.appendChild(toolbar.element);
- //createTextButton(WebInspector.UIString("Remove"), this._removeFileSystemClicked.bind(this, fileSystem), "file-system-remove"));
return element;
},
@@ -572,497 +571,4 @@ WebInspector.SettingsController.Revealer.prototype = {
}
}
-/**
- * @constructor
- * @extends {WebInspector.Object}
- * @param {!Array.<{id: string, placeholder: (string|undefined), options: (!Array.<string>|undefined)}>} columns
- * @param {function(!Element, {id: string, placeholder: (string|undefined), options: (!Array.<string>|undefined)}, ?string)} itemRenderer
- */
-WebInspector.SettingsList = function(columns, itemRenderer)
-{
- this.element = createElementWithClass("div", "settings-list");
- this.element.tabIndex = -1;
- this._itemRenderer = itemRenderer;
- /** @type {!Map.<string, !Element>} */
- this._listItems = new Map();
- /** @type {!Array.<?string>} */
- this._ids = [];
- this._columns = columns;
- /** @type {!Set<string>} */
- this._editableEntries = new Set();
-}
-
-WebInspector.SettingsList.Events = {
- Selected: "Selected",
- Removed: "Removed",
- DoubleClicked: "DoubleClicked",
-}
-
-WebInspector.SettingsList.prototype = {
- /**
- * @param {?string} itemId
- * @param {?string=} beforeId
- * @param {boolean=} readOnly
- * @return {!Element}
- */
- addItem: function(itemId, beforeId, readOnly)
- {
- if (!readOnly && itemId)
- this._editableEntries.add(itemId);
- var listItem = createElementWithClass("div", "settings-list-item");
- listItem._id = itemId;
- if (beforeId)
- this.element.insertBefore(listItem, this.itemForId(beforeId));
- else
- this.element.appendChild(listItem);
-
- var listItemContents = listItem.createChild("div", "settings-list-item-contents");
- var listItemColumnsElement = listItemContents.createChild("div", "settings-list-item-columns");
-
- listItem.columnElements = {};
- for (var i = 0; i < this._columns.length; ++i) {
- var column = this._columns[i];
- var columnElement = listItemColumnsElement.createChild("div", "list-column settings-list-column-" + column.id);
- listItem.columnElements[column.id] = columnElement;
- this._itemRenderer(columnElement, column, itemId);
- }
- if (!readOnly) {
- var removeItemButton = this._createRemoveButton(removeItemClicked.bind(this));
- listItemContents.addEventListener("click", this.selectItem.bind(this, itemId), false);
- listItemContents.addEventListener("dblclick", this._onDoubleClick.bind(this, itemId), false);
- listItemContents.appendChild(removeItemButton);
- }
-
- this._listItems.set(itemId || "", listItem);
- if (typeof beforeId !== "undefined")
- this._ids.splice(this._ids.indexOf(beforeId), 0, itemId);
- else
- this._ids.push(itemId);
-
- /**
- * @param {!Event} event
- * @this {WebInspector.SettingsList}
- */
- function removeItemClicked(event)
- {
- removeItemButton.disabled = true;
- this.removeItem(itemId);
- this.dispatchEventToListeners(WebInspector.SettingsList.Events.Removed, itemId);
- event.consume();
- }
-
- return listItem;
- },
-
- /**
- * @param {?string} id
- */
- removeItem: function(id)
- {
- var listItem = this._listItems.remove(id || "");
- if (listItem)
- listItem.remove();
- this._ids.remove(id);
- if (id === this._selectedId) {
- delete this._selectedId;
- if (this._ids.length)
- this.selectItem(this._ids[0]);
- }
- },
-
- /**
- * @return {!Array.<?string>}
- */
- itemIds: function()
- {
- return this._ids.slice();
- },
-
- /**
- * @return {!Array.<string>}
- */
- columns: function()
- {
- return this._columns.select("id");
- },
-
- /**
- * @return {?string}
- */
- selectedId: function()
- {
- return this._selectedId;
- },
-
- /**
- * @return {?Element}
- */
- selectedItem: function()
- {
- return this._selectedId ? this.itemForId(this._selectedId) : null;
- },
-
- /**
- * @param {string} itemId
- * @return {?Element}
- */
- itemForId: function(itemId)
- {
- return this._listItems.get(itemId) || null;
- },
-
- /**
- * @param {?string} id
- * @param {!Event=} event
- */
- _onDoubleClick: function(id, event)
- {
- this.dispatchEventToListeners(WebInspector.SettingsList.Events.DoubleClicked, id);
- },
-
- /**
- * @param {?string} id
- * @param {!Event=} event
- */
- selectItem: function(id, event)
- {
- if (this._selectedId)
- this.itemForId(this._selectedId).classList.remove("selected");
-
- this._selectedId = id;
- if (this._selectedId)
- this.itemForId(this._selectedId).classList.add("selected");
-
- this.dispatchEventToListeners(WebInspector.SettingsList.Events.Selected, id);
- if (event)
- event.consume();
- },
-
- /**
- * @param {function(!Event)} handler
- * @return {!Element}
- */
- _createRemoveButton: function(handler)
- {
- var removeButton = createElementWithClass("div", "remove-item-button");
- removeButton.addEventListener("click", handler, false);
- return removeButton;
- },
-
- __proto__: WebInspector.Object.prototype
-}
-
-/**
- * @constructor
- * @extends {WebInspector.SettingsList}
- * @param {!Array.<{id: string, placeholder: (string|undefined), options: (!Array.<string>|undefined)}>} columns
- * @param {function(string, string):string} valuesProvider
- * @param {function(?string, !Object):!Array.<string>} validateHandler
- * @param {function(?string, !Object)} editHandler
- */
-WebInspector.EditableSettingsList = function(columns, valuesProvider, validateHandler, editHandler)
-{
- WebInspector.SettingsList.call(this, columns, this._renderColumn.bind(this));
- this._valuesProvider = valuesProvider;
- this._validateHandler = validateHandler;
- this._editHandler = editHandler;
- /** @type {!Map.<string, (!HTMLInputElement|!HTMLSelectElement)>} */
- this._addInputElements = new Map();
- /** @type {!Map.<string, !Map.<string, (!HTMLInputElement|!HTMLSelectElement)>>} */
- this._editInputElements = new Map();
- /** @type {!Map.<string, !Map.<string, !HTMLSpanElement>>} */
- this._textElements = new Map();
-
- this._addMappingItem = this.addItem(null);
- this._addMappingItem.classList.add("item-editing", "add-list-item");
-}
-
-WebInspector.EditableSettingsList.prototype = {
- /**
- * @override
- * @param {?string} itemId
- * @param {?string=} beforeId
- * @param {boolean=} readOnly
- * @return {!Element}
- */
- addItem: function(itemId, beforeId, readOnly)
- {
- var listItem = WebInspector.SettingsList.prototype.addItem.call(this, itemId, beforeId, readOnly);
- if (!readOnly)
- listItem.classList.add("editable");
- return listItem;
- },
-
- /**
- * @param {?string} itemId
- */
- refreshItem: function(itemId)
- {
- if (!itemId)
- return;
- var listItem = this.itemForId(itemId);
- if (!listItem)
- return;
- for (var i = 0; i < this._columns.length; ++i) {
- var column = this._columns[i];
- var columnId = column.id;
-
- var value = this._valuesProvider(itemId, columnId);
- this._setTextElementContent(itemId, columnId, value);
-
- var editElement = this._editInputElements.get(itemId).get(columnId);
- this._setEditElementValue(editElement, value || "");
- }
- },
-
- /**
- * @param {?string} itemId
- * @param {string} columnId
- */
- _textElementContent: function(itemId, columnId)
- {
- if (!itemId)
- return "";
- return this._textElements.get(itemId).get(columnId).textContent.replace(/\u200B/g, "");
- },
-
- /**
- * @param {string} itemId
- * @param {string} columnId
- * @param {string} text
- */
- _setTextElementContent: function(itemId, columnId, text)
- {
- var textElement = this._textElements.get(itemId).get(columnId);
- textElement.textContent = text.replace(/.{4}/g, "$&\u200B");
- textElement.title = text;
- },
-
- /**
- * @param {!Element} columnElement
- * @param {{id: string, placeholder: (string|undefined), options: (!Array.<string>|undefined)}} column
- * @param {?string} itemId
- */
- _renderColumn: function(columnElement, column, itemId)
- {
- var columnId = column.id;
- if (itemId === null) {
- this._createEditElement(columnElement, column, itemId);
- return;
- }
- var validItemId = itemId;
-
- if (!this._editInputElements.has(itemId))
- this._editInputElements.set(itemId, new Map());
- if (!this._textElements.has(itemId))
- this._textElements.set(itemId, new Map());
-
- var value = this._valuesProvider(itemId, columnId);
-
- var textElement = /** @type {!HTMLSpanElement} */ (columnElement.createChild("span", "list-column-text"));
- if (this._editableEntries.has(itemId))
- columnElement.addEventListener("click", rowClicked.bind(this), false);
- this._textElements.get(itemId).set(columnId, textElement);
- this._setTextElementContent(itemId, columnId, value);
-
- if (this._editableEntries.has(itemId))
- this._createEditElement(columnElement, column, itemId, value);
-
- /**
- * @param {!Event} event
- * @this {WebInspector.EditableSettingsList}
- */
- function rowClicked(event)
- {
- if (itemId === this._editingId)
- return;
- console.assert(!this._editingId);
- this._editingId = validItemId;
- var listItem = this.itemForId(validItemId);
- listItem.classList.add("item-editing");
- var editElement = event.target.editElement || this._editInputElements.get(validItemId).get(this.columns()[0]);
- editElement.focus();
- if (editElement.select)
- editElement.select();
- }
- },
-
- /**
- * @param {!Element} columnElement
- * @param {{id: string, placeholder: (string|undefined), options: (!Array.<string>|undefined)}} column
- * @param {?string} itemId
- * @param {string=} value
- * @return {!Element}
- */
- _createEditElement: function(columnElement, column, itemId, value)
- {
- var options = column.options;
- if (options) {
- var editElement = /** @type {!HTMLSelectElement} */ (columnElement.createChild("select", "chrome-select list-column-editor"));
- for (var i = 0; i < options.length; ++i) {
- var option = editElement.createChild("option");
- option.value = options[i];
- option.textContent = options[i];
- }
- editElement.addEventListener("blur", this._editMappingBlur.bind(this, itemId), false);
- editElement.addEventListener("change", this._editMappingBlur.bind(this, itemId), false);
- } else {
- var editElement = /** @type {!HTMLInputElement} */ (columnElement.createChild("input", "list-column-editor"));
- editElement.addEventListener("blur", this._editMappingBlur.bind(this, itemId), false);
- editElement.addEventListener("input", this._validateEdit.bind(this, itemId), false);
- if (itemId === null)
- editElement.placeholder = column.placeholder || "";
- }
-
- if (itemId === null)
- this._addInputElements.set(column.id, editElement);
- else
- this._editInputElements.get(itemId).set(column.id, editElement);
-
- this._setEditElementValue(editElement, value || "");
- columnElement.editElement = editElement;
- return editElement;
- },
-
- /**
- * @param {!HTMLInputElement|!HTMLSelectElement|undefined} editElement
- * @param {string} value
- */
- _setEditElementValue: function(editElement, value)
- {
- if (!editElement)
- return;
- if (editElement instanceof HTMLSelectElement) {
- var options = editElement.options;
- for (var i = 0; i < options.length; ++i)
- options[i].selected = (options[i].value === value);
- } else {
- editElement.value = value;
- }
- },
-
- /**
- * @param {?string} itemId
- * @return {!Object}
- */
- _data: function(itemId)
- {
- var inputElements = this._inputElements(itemId);
- var data = { __proto__: null };
- var columns = this.columns();
- for (var i = 0; i < columns.length; ++i)
- data[columns[i]] = inputElements.get(columns[i]).value;
- return data;
- },
-
- /**
- * @param {?string} itemId
- * @return {?Map.<string, (!HTMLInputElement|!HTMLSelectElement)>}
- */
- _inputElements: function(itemId)
- {
- if (!itemId)
- return this._addInputElements;
- return this._editInputElements.get(itemId) || null;
- },
-
- /**
- * @param {?string} itemId
- * @return {boolean}
- */
- _validateEdit: function(itemId)
- {
- var errorColumns = this._validateHandler(itemId, this._data(itemId));
- var hasChanges = this._hasChanges(itemId);
- var columns = this.columns();
- for (var i = 0; i < columns.length; ++i) {
- var columnId = columns[i];
- var inputElement = this._inputElements(itemId).get(columnId);
- if (hasChanges && errorColumns.indexOf(columnId) !== -1)
- inputElement.classList.add("editable-item-error");
- else
- inputElement.classList.remove("editable-item-error");
- }
- return !errorColumns.length;
- },
-
- /**
- * @param {?string} itemId
- * @return {boolean}
- */
- _hasChanges: function(itemId)
- {
- var columns = this.columns();
- for (var i = 0; i < columns.length; ++i) {
- var columnId = columns[i];
- var oldValue = this._textElementContent(itemId, columnId);
- var newValue = this._inputElements(itemId).get(columnId).value;
- if (oldValue !== newValue)
- return true;
- }
- return false;
- },
-
- /**
- * @param {?string} itemId
- * @param {!Event} event
- */
- _editMappingBlur: function(itemId, event)
- {
- if (itemId === null) {
- this._onAddMappingInputBlur(event);
- return;
- }
-
- var inputElements = this._editInputElements.get(itemId).valuesArray();
- if (inputElements.indexOf(event.relatedTarget) !== -1)
- return;
-
- var listItem = this.itemForId(itemId);
- listItem.classList.remove("item-editing");
- delete this._editingId;
-
- if (!this._hasChanges(itemId))
- return;
-
- if (!this._validateEdit(itemId)) {
- var columns = this.columns();
- for (var i = 0; i < columns.length; ++i) {
- var columnId = columns[i];
- var editElement = this._editInputElements.get(itemId).get(columnId);
- this._setEditElementValue(editElement, this._textElementContent(itemId, columnId));
- editElement.classList.remove("editable-item-error");
- }
- return;
- }
- this._editHandler(itemId, this._data(itemId));
- },
-
- /**
- * @param {!Event} event
- */
- _onAddMappingInputBlur: function(event)
- {
- var inputElements = this._addInputElements.valuesArray();
- if (inputElements.indexOf(event.relatedTarget) !== -1)
- return;
-
- if (!this._hasChanges(null))
- return;
-
- if (!this._validateEdit(null))
- return;
-
- this._editHandler(null, this._data(null));
- var columns = this.columns();
- for (var i = 0; i < columns.length; ++i) {
- var columnId = columns[i];
- var editElement = this._addInputElements.get(columnId);
- this._setEditElementValue(editElement, "");
- }
- },
-
- __proto__: WebInspector.SettingsList.prototype
-}
-
WebInspector._settingsController = new WebInspector.SettingsController();
« no previous file with comments | « no previous file | third_party/WebKit/Source/devtools/front_end/settings/settingsScreen.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698