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

Unified Diff: chrome/browser/resources/options/options_page.js

Issue 5538002: dom-ui settings: Implement search capability for top level panels.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Rebase to r68355. Created 10 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/resources/options.html ('k') | chrome/browser/resources/options/search_page.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/options/options_page.js
===================================================================
--- chrome/browser/resources/options/options_page.js (revision 68355)
+++ chrome/browser/resources/options/options_page.js (working copy)
@@ -24,20 +24,27 @@
this.managed = false;
}
- OptionsPage.registeredPages_ = {};
+ /**
+ * Main level option pages.
+ * @protected
+ */
+ OptionsPage.registeredPages = {};
/**
- * Pages which are nested under a main page.
+ * Pages which are nested under a main level page.
+ * @protected
*/
- OptionsPage.registeredSubPages_ = {};
+ OptionsPage.registeredSubPages = {};
/**
* Pages which are meant to behave like modal dialogs.
+ * @protected
*/
- OptionsPage.registeredOverlayPages_ = {};
+ OptionsPage.registeredOverlayPages = {};
/**
* Whether or not |initialize| has been called.
+ * @private
*/
OptionsPage.initialized_ = false;
@@ -46,17 +53,34 @@
* @param {string} pageName Page name.
*/
OptionsPage.showPageByName = function(pageName) {
- for (var name in OptionsPage.registeredPages_) {
- var page = OptionsPage.registeredPages_[name];
+ // Notify main pages if they will be hidden.
+ for (var name in this.registeredPages) {
+ var page = this.registeredPages[name];
+ if (name != pageName && page.willHidePage)
+ page.willHidePage();
+ }
+
+ // Update the visibility attribute for main pages.
+ for (var name in this.registeredPages) {
+ var page = this.registeredPages[name];
page.visible = name == pageName;
}
- for (var name in OptionsPage.registeredSubPages_) {
- var pageInfo = OptionsPage.registeredSubPages_[name];
+
+ // Update the visibility attribute for sub-pages.
+ for (var name in this.registeredSubPages) {
+ var pageInfo = this.registeredSubPages[name];
var match = name == pageName;
if (match)
pageInfo.parentPage.visible = true;
pageInfo.page.visible = match;
}
+
+ // Notify main pages if they were shown.
+ for (var name in this.registeredPages) {
+ var page = this.registeredPages[name];
+ if (name == pageName && page.didShowPage)
+ page.didShowPage();
+ }
};
/**
@@ -66,9 +90,9 @@
* @param {string} hash The value of the hash component of the URL.
*/
OptionsPage.handleHashForPage = function(pageName, hash) {
- var page = OptionsPage.registeredPages_[pageName];
+ var page = this.registeredPages[pageName];
if (!page) {
- page = OptionsPage.registeredSubPages_[pageName].page;
+ page = this.registeredSubPages[pageName].page;
}
page.handleHash(hash);
};
@@ -78,8 +102,8 @@
* @param {string} overlayName Page name.
*/
OptionsPage.showOverlay = function(overlayName) {
- if (OptionsPage.registeredOverlayPages_[overlayName]) {
- OptionsPage.registeredOverlayPages_[overlayName].visible = true;
+ if (this.registeredOverlayPages[overlayName]) {
+ this.registeredOverlayPages[overlayName].visible = true;
}
};
@@ -87,20 +111,20 @@
* Clears overlays (i.e. hide all overlays).
*/
OptionsPage.clearOverlays = function() {
- for (var name in OptionsPage.registeredOverlayPages_) {
- var page = OptionsPage.registeredOverlayPages_[name];
+ for (var name in this.registeredOverlayPages) {
+ var page = this.registeredOverlayPages[name];
page.visible = false;
}
};
/**
- * Clears overlays if the key event is ESC.
+ * Handle 'keydown' events.
* @param {Event} e Key event.
* @private
*/
- OptionsPage.clearOverlaysOnEsc_ = function(e) {
+ OptionsPage.onKeyDown_ = function(e) {
if (e.keyCode == 27) { // Esc
- OptionsPage.clearOverlays();
+ this.clearOverlays();
}
};
@@ -108,8 +132,8 @@
* Closes any currently-open subpage.
*/
OptionsPage.closeSubPage = function() {
- for (var name in OptionsPage.registeredSubPages_) {
- var pageInfo = OptionsPage.registeredSubPages_[name];
+ for (var name in this.registeredSubPages) {
+ var pageInfo = this.registeredSubPages[name];
if (pageInfo.page.visible) {
pageInfo.page.visible = false;
// Since the managed pref banner lives outside the overlay, and the
@@ -149,7 +173,7 @@
* @param {OptionsPage} page Page to register.
*/
OptionsPage.register = function(page) {
- OptionsPage.registeredPages_[page.name] = page;
+ this.registeredPages[page.name] = page;
// Create and add new page <li> element to navbar.
var pageNav = document.createElement('li');
pageNav.id = page.name + 'PageNav';
@@ -177,7 +201,7 @@
* @param {OptionsPage} page Page to register.
*/
OptionsPage.registerSubPage = function(subPage, parentPage) {
- OptionsPage.registeredSubPages_[subPage.name] = {
+ this.registeredSubPages[subPage.name] = {
page: subPage, parentPage: parentPage };
subPage.tab = undefined;
subPage.isSubPageSheet = true;
@@ -190,7 +214,7 @@
* OptionsPage.
*/
OptionsPage.registerOverlay = function(page) {
- OptionsPage.registeredOverlayPages_[page.name] = page;
+ this.registeredOverlayPages[page.name] = page;
page.tab = undefined;
page.isOverlay = true;
page.initializePage();
@@ -202,7 +226,7 @@
*/
OptionsPage.setState = function(data) {
if (data && data.pageName) {
- OptionsPage.showPageByName(data.pageName);
+ this.showPageByName(data.pageName);
}
};
@@ -218,7 +242,7 @@
// should close the overlay, not fall through to the parent page.
$('subpage-sheet-container').onclick = function(event) {
if (!$('subpage-sheet').contains(event.target))
- OptionsPage.closeSubPage();
+ this.closeSubPage();
event.stopPropagation();
}
};
@@ -284,8 +308,7 @@
this.pageDiv.classList.remove('hidden');
if (this.isOverlay) {
$('overlay').classList.remove('hidden');
- document.addEventListener('keydown',
- OptionsPage.clearOverlaysOnEsc_);
+ document.addEventListener('keydown', OptionsPage.onKeyDown_);
} else {
if (this.isSubPageSheet)
$('subpage-sheet-container').classList.remove('hidden');
@@ -302,8 +325,7 @@
this.pageDiv.classList.add('hidden');
if (this.isOverlay) {
$('overlay').classList.add('hidden');
- document.removeEventListener('keydown',
- OptionsPage.clearOverlaysOnEsc_);
+ document.removeEventListener('keydown', OptionsPage.onKeyDown_);
} else if (this.isSubPageSheet) {
$('subpage-sheet-container').classList.add('hidden');
}
« no previous file with comments | « chrome/browser/resources/options.html ('k') | chrome/browser/resources/options/search_page.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698