| Index: trunk/src/chrome/browser/resources/file_manager/js/file_selection.js
|
| ===================================================================
|
| --- trunk/src/chrome/browser/resources/file_manager/js/file_selection.js (revision 221612)
|
| +++ trunk/src/chrome/browser/resources/file_manager/js/file_selection.js (working copy)
|
| @@ -26,7 +26,6 @@
|
| this.iconType = null;
|
| this.bytesKnown = false;
|
| this.mustBeHidden_ = false;
|
| - this.mimeTypes = null;
|
|
|
| // Synchronously compute what we can.
|
| for (var i = 0; i < this.indexes.length; i++) {
|
| @@ -54,8 +53,6 @@
|
| }
|
|
|
| this.tasks = new FileTasks(this.fileManager_);
|
| -
|
| - Object.seal(this);
|
| }
|
|
|
| /**
|
| @@ -159,13 +156,11 @@
|
| // TODO(dgozman): create a shared object with most of UI elements.
|
| this.okButton_ = fileManager.okButton_;
|
| this.filenameInput_ = fileManager.filenameInput_;
|
| - this.previewPanel_ = fileManager.previewPanel_;
|
| - this.previewPanelElement_ =
|
| - fileManager.dialogDom_.querySelector('.preview-panel');
|
| - this.previewThumbnails_ = this.previewPanelElement_.
|
| +
|
| + this.previewPanel_ = fileManager.dialogDom_.querySelector('.preview-panel');
|
| + this.previewThumbnails_ = this.previewPanel_.
|
| querySelector('.preview-thumbnails');
|
| - this.previewSummary_ =
|
| - this.previewPanelElement_.querySelector('.preview-summary');
|
| + this.previewSummary_ = this.previewPanel_.querySelector('.preview-summary');
|
| this.previewText_ = this.previewSummary_.querySelector('.preview-text');
|
| this.calculatingSize_ = this.previewSummary_.
|
| querySelector('.calculating-size');
|
| @@ -315,6 +310,82 @@
|
| };
|
|
|
| /**
|
| + * Sets the flag to force the preview panel hidden.
|
| + * @param {boolean} hidden True to force hidden.
|
| + */
|
| +FileSelectionHandler.prototype.setPreviewPanelMustBeHidden = function(hidden) {
|
| + this.previewPanelMustBeHidden_ = hidden;
|
| + this.updatePreviewPanelVisibility_();
|
| +};
|
| +
|
| +/**
|
| + * Animates preview panel show/hide transitions.
|
| + *
|
| + * @private
|
| + */
|
| +FileSelectionHandler.prototype.updatePreviewPanelVisibility_ = function() {
|
| + var panel = this.previewPanel_;
|
| + var state = panel.getAttribute('visibility');
|
| + var mustBeVisible =
|
| + // If one or more files are selected, show the file info.
|
| + (this.selection.totalCount > 0 ||
|
| + // If the directory is not root dir, show the directory info.
|
| + !PathUtil.isRootPath(this.fileManager_.getCurrentDirectory()) ||
|
| + // On Open File dialog, the preview panel is always shown.
|
| + this.fileManager_.dialogType == DialogType.SELECT_OPEN_FILE ||
|
| + this.fileManager_.dialogType == DialogType.SELECT_OPEN_MULTI_FILE);
|
| +
|
| + var stopHidingAndShow = function() {
|
| + clearTimeout(this.hidingTimeout_);
|
| + this.hidingTimeout_ = 0;
|
| + setVisibility('visible');
|
| + }.bind(this);
|
| +
|
| + var startHiding = function() {
|
| + setVisibility('hiding');
|
| + this.hidingTimeout_ = setTimeout(function() {
|
| + this.hidingTimeout_ = 0;
|
| + setVisibility('hidden');
|
| + cr.dispatchSimpleEvent(this, 'hide-preview-panel');
|
| + }.bind(this), 250);
|
| + }.bind(this);
|
| +
|
| + var show = function() {
|
| + setVisibility('visible');
|
| + this.previewThumbnails_.textContent = '';
|
| + cr.dispatchSimpleEvent(this, 'show-preview-panel');
|
| + }.bind(this);
|
| +
|
| + var setVisibility = function(visibility) {
|
| + panel.setAttribute('visibility', visibility);
|
| + };
|
| +
|
| + switch (state) {
|
| + case 'visible':
|
| + if (!mustBeVisible || this.previewPanelMustBeHidden_)
|
| + startHiding();
|
| + break;
|
| +
|
| + case 'hiding':
|
| + if (mustBeVisible && !this.previewPanelMustBeHidden_)
|
| + stopHidingAndShow();
|
| + break;
|
| +
|
| + case 'hidden':
|
| + if (mustBeVisible && !this.previewPanelMustBeHidden_)
|
| + show();
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * @return {boolean} True if space reserverd for the preview panel.
|
| + * @private
|
| + */
|
| +FileSelectionHandler.prototype.isPreviewPanelVisibile_ = function() {
|
| + return this.previewPanel_.getAttribute('visibility') == 'visible';
|
| +};
|
| +
|
| +/**
|
| * Update the selection summary in preview panel.
|
| *
|
| * @private
|
| @@ -422,7 +493,7 @@
|
| }
|
|
|
| // Update preview panels.
|
| - var wasVisible = this.previewPanel_.visible;
|
| + var wasVisible = this.isPreviewPanelVisibile_();
|
| var thumbnailEntries;
|
| if (selection.totalCount == 0) {
|
| thumbnailEntries = [
|
| @@ -438,7 +509,7 @@
|
| }.bind(this));
|
| }
|
| }
|
| - this.previewPanel_.entries = selection.entries;
|
| + this.updatePreviewPanelVisibility_();
|
| this.updatePreviewPanelText_();
|
| this.showPreviewThumbnails_(thumbnailEntries);
|
|
|
| @@ -449,7 +520,7 @@
|
| // Shows the breadcrumb list when a file is selected.
|
| updateTarget = selection.entries[0].fullPath;
|
| } else if (selection.totalCount == 0 &&
|
| - this.previewPanel_.visible) {
|
| + this.isPreviewPanelVisibile_()) {
|
| // Shows the breadcrumb list when no file is selected and the preview
|
| // panel is visible.
|
| updateTarget = path;
|
|
|