| Index: ui/file_manager/file_manager/foreground/js/quick_view_controller.js
|
| diff --git a/ui/file_manager/file_manager/foreground/js/quick_view_controller.js b/ui/file_manager/file_manager/foreground/js/quick_view_controller.js
|
| index c651a9e0dc9b05b1db065f9eddc97682245bae93..764ed09f34548a8d5580da8a8cfe39e58a92e878 100644
|
| --- a/ui/file_manager/file_manager/foreground/js/quick_view_controller.js
|
| +++ b/ui/file_manager/file_manager/foreground/js/quick_view_controller.js
|
| @@ -4,8 +4,8 @@
|
|
|
| /**
|
| * Controller for QuickView.
|
| + * This should be initialized with |init_| method.
|
| *
|
| - * @param {!FilesQuickView} quickView
|
| * @param {!MetadataModel} metadataModel File system metadata.
|
| * @param {!FileSelectionHandler} selectionHandler
|
| * @param {!ListContainer} listContainer
|
| @@ -13,17 +13,31 @@
|
| * @param {!TaskController} taskController
|
| * @param {!cr.ui.ListSelectionModel} fileListSelectionModel
|
| * @param {!QuickViewUma} quickViewUma
|
| + * @param {!MetadataBoxController} metadataBoxController
|
| *
|
| * @constructor
|
| */
|
| function QuickViewController(
|
| - quickView, metadataModel, selectionHandler, listContainer, quickViewModel,
|
| - taskController, fileListSelectionModel, quickViewUma) {
|
| + metadataModel, selectionHandler, listContainer, quickViewModel,
|
| + taskController, fileListSelectionModel, quickViewUma,
|
| + metadataBoxController) {
|
| /**
|
| - * @type {!FilesQuickView}
|
| + * @type {FilesQuickView}
|
| * @private
|
| */
|
| - this.quickView_ = quickView;
|
| + this.quickView_ = null;
|
| +
|
| + /**
|
| + * @type {!FileSelectionHandler}
|
| + * @private
|
| + */
|
| + this.selectionHandler_ = selectionHandler;
|
| +
|
| + /**
|
| + * @type {!ListContainer}
|
| + * @private
|
| + */
|
| + this.listContainer_ = listContainer;
|
|
|
| /**
|
| * @type{!QuickViewModel}
|
| @@ -44,12 +58,6 @@ function QuickViewController(
|
| this.metadataModel_ = metadataModel;
|
|
|
| /**
|
| - * @type {!ListContainer}
|
| - * @private
|
| - */
|
| - this.listContainer_ = listContainer;
|
| -
|
| - /**
|
| * @type {!TaskController}
|
| * @private
|
| */
|
| @@ -62,6 +70,12 @@ function QuickViewController(
|
| this.fileListSelectionModel_ = fileListSelectionModel;
|
|
|
| /**
|
| + * @type {!MetadataBoxController}
|
| + * @private
|
| + */
|
| + this.metadataBoxController_ = metadataBoxController;
|
| +
|
| + /**
|
| * Current selection of selectionHandler.
|
| *
|
| * @type {!Array<!FileEntry>}
|
| @@ -69,15 +83,25 @@ function QuickViewController(
|
| */
|
| this.entries_ = [];
|
|
|
| - selectionHandler.addEventListener(
|
| + this.selectionHandler_.addEventListener(
|
| FileSelectionHandler.EventType.CHANGE,
|
| this.onFileSelectionChanged_.bind(this));
|
| - listContainer.element.addEventListener(
|
| + this.listContainer_.element.addEventListener(
|
| 'keydown', this.onKeyDownToOpen_.bind(this));
|
| - listContainer.element.addEventListener('command', function(event) {
|
| + this.listContainer_.element.addEventListener('command', function(event) {
|
| if(event.command.id === 'get-info')
|
| this.display_();
|
| }.bind(this));
|
| +}
|
| +
|
| +/**
|
| + * Initialize the controller with quick view which will be lazily loaded.
|
| + * @param {!FilesQuickView} quickView
|
| + * @private
|
| + */
|
| +QuickViewController.prototype.init_ = function(quickView) {
|
| + this.quickView_ = quickView;
|
| + this.metadataBoxController_.init(quickView);
|
| quickView.addEventListener('keydown', this.onQuickViewKeyDown_.bind(this));
|
| quickView.addEventListener('iron-overlay-closed', function() {
|
| this.listContainer_.focus();
|
| @@ -87,7 +111,17 @@ function QuickViewController(
|
| var toolTip = this.quickView_.$$('files-tooltip');
|
| var elems = this.quickView_.$.buttons.querySelectorAll('[has-tooltip]');
|
| toolTip.addTargets(elems);
|
| -}
|
| +};
|
| +
|
| +/**
|
| + * Craete quick view element.
|
| + * TODO(oka): lazy load quick view element for fast Files App initialization.
|
| + * @return Promise<!FilesQuickView>
|
| + * @private
|
| + */
|
| +QuickViewController.prototype.createQuickView_ = function() {
|
| + return Promise.resolve(document.querySelector('#quick-view'));
|
| +};
|
|
|
| /**
|
| * Handles open-in-new button tap.
|
| @@ -167,7 +201,7 @@ QuickViewController.prototype.display_ = function() {
|
| */
|
| QuickViewController.prototype.onFileSelectionChanged_ = function(event) {
|
| this.entries_ = event.target.selection.entries;
|
| - if (this.quickView_.isOpened()) {
|
| + if (this.quickView_ && this.quickView_.isOpened()) {
|
| assert(this.entries_.length > 0);
|
| var entry = this.entries_[0];
|
| this.quickViewModel_.setSelectedEntry(entry);
|
| @@ -182,6 +216,12 @@ QuickViewController.prototype.onFileSelectionChanged_ = function(event) {
|
| * @private
|
| */
|
| QuickViewController.prototype.updateQuickView_ = function() {
|
| + if (!this.quickView_) {
|
| + return this.createQuickView_()
|
| + .then(this.init_.bind(this))
|
| + .then(this.updateQuickView_.bind(this))
|
| + .catch(console.error);
|
| + }
|
| assert(this.entries_.length > 0);
|
| // TODO(oka): Support multi-selection.
|
| this.quickViewModel_.setSelectedEntry(this.entries_[0]);
|
|
|