| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 cr.define('options', function() { | 5 cr.define('options', function() { |
| 6 ///////////////////////////////////////////////////////////////////////////// | 6 ///////////////////////////////////////////////////////////////////////////// |
| 7 // OptionsPage class: | 7 // OptionsPage class: |
| 8 | 8 |
| 9 /** | 9 /** |
| 10 * Base class for options page. | 10 * Base class for options page. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 */ | 36 */ |
| 37 OptionsPage.registeredOverlayPages = {}; | 37 OptionsPage.registeredOverlayPages = {}; |
| 38 | 38 |
| 39 /** | 39 /** |
| 40 * Whether or not |initialize| has been called. | 40 * Whether or not |initialize| has been called. |
| 41 * @private | 41 * @private |
| 42 */ | 42 */ |
| 43 OptionsPage.initialized_ = false; | 43 OptionsPage.initialized_ = false; |
| 44 | 44 |
| 45 /** | 45 /** |
| 46 * Shows the default page. |
| 47 */ |
| 48 OptionsPage.showDefaultPage = function() { |
| 49 // TODO(csilv): Persist the current page. |
| 50 this.showPageByName(BrowserOptions.getInstance().name); |
| 51 }; |
| 52 |
| 53 /** |
| 46 * Shows a registered page. This handles both top-level pages and sub-pages. | 54 * Shows a registered page. This handles both top-level pages and sub-pages. |
| 47 * @param {string} pageName Page name. | 55 * @param {string} pageName Page name. |
| 48 */ | 56 */ |
| 49 OptionsPage.showPageByName = function(pageName) { | 57 OptionsPage.showPageByName = function(pageName) { |
| 50 var targetPage = this.registeredPages[pageName]; | 58 var targetPage = this.registeredPages[pageName]; |
| 51 | 59 |
| 52 // Determine if the root page is 'sticky', meaning that it | 60 // Determine if the root page is 'sticky', meaning that it |
| 53 // shouldn't change when showing a sub-page. This can happen for special | 61 // shouldn't change when showing a sub-page. This can happen for special |
| 54 // pages like Search. | 62 // pages like Search. |
| 55 var rootPage = null; | 63 var rootPage = null; |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 true); | 340 true); |
| 333 | 341 |
| 334 // Hook up the close buttons. | 342 // Hook up the close buttons. |
| 335 subpageCloseButtons = document.querySelectorAll('.close-subpage'); | 343 subpageCloseButtons = document.querySelectorAll('.close-subpage'); |
| 336 for (var i = 0; i < subpageCloseButtons.length; i++) { | 344 for (var i = 0; i < subpageCloseButtons.length; i++) { |
| 337 subpageCloseButtons[i].onclick = function() { | 345 subpageCloseButtons[i].onclick = function() { |
| 338 self.closeTopSubPage(); | 346 self.closeTopSubPage(); |
| 339 }; | 347 }; |
| 340 }; | 348 }; |
| 341 | 349 |
| 342 // Close the top overlay or sub-page on esc. | 350 // Install handler for key presses. |
| 343 document.addEventListener('keydown', function(e) { | 351 document.addEventListener('keydown', this.keyDownEventHandler_.bind(this)); |
| 344 if (e.keyCode == 27) { // Esc | |
| 345 if (self.isOverlayVisible_()) | |
| 346 self.clearOverlays(); | |
| 347 else | |
| 348 self.closeTopSubPage(); | |
| 349 } | |
| 350 }); | |
| 351 }; | 352 }; |
| 352 | 353 |
| 353 /** | 354 /** |
| 354 * Returns a function to handle clicks behind a subpage at level |level| by | 355 * Returns a function to handle clicks behind a subpage at level |level| by |
| 355 * closing all subpages down to |level| - 1. | 356 * closing all subpages down to |level| - 1. |
| 356 * @param {number} level The level of the subpage being handled. | 357 * @param {number} level The level of the subpage being handled. |
| 357 * @return {Function} a function to handle clicks outside the given subpage. | 358 * @return {Function} a function to handle clicks outside the given subpage. |
| 358 * @private | 359 * @private |
| 359 */ | 360 */ |
| 360 OptionsPage.subPageClosingClickHandler_ = function(level) { | 361 OptionsPage.subPageClosingClickHandler_ = function(level) { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 | 400 |
| 400 // Events should not fall through to the main view, | 401 // Events should not fall through to the main view, |
| 401 // but they can fall through for the sidebar. | 402 // but they can fall through for the sidebar. |
| 402 if ($('mainview-content').contains(event.target)) { | 403 if ($('mainview-content').contains(event.target)) { |
| 403 event.stopPropagation(); | 404 event.stopPropagation(); |
| 404 event.preventDefault(); | 405 event.preventDefault(); |
| 405 } | 406 } |
| 406 }; | 407 }; |
| 407 | 408 |
| 408 /** | 409 /** |
| 410 * A function to handle key press events. |
| 411 * @return {Event} a keydown event. |
| 412 * @private |
| 413 */ |
| 414 OptionsPage.keyDownEventHandler_ = function(event) { |
| 415 // Close the top overlay or sub-page on esc. |
| 416 if (event.keyCode == 27) { // Esc |
| 417 if (this.isOverlayVisible_()) |
| 418 this.clearOverlays(); |
| 419 else |
| 420 this.closeTopSubPage(); |
| 421 } |
| 422 }; |
| 423 |
| 424 /** |
| 409 * Re-initializes the C++ handlers if necessary. This is called if the | 425 * Re-initializes the C++ handlers if necessary. This is called if the |
| 410 * handlers are torn down and recreated but the DOM may not have been (in | 426 * handlers are torn down and recreated but the DOM may not have been (in |
| 411 * which case |initialize| won't be called again). If |initialize| hasn't been | 427 * which case |initialize| won't be called again). If |initialize| hasn't been |
| 412 * called, this does nothing (since it will be later, once the DOM has | 428 * called, this does nothing (since it will be later, once the DOM has |
| 413 * finished loading). | 429 * finished loading). |
| 414 */ | 430 */ |
| 415 OptionsPage.reinitializeCore = function() { | 431 OptionsPage.reinitializeCore = function() { |
| 416 if (this.initialized_) | 432 if (this.initialized_) |
| 417 chrome.send('coreOptionsInitialize'); | 433 chrome.send('coreOptionsInitialize'); |
| 418 } | 434 } |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 OptionsPage.showOverlay(hash); | 591 OptionsPage.showOverlay(hash); |
| 576 }, | 592 }, |
| 577 }; | 593 }; |
| 578 | 594 |
| 579 // Export | 595 // Export |
| 580 return { | 596 return { |
| 581 OptionsPage: OptionsPage | 597 OptionsPage: OptionsPage |
| 582 }; | 598 }; |
| 583 | 599 |
| 584 }); | 600 }); |
| OLD | NEW |