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

Side by Side Diff: chrome/browser/resources/md_bookmarks/dnd_manager.js

Issue 2772003002: [MD Bookmarks] Make drag and drop update data model. (Closed)
Patch Set: Created 3 years, 9 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 /** 5 /**
6 * Enumeration of valid drop locations relative to an element. These are 6 * Enumeration of valid drop locations relative to an element. These are
7 * bit masks to allow combining multiple locations in a single value. 7 * bit masks to allow combining multiple locations in a single value.
8 * @enum {number} 8 * @enum {number}
9 * @const 9 * @const
10 */ 10 */
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 this.dropIndicator_.finish(); 279 this.dropIndicator_.finish();
280 }, 280 },
281 281
282 /** 282 /**
283 * @private 283 * @private
284 * @param {!Event} e 284 * @param {!Event} e
285 */ 285 */
286 onDrop_: function(e) { 286 onDrop_: function(e) {
287 if (this.dropDestination_) { 287 if (this.dropDestination_) {
288 e.preventDefault(); 288 e.preventDefault();
289
290 var dropInfo = this.calculateDropInfo_(this.dropDestination_);
291 if (dropInfo.index != -1)
292 chrome.bookmarkManagerPrivate.drop(dropInfo.parentId, dropInfo.index);
293 else
294 chrome.bookmarkManagerPrivate.drop(dropInfo.parentId);
289 } 295 }
290 this.dropDestination_ = null; 296 this.dropDestination_ = null;
291 this.dropIndicator_.finish(); 297 this.dropIndicator_.finish();
292 }, 298 },
293 299
300 /**
301 * @param {DropDestination} dropDestination
302 * @return {?{parentId: string, index: number}}
tsergeant 2017/03/29 00:32:48 Nit: This shouldn't be nullable, there's no early
calamity 2017/03/29 03:35:37 Done.
303 */
304 calculateDropInfo_: function(dropDestination) {
305 var node = getBookmarkNode(dropDestination.element);
306 var position = dropDestination.position;
307 var parentId = position == DropPosition.ON || !node.parentId ?
308 node.id :
309 node.parentId;
310 var index = -1;
311
312 if (position != DropPosition.ON) {
313 var state = bookmarks.Store.getInstance().data;
314 var listItems = bookmarks.util.getDisplayedList(state);
tsergeant 2017/03/29 00:32:48 I think that since you can't drop onto search resu
calamity 2017/03/29 03:35:37 Changed, added a comment.
tsergeant 2017/03/29 04:28:01 I actually meant that you can replace the whole if
calamity 2017/03/30 01:57:54 Ah yeah, I made this a bit more clear.
315 // TODO(calamity): Handle dropping to an empty bookmark list.
316 if (isBookmarkItem(dropDestination.element)) {
317 index = listItems.indexOf(node.id);
318 } else {
319 index = state.nodes[node.parentId].children.indexOf(node.id);
320 }
321
322 if (position == DropPosition.BELOW)
323 index++;
324 }
325
326 return {
327 index: index,
328 parentId: parentId,
329 };
330 },
331
294 /** @private */ 332 /** @private */
295 clearDragData_: function() { 333 clearDragData_: function() {
296 this.dragInfo_.clearDragData(); 334 this.dragInfo_.clearDragData();
297 this.dropDestination_ = null; 335 this.dropDestination_ = null;
298 this.dropIndicator_.finish(); 336 this.dropIndicator_.finish();
299 }, 337 },
300 338
301 /** 339 /**
302 * @private 340 * @private
303 * @param {Event} e 341 * @param {Event} e
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 return !this.dragInfo_.isDraggingChildBookmark(overElement.itemId) 551 return !this.dragInfo_.isDraggingChildBookmark(overElement.itemId)
514 }, 552 },
515 }; 553 };
516 554
517 return { 555 return {
518 DNDManager: DNDManager, 556 DNDManager: DNDManager,
519 DragInfo: DragInfo, 557 DragInfo: DragInfo,
520 DropIndicator: DropIndicator, 558 DropIndicator: DropIndicator,
521 }; 559 };
522 }); 560 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698