| Index: chrome/browser/resources/file_manager/js/file_grid.js
|
| diff --git a/chrome/browser/resources/file_manager/js/file_grid.js b/chrome/browser/resources/file_manager/js/file_grid.js
|
| deleted file mode 100644
|
| index 2daec0cd4a489196039b75ea4e2e1aaedcc9986b..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/file_manager/js/file_grid.js
|
| +++ /dev/null
|
| @@ -1,303 +0,0 @@
|
| -// Copyright (c) 2012 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';
|
| -
|
| -/**
|
| - * FileGrid constructor.
|
| - *
|
| - * Represents grid for the Grid Vew in the File Manager.
|
| - * @constructor
|
| - * @extends {cr.ui.Grid}
|
| - */
|
| -
|
| -function FileGrid() {
|
| - throw new Error('Use FileGrid.decorate');
|
| -}
|
| -
|
| -/**
|
| - * Thumbnail quality.
|
| - * @enum {number}
|
| - */
|
| -FileGrid.ThumbnailQuality = {
|
| - LOW: 0,
|
| - HIGH: 1
|
| -};
|
| -
|
| -/**
|
| - * Inherits from cr.ui.Grid.
|
| - */
|
| -FileGrid.prototype.__proto__ = cr.ui.Grid.prototype;
|
| -
|
| -/**
|
| - * Decorates an HTML element to be a FileGrid.
|
| - * @param {HTMLElement} self The grid to decorate.
|
| - * @param {MetadataCache} metadataCache Metadata cache to find entries
|
| - * metadata.
|
| - */
|
| -FileGrid.decorate = function(self, metadataCache) {
|
| - cr.ui.Grid.decorate(self);
|
| - self.__proto__ = FileGrid.prototype;
|
| - self.metadataCache_ = metadataCache;
|
| -
|
| - self.scrollBar_ = new MainPanelScrollBar();
|
| - self.scrollBar_.initialize(self.parentNode, self);
|
| - self.setBottomMarginForPanel(0);
|
| -
|
| - self.itemConstructor = function(entry) {
|
| - var item = self.ownerDocument.createElement('LI');
|
| - FileGrid.Item.decorate(item, entry, self);
|
| - return item;
|
| - };
|
| -
|
| - self.relayoutAggregation_ =
|
| - new AsyncUtil.Aggregation(self.relayoutImmediately_.bind(self));
|
| -};
|
| -
|
| -/**
|
| - * Updates items to reflect metadata changes.
|
| - * @param {string} type Type of metadata changed.
|
| - * @param {Object.<string, Object>} props Map from entry URLs to metadata props.
|
| - */
|
| -FileGrid.prototype.updateListItemsMetadata = function(type, props) {
|
| - var boxes = this.querySelectorAll('.img-container');
|
| - for (var i = 0; i < boxes.length; i++) {
|
| - var box = boxes[i];
|
| - var entry = this.dataModel.item(this.getListItemAncestor(box));
|
| - if (!entry || !(entry.toURL() in props))
|
| - continue;
|
| -
|
| - FileGrid.decorateThumbnailBox(box,
|
| - entry,
|
| - this.metadataCache_,
|
| - ThumbnailLoader.FillMode.FIT,
|
| - FileGrid.ThumbnailQuality.HIGH);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * Redraws the UI. Skips multiple consecutive calls.
|
| - */
|
| -FileGrid.prototype.relayout = function() {
|
| - this.relayoutAggregation_.run();
|
| -};
|
| -
|
| -/**
|
| - * Redraws the UI immediately.
|
| - * @private
|
| - */
|
| -FileGrid.prototype.relayoutImmediately_ = function() {
|
| - this.startBatchUpdates();
|
| - this.columns = 0;
|
| - this.redraw();
|
| - this.endBatchUpdates();
|
| - cr.dispatchSimpleEvent(this, 'relayout');
|
| -};
|
| -
|
| -/**
|
| - * Decorates thumbnail.
|
| - * @param {HTMLElement} li List item.
|
| - * @param {Entry} entry Entry to render a thumbnail for.
|
| - * @param {MetadataCache} metadataCache To retrieve metadata.
|
| - */
|
| -FileGrid.decorateThumbnail = function(li, entry, metadataCache) {
|
| - li.className = 'thumbnail-item';
|
| - if (entry)
|
| - filelist.decorateListItem(li, entry, metadataCache);
|
| -
|
| - var frame = li.ownerDocument.createElement('div');
|
| - frame.className = 'thumbnail-frame';
|
| - li.appendChild(frame);
|
| -
|
| - var box = li.ownerDocument.createElement('div');
|
| - if (entry) {
|
| - FileGrid.decorateThumbnailBox(box,
|
| - entry,
|
| - metadataCache,
|
| - ThumbnailLoader.FillMode.AUTO,
|
| - FileGrid.ThumbnailQuality.HIGH);
|
| - }
|
| - frame.appendChild(box);
|
| -
|
| - var bottom = li.ownerDocument.createElement('div');
|
| - bottom.className = 'thumbnail-bottom';
|
| - bottom.appendChild(filelist.renderFileNameLabel(li.ownerDocument, entry));
|
| - frame.appendChild(bottom);
|
| -};
|
| -
|
| -/**
|
| - * Decorates the box containing a centered thumbnail image.
|
| - *
|
| - * @param {HTMLDivElement} box Box to decorate.
|
| - * @param {Entry} entry Entry which thumbnail is generating for.
|
| - * @param {MetadataCache} metadataCache To retrieve metadata.
|
| - * @param {ThumbnailLoader.FillMode} fillMode Fill mode.
|
| - * @param {FileGrid.ThumbnailQuality} quality Thumbnail quality.
|
| - * @param {function(HTMLElement)=} opt_imageLoadCallback Callback called when
|
| - * the image has been loaded before inserting it into the DOM.
|
| - */
|
| -FileGrid.decorateThumbnailBox = function(
|
| - box, entry, metadataCache, fillMode, quality, opt_imageLoadCallback) {
|
| - box.className = 'img-container';
|
| - if (entry.isDirectory) {
|
| - box.setAttribute('generic-thumbnail', 'folder');
|
| - if (opt_imageLoadCallback)
|
| - setTimeout(opt_imageLoadCallback, 0, null /* callback parameter */);
|
| - return;
|
| - }
|
| -
|
| - var imageUrl = entry.toURL();
|
| - var metadataTypes = 'thumbnail|filesystem';
|
| -
|
| - if (FileType.isOnDrive(imageUrl)) {
|
| - metadataTypes += '|drive';
|
| - } else {
|
| - // TODO(dgozman): If we ask for 'media' for a Drive file we fall into an
|
| - // infinite loop.
|
| - metadataTypes += '|media';
|
| - }
|
| -
|
| - // Drive provides high quality thumbnails via USE_EMBEDDED, however local
|
| - // images usually provide very tiny thumbnails, therefore USE_EMBEDDE can't
|
| - // be used to obtain high quality output.
|
| - var useEmbedded;
|
| - switch (quality) {
|
| - case FileGrid.ThumbnailQuality.LOW:
|
| - useEmbedded = ThumbnailLoader.UseEmbedded.USE_EMBEDDED;
|
| - break;
|
| - case FileGrid.ThumbnailQuality.HIGH:
|
| - useEmbedded = FileType.isOnDrive(imageUrl) ?
|
| - ThumbnailLoader.UseEmbedded.USE_EMBEDDED :
|
| - ThumbnailLoader.UseEmbedded.NO_EMBEDDED;
|
| - break;
|
| - }
|
| -
|
| - metadataCache.get(imageUrl, metadataTypes,
|
| - function(metadata) {
|
| - new ThumbnailLoader(imageUrl,
|
| - ThumbnailLoader.LoaderType.IMAGE,
|
| - metadata,
|
| - undefined, // opt_mediaType
|
| - useEmbedded).
|
| - load(box,
|
| - fillMode,
|
| - ThumbnailLoader.OptimizationMode.DISCARD_DETACHED,
|
| - opt_imageLoadCallback);
|
| - });
|
| -};
|
| -
|
| -/**
|
| - * Item for the Grid View.
|
| - * @constructor
|
| - */
|
| -FileGrid.Item = function() {
|
| - throw new Error();
|
| -};
|
| -
|
| -/**
|
| - * Inherits from cr.ui.ListItem.
|
| - */
|
| -FileGrid.Item.prototype.__proto__ = cr.ui.ListItem.prototype;
|
| -
|
| -Object.defineProperty(FileGrid.Item.prototype, 'label', {
|
| - /**
|
| - * @this {FileGrid.Item}
|
| - * @return {string} Label of the item.
|
| - */
|
| - get: function() {
|
| - return this.querySelector('filename-label').textContent;
|
| - }
|
| -});
|
| -
|
| -/**
|
| - * @param {Element} li List item element.
|
| - * @param {Entry} entry File entry.
|
| - * @param {FileGrid} grid Owner.
|
| - */
|
| -FileGrid.Item.decorate = function(li, entry, grid) {
|
| - li.__proto__ = FileGrid.Item.prototype;
|
| - FileGrid.decorateThumbnail(li, entry, grid.metadataCache_, true);
|
| -
|
| - // Override the default role 'listitem' to 'option' to match the parent's
|
| - // role (listbox).
|
| - li.setAttribute('role', 'option');
|
| -};
|
| -
|
| -/**
|
| - * Sets the margin height for the transparent preview panel at the bottom.
|
| - * @param {number} margin Margin to be set in px.
|
| - */
|
| -FileGrid.prototype.setBottomMarginForPanel = function(margin) {
|
| - // +20 bottom margin is needed to match the bottom margin size with the
|
| - // margin between its items.
|
| - this.style.paddingBottom = (margin + 20) + 'px';
|
| - this.scrollBar_.setBottomMarginForPanel(margin);
|
| -};
|
| -
|
| -/**
|
| - * Obtains if the drag selection should be start or not by referring the mouse
|
| - * event.
|
| - * @param {MouseEvent} event Drag start event.
|
| - * @return {boolean} True if the mouse is hit to the background of the list.
|
| - */
|
| -FileGrid.prototype.shouldStartDragSelection = function(event) {
|
| - var pos = DragSelector.getScrolledPosition(this, event);
|
| - return this.getHitElements(pos.x, pos.y).length == 0;
|
| -};
|
| -
|
| -/**
|
| - * Obtains the column/row index that the coordinate points.
|
| - * @param {number} coordinate Vertical/horizontal coodinate value that points
|
| - * column/row.
|
| - * @param {number} step Length from a column/row to the next one.
|
| - * @param {number} threshold Threshold that determinds whether 1 offset is added
|
| - * to the return value or not. This is used in order to handle the margin of
|
| - * column/row.
|
| - * @return {number} Index of hit column/row.
|
| - * @private
|
| - */
|
| -FileGrid.prototype.getHitIndex_ = function(coordinate, step, threshold) {
|
| - var index = ~~(coordinate / step);
|
| - return (coordinate % step >= threshold) ? index + 1 : index;
|
| -};
|
| -
|
| -/**
|
| - * Obtains the index list of elements that are hit by the point or the
|
| - * rectangle.
|
| - *
|
| - * We should match its argument interface with FileList.getHitElements.
|
| - *
|
| - * @param {number} x X coordinate value.
|
| - * @param {number} y Y coordinate value.
|
| - * @param {=number} opt_width Width of the coordinate.
|
| - * @param {=number} opt_height Height of the coordinate.
|
| - * @return {Array.<number>} Index list of hit elements.
|
| - */
|
| -FileGrid.prototype.getHitElements = function(x, y, opt_width, opt_height) {
|
| - var currentSelection = [];
|
| - var right = x + (opt_width || 0);
|
| - var bottom = y + (opt_height || 0);
|
| - var itemMetrics = this.measureItem();
|
| - var horizontalStartIndex = this.getHitIndex_(
|
| - x, itemMetrics.width, itemMetrics.width - itemMetrics.marginRight);
|
| - var horizontalEndIndex = Math.min(this.columns, this.getHitIndex_(
|
| - right, itemMetrics.width, itemMetrics.marginLeft));
|
| - var verticalStartIndex = this.getHitIndex_(
|
| - y, itemMetrics.height, itemMetrics.height - itemMetrics.bottom);
|
| - var verticalEndIndex = this.getHitIndex_(
|
| - bottom, itemMetrics.height, itemMetrics.marginTop);
|
| - for (var verticalIndex = verticalStartIndex;
|
| - verticalIndex < verticalEndIndex;
|
| - verticalIndex++) {
|
| - var indexBase = this.getFirstItemInRow(verticalIndex);
|
| - for (var horizontalIndex = horizontalStartIndex;
|
| - horizontalIndex < horizontalEndIndex;
|
| - horizontalIndex++) {
|
| - var index = indexBase + horizontalIndex;
|
| - if (0 <= index && index < this.dataModel.length)
|
| - currentSelection.push(index);
|
| - }
|
| - }
|
| - return currentSelection;
|
| -};
|
|
|