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

Side by Side Diff: chrome/browser/resources/bookmark_manager/js/main.js

Issue 1089163002: Pressing 'Delete' key in bookmark manager's search box deletes bookmark. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 (function() { 5 (function() {
6 /** @const */ var BookmarkList = bmm.BookmarkList; 6 /** @const */ var BookmarkList = bmm.BookmarkList;
7 /** @const */ var BookmarkTree = bmm.BookmarkTree; 7 /** @const */ var BookmarkTree = bmm.BookmarkTree;
8 /** @const */ var Command = cr.ui.Command; 8 /** @const */ var Command = cr.ui.Command;
9 /** @const */ var LinkKind = cr.LinkKind; 9 /** @const */ var LinkKind = cr.LinkKind;
10 /** @const */ var ListItem = cr.ui.ListItem; 10 /** @const */ var ListItem = cr.ui.ListItem;
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 not used. 391 not used.
392 * @param {boolean} commandDisabled Whether the menu item should be disabled 392 * @param {boolean} commandDisabled Whether the menu item should be disabled
393 no matter what bookmarks are selected. 393 no matter what bookmarks are selected.
394 */ 394 */
395 function updateOpenCommand(e, command, singularId, pluralId, commandDisabled) { 395 function updateOpenCommand(e, command, singularId, pluralId, commandDisabled) {
396 if (singularId) { 396 if (singularId) {
397 // The command label reflects the selection which might not reflect 397 // The command label reflects the selection which might not reflect
398 // how many bookmarks will be opened. For example if you right click an 398 // how many bookmarks will be opened. For example if you right click an
399 // empty area in a folder with 1 bookmark the text should still say "all". 399 // empty area in a folder with 1 bookmark the text should still say "all".
400 var selectedNodes = getSelectedBookmarkNodes(e.target).filter(notNewNode); 400 var selectedNodes = getSelectedBookmarkNodes(e.target).filter(notNewNode);
401 var singular = selectedNodes.length == 1 && !bmm.isFolder(selectedNodes[0]); 401 var singular = selectedNodes && selectedNodes.length == 1 &&
402 !bmm.isFolder(selectedNodes[0]);
402 command.label = loadTimeData.getString(singular ? singularId : pluralId); 403 command.label = loadTimeData.getString(singular ? singularId : pluralId);
403 } 404 }
404 405
405 if (commandDisabled) { 406 if (commandDisabled) {
406 command.disabled = true; 407 command.disabled = true;
407 e.canExecute = false; 408 e.canExecute = false;
408 return; 409 return;
409 } 410 }
410 411
411 getUrlsForOpenCommands(assertInstanceof(e.target, HTMLElement)).then( 412 getUrlsForOpenCommands(assertInstanceof(e.target, HTMLElement)).then(
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 break; 484 break;
484 485
485 case 'sort-command': 486 case 'sort-command':
486 e.canExecute = !bmm.list.isSearch() && 487 e.canExecute = !bmm.list.isSearch() &&
487 bmm.list.dataModel && bmm.list.dataModel.length > 1 && 488 bmm.list.dataModel && bmm.list.dataModel.length > 1 &&
488 !isUnmodifiable(bmm.tree.getBookmarkNodeById(bmm.list.parentId)); 489 !isUnmodifiable(bmm.tree.getBookmarkNodeById(bmm.list.parentId));
489 break; 490 break;
490 491
491 case 'undo-command': 492 case 'undo-command':
492 // If the search box is active, pass the undo command through 493 // If the search box is active, pass the undo command through
493 // (fixes http://crbug.com/278112). Otherwise, because 494 // (fixes http://crbug.com/278112). Otherwise, because
Bernhard Bauer 2015/04/15 10:11:57 (Read my comments bottom-up for context) Here is
494 // the global undo command has no visible UI, always enable it, and 495 // the global undo command has no visible UI, always enable it, and
495 // just make it a no-op if undo is not possible. 496 // just make it a no-op if undo is not possible.
496 e.canExecute = e.currentTarget.activeElement !== $('term'); 497 e.canExecute = e.currentTarget.activeElement !== $('term');
497 break; 498 break;
498 499
499 default: 500 default:
500 canExecuteForList(e); 501 canExecuteForList(e);
501 if (!e.defaultPrevented) 502 if (!e.defaultPrevented)
502 canExecuteForTree(e); 503 canExecuteForTree(e);
503 break; 504 break;
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 } 835 }
835 836
836 /** 837 /**
837 * Returns the selected bookmark nodes of the provided tree or list. 838 * Returns the selected bookmark nodes of the provided tree or list.
838 * If |opt_target| is not provided or null the active element is used. 839 * If |opt_target| is not provided or null the active element is used.
839 * Only call this if the list or the tree is focused. 840 * Only call this if the list or the tree is focused.
840 * @param {EventTarget=} opt_target The target list or tree. 841 * @param {EventTarget=} opt_target The target list or tree.
841 * @return {!Array} Array of bookmark nodes. 842 * @return {!Array} Array of bookmark nodes.
842 */ 843 */
843 function getSelectedBookmarkNodes(opt_target) { 844 function getSelectedBookmarkNodes(opt_target) {
844 return (opt_target || document.activeElement) == bmm.tree ? 845 if (opt_target) {
Bernhard Bauer 2015/04/15 10:11:57 I don't really understand what's going on here. Yo
845 bmm.tree.selectedFolders : bmm.list.selectedItems; 846 return (opt_target == bmm.tree) ? bmm.tree.selectedFolders :
847 bmm.list.selectedItems;
848 } else if (document.activeElement == bmm.tree ||
849 document.activeElement == bmm.list) {
850 return (document.activeElement == bmm.tree) ? bmm.tree.selectedFolders :
851 bmm.list.selectedItems;
852 }
846 } 853 }
847 854
848 /** 855 /**
849 * @param {EventTarget=} opt_target The target list or tree. 856 * @param {EventTarget=} opt_target The target list or tree.
850 * @return {!Array<string>} An array of the selected bookmark IDs. 857 * @return {!Array<string>} An array of the selected bookmark IDs.
851 */ 858 */
852 function getSelectedBookmarkIds(opt_target) { 859 function getSelectedBookmarkIds(opt_target) {
853 var selectedNodes = getSelectedBookmarkNodes(opt_target); 860 var selectedNodes = getSelectedBookmarkNodes(opt_target);
861 if (!selectedNodes || !selectedNodes.length)
862 return;
854 selectedNodes.sort(function(a, b) { return a.index - b.index }); 863 selectedNodes.sort(function(a, b) { return a.index - b.index });
855 return selectedNodes.map(function(node) { 864 return selectedNodes.map(function(node) {
856 return node.id; 865 return node.id;
857 }); 866 });
858 } 867 }
859 868
860 /** 869 /**
861 * @param {BookmarkTreeNode} node The node to test. 870 * @param {BookmarkTreeNode} node The node to test.
862 * @return {boolean} Whether the given node is unmodifiable. 871 * @return {boolean} Whether the given node is unmodifiable.
863 */ 872 */
(...skipping 25 matching lines...) Expand all
889 chrome.bookmarkManagerPrivate.recordLaunch(); 898 chrome.bookmarkManagerPrivate.recordLaunch();
890 }); 899 });
891 } 900 }
892 901
893 /** 902 /**
894 * Opens an item in the list. 903 * Opens an item in the list.
895 */ 904 */
896 function openItem() { 905 function openItem() {
897 var bookmarkNodes = getSelectedBookmarkNodes(); 906 var bookmarkNodes = getSelectedBookmarkNodes();
898 // If we double clicked or pressed enter on a single folder, navigate to it. 907 // If we double clicked or pressed enter on a single folder, navigate to it.
899 if (bookmarkNodes.length == 1 && bmm.isFolder(bookmarkNodes[0])) 908 if (bookmarkNodes && bookmarkNodes.length == 1 &&
909 bmm.isFolder(bookmarkNodes[0])) {
900 navigateTo(bookmarkNodes[0].id); 910 navigateTo(bookmarkNodes[0].id);
901 else 911 } else {
902 openBookmarks(LinkKind.FOREGROUND_TAB); 912 openBookmarks(LinkKind.FOREGROUND_TAB);
913 }
903 } 914 }
904 915
905 /** 916 /**
906 * Refreshes search results after delete or undo-delete. 917 * Refreshes search results after delete or undo-delete.
907 * This ensures children of deleted folders do not remain in results 918 * This ensures children of deleted folders do not remain in results
908 */ 919 */
909 function updateSearchResults() { 920 function updateSearchResults() {
910 if (bmm.list.isSearch()) 921 if (bmm.list.isSearch())
911 bmm.list.reload(); 922 bmm.list.reload();
912 } 923 }
913 924
914 /** 925 /**
915 * Deletes the selected bookmarks. The bookmarks are saved in memory in case 926 * Deletes the selected bookmarks. The bookmarks are saved in memory in case
916 * the user needs to undo the deletion. 927 * the user needs to undo the deletion.
917 * @param {EventTarget=} opt_target The deleter of bookmarks. 928 * @param {EventTarget=} opt_target The deleter of bookmarks.
918 */ 929 */
919 function deleteBookmarks(opt_target) { 930 function deleteBookmarks(opt_target) {
920 var selectedIds = getSelectedBookmarkIds(opt_target); 931 var selectedIds = getSelectedBookmarkIds(opt_target);
921 if (!selectedIds.length) 932 if (!selectedIds || !selectedIds.length)
922 return; 933 return;
923 934
924 var filteredIds = getFilteredSelectedBookmarkIds(opt_target); 935 var filteredIds = getFilteredSelectedBookmarkIds(opt_target);
925 lastDeleted = {nodes: [], target: opt_target || document.activeElement}; 936 lastDeleted = {nodes: [], target: opt_target || document.activeElement};
926 937
927 function performDelete() { 938 function performDelete() {
928 // Only remove filtered ids. 939 // Only remove filtered ids.
929 chrome.bookmarkManagerPrivate.removeTrees(filteredIds); 940 chrome.bookmarkManagerPrivate.removeTrees(filteredIds);
930 $('undo-delete-command').canExecuteChange(); 941 $('undo-delete-command').canExecuteChange();
931 $('undo-delete-from-folders-menu-command').canExecuteChange(); 942 $('undo-delete-from-folders-menu-command').canExecuteChange();
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
1225 1236
1226 /** 1237 /**
1227 * @param {EventTarget=} opt_target A target to get bookmark IDs from. 1238 * @param {EventTarget=} opt_target A target to get bookmark IDs from.
1228 * @return {Array<string>} An array of bookmarks IDs. 1239 * @return {Array<string>} An array of bookmarks IDs.
1229 */ 1240 */
1230 function getFilteredSelectedBookmarkIds(opt_target) { 1241 function getFilteredSelectedBookmarkIds(opt_target) {
1231 // Remove duplicates from filteredIds and return. 1242 // Remove duplicates from filteredIds and return.
1232 var filteredIds = []; 1243 var filteredIds = [];
1233 // Selected nodes to iterate through for matches. 1244 // Selected nodes to iterate through for matches.
1234 var nodes = getSelectedBookmarkNodes(opt_target); 1245 var nodes = getSelectedBookmarkNodes(opt_target);
1246 if (!nodes)
1247 return filteredIds;
1235 1248
1236 for (var i = 0; i < nodes.length; i++) 1249 for (var i = 0; i < nodes.length; i++)
1237 if (!hasSelectedAncestor(bmm.tree.getBookmarkNodeById(nodes[i].parentId))) 1250 if (!hasSelectedAncestor(bmm.tree.getBookmarkNodeById(nodes[i].parentId)))
1238 filteredIds.splice(0, 0, nodes[i].id); 1251 filteredIds.splice(0, 0, nodes[i].id);
1239 1252
1240 return filteredIds; 1253 return filteredIds;
1241 } 1254 }
1242 1255
1243 /** 1256 /**
1244 * Handler for the command event. This is used for context menu of list/tree 1257 * Handler for the command event. This is used for context menu of list/tree
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
1506 1519
1507 cr.ui.FocusOutlineManager.forDocument(document); 1520 cr.ui.FocusOutlineManager.forDocument(document);
1508 initializeSplitter(); 1521 initializeSplitter();
1509 bmm.addBookmarkModelListeners(); 1522 bmm.addBookmarkModelListeners();
1510 dnd.init(selectItemsAfterUserAction); 1523 dnd.init(selectItemsAfterUserAction);
1511 bmm.tree.reload(); 1524 bmm.tree.reload();
1512 } 1525 }
1513 1526
1514 initializeBookmarkManager(); 1527 initializeBookmarkManager();
1515 })(); 1528 })();
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698