OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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('print_preview', function() { | 5 cr.define('print_preview', function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 /** | 8 /** |
9 * Creates a PrintHeader object. This object encapsulates all the elements | 9 * Creates a PrintHeader object. This object encapsulates all the elements |
10 * and logic related to the top part of the left pane in print_preview.html. | 10 * and logic related to the top part of the left pane in print_preview.html. |
11 * @constructor | 11 * @constructor |
12 */ | 12 */ |
13 function PrintHeader() { | 13 function PrintHeader() { |
| 14 // Reverse the button strip for views. See the documentation of |
| 15 // reverseButtonStrip_() for an explanation of why this is necessary. |
| 16 // Do this early so the reversal is not visible. |
| 17 if (cr.isViews) |
| 18 this.reverseButtonStrip_(); |
| 19 |
14 this.printButton_ = $('print-button'); | 20 this.printButton_ = $('print-button'); |
15 this.cancelButton_ = $('cancel-button'); | 21 this.cancelButton_ = $('cancel-button'); |
16 this.summary_ = $('print-summary'); | 22 this.summary_ = $('print-summary'); |
17 this.printButton_.focus(); | 23 this.printButton_.focus(); |
18 this.addEventListeners_(); | 24 this.addEventListeners_(); |
19 } | 25 } |
20 | 26 |
21 cr.addSingletonGetter(PrintHeader); | 27 cr.addSingletonGetter(PrintHeader); |
22 | 28 |
23 PrintHeader.prototype = { | 29 PrintHeader.prototype = { |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 } else { | 161 } else { |
156 html = localStrings.getStringF('printPreviewSummaryFormatShort', | 162 html = localStrings.getStringF('printPreviewSummaryFormatShort', |
157 '<b>' + numOfSheets + '</b>', | 163 '<b>' + numOfSheets + '</b>', |
158 '<b>' + summaryLabel + '</b>'); | 164 '<b>' + summaryLabel + '</b>'); |
159 } | 165 } |
160 | 166 |
161 // Removing extra spaces from within the string. | 167 // Removing extra spaces from within the string. |
162 html = html.replace(/\s{2,}/g, ' '); | 168 html = html.replace(/\s{2,}/g, ' '); |
163 this.summary_.innerHTML = html; | 169 this.summary_.innerHTML = html; |
164 }, | 170 }, |
| 171 |
| 172 /** |
| 173 * Reverses the child elements of a button strip. This is necessary because |
| 174 * WebKit does not alter the tab order for elements that are visually |
| 175 * reversed using -webkit-box-direction: reverse, and the button order is |
| 176 * reversed for views. See https://bugs.webkit.org/show_bug.cgi?id=62664 |
| 177 * for more information. |
| 178 * @private |
| 179 */ |
| 180 reverseButtonStrip_: function() { |
| 181 var buttonStrips = document.querySelectorAll('.button-strip'); |
| 182 |
| 183 // Reverse all button-strips in the overlay. |
| 184 for (var j = 0; j < buttonStrips.length; j++) { |
| 185 var buttonStrip = buttonStrips[j]; |
| 186 |
| 187 var childNodes = buttonStrip.childNodes; |
| 188 for (var i = childNodes.length - 1; i >= 0; i--) |
| 189 buttonStrip.appendChild(childNodes[i]); |
| 190 } |
| 191 }, |
165 }; | 192 }; |
166 | 193 |
167 return { | 194 return { |
168 PrintHeader: PrintHeader, | 195 PrintHeader: PrintHeader, |
169 }; | 196 }; |
170 }); | 197 }); |
OLD | NEW |