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

Side by Side Diff: chrome/browser/resources/options/search_engine_manager.js

Issue 6151004: DOMUI Prefs: Replace search engine edit overlay with inline editing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address last comment Created 9 years, 11 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
OLDNEW
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 const OptionsPage = options.OptionsPage; 6 const OptionsPage = options.OptionsPage;
7 const ArrayDataModel = cr.ui.ArrayDataModel; 7 const ArrayDataModel = cr.ui.ArrayDataModel;
8 const ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; 8 const ListSingleSelectionModel = cr.ui.ListSingleSelectionModel;
9 9
10 /** 10 /**
(...skipping 19 matching lines...) Expand all
30 this.list_ = $('searchEngineList') 30 this.list_ = $('searchEngineList')
31 options.search_engines.SearchEngineList.decorate(this.list_); 31 options.search_engines.SearchEngineList.decorate(this.list_);
32 var selectionModel = new ListSingleSelectionModel; 32 var selectionModel = new ListSingleSelectionModel;
33 this.list_.selectionModel = selectionModel; 33 this.list_.selectionModel = selectionModel;
34 this.list_.autoExpands = true; 34 this.list_.autoExpands = true;
35 35
36 selectionModel.addEventListener('change', 36 selectionModel.addEventListener('change',
37 this.selectionChanged_.bind(this)); 37 this.selectionChanged_.bind(this));
38 38
39 var self = this; 39 var self = this;
40 $('addSearchEngineButton').onclick = function(event) { 40 // This is a temporary hack to allow the "Make Default" button to
41 chrome.send('editSearchEngine', ["-1"]); 41 // continue working despite the new list behavior of removing selection
42 OptionsPage.showOverlay('editSearchEngineOverlay'); 42 // on focus loss.
43 }; 43 // Once drag-and-drop is supported, so items can be moved into the default
44 $('editSearchEngineButton').onclick = function(event) { 44 // section, this button will go away entirely.
45 chrome.send('editSearchEngine', [self.selectedModelIndex_]); 45 $('makeDefaultSearchEngineButton').onmousedown = function(event) {
46 OptionsPage.showOverlay('editSearchEngineOverlay'); 46 self.pendingDefaultEngine_ = self.list_.selectedItem;
47 }; 47 };
48 $('makeDefaultSearchEngineButton').onclick = function(event) { 48 $('makeDefaultSearchEngineButton').onclick = function(event) {
49 chrome.send('managerSetDefaultSearchEngine', 49 chrome.send('managerSetDefaultSearchEngine',
50 [self.selectedModelIndex_]); 50 [self.pendingDefaultEngine_['modelIndex']]);
51 self.pendingDefaultEngine_ = null;
51 }; 52 };
52
53 // Remove Windows-style accelerators from button labels.
54 // TODO(stuartmorgan): Remove this once the strings are updated.
55 $('addSearchEngineButton').textContent =
56 localStrings.getStringWithoutAccelerator('addSearchEngineButton');
57 }, 53 },
58 54
59 /** 55 /**
60 * Updates the search engine list with the given entries. 56 * Updates the search engine list with the given entries.
61 * @private 57 * @private
62 * @param {Array} engineList List of available search engines. 58 * @param {Array} engineList List of available search engines.
63 */ 59 */
64 updateSearchEngineList_: function(engineList) { 60 updateSearchEngineList_: function(engineList) {
65 this.list_.dataModel = new ArrayDataModel(engineList); 61 var model = new ArrayDataModel(engineList);
62 model.push({
63 'modelIndex': '-1'
64 });
65 this.list_.dataModel = model;
66 }, 66 },
67 67
68 /** 68 /**
69 * Returns the currently selected list item's underlying model index.
70 * @private
71 */
72 get selectedModelIndex_() {
73 var listIndex = this.list_.selectionModel.selectedIndex;
74 return this.list_.dataModel.item(listIndex)['modelIndex'];
75 },
76
77 /**
78 * Callback from the selection model when the selection changes. 69 * Callback from the selection model when the selection changes.
79 * @private 70 * @private
80 * @param {!cr.Event} e Event with change info. 71 * @param {!cr.Event} e Event with change info.
81 */ 72 */
82 selectionChanged_: function(e) { 73 selectionChanged_: function(e) {
83 var selectedIndex = this.list_.selectionModel.selectedIndex; 74 var engine = this.list_.selectedItem || this.pendingDefaultEngine_;
84 var engine = selectedIndex != -1 ?
85 this.list_.dataModel.item(selectedIndex) : null;
86
87 $('editSearchEngineButton').disabled = engine == null;
88 $('makeDefaultSearchEngineButton').disabled = 75 $('makeDefaultSearchEngineButton').disabled =
89 !(engine && engine['canBeDefault']); 76 !(engine && engine['canBeDefault']);
90 }, 77 },
91 }; 78 };
92 79
93 SearchEngineManager.updateSearchEngineList = function(engineList) { 80 SearchEngineManager.updateSearchEngineList = function(engineList) {
94 SearchEngineManager.getInstance().updateSearchEngineList_(engineList); 81 SearchEngineManager.getInstance().updateSearchEngineList_(engineList);
95 }; 82 };
96 83
84 SearchEngineManager.validityCheckCallback = function(validity, modelIndex) {
85 SearchEngineManager.getInstance().list_.validationComplete(validity,
86 modelIndex);
87 };
88
97 // Export 89 // Export
98 return { 90 return {
99 SearchEngineManager: SearchEngineManager 91 SearchEngineManager: SearchEngineManager
100 }; 92 };
101 93
102 }); 94 });
103 95
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698