Index: chrome/browser/resources/pdf/elements/bookmarks-pane/bookmarks-pane.js |
diff --git a/chrome/browser/resources/pdf/elements/bookmarks-pane/bookmarks-pane.js b/chrome/browser/resources/pdf/elements/bookmarks-pane/bookmarks-pane.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4285f70ef3b5b530a65b412ccd7d8ad86b15664e |
--- /dev/null |
+++ b/chrome/browser/resources/pdf/elements/bookmarks-pane/bookmarks-pane.js |
@@ -0,0 +1,49 @@ |
+// Copyright 2015 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. |
+ |
+Polymer('bookmarks-pane', { |
+ // An array of top-level bookmarks, each containing a: |
+ // - title |
+ // - page (optional) |
+ // - children (an array of bookmarks) |
+ bookmarks: null, |
+ |
+ // Inserts bookmark elements into the pane |
raymes
2015/01/28 01:10:20
Take a look at the jsdoc in pdf.js and let's follo
Alexandre Carlton
2015/01/28 07:16:52
Done.
|
+ bookmarksChanged: function() { |
+ for (var i = 0; i < this.bookmarks.length; i++) { |
+ var bookmark = this.makeBookmark_(this.bookmarks[i]); |
+ this.$.pane.appendChild(bookmark); |
+ } |
+ }, |
+ |
+ // Transforms bookmark object into an HTML element. |
+ makeBookmark_: function(bookmark) { |
Sam McNally
2015/01/28 03:04:30
It feels like a bookmark could be a custom element
|
+ var titleNode = document.createElement('paper-item'); |
+ titleNode.textContent = bookmark.title; |
+ if (bookmark.hasOwnProperty('page')) { |
+ titleNode.addEventListener('click', function() { |
+ this.fire('changePage', {page: bookmark.page}); |
+ }); |
+ } |
+ if (bookmark.children.length === 0) { |
+ return titleNode; |
+ } else { |
+ var subNode = document.createElement('div'); |
raymes
2015/01/28 01:10:20
nit: can we call this childBookmarksNode
Alexandre Carlton
2015/01/28 07:16:52
Done.
Alexandre Carlton
2015/01/28 07:16:52
Done.
|
+ subNode.className += ' sub-bookmark'; |
+ |
+ for (var i = 0; i < bookmark.children.length; i++) { |
+ var childNode = this.makeBookmark_(bookmark.children[i]); |
+ subNode.appendChild(childNode); |
+ } |
+ var wrapperNode = document.createElement('div'); |
+ wrapperNode.appendChild(titleNode); |
+ wrapperNode.appendChild(subNode); |
+ return wrapperNode; |
+ } |
+ }, |
+ |
+ toggle: function() { |
+ this.$.pane.toggle(); |
+ } |
+}); |