Index: chrome/browser/resources/shared/js/cr/ui/drag_wrapper.js |
=================================================================== |
--- chrome/browser/resources/shared/js/cr/ui/drag_wrapper.js (revision 177292) |
+++ chrome/browser/resources/shared/js/cr/ui/drag_wrapper.js (working copy) |
@@ -1,118 +0,0 @@ |
-// Copyright (c) 2011 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. |
- |
-/** |
- * @fileoverview DragWrapper |
- * A class for simplifying HTML5 drag and drop. Classes should use this to |
- * handle the nitty gritty of nested drag enters and leaves. |
- */ |
-cr.define('cr.ui', function() { |
- /** |
- * Creates a DragWrapper which listens for drag target events on |target| and |
- * delegates event handling to |handler|. The |handler| must implement: |
- * shouldAcceptDrag |
- * doDragEnter |
- * doDragLeave |
- * doDragOver |
- * doDrop |
- */ |
- function DragWrapper(target, handler) { |
- this.initialize(target, handler); |
- } |
- |
- DragWrapper.prototype = { |
- initialize: function(target, handler) { |
- target.addEventListener('dragenter', |
- this.onDragEnter_.bind(this)); |
- target.addEventListener('dragover', this.onDragOver_.bind(this)); |
- target.addEventListener('drop', this.onDrop_.bind(this)); |
- target.addEventListener('dragleave', this.onDragLeave_.bind(this)); |
- |
- this.target_ = target; |
- this.handler_ = handler; |
- }, |
- |
- /** |
- * The number of un-paired dragenter events that have fired on |this|. This |
- * is incremented by |onDragEnter_| and decremented by |onDragLeave_|. This |
- * is necessary because dragging over child widgets will fire additional |
- * enter and leave events on |this|. A non-zero value does not necessarily |
- * indicate that |isCurrentDragTarget()| is true. |
- * @type {number} |
- * @private |
- */ |
- dragEnters_: 0, |
- |
- /** |
- * Whether the tile page is currently being dragged over with data it can |
- * accept. |
- * @type {boolean} |
- */ |
- get isCurrentDragTarget() { |
- return this.target_.classList.contains('drag-target'); |
- }, |
- |
- /** |
- * Handler for dragenter events fired on |target_|. |
- * @param {Event} e A MouseEvent for the drag. |
- * @private |
- */ |
- onDragEnter_: function(e) { |
- if (++this.dragEnters_ == 1) { |
- if (this.handler_.shouldAcceptDrag(e)) { |
- this.target_.classList.add('drag-target'); |
- this.handler_.doDragEnter(e); |
- } |
- } else { |
- // Sometimes we'll get an enter event over a child element without an |
- // over event following it. In this case we have to still call the |
- // drag over handler so that we make the necessary updates (one visible |
- // symptom of not doing this is that the cursor's drag state will |
- // flicker during drags). |
- this.onDragOver_(e); |
- } |
- }, |
- |
- /** |
- * Thunk for dragover events fired on |target_|. |
- * @param {Event} e A MouseEvent for the drag. |
- * @private |
- */ |
- onDragOver_: function(e) { |
- if (!this.target_.classList.contains('drag-target')) |
- return; |
- this.handler_.doDragOver(e); |
- }, |
- |
- /** |
- * Thunk for drop events fired on |target_|. |
- * @param {Event} e A MouseEvent for the drag. |
- * @private |
- */ |
- onDrop_: function(e) { |
- this.dragEnters_ = 0; |
- if (!this.target_.classList.contains('drag-target')) |
- return; |
- this.target_.classList.remove('drag-target'); |
- this.handler_.doDrop(e); |
- }, |
- |
- /** |
- * Thunk for dragleave events fired on |target_|. |
- * @param {Event} e A MouseEvent for the drag. |
- * @private |
- */ |
- onDragLeave_: function(e) { |
- if (--this.dragEnters_ > 0) |
- return; |
- |
- this.target_.classList.remove('drag-target'); |
- this.handler_.doDragLeave(e); |
- }, |
- }; |
- |
- return { |
- DragWrapper: DragWrapper |
- }; |
-}); |