OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 const BookmarkList = bmm.BookmarkList; | 5 const BookmarkList = bmm.BookmarkList; |
6 const BookmarkTree = bmm.BookmarkTree; | 6 const BookmarkTree = bmm.BookmarkTree; |
7 const ListItem = cr.ui.ListItem; | 7 const ListItem = cr.ui.ListItem; |
8 const TreeItem = cr.ui.TreeItem; | 8 const TreeItem = cr.ui.TreeItem; |
9 const LinkKind = cr.LinkKind; | 9 const LinkKind = cr.LinkKind; |
10 const Command = cr.ui.Command; | 10 const Command = cr.ui.Command; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
147 function updateParentId(id) { | 147 function updateParentId(id) { |
148 list.parentId = id; | 148 list.parentId = id; |
149 if (id in bmm.treeLookup) | 149 if (id in bmm.treeLookup) |
150 tree.selectedItem = bmm.treeLookup[id]; | 150 tree.selectedItem = bmm.treeLookup[id]; |
151 } | 151 } |
152 | 152 |
153 // We listen to hashchange so that we can update the currently shown folder when | 153 // We listen to hashchange so that we can update the currently shown folder when |
154 // the user goes back and forward in the history. | 154 // the user goes back and forward in the history. |
155 window.onhashchange = function(e) { | 155 window.onhashchange = function(e) { |
156 var id = window.location.hash.slice(1); | 156 var id = window.location.hash.slice(1); |
157 if (!id) { | |
158 // If we do not have a hash select first item in the tree. | |
159 id = tree.items[0].bookmarkId; | |
160 } | |
157 | 161 |
158 var valid = false; | 162 var valid = false; |
163 if (/^e=/.test(id)) { | |
164 var editId = id.slice(2); | |
Rick Byers
2011/08/04 18:26:07
This 'slice' line is duplicated in 3 places now.
flackr
2011/08/12 18:11:24
Done. In the case of q= the id is not changed.
Rick Byers
2011/08/15 14:59:41
Ah, I missed this subtlety. Thanks for adding com
| |
165 // If hash contains e= edit the item specified. | |
166 chrome.bookmarks.get(editId, function(bookmarkNodes) { | |
167 // Verify the node to edit is a valid node. | |
168 if (!bookmarkNodes || bookmarkNodes.length != 1) | |
169 return; | |
170 var bookmarkNode = bookmarkNodes[0]; | |
171 // After the list reloads edit the desired bookmark. | |
172 var f = function(e) { | |
Rick Byers
2011/08/04 18:26:07
This add/remove pattern is duplicated often enough
Rick Byers
2011/08/04 18:26:07
Should probably use a variable name more descripti
flackr
2011/08/12 18:11:24
Done.
flackr
2011/08/12 18:11:24
Done.
| |
173 var index; | |
174 if ((index = list.dataModel.findIndexById(bookmarkNode.id)) != -1) { | |
175 var sm = list.selectionModel; | |
176 sm.anchorIndex = sm.leadIndex = sm.selectedIndex = index; | |
177 scrollIntoViewAndMakeEditable(index); | |
178 } | |
179 list.removeEventListener('load', f); | |
180 } | |
181 list.addEventListener('load', f); | |
159 | 182 |
160 // In case we got a search hash update the text input and the bmm.treeLookup | 183 // Navigate to the parent folder of the node to edit and call function. |
Rick Byers
2011/08/04 18:26:07
I find this a little confusing (especially given t
flackr
2011/08/12 18:11:24
Done.
| |
161 // to use the new id. | 184 if (list.parentId == bookmarkNode.parentId) |
162 if (/^q=/.test(id)) { | 185 f(); |
186 else | |
187 updateParentId(bookmarkNode.parentId); | |
188 }); | |
189 // We need more information before we know which folder to navigate to. | |
Rick Byers
2011/08/04 18:26:07
What is this comment referring to? The delayed ca
flackr
2011/08/12 18:11:24
Done.
| |
190 return; | |
191 } else if (/^a=/.test(id)) { | |
192 id = id.slice(2); | |
193 // After the list reloads add the desired bookmark. | |
194 var f = function(e) { | |
195 addPage(); | |
196 list.removeEventListener('load', f); | |
197 } | |
arv (Not doing code reviews)
2011/08/11 22:32:22
missing semicolon
flackr
2011/08/12 18:11:24
Done.
| |
198 list.addEventListener('load', f); | |
199 } else if (/^q=/.test(id)) { | |
200 // In case we got a search hash update the text input and the | |
201 // bmm.treeLookup to use the new id. | |
163 setSearch(id.slice(2)); | 202 setSearch(id.slice(2)); |
164 valid = true; | 203 valid = true; |
165 } else if (id == 'recent') { | 204 } else if (id == 'recent') { |
166 valid = true; | 205 valid = true; |
167 } | 206 } |
168 | 207 |
Rick Byers
2011/08/04 18:26:07
Since this is now non-trivial, add a comment like:
flackr
2011/08/12 18:11:24
Done.
| |
169 if (valid) { | 208 if (valid) { |
170 updateParentId(id); | 209 updateParentId(id); |
171 } else { | 210 } else { |
172 // We need to verify that this is a correct ID. | 211 // We need to verify that this is a correct ID. |
173 chrome.bookmarks.get(id, function(items) { | 212 chrome.bookmarks.get(id, function(items) { |
174 if (items && items.length == 1) | 213 if (items && items.length == 1) |
175 updateParentId(id); | 214 updateParentId(id); |
176 }); | 215 }); |
177 } | 216 } |
178 }; | 217 }; |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
340 if (parentNode.parentId != ROOT_ID) { | 379 if (parentNode.parentId != ROOT_ID) { |
341 return getFolder(parentNode.parentId) + '/' + s; | 380 return getFolder(parentNode.parentId) + '/' + s; |
342 } | 381 } |
343 return s; | 382 return s; |
344 } | 383 } |
345 } | 384 } |
346 | 385 |
347 tree.addEventListener('load', function(e) { | 386 tree.addEventListener('load', function(e) { |
348 // Add hard coded tree items | 387 // Add hard coded tree items |
349 tree.add(recentTreeItem); | 388 tree.add(recentTreeItem); |
350 | 389 // Call onhashchange to navigate to hash location. |
351 // Now we can select a tree item. | 390 window.onhashchange(); |
Rick Byers
2011/08/04 18:26:07
Technically I'd consider it invalid to call this e
arv (Not doing code reviews)
2011/08/11 22:32:22
Yeah, don't do this. Just do what Rick suggested.
flackr
2011/08/12 18:11:24
Done.
| |
352 var hash = window.location.hash.slice(1); | |
353 if (!hash) { | |
354 // If we do not have a hash select first item in the tree. | |
355 hash = tree.items[0].bookmarkId; | |
356 } | |
357 | |
358 if (/^q=/.test(hash)) { | |
359 var searchTerm = hash.slice(2); | |
360 $('term').value = searchTerm; | |
361 setSearch(searchTerm); | |
362 } else { | |
363 navigateTo(hash); | |
364 } | |
365 }); | 391 }); |
366 | 392 |
367 tree.reload(); | 393 tree.reload(); |
368 addBookmarkModelListeners(); | 394 addBookmarkModelListeners(); |
369 | 395 |
370 var dnd = { | 396 var dnd = { |
371 dragData: null, | 397 dragData: null, |
372 | 398 |
373 getBookmarkElement: function(el) { | 399 getBookmarkElement: function(el) { |
374 while (el && !el.bookmarkNode) { | 400 while (el && !el.bookmarkNode) { |
(...skipping 1238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1613 document.addEventListener('copy', handle('copy-command')); | 1639 document.addEventListener('copy', handle('copy-command')); |
1614 document.addEventListener('cut', handle('cut-command')); | 1640 document.addEventListener('cut', handle('cut-command')); |
1615 | 1641 |
1616 var pasteHandler = handle('paste-command'); | 1642 var pasteHandler = handle('paste-command'); |
1617 document.addEventListener('paste', function(e) { | 1643 document.addEventListener('paste', function(e) { |
1618 // Paste is a bit special since we need to do an async call to see if we can | 1644 // Paste is a bit special since we need to do an async call to see if we can |
1619 // paste because the paste command might not be up to date. | 1645 // paste because the paste command might not be up to date. |
1620 updatePasteCommand(pasteHandler); | 1646 updatePasteCommand(pasteHandler); |
1621 }); | 1647 }); |
1622 })(); | 1648 })(); |
OLD | NEW |