• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2013 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'use strict';
6
7/**
8 * @fileoverview A text widget for monitoring ValueBar value and previewValue.
9 */
10base.require('ui');
11base.require('base.properties');
12base.require('ui.mouse_tracker');
13
14base.exportTo('ui', function() {
15
16  /**
17   * @constructor
18   */
19  var ValueDisplay = ui.define('value-display');
20
21  ValueDisplay.prototype = {
22    __proto__: HTMLDivElement.prototype,
23
24    decorate: function() {
25      this.className = 'value-display';
26      this.currentValueDisplay_ = ui.createDiv({
27        className: 'value-value',
28        parent: this
29      });
30      this.previewValueDisplay_ = ui.createDiv({
31        className: 'value-set-to',
32        parent: this
33      });
34      this.setValueText_ = this.setValueText_.bind(this);
35      this.setPreviewValueText_ = this.setPreviewValueText_.bind(this);
36    },
37
38    get valueBar() {
39      return this.valueBar_;
40    },
41
42    set valueBar(newValue) {
43      if (this.valueBar_)
44        this.detach_();
45      this.valueBar_ = newValue;
46      if (this.valueBar_)
47        this.attach_();
48    },
49
50    attach_: function() {
51      this.valueBar_.addEventListener('valueChange',
52          this.setValueText_);
53      this.valueBar_.addEventListener('previewValueChange',
54          this.setPreviewValueText_);
55    },
56
57    dettach_: function() {
58      this.valueBar_.removeEventListener('valueChange',
59          this.setValueText_);
60      this.valueBar_.removeEventListener('previewValueChange',
61          this.setPreviewValueText_);
62    },
63
64    setValueText_: function(event) {
65      if (typeof event.newValue === undefined)
66        return;
67      this.currentValueDisplay_.textContent = event.newValue.toFixed(2);
68      this.setPreviewValueText_(event);
69    },
70
71    setPreviewValueText_: function(event) {
72      this.previewValueDisplay_.textContent =
73          ' (\u2192 ' + event.newValue.toFixed(2) + ')';
74    }
75
76  };
77
78  return {
79    ValueDisplay: ValueDisplay
80  };
81});
82