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

Side by Side Diff: chrome/browser/resources/print_preview/data/chromium_capabilities.js

Issue 10108001: Refactor print preview web ui (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review feedback Created 8 years, 8 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
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 cr.define('print_preview', function() {
6 'use strict';
7
8 /**
9 * A print ticket defines how the document should be rendered and printed.
10 *
dpapad 2012/04/24 01:24:56 Nit: Unnecessary blank line.
Robert Toscano 2012/04/24 22:29:56 Done.
11 * @param {!print_preview.ChromiumCapabilities} capabilities Printing
12 * capabilities of the print destination.
13 * @constructor
14 */
15 function ChromiumPrintTicket(capabilities) {
16 /**
17 * Printing capabilities of the print destination. Contains default values
18 * for each of the print ticket fields.
19 * @type {!print_preview.ChromiumCapabilities}
20 * @private
21 */
22 this.capabilities_ = capabilities;
23
24 /**
25 * String describing which pages to print. E.g. "1-5,9". {@code null} if the
26 * user has not specified a page range string.
27 * @type {?string}
28 * @private
29 */
30 this.pageRangeStr_ = null;
31
32 /**
33 * String representing the number of copies of the document to print.
34 * {@code null} if the user has not specified a copies string.
35 * @type {?string}
36 * @private
37 */
38 this.copiesStr_ = null;
39
40 /**
41 * Whether the document should be collated when printed. {@code null} if the
42 * user has not specified.
43 * @type {?boolean}
44 * @private
45 */
46 this.isCollateEnabled_ = null;
47
48 /**
49 * Whether the document should be duplexed. {@code null} if not specified.
50 * @type {?boolean}
51 * @private
52 */
53 this.isDuplexEnabled_ = null;
54
55 /**
56 * Whether the document should be printed in landscape. {@code null} if not
57 * specified.
58 * @type {?boolean}
59 * @private
60 */
61 this.isLandscapeEnabled_ = null;
62
63 /**
64 * Whether the document should be printed in color. {@code null} if not
65 * specified.
66 * @type {?boolean}
67 * @private
68 */
69 this.isColorEnabled_ = null;
70
71 /**
72 * Type of margins of the document. {@code null} if user has not specified.
73 * @type {?print_preview.Margins.Type}
dpapad 2012/04/24 01:24:56 I think that "?" makes sense only for primitives.
Robert Toscano 2012/04/24 22:29:56 It's not explicitly mentioned in the js doc whethe
dpapad 2012/04/24 22:50:19 Hm, I guess I never think of this as a typedef, bu
Robert Toscano 2012/04/28 01:41:37 I'm pretty sure the closure compiler will treat th
dpapad 2012/04/30 16:19:26 Sg.
74 * @private
75 */
76 this.marginsType_ = null;
77
78 /**
79 * Custom margins of the document. {@code null} if not specified.
80 * @type {print_preview.Margins}
81 * @private
82 */
83 this.customMargins_ = null;
84
85 /**
86 * Whether a header and footer should be added to the document. {@code null}
87 * if not specified.
88 * @type {?boolean}
89 * @private
90 */
91 this.isHeaderFooterEnabled_ = null;
92 };
93
94 ChromiumPrintTicket.prototype = {
95 /**
96 * @param {!print_preview.ChromiumCapabilities} capabilities New print
97 * destination capabilities to set.
98 */
99 set capabilities(capabilities) {
100 this.capabilities_ = capabilities;
101 },
102
103 /** @return {string} Page range string specification. */
104 get pageRangeStr() {
105 return this.pageRangeStr_ || '';
106 },
107
108 /** @param {string} pageRangeStr Page range string specification to set. */
109 set pageRangeStr(pageRangeStr) {
110 this.pageRangeStr_ = pageRangeStr;
111 },
112
113 /** @return {string} Number of copies to print in string form. */
114 get copiesStr() {
115 return this.getValue_(
116 this.capabilities_.hasCopiesCapability,
117 this.copiesStr_,
118 this.capabilities_.defaultCopiesStr,
119 '1');
120 },
121
122 /** @param {string} copiesStr String form of number of copies to print. */
123 set copiesStr(copiesStr) {
124 this.copiesStr_ = copiesStr;
125 },
126
127 /** @return {boolean} Whether the document should be collated. */
128 get isCollateEnabled() {
129 return this.getValue_(
130 this.capabilities_.hasCollateCapability,
131 this.isCollateEnabled_,
132 this.capabilities_.defaultIsCollateEnabled,
133 true);
134 },
135
136 /**
137 * @param {boolean} isCollateEnabled Whether the document should be
138 * collated.
139 */
140 set isCollateEnabled(isCollateEnabled) {
141 this.isCollateEnabled_ = isCollateEnabled;
142 },
143
144 /** @return {boolean} Whether the document should be duplexed. */
145 get isDuplexEnabled() {
146 return this.getValue_(
147 this.capabilities_.hasDuplexCapability,
148 this.isDuplexEnabled_,
149 this.capabilities_.defaultIsDuplexEnabled,
150 true);
151 },
152
153 /**
154 * @param {boolean} isDuplexEnabled Whether the document should be duplexed.
155 */
156 set isDuplexEnabled(isDuplexEnabled) {
157 this.isDuplexEnabled_ = isDuplexEnabled;
158 },
159
160 /**
161 * @return {boolean} Whether the document should be printed in landscape.
162 */
163 get isLandscapeEnabled() {
164 return this.getValue_(
165 this.capabilities_.hasOrientationCapability,
166 this.isLandscapeEnabled_,
167 this.capabilities_.defaultIsLandscapeEnabled,
168 false);
169 },
170
171 /**
172 * @param {boolean} isLandscapeEnabled Whether the document should be
173 * printed in landscape.
174 */
175 set isLandscapeEnabled(isLandscapeEnabled) {
176 this.isLandscapeEnabled_ = isLandscapeEnabled;
177 },
178
179 /** @return {boolean} Whether the document should be printed in color. */
180 get isColorEnabled() {
181 return this.getValue_(
182 this.capabilities_.hasColorCapability,
183 this.isColorEnabled_,
184 this.capabilities_.defaultIsColorEnabled,
185 false);
186 },
187
188 /**
189 * @param {boolean} isColorEnabled Whether the document should be printed in
190 * color.
191 */
192 set isColorEnabled(isColorEnabled) {
193 this.isColorEnabled_ = isColorEnabled;
194 },
195
196 /**
197 * @return {print_preview.Margins.Type} The document's predefined margins
198 * type.
199 */
200 get marginsType() {
201 return this.marginsType_ || print_preview.Margins.Type.DEFAULT;
202 },
203
204 /**
205 * @param {print_preview.Margins.Type} marginsType The document's predefined
206 * margins type.
207 */
208 set marginsType(marginsType) {
209 this.marginsType_ = marginsType;
210 },
211
212 /**
213 * @return {print_preview.Margins} Custom margins of the print document.
214 */
215 get customMargins() {
216 return this.customMargins_;
217 },
218
219 /**
220 * @param {print_preview.Margins} customMargins Custom margins of the
221 * print document.
222 */
223 set customMargins(customMargins) {
224 this.customMargins_ = customMargins;
225 },
226
227 /**
228 * @return {boolean} Whether a header footer should be superimposed on the
229 * document.
230 */
231 get isHeaderFooterEnabled() {
232 if (this.isHeaderFooterEnabled_ == null) {
233 return true;
234 } else {
235 return this.isHeaderFooterEnabled_;
236 }
237 },
238
239 /**
240 * @param {boolean} isHeaderFooterEnabled Whether a header footer should be
241 * superimposed on the document.
242 */
243 set isHeaderFooterEnabled(isHeaderFooterEnabled) {
244 this.isHeaderFooterEnabled_ = isHeaderFooterEnabled;
245 },
246
247 /**
248 * Gets the value of a capability of a renderer or print destination.
249 * @param {boolean} hasCap Whether the renderer or print destination has the
250 * given capability.
251 * @param {Object} userVal Value specified by the user.
252 * @param {Object} defaultCapVal Value specified as the default value of the
253 * given capability.
254 * @param {Object} defaultChromiumVal Value specified if the renderer or
255 * print destination does not have the given capability.
256 * @return {Object} User value if specified, then default capability value
257 * if capability is available, and finally default chromium value if
258 * capability not available.
259 * @private
260 */
261 getValue_: function(hasCap, userVal, defaultCapVal, defaultChromiumVal) {
262 if (hasCap && userVal != null) {
263 return userVal;
264 } else if (hasCap && defaultCapVal != null) {
265 return defaultCapVal;
266 } else {
267 return defaultChromiumVal;
268 }
269 }
270 };
271
272 /**
273 * Capabilities of a print destination not including the capabilities of the
274 * document renderer.
275 *
276 * @param {boolean} hasCopiesCapability Whether the print destination has a
277 * copies capability.
278 * @param {string} defaultCopiesStr Default string representation of the
279 * copies value.
280 * @param {boolean} hasCollateCapability Whether the print destination has
281 * collation capability.
282 * @param {boolean} defaultIsCollateEnabled Whether collate is enabled by
283 * default.
284 * @param {boolean} hasDuplexCapability Whether the print destination has
285 * duplexing capability.
286 * @param {boolean} defaultIsDuplexEnabled Whether duplexing is enabled by
287 * default.
288 * @param {boolean} hasOrientationCapability Whether the print destination has
289 * orientation capability.
290 * @param {boolean} defaultIsLandscapeEnabled Whether the document should be
291 * printed in landscape by default.
292 * @param {boolean} hasColorCapability Whether the print destination has
293 * color printing capability.
294 * @param {boolean} defaultIsColorEnabled Whether the document should be
295 * printed in color by default.
296 * @constructor
297 */
298 function ChromiumCapabilities(
299 hasCopiesCapability,
300 defaultCopiesStr,
301 hasCollateCapability,
302 defaultIsCollateEnabled,
303 hasDuplexCapability,
304 defaultIsDuplexEnabled,
305 hasOrientationCapability,
306 defaultIsLandscapeEnabled,
307 hasColorCapability,
308 defaultIsColorEnabled) {
309 /**
310 * Whether the print destination has a copies capability.
311 * @type {boolean}
312 * @private
313 */
314 this.hasCopiesCapability_ = hasCopiesCapability;
315
316 /**
317 * Default string representation of the copies value.
318 * @type {string}
319 * @private
320 */
321 this.defaultCopiesStr_ = defaultCopiesStr;
322
323 /**
324 * Whether the print destination has collation capability.
325 * @type {boolean}
326 * @private
327 */
328 this.hasCollateCapability_ = hasCollateCapability;
329
330 /**
331 * Whether collate is enabled by default.
332 * @type {boolean}
333 * @private
334 */
335 this.defaultIsCollateEnabled_ = defaultIsCollateEnabled;
336
337 /**
338 * Whether the print destination has duplexing capability.
339 * @type {boolean}
340 * @private
341 */
342 this.hasDuplexCapability_ = hasDuplexCapability;
343
344 /**
345 * Whether duplex is enabled by default.
346 * @type {boolean}
347 * @private
348 */
349 this.defaultIsDuplexEnabled_ = defaultIsDuplexEnabled;
350
351 /**
352 * Whether the print destination has orientation capability.
353 * @type {boolean}
354 * @private
355 */
356 this.hasOrientationCapability_ = hasOrientationCapability;
357
358 /**
359 * Whether the document should be printed in landscape by default.
360 * @type {boolean}
361 * @private
362 */
363 this.defaultIsLandscapeEnabled_ = defaultIsLandscapeEnabled;
364
365 /**
366 * Whether the print destination has color printing capability.
367 * @type {boolean}
368 * @private
369 */
370 this.hasColorCapability_ = hasColorCapability;
371
372 /**
373 * Whether the document should be printed in color.
374 * @type {boolean}
375 * @private
376 */
377 this.defaultIsColorEnabled_ = defaultIsColorEnabled;
378 };
379
380 ChromiumCapabilities.prototype = {
381 /** @return {boolean} Whether the destination has the copies capability. */
382 get hasCopiesCapability() {
383 return this.hasCopiesCapability_;
384 },
385
386 /** @return {string} Default number of copies in string format. */
387 get defaultCopiesStr() {
388 return this.defaultCopiesStr_;
389 },
390
391 /** @return {boolean} Whether the destination has collation capability. */
392 get hasCollateCapability() {
393 return this.hasCollateCapability_;
394 },
395
396 /** @return {boolean} Whether collation is enabled by default. */
397 get defaultIsCollateEnabled() {
398 return this.defaultIsCollateEnabled_;
399 },
400
401 /** @return {boolean} Whether the destination has the duplex capability. */
402 get hasDuplexCapability() {
403 return this.hasDuplexCapability_;
404 },
405
406 /** @return {boolean} Whether duplexing is enabled by default. */
407 get defaultIsDuplexEnabled() {
408 return this.defaultIsDuplexEnabled_;
409 },
410
411 /**
412 * @return {boolean} Whether the destination has the orientation capability.
413 */
414 get hasOrientationCapability() {
415 return this.hasOrientationCapability_;
416 },
417
418 /**
419 * @return {boolean} Whether document should be printed in landscape by
420 * default.
421 */
422 get defaultIsLandscapeEnabled() {
423 return this.defaultIsLandscapeEnabled_;
424 },
425
426 /**
427 * @return {boolean} Whether the destination has color printing capability.
428 */
429 get hasColorCapability() {
430 return this.hasColorCapability_;
431 },
432
433 /**
434 * @return {boolean} Whether document should be printed in color by default.
435 */
436 get defaultIsColorEnabled() {
437 return this.defaultIsColorEnabled_;
438 }
439 };
440
441 // Export
442 return {
443 ChromiumCapabilities: ChromiumCapabilities,
444 ChromiumPrintTicket: ChromiumPrintTicket
445 };
446 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698