Index: chrome/browser/resources/file_manager/js/file_manager.js |
diff --git a/chrome/browser/resources/file_manager/js/file_manager.js b/chrome/browser/resources/file_manager/js/file_manager.js |
index d25a68ef9098cca54fc5515cfc35045cdf52834b..69c6c381f9776d13f0617b96f48539cd69fc7c32 100644 |
--- a/chrome/browser/resources/file_manager/js/file_manager.js |
+++ b/chrome/browser/resources/file_manager/js/file_manager.js |
@@ -477,6 +477,18 @@ FileManager.prototype = { |
metrics.startInterval('RequestLocalFileSystem'); |
var self = this; |
+ |
+ // The list of active mount points to distinct them from other directories. |
+ chrome.fileBrowserPrivate.getMountPoints(function(mountPoints) { |
+ self.mountPoints_ = mountPoints; |
+ onDone(); |
+ }); |
+ |
+ function onDone() { |
+ if (self.mountPoints_ && self.rootEntries_) |
+ self.init_(); |
+ } |
+ |
chrome.fileBrowserPrivate.requestLocalFileSystem(function(filesystem) { |
self.filesystem_ = filesystem; |
util.installFileErrorToString(); |
@@ -488,7 +500,7 @@ FileManager.prototype = { |
function onAllRootsFound() { |
self.rootEntries_ = rootEntries; |
- self.init_(); |
+ onDone(); |
} |
function onPathError(path, err) { |
@@ -520,8 +532,6 @@ FileManager.prototype = { |
*/ |
FileManager.prototype.init_ = function() { |
metrics.startInterval('InitFileManager'); |
- this.initFileList_(); |
- this.initDialogs_(); |
// TODO(rginda): 6/22/11: Remove this test when createDateTimeFormat is |
// available in all chrome trunk builds. |
@@ -558,6 +568,9 @@ FileManager.prototype = { |
(this.dialogType_ == FileManager.DialogType.FULL_PAGE || |
this.dialogType_ == FileManager.DialogType.SELECT_OPEN_MULTI_FILE); |
+ this.initFileList_(); |
+ this.initDialogs_(); |
+ |
// DirectoryEntry representing the current directory of the dialog. |
this.currentDirEntry_ = null; |
@@ -588,11 +601,6 @@ FileManager.prototype = { |
// all paste tasks are complete. |
this.pasteSuccessCallbacks_ = []; |
- // The list of active mount points to distinct them from other directories. |
- chrome.fileBrowserPrivate.getMountPoints(function(mountPoints) { |
- self.mountPoints_ = mountPoints; |
- }); |
- |
this.initCommands_(); |
this.setupCurrentDirectory_(); |
@@ -648,7 +656,6 @@ FileManager.prototype = { |
this.previewPanel_ = this.dialogDom_.querySelector('.preview-panel'); |
this.previewFilename_ = this.dialogDom_.querySelector('.preview-filename'); |
this.previewSummary_ = this.dialogDom_.querySelector('.preview-summary'); |
- this.previewMetadata_ = this.dialogDom_.querySelector('.preview-metadata'); |
this.filenameInput_ = this.dialogDom_.querySelector('.filename-input'); |
this.taskButtons_ = this.dialogDom_.querySelector('.task-buttons'); |
this.okButton_ = this.dialogDom_.querySelector('.ok'); |
@@ -1133,13 +1140,9 @@ FileManager.prototype = { |
* Initialize the file list table. |
*/ |
FileManager.prototype.initTable_ = function() { |
- var checkWidth = this.showCheckboxes_ ? 5 : 0; |
- |
var columns = [ |
- new cr.ui.table.TableColumn('cachedIconType_', '', |
- 5.4 + checkWidth), |
new cr.ui.table.TableColumn('name', str('NAME_COLUMN_LABEL'), |
- 64 - checkWidth), |
+ 64), |
new cr.ui.table.TableColumn('cachedSize_', |
str('SIZE_COLUMN_LABEL'), 15.5), |
new cr.ui.table.TableColumn('type', |
@@ -1148,11 +1151,15 @@ FileManager.prototype = { |
str('DATE_COLUMN_LABEL'), 21) |
]; |
- columns[0].renderFunction = this.renderIconType_.bind(this); |
- columns[1].renderFunction = this.renderName_.bind(this); |
- columns[2].renderFunction = this.renderSize_.bind(this); |
- columns[3].renderFunction = this.renderType_.bind(this); |
- columns[4].renderFunction = this.renderDate_.bind(this); |
+ columns[0].renderFunction = this.renderName_.bind(this); |
+ columns[1].renderFunction = this.renderSize_.bind(this); |
+ columns[2].renderFunction = this.renderType_.bind(this); |
+ columns[3].renderFunction = this.renderDate_.bind(this); |
+ |
+ if (this.showCheckboxes_) { |
+ columns.unshift(new cr.ui.table.TableColumn('checkbox_', '', 3)); |
+ columns[0].renderFunction = this.renderCheckbox_.bind(this); |
+ } |
this.table_ = this.dialogDom_.querySelector('.detail-table'); |
cr.ui.Table.decorate(this.table_); |
@@ -1635,9 +1642,6 @@ FileManager.prototype = { |
var div = this.document_.createElement('div'); |
div.className = 'detail-icon-container'; |
- if (this.showCheckboxes_) |
- div.appendChild(this.renderCheckbox_(entry)); |
- |
var icon = this.document_.createElement('div'); |
icon.className = 'detail-icon'; |
this.getIconType(entry); |
@@ -1672,12 +1676,14 @@ FileManager.prototype = { |
*/ |
FileManager.prototype.renderName_ = function(entry, columnId, table) { |
var label = this.document_.createElement('div'); |
+ label.appendChild(this.renderIconType_(entry, columnId, table)); |
label.entry = entry; |
label.className = 'detail-name filename-label'; |
if (this.currentDirEntry_.name == '') { |
- label.textContent = this.getLabelForRootPath_(entry.name); |
+ label.appendChild(this.document_.createTextNode( |
+ this.getLabelForRootPath_(entry.name))); |
} else { |
- label.textContent = entry.name; |
+ label.appendChild(this.document_.createTextNode(entry.name)); |
} |
return label; |
@@ -1877,32 +1883,49 @@ FileManager.prototype = { |
}; |
FileManager.prototype.updatePreviewPanelVisibility_ = function() { |
- var wasHidden = this.previewPanel_.hasAttribute('hidden'); |
- var hide = (this.selection.totalCount == 0); |
+ var panel = this.previewPanel_; |
+ var state = panel.getAttribute('visibility'); |
+ var mustBeVisible = (this.selection.totalCount > 0); |
+ var self = this; |
- if (hide == wasHidden) |
- return; |
+ switch (state) { |
+ case 'visible': |
+ if (!mustBeVisible) |
+ startHiding(); |
+ break; |
- if (this.hidingTimeout_) { |
- // Hiding is not complete. display == block. |
- clearTimeout(this.hidingTimeout_); |
- this.hidingTimeout_ = 0; |
- } else if (wasHidden) { |
- // Hiding complete. display == none. |
- this.previewPanel_.style.display = ''; |
- this.onResize_(); |
+ case 'hiding': |
+ if (mustBeVisible) |
+ stopHidingAndShow(); |
+ break; |
+ |
+ case 'hidden': |
+ if (mustBeVisible) |
+ show(); |
} |
- var self = this; |
- if (hide) { |
- this.previewPanel_.setAttribute('hidden', ''); |
- this.hidingTimeout_ = setTimeout(function() { |
+ function stopHidingAndShow() { |
+ clearTimeout(self.hidingTimeout_); |
+ self.hidingTimeout_ = 0; |
+ setVisibility('visible'); |
+ } |
+ |
+ function startHiding() { |
+ setVisibility('hiding'); |
+ self.hidingTimeout_ = setTimeout(function() { |
self.hidingTimeout_ = 0; |
- self.previewPanel_.style.display = 'none'; |
+ setVisibility('hidden'); |
self.onResize_(); |
}, 250); |
- } else { |
- this.previewPanel_.removeAttribute('hidden'); |
+ } |
+ |
+ function show() { |
+ setVisibility('visible'); |
+ self.onResize_(); |
+ } |
+ |
+ function setVisibility(visibility) { |
+ panel.setAttribute('visibility', visibility); |
} |
}; |
@@ -2329,39 +2352,6 @@ FileManager.prototype = { |
} |
}; |
- FileManager.prototype.setPreviewMetadata = function(metadata) { |
- this.previewMetadata_.textContent = ''; |
- if (!(metadata && metadata.ifd)) |
- return; |
- |
- var self = this; |
- |
- function addProperty(id, v) { |
- var dom = self.document_.createElement('div'); |
- dom.className = 'metadata-item'; |
- var label = self.document_.createElement('div'); |
- label.className = 'metadata-label'; |
- label.textContent = str(id) || id; |
- dom.appendChild(label); |
- var value = self.document_.createElement('div'); |
- value.className = 'metadata-value'; |
- value.textContent = v; |
- dom.appendChild(value); |
- |
- self.previewMetadata_.appendChild(dom); |
- } |
- |
- // TODO(rginda): Split this function into metadata specific routines when |
- // we add new metadata types. |
- // TODO(rginda): Add const names for these numerics. |
- var exifDir = metadata.ifd.exif; |
- if (0xa002 in exifDir && 0xa003 in exifDir) { |
- addProperty('DIMENSIONS_LABEL', |
- strf('DIMENSIONS_FORMAT', exifDir[0xa002].value, |
- exifDir[0xa003].value)); |
- } |
- }; |
- |
FileManager.prototype.getThumbnailURL = function(entry, callback) { |
if (!entry) |
return; |
@@ -3201,7 +3191,7 @@ FileManager.prototype = { |
*/ |
FileManager.prototype.allowRenameClick_ = function(event, row) { |
if (this.dialogType_ != FileManager.DialogType.FULL_PAGE || |
- this.currentDirEntry_.name == '' || |
+ this.currentDirEntry_ == null || this.currentDirEntry_.name == '' || |
isSystemDirEntry(this.currentDirEntry_)) { |
// Renaming only enabled for full-page mode, outside of the root |
// directory. |