Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(324)

Side by Side Diff: chrome/browser/resources/file_manager/js/file_manager.js

Issue 6905143: file manager: respect back/fwd buttons (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: set default title shown while initializing Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/resources/file_manager/main.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // WK Bug 55728 is fixed on the chrome 12 branch but not on the trunk. 5 // WK Bug 55728 is fixed on the chrome 12 branch but not on the trunk.
6 // TODO(rginda): Enable this everywhere once we have a trunk-worthy fix. 6 // TODO(rginda): Enable this everywhere once we have a trunk-worthy fix.
7 const ENABLE_EXIF_READER = navigator.userAgent.match(/chrome\/12\.0/i); 7 const ENABLE_EXIF_READER = navigator.userAgent.match(/chrome\/12\.0/i);
8 8
9 // Thumbnail view is painful without the exif reader. 9 // Thumbnail view is painful without the exif reader.
10 const ENABLE_THUMBNAIL_VIEW = ENABLE_EXIF_READER; 10 const ENABLE_THUMBNAIL_VIEW = ENABLE_EXIF_READER;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 this.document_ = dialogDom.ownerDocument; 46 this.document_ = dialogDom.ownerDocument;
47 this.dialogType_ = 47 this.dialogType_ =
48 this.params_.type || FileManager.DialogType.FULL_PAGE; 48 this.params_.type || FileManager.DialogType.FULL_PAGE;
49 49
50 this.defaultPath_ = this.params_.defaultPath || '/'; 50 this.defaultPath_ = this.params_.defaultPath || '/';
51 51
52 // DirectoryEntry representing the current directory of the dialog. 52 // DirectoryEntry representing the current directory of the dialog.
53 this.currentDirEntry_ = null; 53 this.currentDirEntry_ = null;
54 54
55 window.addEventListener('popstate', this.onPopState_.bind(this));
55 this.addEventListener('directory-changed', 56 this.addEventListener('directory-changed',
56 this.onDirectoryChanged_.bind(this)); 57 this.onDirectoryChanged_.bind(this));
57 this.addEventListener('selection-summarized', 58 this.addEventListener('selection-summarized',
58 this.onSelectionSummarized_.bind(this)); 59 this.onSelectionSummarized_.bind(this));
59 60
60 this.initDom_(); 61 this.initDom_();
61 this.initDialogType_(); 62 this.initDialogType_();
62 63
63 this.onDetailSelectionChanged_(); 64 this.onDetailSelectionChanged_();
64 65
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 553
553 this.table_.selectionModel = new this.selectionModelClass_(); 554 this.table_.selectionModel = new this.selectionModelClass_();
554 this.table_.columnModel = new cr.ui.table.TableColumnModel(columns); 555 this.table_.columnModel = new cr.ui.table.TableColumnModel(columns);
555 556
556 this.table_.addEventListener( 557 this.table_.addEventListener(
557 'dblclick', this.onDetailDoubleClick_.bind(this)); 558 'dblclick', this.onDetailDoubleClick_.bind(this));
558 this.table_.selectionModel.addEventListener( 559 this.table_.selectionModel.addEventListener(
559 'change', this.onDetailSelectionChanged_.bind(this)); 560 'change', this.onDetailSelectionChanged_.bind(this));
560 }; 561 };
561 562
563 /**
564 * Respond to the back button.
565 */
566 FileManager.prototype.onPopState_ = function(event) {
567 this.changeDirectory(event.state, false);
568 };
569
570 /**
571 * Resize details and thumb views to fit the new window size.
572 */
562 FileManager.prototype.onResize_ = function() { 573 FileManager.prototype.onResize_ = function() {
563 this.table_.style.height = this.grid_.style.height = 574 this.table_.style.height = this.grid_.style.height =
564 this.grid_.parentNode.clientHeight + 'px'; 575 this.grid_.parentNode.clientHeight + 'px';
565 this.table_.style.width = this.grid_.style.width = 576 this.table_.style.width = this.grid_.style.width =
566 this.grid_.parentNode.clientWidth + 'px'; 577 this.grid_.parentNode.clientWidth + 'px';
567 578
568 this.table_.list_.style.width = this.table_.parentNode.clientWidth + 'px'; 579 this.table_.list_.style.width = this.table_.parentNode.clientWidth + 'px';
569 this.table_.list_.style.height = (this.table_.clientHeight - 1 - 580 this.table_.list_.style.height = (this.table_.clientHeight - 1 -
570 this.table_.header_.clientHeight) + 'px'; 581 this.table_.header_.clientHeight) + 'px';
571 582
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 setTimeout(function() { callback(iconType, entry.toURL()) }); 1158 setTimeout(function() { callback(iconType, entry.toURL()) });
1148 }; 1159 };
1149 1160
1150 /** 1161 /**
1151 * Change the current directory. 1162 * Change the current directory.
1152 * 1163 *
1153 * Dispatches the 'directory-changed' event when the directory is successfully 1164 * Dispatches the 'directory-changed' event when the directory is successfully
1154 * changed. 1165 * changed.
1155 * 1166 *
1156 * @param {string} path The absolute path to the new directory. 1167 * @param {string} path The absolute path to the new directory.
1168 * @param {bool} opt_saveHistory Save this in the history stack (defaults
1169 * to true).
1157 */ 1170 */
1158 FileManager.prototype.changeDirectory = function(path) { 1171 FileManager.prototype.changeDirectory = function(path, opt_saveHistory) {
1159 var self = this; 1172 var self = this;
1160 1173
1174 if (arguments.length == 1) {
1175 opt_saveHistory = true;
1176 } else {
1177 opt_saveHistory = !!opt_saveHistory;
1178 }
1179
1161 function onPathFound(dirEntry) { 1180 function onPathFound(dirEntry) {
1162 if (self.currentDirEntry_ && 1181 if (self.currentDirEntry_ &&
1163 self.currentDirEntry_.fullPath == dirEntry.fullPath) { 1182 self.currentDirEntry_.fullPath == dirEntry.fullPath) {
1164 // Directory didn't actually change. 1183 // Directory didn't actually change.
1165 return; 1184 return;
1166 } 1185 }
1167 1186
1168 var e = new cr.Event('directory-changed'); 1187 var e = new cr.Event('directory-changed');
1169 e.previousDirEntry = self.currentDirEntry_; 1188 e.previousDirEntry = self.currentDirEntry_;
1170 e.newDirEntry = dirEntry; 1189 e.newDirEntry = dirEntry;
1190 e.saveHistory = opt_saveHistory;
1171 self.currentDirEntry_ = dirEntry; 1191 self.currentDirEntry_ = dirEntry;
1172 self.dispatchEvent(e); 1192 self.dispatchEvent(e);
1173 }; 1193 };
1174 1194
1175 if (path == '/') 1195 if (path == '/')
1176 return onPathFound(this.filesystem_.root); 1196 return onPathFound(this.filesystem_.root);
1177 1197
1178 this.filesystem_.root.getDirectory( 1198 this.filesystem_.root.getDirectory(
1179 path, {create: false}, onPathFound, 1199 path, {create: false}, onPathFound,
1180 function(err) { 1200 function(err) {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 this.onOk_(); 1322 this.onOk_();
1303 1323
1304 }; 1324 };
1305 1325
1306 /** 1326 /**
1307 * Update the UI when the current directory changes. 1327 * Update the UI when the current directory changes.
1308 * 1328 *
1309 * @param {cr.Event} event The directory-changed event. 1329 * @param {cr.Event} event The directory-changed event.
1310 */ 1330 */
1311 FileManager.prototype.onDirectoryChanged_ = function(event) { 1331 FileManager.prototype.onDirectoryChanged_ = function(event) {
1332 if (event.saveHistory) {
1333 history.pushState(this.currentDirEntry_.fullPath,
1334 this.currentDirEntry_.fullPath,
1335 location.href);
1336 }
1337 this.document_.title = this.currentDirEntry_.fullPath;
1312 this.rescanDirectory_(); 1338 this.rescanDirectory_();
1313 }; 1339 };
1314 1340
1315 /** 1341 /**
1316 * Update the UI when a disk is mounted or unmounted. 1342 * Update the UI when a disk is mounted or unmounted.
1317 * 1343 *
1318 * @param {string} path The path that has been mounted or unmounted. 1344 * @param {string} path The path that has been mounted or unmounted.
1319 */ 1345 */
1320 FileManager.prototype.onDiskChanged_ = function(event) { 1346 FileManager.prototype.onDiskChanged_ = function(event) {
1321 // TODO(rginda): Please check and wire handling of other data passed here. 1347 // TODO(rginda): Please check and wire handling of other data passed here.
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
1574 } else if (this.dialogType_ == FileManager.DialogType.SELECT_OPEN_FILE) { 1600 } else if (this.dialogType_ == FileManager.DialogType.SELECT_OPEN_FILE) {
1575 if (!this.selection.leadEntry.isFile) 1601 if (!this.selection.leadEntry.isFile)
1576 throw new Error('Selected entry is not a file!'); 1602 throw new Error('Selected entry is not a file!');
1577 } 1603 }
1578 1604
1579 chrome.fileBrowserPrivate.selectFile(ary[0], 0); 1605 chrome.fileBrowserPrivate.selectFile(ary[0], 0);
1580 window.close(); 1606 window.close();
1581 }; 1607 };
1582 1608
1583 })(); 1609 })();
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/file_manager/main.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698