Diffstat (limited to 'frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js') (more/less context) (ignore whitespace changes)
-rw-r--r-- | frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js b/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js index 4f2a015..1c799d0 100644 --- a/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js +++ b/frontend/beta/js/Clipperz/PM/Components/Panels/ToolsPanel.js | |||
@@ -1,214 +1,212 @@ | |||
1 | /* | 1 | /* |
2 | 2 | ||
3 | Copyright 2008-2011 Clipperz Srl | 3 | Copyright 2008-2013 Clipperz Srl |
4 | 4 | ||
5 | This file is part of Clipperz Community Edition. | 5 | This file is part of Clipperz, the online password manager. |
6 | Clipperz Community Edition is an online password manager. | ||
7 | For further information about its features and functionalities please | 6 | For further information about its features and functionalities please |
8 | refer to http://www.clipperz.com. | 7 | refer to http://www.clipperz.com. |
9 | 8 | ||
10 | * Clipperz Community Edition is free software: you can redistribute | 9 | * Clipperz is free software: you can redistribute it and/or modify it |
11 | it and/or modify it under the terms of the GNU Affero General Public | 10 | under the terms of the GNU Affero General Public License as published |
12 | License as published by the Free Software Foundation, either version | 11 | by the Free Software Foundation, either version 3 of the License, or |
13 | 3 of the License, or (at your option) any later version. | 12 | (at your option) any later version. |
14 | 13 | ||
15 | * Clipperz Community Edition is distributed in the hope that it will | 14 | * Clipperz is distributed in the hope that it will be useful, but |
16 | be useful, but WITHOUT ANY WARRANTY; without even the implied | 15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. | 17 | See the GNU Affero General Public License for more details. |
19 | 18 | ||
20 | * You should have received a copy of the GNU Affero General Public | 19 | * You should have received a copy of the GNU Affero General Public |
21 | License along with Clipperz Community Edition. If not, see | 20 | License along with Clipperz. If not, see http://www.gnu.org/licenses/. |
22 | <http://www.gnu.org/licenses/>. | ||
23 | 21 | ||
24 | */ | 22 | */ |
25 | 23 | ||
26 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } | 24 | if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } |
27 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } | 25 | if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } |
28 | if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } | 26 | if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } |
29 | if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } | 27 | if (typeof(Clipperz.PM.Components.Panels) == 'undefined') { Clipperz.PM.Components.Panels = {}; } |
30 | 28 | ||
31 | //############################################################################# | 29 | //############################################################################# |
32 | 30 | ||
33 | Clipperz.PM.Components.Panels.ToolsPanel = function(anElement, args) { | 31 | Clipperz.PM.Components.Panels.ToolsPanel = function(anElement, args) { |
34 | args = args || {}; | 32 | args = args || {}; |
35 | 33 | ||
36 | Clipperz.PM.Components.Panels.ToolsPanel.superclass.constructor.call(this, anElement, args); | 34 | Clipperz.PM.Components.Panels.ToolsPanel.superclass.constructor.call(this, anElement, args); |
37 | 35 | ||
38 | this._generateButtonElement = null; | 36 | this._generateButtonElement = null; |
39 | this._needsRenderingUponTabSwitch = false; | 37 | this._needsRenderingUponTabSwitch = false; |
40 | 38 | ||
41 | this.render(); | 39 | this.render(); |
42 | 40 | ||
43 | return this; | 41 | return this; |
44 | } | 42 | } |
45 | 43 | ||
46 | //============================================================================= | 44 | //============================================================================= |
47 | 45 | ||
48 | YAHOO.extendX(Clipperz.PM.Components.Panels.ToolsPanel, Clipperz.PM.Components.Panels.BasePanel, { | 46 | YAHOO.extendX(Clipperz.PM.Components.Panels.ToolsPanel, Clipperz.PM.Components.Panels.BasePanel, { |
49 | 47 | ||
50 | 'toString': function() { | 48 | 'toString': function() { |
51 | return "Clipperz.PM.Components.Panels.ToolsPanel component"; | 49 | return "Clipperz.PM.Components.Panels.ToolsPanel component"; |
52 | }, | 50 | }, |
53 | 51 | ||
54 | //------------------------------------------------------------------------- | 52 | //------------------------------------------------------------------------- |
55 | 53 | ||
56 | 'render': function() { | 54 | 'render': function() { |
57 | var bookmarkletUrl; | 55 | var bookmarkletUrl; |
58 | 56 | ||
59 | //MochiKit.Logging.logDebug(">>> ToolsPanel.render"); | 57 | //MochiKit.Logging.logDebug(">>> ToolsPanel.render"); |
60 | Clipperz.NotificationCenter.unregister(this); | 58 | Clipperz.NotificationCenter.unregister(this); |
61 | MochiKit.Signal.disconnectAllTo(this); | 59 | MochiKit.Signal.disconnectAllTo(this); |
62 | 60 | ||
63 | if (Clipperz_IEisBroken == true) { | 61 | if (Clipperz_IEisBroken == true) { |
64 | bookmarkletUrl = bookmarklet_ie; | 62 | bookmarkletUrl = bookmarklet_ie; |
65 | } else { | 63 | } else { |
66 | bookmarkletUrl = bookmarklet; | 64 | bookmarkletUrl = bookmarklet; |
67 | } | 65 | } |
68 | 66 | ||
69 | this.element().update(""); | 67 | this.element().update(""); |
70 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ | 68 | Clipperz.YUI.DomHelper.append(this.element().dom, {tag:'table', border:'0', cellspacing:'0', cellpadding:'0', children:[ |
71 | {tag:'tbody', children:[ | 69 | {tag:'tbody', children:[ |
72 | {tag:'tr', children:[ | 70 | {tag:'tr', children:[ |
73 | {tag:'td', valign:'top', width:'200', children:[ | 71 | {tag:'td', valign:'top', width:'200', children:[ |
74 | {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[ | 72 | {tag:'ul', id:"dataSubMenu", cls:'subMenu', children:[ |
75 | {tag:'li', id:this.getId('passwordGenerator'), htmlString:Clipperz.PM.Strings['passwordGeneratorTabLabel']}, | 73 | {tag:'li', id:this.getId('passwordGenerator'), htmlString:Clipperz.PM.Strings['passwordGeneratorTabLabel']}, |
76 | {tag:'li', id:this.getId('bookmarklet'), htmlString:Clipperz.PM.Strings['bookmarkletTabLabel']}, | 74 | {tag:'li', id:this.getId('bookmarklet'), htmlString:Clipperz.PM.Strings['bookmarkletTabLabel']}, |
77 | {tag:'li', id:this.getId('compact'), htmlString:Clipperz.PM.Strings['compactTabLabel']}, | 75 | {tag:'li', id:this.getId('compact'), htmlString:Clipperz.PM.Strings['compactTabLabel']}, |
78 | {tag:'li', id:this.getId('httpAuth'), htmlString:Clipperz.PM.Strings['httpAuthTabLabel']} | 76 | {tag:'li', id:this.getId('httpAuth'), htmlString:Clipperz.PM.Strings['httpAuthTabLabel']} |
79 | ]} | 77 | ]} |
80 | ]}, | 78 | ]}, |
81 | {tag:'td', valign:'top', children:[ | 79 | {tag:'td', valign:'top', children:[ |
82 | {tag:'ul', cls:'clipperzTabPanels', children:[ | 80 | {tag:'ul', cls:'clipperzTabPanels', children:[ |
83 | {tag:'li', id:this.getId('passwordGeneratorPanel'), children:[ | 81 | {tag:'li', id:this.getId('passwordGeneratorPanel'), children:[ |
84 | {tag:'div', cls:'clipperzSubPanel', children:[ | 82 | {tag:'div', cls:'clipperzSubPanel', children:[ |
85 | {tag:'h5', htmlString:Clipperz.PM.Strings['passwordGeneratorTabTitle']}, | 83 | {tag:'h5', htmlString:Clipperz.PM.Strings['passwordGeneratorTabTitle']}, |
86 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['paswordGeneratorTabDescription']}, | 84 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['paswordGeneratorTabDescription']}, |
87 | 85 | ||
88 | //--------------------------------------------------- | 86 | //--------------------------------------------------- |
89 | {tag:'div', children:[ | 87 | {tag:'div', children:[ |
90 | {tag:'form', id:this.getId('passwordGeneratorForm'), cls:'passwordGenerator', children:[ | 88 | {tag:'form', id:this.getId('passwordGeneratorForm'), cls:'passwordGenerator', children:[ |
91 | {tag:'input', type:'text', cls:'clipperz_passwordGenerator_password', id:this.getId('passwordField')}, | 89 | {tag:'input', type:'text', cls:'clipperz_passwordGenerator_password', id:this.getId('passwordField')}, |
92 | {tag:'table', children:[ | 90 | {tag:'table', children:[ |
93 | {tag:'tbody', children:[ | 91 | {tag:'tbody', children:[ |
94 | {tag:'tr', children:[ | 92 | {tag:'tr', children:[ |
95 | {tag:'td', width:'20%', children:[ | 93 | {tag:'td', width:'20%', children:[ |
96 | {tag:'input', type:'checkbox', name:'lowercase', id:this.getId('lowercase'), checked:true}, | 94 | {tag:'input', type:'checkbox', name:'lowercase', id:this.getId('lowercase'), checked:true}, |
97 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLowercaseLabel']} | 95 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLowercaseLabel']} |
98 | ]}, | 96 | ]}, |
99 | {tag:'td', width:'20%', children:[ | 97 | {tag:'td', width:'20%', children:[ |
100 | {tag:'input', type:'checkbox', name:'uppercase', id:this.getId('uppercase'), checked:true}, | 98 | {tag:'input', type:'checkbox', name:'uppercase', id:this.getId('uppercase'), checked:true}, |
101 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorUppercaseLabel']} | 99 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorUppercaseLabel']} |
102 | ]}, | 100 | ]}, |
103 | {tag:'td', width:'20%', children:[ | 101 | {tag:'td', width:'20%', children:[ |
104 | {tag:'input', type:'checkbox', name:'numbers', id:this.getId('numbers'), checked:true}, | 102 | {tag:'input', type:'checkbox', name:'numbers', id:this.getId('numbers'), checked:true}, |
105 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorNumberLabel']} | 103 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorNumberLabel']} |
106 | ]}, | 104 | ]}, |
107 | {tag:'td', width:'20%', children:[ | 105 | {tag:'td', width:'20%', children:[ |
108 | {tag:'input', type:'checkbox', name:'symbols', id:this.getId('symbols'), checked:true}, | 106 | {tag:'input', type:'checkbox', name:'symbols', id:this.getId('symbols'), checked:true}, |
109 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorSymbolLabel']} | 107 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorSymbolLabel']} |
110 | ]}, | 108 | ]}, |
111 | {tag:'td', width:'20%', children:[ | 109 | {tag:'td', width:'20%', children:[ |
112 | {tag:'span', cls:'passwordGeneratorLength', children:[ | 110 | {tag:'span', cls:'passwordGeneratorLength', children:[ |
113 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLengthLabel']}, | 111 | {tag:'span', htmlString:Clipperz.PM.Strings['passwordGeneratorLengthLabel']}, |
114 | {tag:'span', id:this.getId('passwordLength'), cls:'passwordGeneratorLengthValue', html:'0'} | 112 | {tag:'span', id:this.getId('passwordLength'), cls:'passwordGeneratorLengthValue', html:'0'} |
115 | ]} | 113 | ]} |
116 | ]} | 114 | ]} |
117 | ]} | 115 | ]} |
118 | ]} | 116 | ]} |
119 | ]} | 117 | ]} |
120 | ]}, | 118 | ]}, |
121 | {tag:'div', id:this.getId('generateRandomPassword')} | 119 | {tag:'div', id:this.getId('generateRandomPassword')} |
122 | ]} | 120 | ]} |
123 | //--------------------------------------------------- | 121 | //--------------------------------------------------- |
124 | 122 | ||
125 | ]} | 123 | ]} |
126 | ]}, | 124 | ]}, |
127 | {tag:'li', id:this.getId('bookmarkletPanel'), children:[ | 125 | {tag:'li', id:this.getId('bookmarkletPanel'), children:[ |
128 | {tag:'div', cls:'clipperzSubPanel', children:[ | 126 | {tag:'div', cls:'clipperzSubPanel', children:[ |
129 | {tag:'h5', htmlString:Clipperz.PM.Strings['bookmarkletTabTitle']}, | 127 | {tag:'h5', htmlString:Clipperz.PM.Strings['bookmarkletTabTitle']}, |
130 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabDescription']}, | 128 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabDescription']}, |
131 | {tag:'a', href:bookmarkletUrl, cls:'bookmarkletLink', htmlString:Clipperz.PM.Strings['bookmarkletTabBookmarkletTitle']}, | 129 | {tag:'a', href:bookmarkletUrl, cls:'bookmarkletLink', htmlString:Clipperz.PM.Strings['bookmarkletTabBookmarkletTitle']}, |
132 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabInstructions']} | 130 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['bookmarkletTabInstructions']} |
133 | ]} | 131 | ]} |
134 | ]}, | 132 | ]}, |
135 | {tag:'li', id:this.getId('compactPanel'), children:[ | 133 | {tag:'li', id:this.getId('compactPanel'), children:[ |
136 | {tag:'div', cls:'clipperzSubPanel', children:[ | 134 | {tag:'div', cls:'clipperzSubPanel', children:[ |
137 | {tag:'h5', htmlString:Clipperz.PM.Strings['compactTabTitle']}, | 135 | {tag:'h5', htmlString:Clipperz.PM.Strings['compactTabTitle']}, |
138 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['compactTabDescription']} | 136 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['compactTabDescription']} |
139 | ]} | 137 | ]} |
140 | ]}, | 138 | ]}, |
141 | {tag:'li', id:this.getId('httpAuthPanel'), children:[ | 139 | {tag:'li', id:this.getId('httpAuthPanel'), children:[ |
142 | {tag:'div', cls:'clipperzSubPanel', children:[ | 140 | {tag:'div', cls:'clipperzSubPanel', children:[ |
143 | {tag:'h5', htmlString:Clipperz.PM.Strings['httpAuthTabTitle']}, | 141 | {tag:'h5', htmlString:Clipperz.PM.Strings['httpAuthTabTitle']}, |
144 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['httpAuthTabDescription']}, | 142 | {tag:'div', cls:'panelDescription', htmlString:Clipperz.PM.Strings['httpAuthTabDescription']}, |
145 | {tag:'div', cls:'bookmarkletConfiguration', children:[Clipperz.PM.Strings['httpAuthBookmarkletConfiguration']]} | 143 | {tag:'div', cls:'bookmarkletConfiguration', children:[Clipperz.PM.Strings['httpAuthBookmarkletConfiguration']]} |
146 | ]} | 144 | ]} |
147 | ]} | 145 | ]} |
148 | ]} | 146 | ]} |
149 | ]} | 147 | ]} |
150 | ]} | 148 | ]} |
151 | ]} | 149 | ]} |
152 | ]}); | 150 | ]}); |
153 | 151 | ||
154 | new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('passwordField')); | 152 | new Clipperz.PM.Components.PasswordEntropyDisplay(this.getElement('passwordField')); |
155 | 153 | ||
156 | MochiKit.Signal.connect(this.getId('lowercase'), 'onclick', this, 'updatePasswordValue'); | 154 | MochiKit.Signal.connect(this.getId('lowercase'), 'onclick', this, 'updatePasswordValue'); |
157 | MochiKit.Signal.connect(this.getId('uppercase'), 'onclick', this, 'updatePasswordValue'); | 155 | MochiKit.Signal.connect(this.getId('uppercase'), 'onclick', this, 'updatePasswordValue'); |
158 | MochiKit.Signal.connect(this.getId('numbers'), 'onclick', this, 'updatePasswordValue'); | 156 | MochiKit.Signal.connect(this.getId('numbers'), 'onclick', this, 'updatePasswordValue'); |
159 | MochiKit.Signal.connect(this.getId('symbols'), 'onclick', this, 'updatePasswordValue'); | 157 | MochiKit.Signal.connect(this.getId('symbols'), 'onclick', this, 'updatePasswordValue'); |
160 | 158 | ||
161 | MochiKit.Signal.connect(this.getDom('passwordField'), 'onkeyup', this, 'updatePasswordLengthLabel'); | 159 | MochiKit.Signal.connect(this.getDom('passwordField'), 'onkeyup', this, 'updatePasswordLengthLabel'); |
162 | MochiKit.Signal.connect(this.getDom('passwordField'), 'onchange', this, 'updatePasswordLengthLabel'); | 160 | MochiKit.Signal.connect(this.getDom('passwordField'), 'onchange', this, 'updatePasswordLengthLabel'); |
163 | MochiKit.Signal.connect(this.getDom('passwordField'), 'onblur', this, 'updatePasswordLengthLabel'); | 161 | MochiKit.Signal.connect(this.getDom('passwordField'), 'onblur', this, 'updatePasswordLengthLabel'); |
164 | 162 | ||
165 | this.setGenerateButtonElement(new YAHOO.ext.Button(this.getDom('generateRandomPassword'), {text:Clipperz.PM.Strings['passwordGeneratorTabButtonLabel'], handler:this.updatePasswordValue, scope:this})); | 163 | this.setGenerateButtonElement(new YAHOO.ext.Button(this.getDom('generateRandomPassword'), {text:Clipperz.PM.Strings['passwordGeneratorTabButtonLabel'], handler:this.updatePasswordValue, scope:this})); |
166 | 164 | ||
167 | this.setNeedsRenderingUponTabSwitch(false); | 165 | this.setNeedsRenderingUponTabSwitch(false); |
168 | this.tabPanelController().setUp(); | 166 | this.tabPanelController().setUp(); |
169 | Clipperz.NotificationCenter.register(null, 'tabSelected', this, 'tabSelectedHandler'); | 167 | Clipperz.NotificationCenter.register(null, 'tabSelected', this, 'tabSelectedHandler'); |
170 | Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); | 168 | Clipperz.NotificationCenter.register(null, 'switchLanguage', this, 'switchLanguageHandler'); |
171 | //MochiKit.Logging.logDebug("<<< ToolsPanel.render"); | 169 | //MochiKit.Logging.logDebug("<<< ToolsPanel.render"); |
172 | }, | 170 | }, |
173 | 171 | ||
174 | //------------------------------------------------------------------------- | 172 | //------------------------------------------------------------------------- |
175 | 173 | ||
176 | 'needsRenderingUponTabSwitch': function() { | 174 | 'needsRenderingUponTabSwitch': function() { |
177 | return this._needsRenderingUponTabSwitch; | 175 | return this._needsRenderingUponTabSwitch; |
178 | }, | 176 | }, |
179 | 177 | ||
180 | 'setNeedsRenderingUponTabSwitch': function(aValue) { | 178 | 'setNeedsRenderingUponTabSwitch': function(aValue) { |
181 | this._needsRenderingUponTabSwitch = aValue; | 179 | this._needsRenderingUponTabSwitch = aValue; |
182 | }, | 180 | }, |
183 | 181 | ||
184 | 'tabSelectedHandler': function(anEvent) { | 182 | 'tabSelectedHandler': function(anEvent) { |
185 | if (this.needsRenderingUponTabSwitch()) { | 183 | if (this.needsRenderingUponTabSwitch()) { |
186 | this.render(); | 184 | this.render(); |
187 | } | 185 | } |
188 | 186 | ||
189 | if (anEvent.parameters() == this.getId('httpAuth')) { | 187 | if (anEvent.parameters() == this.getId('httpAuth')) { |
190 | var textarea; | 188 | var textarea; |
191 | 189 | ||
192 | textarea = document.getElementById("httpAuthDefaultConfiguration"); | 190 | textarea = document.getElementById("httpAuthDefaultConfiguration"); |
193 | textarea.focus(); | 191 | textarea.focus(); |
194 | textarea.select(); | 192 | textarea.select(); |
195 | } | 193 | } |
196 | }, | 194 | }, |
197 | 195 | ||
198 | //------------------------------------------------------------------------- | 196 | //------------------------------------------------------------------------- |
199 | 197 | ||
200 | 'tabPanelController': function() { | 198 | 'tabPanelController': function() { |
201 | if (this._tabPanelController == null) { | 199 | if (this._tabPanelController == null) { |
202 | var tabPanelControllerConfig; | 200 | var tabPanelControllerConfig; |
203 | 201 | ||
204 | tabPanelControllerConfig = {} | 202 | tabPanelControllerConfig = {} |
205 | tabPanelControllerConfig[this.getId('passwordGenerator')] = this.getId('passwordGeneratorPanel'); | 203 | tabPanelControllerConfig[this.getId('passwordGenerator')] = this.getId('passwordGeneratorPanel'); |
206 | tabPanelControllerConfig[this.getId('bookmarklet')] = this.getId('bookmarkletPanel'); | 204 | tabPanelControllerConfig[this.getId('bookmarklet')] = this.getId('bookmarkletPanel'); |
207 | tabPanelControllerConfig[this.getId('compact')] = this.getId('compactPanel'); | 205 | tabPanelControllerConfig[this.getId('compact')] = this.getId('compactPanel'); |
208 | tabPanelControllerConfig[this.getId('httpAuth')] = this.getId('httpAuthPanel'); | 206 | tabPanelControllerConfig[this.getId('httpAuth')] = this.getId('httpAuthPanel'); |
209 | this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('passwordGenerator') }); | 207 | this._tabPanelController = new Clipperz.PM.Components.TabPanel.TabPanelController({ config:tabPanelControllerConfig, selectedTab:this.getId('passwordGenerator') }); |
210 | } | 208 | } |
211 | 209 | ||
212 | return this._tabPanelController; | 210 | return this._tabPanelController; |
213 | }, | 211 | }, |
214 | 212 | ||