| Index: chrome/browser/resources/file_manager/js/butter_bar.js
|
| diff --git a/chrome/browser/resources/file_manager/js/butter_bar.js b/chrome/browser/resources/file_manager/js/butter_bar.js
|
| deleted file mode 100644
|
| index 40d0b3334a45c545a21615ac61062b40740128cc..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/file_manager/js/butter_bar.js
|
| +++ /dev/null
|
| @@ -1,367 +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';
|
| -
|
| -/**
|
| - * Butter bar is shown on top of the file list and is used to show the copy
|
| - * progress and other messages.
|
| - * @param {HTMLElement} dialogDom FileManager top-level div.
|
| - * @param {FileOperationManagerWrapper} fileOperationManager The operation
|
| - * manager.
|
| - * @constructor
|
| - */
|
| -function ButterBar(dialogDom, fileOperationManager) {
|
| - this.dialogDom_ = dialogDom;
|
| - this.butter_ = this.dialogDom_.querySelector('#butter-bar');
|
| - this.document_ = this.butter_.ownerDocument;
|
| - this.fileOperationManager_ = fileOperationManager;
|
| - this.hideTimeout_ = null;
|
| - this.showTimeout_ = null;
|
| - this.lastShowTime_ = 0;
|
| - this.deleteTaskId_ = null;
|
| - this.currentMode_ = null;
|
| - this.totalDeleted_ = 0;
|
| - this.lastProgressValue_ = 0;
|
| - this.alert_ = new ErrorDialog(this.dialogDom_);
|
| -
|
| - this.onCopyProgressBound_ = this.onCopyProgress_.bind(this);
|
| - this.fileOperationManager_.addEventListener(
|
| - 'copy-progress', this.onCopyProgressBound_);
|
| - this.onDeleteBound_ = this.onDelete_.bind(this);
|
| - this.fileOperationManager_.addEventListener('delete', this.onDeleteBound_);
|
| -}
|
| -
|
| -/**
|
| - * The default amount of milliseconds time, before a butter bar will hide after
|
| - * the last update.
|
| - * @type {number}
|
| - * @private
|
| - * @const
|
| - */
|
| -ButterBar.HIDE_DELAY_TIME_MS_ = 2000;
|
| -
|
| -/**
|
| - * Name of action which should be displayed as an 'x' button instead of
|
| - * link with text.
|
| - * @const
|
| - */
|
| -ButterBar.ACTION_X = '--action--x--';
|
| -
|
| -/**
|
| - * Butter bar mode.
|
| - * @const
|
| - */
|
| -ButterBar.Mode = {
|
| - COPY: 1,
|
| - DELETE: 2
|
| -};
|
| -
|
| -/**
|
| - * Disposes the instance. No methods should be called after this method's
|
| - * invocation.
|
| - */
|
| -ButterBar.prototype.dispose = function() {
|
| - // Unregister listeners from FileOperationManager.
|
| - this.fileOperationManager_.removeEventListener(
|
| - 'copy-progress', this.onCopyProgressBound_);
|
| - this.fileOperationManager_.removeEventListener('delete', this.onDeleteBound_);
|
| -};
|
| -
|
| -/**
|
| - * @return {boolean} True if visible.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.isVisible_ = function() {
|
| - return this.butter_.classList.contains('visible');
|
| -};
|
| -
|
| -/**
|
| - * Show butter bar.
|
| - * @param {ButterBar.Mode} mode Butter bar mode.
|
| - * @param {string} message The message to be shown.
|
| - * @param {Object=} opt_options Options: 'actions', 'progress', 'timeout'. If
|
| - * 'timeout' is not specified, HIDE_DELAY_TIME_MS_ is used. If 'timeout' is
|
| - * false, the butter bar will not be hidden.
|
| - */
|
| -ButterBar.prototype.show = function(mode, message, opt_options) {
|
| - this.currentMode_ = mode;
|
| -
|
| - this.clearShowTimeout_();
|
| - this.clearHideTimeout_();
|
| -
|
| - var actions = this.butter_.querySelector('.actions');
|
| - actions.textContent = '';
|
| - if (opt_options && 'actions' in opt_options) {
|
| - for (var label in opt_options.actions) {
|
| - var link = this.document_.createElement('a');
|
| - link.addEventListener('click', function(callback) {
|
| - callback();
|
| - return false;
|
| - }.bind(null, opt_options.actions[label]));
|
| - if (label == ButterBar.ACTION_X) {
|
| - link.className = 'x';
|
| - } else {
|
| - link.textContent = label;
|
| - }
|
| - actions.appendChild(link);
|
| - }
|
| - actions.hidden = false;
|
| - } else {
|
| - actions.hidden = true;
|
| - }
|
| -
|
| - this.butter_.querySelector('.progress-bar').hidden =
|
| - !(opt_options && 'progress' in opt_options);
|
| -
|
| - this.butter_.classList.remove('error');
|
| - this.butter_.classList.remove('visible'); // Will be shown in update_
|
| - this.update_(message, opt_options);
|
| -};
|
| -
|
| -/**
|
| - * Show an error message in a popup dialog.
|
| - * @param {string} message Message.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.showError_ = function(message) {
|
| - // Wait in case there are previous dialogs being closed.
|
| - setTimeout(function() {
|
| - this.alert_.showHtml('', // Title.
|
| - message);
|
| - this.hide_();
|
| - }.bind(this), cr.ui.dialogs.BaseDialog.ANIMATE_STABLE_DURATION);
|
| -};
|
| -
|
| -/**
|
| - * Set message and/or progress.
|
| - * @param {string} message Message.
|
| - * @param {Object=} opt_options Same as in show().
|
| - * @private
|
| - */
|
| -ButterBar.prototype.update_ = function(message, opt_options) {
|
| - if (!opt_options)
|
| - opt_options = {};
|
| -
|
| - this.clearHideTimeout_();
|
| -
|
| - var butterMessage = this.butter_.querySelector('.butter-message');
|
| - butterMessage.textContent = message;
|
| - if (message && !this.isVisible_()) {
|
| - // The butter bar is made visible on the first non-empty message.
|
| - this.butter_.classList.add('visible');
|
| - }
|
| - if (opt_options && 'progress' in opt_options) {
|
| - butterMessage.classList.add('single-line');
|
| - var progressTrack = this.butter_.querySelector('.progress-track');
|
| - // Smoothen the progress only when it goes forward. Especially do not
|
| - // do the transition effect if resetting to 0.
|
| - if (opt_options.progress > this.lastProgressValue_)
|
| - progressTrack.classList.add('smoothed');
|
| - else
|
| - progressTrack.classList.remove('smoothed');
|
| - progressTrack.style.width = (opt_options.progress * 100) + '%';
|
| - this.lastProgressValue_ = opt_options.progress;
|
| - } else {
|
| - butterMessage.classList.remove('single-line');
|
| - }
|
| -
|
| - if (opt_options.timeout !== false)
|
| - this.hide_(opt_options.timeout);
|
| -};
|
| -
|
| -/**
|
| - * Hide butter bar. There might be the delay before hiding so that butter bar
|
| - * would be shown for no less than the minimal time.
|
| - * @param {number=} opt_timeout Delay time in milliseconds before hidding. If it
|
| - * is zero, butter bar is hidden immediatelly. If it is not specified,
|
| - * HIDE_DELAY_TIME_MS_ is used.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.hide_ = function(opt_timeout) {
|
| - this.clearHideTimeout_();
|
| -
|
| - if (!this.isVisible_())
|
| - return;
|
| -
|
| - var delay = typeof opt_timeout != 'undefined' ?
|
| - opt_timeout : ButterBar.HIDE_DELAY_TIME_MS_;
|
| - if (delay <= 0) {
|
| - this.currentMode_ = null;
|
| - this.butter_.classList.remove('visible');
|
| - this.butter_.querySelector('.progress-bar').hidden = true;
|
| - } else {
|
| - // Reschedule hide to comply with the minimal display time.
|
| - this.hideTimeout_ = setTimeout(function() {
|
| - this.hideTimeout_ = null;
|
| - this.hide_(0);
|
| - }.bind(this), delay);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * Clear the show timeout if it is set.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.clearShowTimeout_ = function() {
|
| - if (this.showTimeout_) {
|
| - clearTimeout(this.showTimeout_);
|
| - this.showTimeout_ = null;
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * Clear the hide timeout if it is set.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.clearHideTimeout_ = function() {
|
| - if (this.hideTimeout_) {
|
| - clearTimeout(this.hideTimeout_);
|
| - this.hideTimeout_ = null;
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * @return {string} The type of operation.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.transferType_ = function() {
|
| - var progress = this.progress_;
|
| - if (progress && progress.operationType)
|
| - return progress.operationType;
|
| -
|
| - return 'TRANSFER';
|
| -};
|
| -
|
| -/**
|
| - * Set up butter bar for showing copy progress.
|
| - *
|
| - * @param {Object} progress Copy status object created by
|
| - * FileOperationManager.getStatus().
|
| - * @private
|
| - */
|
| -ButterBar.prototype.showProgress_ = function(progress) {
|
| - this.progress_ = progress;
|
| - var options = {
|
| - progress: progress.processedBytes / progress.totalBytes,
|
| - actions: {},
|
| - timeout: false
|
| - };
|
| -
|
| - var pendingItems = progress.numRemainingItems;
|
| - var type = this.transferType_();
|
| - var progressString = (pendingItems === 1) ?
|
| - strf(type + '_FILE_NAME', progress.processingEntry.name) :
|
| - strf(type + '_ITEMS_REMAINING', pendingItems);
|
| -
|
| - if (this.currentMode_ == ButterBar.Mode.COPY) {
|
| - this.update_(progressString, options);
|
| - } else {
|
| - options.actions[ButterBar.ACTION_X] =
|
| - this.fileOperationManager_.requestCancel.bind(
|
| - this.fileOperationManager_);
|
| - this.show(ButterBar.Mode.COPY, progressString, options);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * 'copy-progress' event handler. Show progress or an appropriate message.
|
| - * @param {Event} event A 'copy-progress' event from FileOperationManager.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.onCopyProgress_ = function(event) {
|
| - // Delete operation has higher priority.
|
| - if (this.currentMode_ == ButterBar.Mode.DELETE)
|
| - return;
|
| -
|
| - if (event.reason != 'PROGRESS')
|
| - this.clearShowTimeout_();
|
| -
|
| - switch (event.reason) {
|
| - case 'BEGIN':
|
| - this.showTimeout_ = setTimeout(function() {
|
| - this.showTimeout_ = null;
|
| - this.showProgress_(event.status);
|
| - }.bind(this), 500);
|
| - break;
|
| -
|
| - case 'PROGRESS':
|
| - this.showProgress_(event.status);
|
| - break;
|
| -
|
| - case 'SUCCESS':
|
| - this.hide_();
|
| - break;
|
| -
|
| - case 'CANCELLED':
|
| - this.show(ButterBar.Mode.DELETE,
|
| - str(this.transferType_() + '_CANCELLED'));
|
| - break;
|
| -
|
| - case 'ERROR':
|
| - this.progress_ = event.status;
|
| - var error = event.error;
|
| - if (error.code === util.FileOperationErrorType.TARGET_EXISTS) {
|
| - var name = error.data.name;
|
| - if (error.data.isDirectory)
|
| - name += '/';
|
| - this.showError_(
|
| - strf(this.transferType_() + '_TARGET_EXISTS_ERROR', name));
|
| - } else if (error.code === util.FileOperationErrorType.FILESYSTEM_ERROR) {
|
| - if (error.data.toDrive &&
|
| - error.data.code === FileError.QUOTA_EXCEEDED_ERR) {
|
| - // The alert will be shown in FileManager.onCopyProgress_.
|
| - this.hide_();
|
| - } else {
|
| - this.showError_(strf(this.transferType_() + '_FILESYSTEM_ERROR',
|
| - util.getFileErrorString(error.data.code)));
|
| - }
|
| - } else {
|
| - this.showError_(
|
| - strf(this.transferType_() + '_UNEXPECTED_ERROR', error));
|
| - }
|
| - break;
|
| -
|
| - default:
|
| - console.warn('Unknown "copy-progress" event reason: ' + event.code);
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * 'delete' event handler. Shows information about deleting files.
|
| - * @param {Event} event A 'delete' event from FileOperationManager.
|
| - * @private
|
| - */
|
| -ButterBar.prototype.onDelete_ = function(event) {
|
| - switch (event.reason) {
|
| - case 'BEGIN':
|
| - if (this.currentMode_ != ButterBar.Mode.DELETE)
|
| - this.totalDeleted_ = 0;
|
| -
|
| - case 'PROGRESS':
|
| - this.totalDeleted_ += event.urls.length;
|
| - var title = strf('DELETED_MESSAGE_PLURAL', this.totalDeleted_);
|
| - if (this.totalDeleted_ == 1) {
|
| - var fullPath = util.extractFilePath(event.urls[0]);
|
| - var fileName = PathUtil.split(fullPath).pop();
|
| - title = strf('DELETED_MESSAGE', fileName);
|
| - }
|
| -
|
| - if (this.currentMode_ == ButterBar.Mode.DELETE)
|
| - this.update_(title);
|
| - else
|
| - this.show(ButterBar.Mode.DELETE, title);
|
| - break;
|
| -
|
| - case 'SUCCESS':
|
| - break;
|
| -
|
| - case 'ERROR':
|
| - this.showError_(str('DELETE_ERROR'));
|
| - break;
|
| -
|
| - default:
|
| - console.warn('Unknown "delete" event reason: ' + event.reason);
|
| - }
|
| -};
|
|
|