| Index: chrome/browser/resources/file_manager/js/drag_selector.js
|
| diff --git a/chrome/browser/resources/file_manager/js/drag_selector.js b/chrome/browser/resources/file_manager/js/drag_selector.js
|
| deleted file mode 100644
|
| index edc55165dfb3b0e216d8ffcf286332cc4c76b3e1..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/file_manager/js/drag_selector.js
|
| +++ /dev/null
|
| @@ -1,244 +0,0 @@
|
| -// Copyright 2013 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.
|
| -
|
| -'use strict';
|
| -
|
| -/**
|
| - * Drag selector used on the file list or the grid table.
|
| - * TODO(hirono): Support drag selection for grid view. crbug.com/224832
|
| - * @constructor
|
| - */
|
| -function DragSelector() {
|
| - /**
|
| - * Target list of drag selection.
|
| - * @type {cr.ui.List}
|
| - * @private
|
| - */
|
| - this.target_ = null;
|
| -
|
| - /**
|
| - * Border element of drag handle.
|
| - * @type {HtmlElement}
|
| - * @private
|
| - */
|
| - this.border_ = null;
|
| -
|
| - /**
|
| - * Start point of dragging.
|
| - * @type {number?}
|
| - * @private
|
| - */
|
| - this.startX_ = null;
|
| -
|
| - /**
|
| - * Start point of dragging.
|
| - * @type {number?}
|
| - * @private
|
| - */
|
| - this.startY_ = null;
|
| -
|
| - /**
|
| - * Indexes of selected items by dragging at the last update.
|
| - * @type {Array.<number>!}
|
| - * @private
|
| - */
|
| - this.lastSelection_ = [];
|
| -
|
| - /**
|
| - * Indexes of selected items at the start of dragging.
|
| - * @type {Array.<number>!}
|
| - * @private
|
| - */
|
| - this.originalSelection_ = [];
|
| -
|
| - // Bind handlers to make them removable.
|
| - this.onMouseMoveBound_ = this.onMouseMove_.bind(this);
|
| - this.onMouseUpBound_ = this.onMouseUp_.bind(this);
|
| -
|
| - Object.seal(this);
|
| -}
|
| -
|
| -/**
|
| - * Flag that shows whether the item is included in the selection or not.
|
| - * @enum {number}
|
| - * @private
|
| - */
|
| -DragSelector.SelectionFlag_ = {
|
| - IN_LAST_SELECTION: 1 << 0,
|
| - IN_CURRENT_SELECTION: 1 << 1
|
| -};
|
| -
|
| -/**
|
| - * Obtains the scrolled position in the element of mouse pointer from the mouse
|
| - * event.
|
| - *
|
| - * @param {HTMLElement} element Element that has the scroll bars.
|
| - * @param {Event} event The mouse event.
|
| - * @return {object} Scrolled position.
|
| - */
|
| -DragSelector.getScrolledPosition = function(element, event) {
|
| - if (!element.cachedBounds) {
|
| - element.cachedBounds = element.getBoundingClientRect();
|
| - if (!element.cachedBounds)
|
| - return null;
|
| - }
|
| - var rect = element.cachedBounds;
|
| - return {
|
| - x: event.clientX - rect.left + element.scrollLeft,
|
| - y: event.clientY - rect.top + element.scrollTop
|
| - };
|
| -};
|
| -
|
| -/**
|
| - * Starts drag selection by reacting dragstart event.
|
| - * This function must be called from handlers of dragstart event.
|
| - *
|
| - * @this {DragSelector}
|
| - * @param {cr.ui.List} list List where the drag selection starts.
|
| - * @param {Event} event The dragstart event.
|
| - */
|
| -DragSelector.prototype.startDragSelection = function(list, event) {
|
| - // Precondition check
|
| - if (!list.selectionModel_.multiple || this.target_)
|
| - return;
|
| -
|
| - // Set the target of the drag selection
|
| - this.target_ = list;
|
| -
|
| - // Prevent the default action.
|
| - event.preventDefault();
|
| -
|
| - // Save the start state.
|
| - var startPos = DragSelector.getScrolledPosition(list, event);
|
| - if (!startPos)
|
| - return;
|
| - this.startX_ = startPos.x;
|
| - this.startY_ = startPos.y;
|
| - this.lastSelection_ = [];
|
| - this.originalSelection_ = this.target_.selectionModel_.selectedIndexes;
|
| -
|
| - // Create and add the border element
|
| - if (!this.border_) {
|
| - this.border_ = this.target_.ownerDocument.createElement('div');
|
| - this.border_.className = 'drag-selection-border';
|
| - }
|
| - this.border_.style.left = this.startX_ + 'px';
|
| - this.border_.style.top = this.startY_ + 'px';
|
| - this.border_.style.width = '0';
|
| - this.border_.style.height = '0';
|
| - list.appendChild(this.border_);
|
| -
|
| - // If no modifier key is pressed, clear the original selection.
|
| - if (!event.shiftKey && !event.ctrlKey)
|
| - this.target_.selectionModel_.unselectAll();
|
| -
|
| - // Register event handlers.
|
| - // The handlers are bounded at the constructor.
|
| - this.target_.ownerDocument.addEventListener(
|
| - 'mousemove', this.onMouseMoveBound_, true);
|
| - this.target_.ownerDocument.addEventListener(
|
| - 'mouseup', this.onMouseUpBound_, true);
|
| -};
|
| -
|
| -/**
|
| - * Handles the mousemove event.
|
| - * @private
|
| - * @param {MouseEvent} event The mousemove event.
|
| - */
|
| -DragSelector.prototype.onMouseMove_ = function(event) {
|
| - // Get the selection bounds.
|
| - var pos = DragSelector.getScrolledPosition(this.target_, event);
|
| - var borderBounds = {
|
| - left: Math.max(Math.min(this.startX_, pos.x), 0),
|
| - top: Math.max(Math.min(this.startY_, pos.y), 0),
|
| - right: Math.min(Math.max(this.startX_, pos.x), this.target_.scrollWidth),
|
| - bottom: Math.min(Math.max(this.startY_, pos.y), this.target_.scrollHeight)
|
| - };
|
| - borderBounds.width = borderBounds.right - borderBounds.left;
|
| - borderBounds.height = borderBounds.bottom - borderBounds.top;
|
| -
|
| - // Collect items within the selection rect.
|
| - var currentSelection = this.target_.getHitElements(
|
| - borderBounds.left,
|
| - borderBounds.top,
|
| - borderBounds.width,
|
| - borderBounds.height);
|
| - var pointedElements = this.target_.getHitElements(pos.x, pos.y);
|
| - var leadIndex = pointedElements.length ? pointedElements[0] : -1;
|
| -
|
| - // Diff the selection between currentSelection and this.lastSelection_.
|
| - var selectionFlag = [];
|
| - for (var i = 0; i < this.lastSelection_.length; i++) {
|
| - var index = this.lastSelection_[i];
|
| - // Bit operator can be used for undefined value.
|
| - selectionFlag[index] =
|
| - selectionFlag[index] | DragSelector.SelectionFlag_.IN_LAST_SELECTION;
|
| - }
|
| - for (var i = 0; i < currentSelection.length; i++) {
|
| - var index = currentSelection[i];
|
| - // Bit operator can be used for undefined value.
|
| - selectionFlag[index] =
|
| - selectionFlag[index] | DragSelector.SelectionFlag_.IN_CURRENT_SELECTION;
|
| - }
|
| -
|
| - // Update the selection
|
| - this.target_.selectionModel_.beginChange();
|
| - for (var name in selectionFlag) {
|
| - var index = parseInt(name);
|
| - var flag = selectionFlag[name];
|
| - // The flag may be one of followings:
|
| - // - IN_LAST_SELECTION | IN_CURRENT_SELECTION
|
| - // - IN_LAST_SELECTION
|
| - // - IN_CURRENT_SELECTION
|
| - // - undefined
|
| -
|
| - // If the flag equals to (IN_LAST_SELECTION | IN_CURRENT_SELECTION),
|
| - // this is included in both the last selection and the current selection.
|
| - // We have nothing to do for this item.
|
| -
|
| - if (flag == DragSelector.SelectionFlag_.IN_LAST_SELECTION) {
|
| - // If the flag equals to IN_LAST_SELECTION,
|
| - // then the item is included in lastSelection but not in currentSelection.
|
| - // Revert the selection state to this.originalSelection_.
|
| - this.target_.selectionModel_.setIndexSelected(
|
| - index, this.originalSelection_.indexOf(index) != -1);
|
| - } else if (flag == DragSelector.SelectionFlag_.IN_CURRENT_SELECTION) {
|
| - // If the flag equals to IN_CURRENT_SELECTION,
|
| - // this is included in currentSelection but not in lastSelection.
|
| - this.target_.selectionModel_.setIndexSelected(index, true);
|
| - }
|
| - }
|
| - if (leadIndex != -1) {
|
| - this.target_.selectionModel_.leadIndex = leadIndex;
|
| - this.target_.selectionModel_.anchorIndex = leadIndex;
|
| - }
|
| - this.target_.selectionModel_.endChange();
|
| - this.lastSelection_ = currentSelection;
|
| -
|
| - // Update the size of border
|
| - this.border_.style.left = borderBounds.left + 'px';
|
| - this.border_.style.top = borderBounds.top + 'px';
|
| - this.border_.style.width = borderBounds.width + 'px';
|
| - this.border_.style.height = borderBounds.height + 'px';
|
| -};
|
| -
|
| -/**
|
| - * Handle the mouseup event.
|
| - * @private
|
| - * @param {MouseEvent} event The mouseup event.
|
| - */
|
| -DragSelector.prototype.onMouseUp_ = function(event) {
|
| - this.onMouseMove_(event);
|
| - this.target_.removeChild(this.border_);
|
| - this.target_.ownerDocument.removeEventListener(
|
| - 'mousemove', this.onMouseMoveBound_, true);
|
| - this.target_.ownerDocument.removeEventListener(
|
| - 'mouseup', this.onMouseUpBound_, true);
|
| - cr.dispatchSimpleEvent(this.target_, 'dragselectionend');
|
| - this.target_.cachedBounds = null;
|
| - this.target_ = null;
|
| - // The target may select an item by reacting to the mouseup event.
|
| - // This suppress to the selecting behavior.
|
| - event.stopPropagation();
|
| -};
|
|
|