| Index: ui/file_manager/file_manager/foreground/js/file_manager.js
|
| diff --git a/ui/file_manager/file_manager/foreground/js/file_manager.js b/ui/file_manager/file_manager/foreground/js/file_manager.js
|
| index 4344c58cf4943d463b89628313a186afb675d4aa..e156d073b0eca19ce58892cdff74ead7807027cd 100644
|
| --- a/ui/file_manager/file_manager/foreground/js/file_manager.js
|
| +++ b/ui/file_manager/file_manager/foreground/js/file_manager.js
|
| @@ -232,29 +232,8 @@ function FileManager() {
|
| // Menus.
|
|
|
| /**
|
| - * Context menu for files.
|
| - * @type {HTMLMenuElement}
|
| - * @private
|
| - */
|
| - this.fileContextMenu_ = null;
|
| -
|
| - /**
|
| - * Context menu for volumes or shortcuts displayed on left pane.
|
| - * @type {HTMLMenuElement}
|
| - * @private
|
| - */
|
| - this.rootsContextMenu_ = null;
|
| -
|
| - /**
|
| - * Context menu for directory tree items.
|
| - * @type {HTMLMenuElement}
|
| - * @private
|
| - */
|
| - this.directoryTreeContextMenu_ = null;
|
| -
|
| - /**
|
| * Context menu for texts.
|
| - * @type {HTMLMenuElement}
|
| + * @type {cr.ui.Menu}
|
| * @private
|
| */
|
| this.textContextMenu_ = null;
|
| @@ -304,7 +283,7 @@ function FileManager() {
|
|
|
| /**
|
| * The button to open gear menu.
|
| - * @type {HTMLButtonElement}
|
| + * @type {cr.ui.MenuButton}
|
| * @private
|
| */
|
| this.gearButton_ = null;
|
| @@ -997,37 +976,53 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
|
| * @private
|
| */
|
| FileManager.prototype.initContextMenus_ = function() {
|
| - this.fileContextMenu_ = this.dialogDom_.querySelector('#file-context-menu');
|
| - cr.ui.Menu.decorate(this.fileContextMenu_);
|
| -
|
| - cr.ui.contextMenuHandler.setContextMenu(this.grid_, this.fileContextMenu_);
|
| - cr.ui.contextMenuHandler.setContextMenu(this.table_.querySelector('.list'),
|
| - this.fileContextMenu_);
|
| + assert(this.grid_);
|
| + assert(this.table_);
|
| + assert(this.document_);
|
| + assert(this.dialogDom_);
|
| +
|
| + // Set up the context menu for the file list.
|
| + var fileContextMenu = queryRequiredElement(
|
| + this.dialogDom_, '#file-context-menu');
|
| + cr.ui.Menu.decorate(fileContextMenu);
|
| + fileContextMenu = /** @type {!cr.ui.Menu} */ (fileContextMenu);
|
| +
|
| + cr.ui.contextMenuHandler.setContextMenu(this.grid_, fileContextMenu);
|
| cr.ui.contextMenuHandler.setContextMenu(
|
| - this.document_.querySelector('.drive-welcome.page'),
|
| - this.fileContextMenu_);
|
| -
|
| - this.rootsContextMenu_ =
|
| - this.dialogDom_.querySelector('#roots-context-menu');
|
| - cr.ui.Menu.decorate(this.rootsContextMenu_);
|
| - this.directoryTree_.contextMenuForRootItems = this.rootsContextMenu_;
|
| -
|
| - this.directoryTreeContextMenu_ =
|
| - this.dialogDom_.querySelector('#directory-tree-context-menu');
|
| - cr.ui.Menu.decorate(this.directoryTreeContextMenu_);
|
| - this.directoryTree_.contextMenuForSubitems = this.directoryTreeContextMenu_;
|
| -
|
| - this.textContextMenu_ =
|
| - this.dialogDom_.querySelector('#text-context-menu');
|
| - cr.ui.Menu.decorate(this.textContextMenu_);
|
| -
|
| - this.gearButton_ = this.dialogDom_.querySelector('#gear-button');
|
| - this.gearButton_.addEventListener('menushow',
|
| - this.onShowGearMenu_.bind(this));
|
| -
|
| + queryRequiredElement(this.table_, '.list'), fileContextMenu);
|
| + cr.ui.contextMenuHandler.setContextMenu(
|
| + queryRequiredElement(this.document_, '.drive-welcome.page'),
|
| + fileContextMenu);
|
| +
|
| + // Set up the context menu for the volume/shortcut items in directory tree.
|
| + var rootsContextMenu = queryRequiredElement(
|
| + this.dialogDom_, '#roots-context-menu');
|
| + cr.ui.Menu.decorate(rootsContextMenu);
|
| + rootsContextMenu = /** @type {!cr.ui.Menu} */ (rootsContextMenu);
|
| +
|
| + this.directoryTree_.contextMenuForRootItems = rootsContextMenu;
|
| +
|
| + // Set up the context menu for the folder items in directory tree.
|
| + var directoryTreeContextMenu = queryRequiredElement(
|
| + this.dialogDom_, '#directory-tree-context-menu');
|
| + cr.ui.Menu.decorate(directoryTreeContextMenu);
|
| + directoryTreeContextMenu =
|
| + /** @type {!cr.ui.Menu} */ (directoryTreeContextMenu);
|
| +
|
| + this.directoryTree_.contextMenuForSubitems = directoryTreeContextMenu;
|
| +
|
| + // Set up the context menu for the text editing.
|
| + var textContextMenu = queryRequiredElement(
|
| + this.dialogDom_, '#text-context-menu');
|
| + cr.ui.Menu.decorate(textContextMenu);
|
| + this.textContextMenu_ = /** @type {!cr.ui.Menu} */ (textContextMenu);
|
| +
|
| + var gearButton = queryRequiredElement(this.dialogDom_, '#gear-button');
|
| + gearButton.addEventListener('menushow', this.onShowGearMenu_.bind(this));
|
| this.dialogDom_.querySelector('#gear-menu').menuItemSelector =
|
| 'menuitem, hr';
|
| - cr.ui.decorate(this.gearButton_, cr.ui.MenuButton);
|
| + cr.ui.decorate(gearButton, cr.ui.MenuButton);
|
| + this.gearButton_ = /** @type {!cr.ui.MenuButton} */ (gearButton);
|
|
|
| this.syncButton.checkable = true;
|
| this.hostedButton.checkable = true;
|
| @@ -1068,6 +1063,9 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
|
| * @private
|
| */
|
| FileManager.prototype.initCommands_ = function() {
|
| + assert(this.textContextMenu_);
|
| + assert(this.renameInput_);
|
| +
|
| this.commandHandler = new CommandHandler(this);
|
|
|
| // TODO(hirono): Move the following block to the UI part.
|
| @@ -1303,22 +1301,28 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
|
| // Cache nodes we'll be manipulating.
|
| var dom = this.dialogDom_;
|
|
|
| - this.filenameInput_ = dom.querySelector('#filename-input-box input');
|
| - this.taskItems_ = dom.querySelector('#tasks');
|
| + var filenameInput = queryRequiredElement(dom, '#filename-input-box input');
|
| + this.filenameInput_ = /** @type {HTMLInputElement} */ (filenameInput);
|
| +
|
| + var taskItems = queryRequiredElement(dom, '#tasks');
|
| + this.taskItems_ = /** @type {HTMLButtonElement} */ (taskItems);
|
|
|
| - this.table_ = dom.querySelector('.detail-table');
|
| - this.grid_ = dom.querySelector('.thumbnail-grid');
|
| - this.spinner_ = dom.querySelector('#list-container > .spinner-layer');
|
| + var spinner = queryRequiredElement(dom, '#list-container > .spinner-layer');
|
| + this.spinner_ = /** @type {HTMLDivElement} */ (spinner);
|
| this.showSpinner_(true);
|
|
|
| var fullPage = this.dialogType == DialogType.FULL_PAGE;
|
| + var table = queryRequiredElement(dom, '.detail-table');
|
| + var grid = queryRequiredElement(dom, '.thumbnail-grid');
|
| FileTable.decorate(
|
| - this.table_, this.metadataCache_, this.volumeManager_, fullPage);
|
| - FileGrid.decorate(this.grid_, this.metadataCache_, this.volumeManager_);
|
| + table, this.metadataCache_, this.volumeManager_, fullPage);
|
| + FileGrid.decorate(grid, this.metadataCache_, this.volumeManager_);
|
| + this.table_ = /** @type {!FileTable} */ (table);
|
| + this.grid_ = /** @type {!FileGrid} */ (grid);
|
|
|
| this.ui_.locationLine = new LocationLine(
|
| - dom.querySelector('#location-breadcrumbs'),
|
| - dom.querySelector('#location-volume-icon'),
|
| + queryRequiredElement(dom, '#location-breadcrumbs'),
|
| + queryRequiredElement(dom, '#location-volume-icon'),
|
| this.metadataCache_,
|
| this.volumeManager_);
|
| this.ui_.locationLine.addEventListener(
|
| @@ -1338,7 +1342,7 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
|
|
|
| // Initialize progress center panel.
|
| this.progressCenterPanel_ = new ProgressCenterPanel(
|
| - dom.querySelector('#progress-center'));
|
| + queryRequiredElement(dom, '#progress-center'));
|
| this.backgroundPage_.background.progressCenter.addPanel(
|
| this.progressCenterPanel_);
|
|
|
|
|