Index: chrome/browser/resources/enhanced_bookmark_manager/js/bmm/bookmark_tree.js |
diff --git a/chrome/browser/resources/enhanced_bookmark_manager/js/bmm/bookmark_tree.js b/chrome/browser/resources/enhanced_bookmark_manager/js/bmm/bookmark_tree.js |
deleted file mode 100644 |
index 8098b07e1f0fc44c287a02304af52950276e1c77..0000000000000000000000000000000000000000 |
--- a/chrome/browser/resources/enhanced_bookmark_manager/js/bmm/bookmark_tree.js |
+++ /dev/null |
@@ -1,307 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
- |
-cr.define('bmm', function() { |
- /** |
- * The id of the bookmark root. |
- * @type {string} |
- * @const |
- */ |
- var ROOT_ID = '0'; |
- |
- /** @const */ var Tree = cr.ui.Tree; |
- /** @const */ var TreeItem = cr.ui.TreeItem; |
- |
- var treeLookup = {}; |
- var tree; |
- |
- // Manager for persisting the expanded state. |
- var expandedManager = { |
- /** |
- * A map of the collapsed IDs. |
- * @type {Object} |
- */ |
- map: 'bookmarkTreeState' in localStorage ? |
- JSON.parse(localStorage['bookmarkTreeState']) : {}, |
- |
- /** |
- * Set the collapsed state for an ID. |
- * @param {string} The bookmark ID of the tree item that was expanded or |
- * collapsed. |
- * @param {boolean} expanded Whether the tree item was expanded. |
- */ |
- set: function(id, expanded) { |
- if (expanded) |
- delete this.map[id]; |
- else |
- this.map[id] = 1; |
- |
- this.save(); |
- }, |
- |
- /** |
- * @param {string} id The bookmark ID. |
- * @return {boolean} Whether the tree item should be expanded. |
- */ |
- get: function(id) { |
- return !(id in this.map); |
- }, |
- |
- /** |
- * Callback for the expand and collapse events from the tree. |
- * @param {!Event} e The collapse or expand event. |
- */ |
- handleEvent: function(e) { |
- this.set(e.target.bookmarkId, e.type == 'expand'); |
- }, |
- |
- /** |
- * Cleans up old bookmark IDs. |
- */ |
- cleanUp: function() { |
- for (var id in this.map) { |
- // If the id is no longer in the treeLookup the bookmark no longer |
- // exists. |
- if (!(id in treeLookup)) |
- delete this.map[id]; |
- } |
- this.save(); |
- }, |
- |
- timer: null, |
- |
- /** |
- * Saves the expanded state to the localStorage. |
- */ |
- save: function() { |
- clearTimeout(this.timer); |
- var map = this.map; |
- // Save in a timeout so that we can coalesce multiple changes. |
- this.timer = setTimeout(function() { |
- localStorage['bookmarkTreeState'] = JSON.stringify(map); |
- }, 100); |
- } |
- }; |
- |
- // Clean up once per session but wait until things settle down a bit. |
- setTimeout(expandedManager.cleanUp.bind(expandedManager), 1e4); |
- |
- /** |
- * Creates a new tree item for a bookmark node. |
- * @param {!Object} bookmarkNode The bookmark node. |
- * @constructor |
- * @extends {TreeItem} |
- */ |
- function BookmarkTreeItem(bookmarkNode) { |
- var ti = new TreeItem({ |
- label: bookmarkNode.title, |
- bookmarkNode: bookmarkNode, |
- // Bookmark toolbar and Other bookmarks are not draggable. |
- draggable: bookmarkNode.parentId != ROOT_ID |
- }); |
- ti.__proto__ = BookmarkTreeItem.prototype; |
- treeLookup[bookmarkNode.id] = ti; |
- return ti; |
- } |
- |
- BookmarkTreeItem.prototype = { |
- __proto__: TreeItem.prototype, |
- |
- /** |
- * The ID of the bookmark this tree item represents. |
- * @type {string} |
- */ |
- get bookmarkId() { |
- return this.bookmarkNode.id; |
- } |
- }; |
- |
- /** |
- * Asynchronousy adds a tree item at the correct index based on the bookmark |
- * backend. |
- * |
- * Since the bookmark tree only contains folders the index we get from certain |
- * callbacks is not very useful so we therefore have this async call which |
- * gets the children of the parent and adds the tree item at the desired |
- * index. |
- * |
- * This also exoands the parent so that newly added children are revealed. |
- * |
- * @param {!cr.ui.TreeItem} parent The parent tree item. |
- * @param {!cr.ui.TreeItem} treeItem The tree item to add. |
- * @param {Function=} f A function which gets called after the item has been |
- * added at the right index. |
- */ |
- function addTreeItem(parent, treeItem, opt_f) { |
- chrome.bookmarks.getChildren(parent.bookmarkNode.id, function(children) { |
- var index = children.filter(bmm.isFolder).map(function(item) { |
- return item.id; |
- }).indexOf(treeItem.bookmarkNode.id); |
- parent.addAt(treeItem, index); |
- parent.expanded = true; |
- if (opt_f) |
- opt_f(); |
- }); |
- } |
- |
- |
- /** |
- * Creates a new bookmark list. |
- * @param {Object=} opt_propertyBag Optional properties. |
- * @constructor |
- * @extends {HTMLButtonElement} |
- */ |
- var BookmarkTree = cr.ui.define('tree'); |
- |
- BookmarkTree.prototype = { |
- __proto__: Tree.prototype, |
- |
- decorate: function() { |
- Tree.prototype.decorate.call(this); |
- this.addEventListener('expand', expandedManager); |
- this.addEventListener('collapse', expandedManager); |
- |
- bmm.tree = this; |
- }, |
- |
- handleBookmarkChanged: function(id, changeInfo) { |
- var treeItem = treeLookup[id]; |
- if (treeItem) |
- treeItem.label = treeItem.bookmarkNode.title = changeInfo.title; |
- }, |
- |
- handleChildrenReordered: function(id, reorderInfo) { |
- var parentItem = treeLookup[id]; |
- // The tree only contains folders. |
- var dirIds = reorderInfo.childIds.filter(function(id) { |
- return id in treeLookup; |
- }).forEach(function(id, i) { |
- parentItem.addAt(treeLookup[id], i); |
- }); |
- }, |
- |
- handleCreated: function(id, bookmarkNode) { |
- if (bmm.isFolder(bookmarkNode)) { |
- var parentItem = treeLookup[bookmarkNode.parentId]; |
- var newItem = new BookmarkTreeItem(bookmarkNode); |
- addTreeItem(parentItem, newItem); |
- } |
- }, |
- |
- handleMoved: function(id, moveInfo) { |
- var treeItem = treeLookup[id]; |
- if (treeItem) { |
- var oldParentItem = treeLookup[moveInfo.oldParentId]; |
- oldParentItem.remove(treeItem); |
- var newParentItem = treeLookup[moveInfo.parentId]; |
- // The tree only shows folders so the index is not the index we want. We |
- // therefore get the children need to adjust the index. |
- addTreeItem(newParentItem, treeItem); |
- } |
- }, |
- |
- handleRemoved: function(id, removeInfo) { |
- var parentItem = treeLookup[removeInfo.parentId]; |
- var itemToRemove = treeLookup[id]; |
- if (parentItem && itemToRemove) |
- parentItem.remove(itemToRemove); |
- }, |
- |
- insertSubtree: function(folder) { |
- if (!bmm.isFolder(folder)) |
- return; |
- var children = folder.children; |
- this.handleCreated(folder.id, folder); |
- for (var i = 0; i < children.length; i++) { |
- var child = children[i]; |
- this.insertSubtree(child); |
- } |
- }, |
- |
- /** |
- * Returns the bookmark node with the given ID. The tree only maintains |
- * folder nodes. |
- * @param {string} id The ID of the node to find. |
- * @return {BookmarkTreeNode} The bookmark tree node or null if not found. |
- */ |
- getBookmarkNodeById: function(id) { |
- var treeItem = treeLookup[id]; |
- if (treeItem) |
- return treeItem.bookmarkNode; |
- return null; |
- }, |
- |
- /** |
- * Returns the selected bookmark folder node as an array. |
- * @type {!Array} Array of bookmark nodes. |
- */ |
- get selectedFolders() { |
- return this.selectedItem && this.selectedItem.bookmarkNode ? |
- [this.selectedItem.bookmarkNode] : []; |
- }, |
- |
- /** |
- * Fetches the bookmark items and builds the tree control. |
- */ |
- reload: function() { |
- /** |
- * Recursive helper function that adds all the directories to the |
- * parentTreeItem. |
- * @param {!cr.ui.Tree|!cr.ui.TreeItem} parentTreeItem The parent tree |
- * element to append to. |
- * @param {!Array.<BookmarkTreeNode>} bookmarkNodes A list of bookmark |
- * nodes to be added. |
- * @return {boolean} Whether any directories where added. |
- */ |
- function buildTreeItems(parentTreeItem, bookmarkNodes) { |
- var hasDirectories = false; |
- for (var i = 0, bookmarkNode; bookmarkNode = bookmarkNodes[i]; i++) { |
- if (bmm.isFolder(bookmarkNode)) { |
- hasDirectories = true; |
- var item = new BookmarkTreeItem(bookmarkNode); |
- parentTreeItem.add(item); |
- var anyChildren = buildTreeItems(item, bookmarkNode.children); |
- item.expanded = anyChildren && expandedManager.get(bookmarkNode.id); |
- } |
- } |
- return hasDirectories; |
- } |
- |
- var self = this; |
- chrome.bookmarkManagerPrivate.getSubtree('', true, function(root) { |
- self.clear(); |
- buildTreeItems(self, root[0].children); |
- cr.dispatchSimpleEvent(self, 'load'); |
- }); |
- }, |
- |
- /** |
- * Clears the tree. |
- */ |
- clear: function() { |
- // Remove all fields without recreating the object since other code |
- // references it. |
- for (var id in treeLookup) { |
- delete treeLookup[id]; |
- } |
- this.textContent = ''; |
- }, |
- |
- /** @override */ |
- remove: function(child) { |
- Tree.prototype.remove.call(this, child); |
- if (child.bookmarkNode) |
- delete treeLookup[child.bookmarkNode.id]; |
- } |
- }; |
- |
- return { |
- BookmarkTree: BookmarkTree, |
- BookmarkTreeItem: BookmarkTreeItem, |
- treeLookup: treeLookup, |
- tree: tree, |
- ROOT_ID: ROOT_ID |
- }; |
-}); |