1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
cr.define('options', function() {
const OptionsPage = options.OptionsPage;
const ArrayDataModel = cr.ui.ArrayDataModel;
const ListSingleSelectionModel = cr.ui.ListSingleSelectionModel;
/**
* Encapsulated handling of search engine management page.
* @constructor
*/
function SearchEngineManager() {
this.activeNavTab = null;
OptionsPage.call(this, 'searchEngines',
templateData.searchEngineManagerPage,
'searchEngineManagerPage');
}
cr.addSingletonGetter(SearchEngineManager);
SearchEngineManager.prototype = {
__proto__: OptionsPage.prototype,
/**
* List for default search engine options
* @type {boolean}
* @private
*/
defaultsList_: null,
/**
* List for other search engine options
* @type {boolean}
* @private
*/
othersList_: null,
/** inheritDoc */
initializePage: function() {
OptionsPage.prototype.initializePage.call(this);
this.defaultsList_ = $('defaultSearchEngineList');
this.setUpList_(this.defaultsList_);
this.othersList_ = $('otherSearchEngineList');
this.setUpList_(this.othersList_);
},
/**
* Sets up the given list as a search engine list
* @param {List} list The list to set up.
* @private
*/
setUpList_: function(list) {
options.search_engines.SearchEngineList.decorate(list);
list.selectionModel = new ListSingleSelectionModel;
list.autoExpands = true;
},
/**
* Updates the search engine list with the given entries.
* @private
* @param {Array} defaultEngines List of possible default search engines.
* @param {Array} otherEngines List of other search engines.
*/
updateSearchEngineList_: function(defaultEngines, otherEngines) {
this.defaultsList_.dataModel = new ArrayDataModel(defaultEngines);
var othersModel = new ArrayDataModel(otherEngines);
// Add a "new engine" row.
othersModel.push({
'modelIndex': '-1'
});
this.othersList_.dataModel = othersModel;
},
};
SearchEngineManager.updateSearchEngineList = function(defaultEngines,
otherEngines) {
SearchEngineManager.getInstance().updateSearchEngineList_(defaultEngines,
otherEngines);
};
SearchEngineManager.validityCheckCallback = function(validity, modelIndex) {
// Forward to both lists; the one without a matching modelIndex will ignore
// it.
SearchEngineManager.getInstance().defaultsList_.validationComplete(
validity, modelIndex);
SearchEngineManager.getInstance().othersList_.validationComplete(
validity, modelIndex);
};
// Export
return {
SearchEngineManager: SearchEngineManager
};
});
|