15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('print_preview', function() {
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  'use strict';
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /**
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * Creates a ColorSettings object. This object encapsulates all settings and
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * logic related to color selection (color/bw).
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * @param {!print_preview.ticket_item.Color} colorTicketItem Used for writing
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   *     and reading color value.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @constructor
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   * @extends {print_preview.Component}
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   */
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  function ColorSettings(colorTicketItem) {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    print_preview.Component.call(this);
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Used for reading/writing the color value.
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * @type {!print_preview.ticket_items.Color}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    this.colorTicketItem_ = colorTicketItem;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ColorSettings.prototype = {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    __proto__: print_preview.Component.prototype,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set isEnabled(isEnabled) {
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.getChildElement('.color-option').disabled = !isEnabled;
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.getChildElement('.bw-option').disabled = !isEnabled;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /** @override */
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    enterDocument: function() {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      print_preview.Component.prototype.enterDocument.call(this);
38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      fadeOutOption(this.getElement(), true);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.getChildElement('.color-option'),
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'click',
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.colorTicketItem_.updateValue.bind(this.colorTicketItem_, true));
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.getChildElement('.bw-option'),
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'click',
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.colorTicketItem_.updateValue.bind(this.colorTicketItem_, false));
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      this.tracker.add(
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.colorTicketItem_,
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          print_preview.ticket_items.TicketItem.EventType.CHANGE,
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)          this.updateState_.bind(this));
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    },
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /**
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)     * Updates state of the widget.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * @private
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    updateState_: function() {
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var isColorCapAvailable = this.colorTicketItem_.isCapabilityAvailable();
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      if (isColorCapAvailable) {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fadeInOption(this.getElement());
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        var isColorEnabled = this.colorTicketItem_.getValue();
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        this.getChildElement('.color-option').checked = isColorEnabled;
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        this.getChildElement('.bw-option').checked = !isColorEnabled;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      } else {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fadeOutOption(this.getElement());
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.getElement().setAttribute('aria-hidden', !isColorCapAvailable);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Export
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ColorSettings: ColorSettings
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)});
76