| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/tracing/base/settings.html"> |
| <link rel="import" href="/tracing/ui/base/dom_helpers.html"> |
| <link rel="import" href="/tracing/ui/base/ui.html"> |
| |
| <polymer-element name='tr-ui-b-checkbox'> |
| <template> |
| <style> |
| .inline { |
| display: inline-block; |
| } |
| </style> |
| |
| <input type="checkbox" id="checkbox" class="inline"/> |
| <div id="label" class="inline"></div> |
| </template> |
| |
| <script> |
| 'use strict'; |
| |
| Polymer({ |
| created: function() { |
| this.needsInit_ = true; |
| this.defaultCheckedValue_ = undefined; |
| this.settingsKey_ = undefined; |
| this.label_ = undefined; |
| this.checked_ = false; |
| this.is_ready_ = false; |
| }, |
| |
| ready: function() { |
| this.is_ready_ = true; |
| this.$.checkbox.addEventListener('click', function() { |
| this.checked = this.$.checkbox.checked; |
| }.bind(this)); |
| this.maybeUpdateElements_(); |
| }, |
| |
| maybeUpdateElements_: function() { |
| if (!this.is_ready_) |
| return; |
| this.$.label.innerText = this.label_; |
| this.$.checkbox.checked = this.checked_; |
| }, |
| |
| get defaultCheckedValue() { |
| return this.defaultCheckedValue_; |
| }, |
| |
| set defaultCheckedValue(defaultCheckedValue) { |
| if (!this.needsInit_) |
| throw new Error('Already initialized.'); |
| this.defaultCheckedValue_ = defaultCheckedValue; |
| this.maybeInit_(); |
| }, |
| |
| get settingsKey() { |
| return this.settingsKey_; |
| }, |
| |
| set settingsKey(settingsKey) { |
| if (!this.needsInit_) |
| throw new Error('Already initialized.'); |
| this.settingsKey_ = settingsKey; |
| this.maybeInit_(); |
| }, |
| |
| maybeInit_: function() { |
| if (!this.needsInit_) |
| return; |
| if (this.settingsKey_ === undefined) |
| return; |
| if (this.defaultCheckedValue_ === undefined) |
| return; |
| this.needsInit_ = false; |
| this.checked = tr.b.Settings.get( |
| this.settingsKey_, this.defaultCheckedValue_); |
| }, |
| |
| get label() { |
| return this.label_; |
| }, |
| |
| set label(label) { |
| this.label_ = label; |
| this.maybeUpdateElements_(); |
| }, |
| |
| get checked() { |
| return this.checked_; |
| }, |
| |
| set checked(checked) { |
| this.checked_ = checked; |
| this.maybeUpdateElements_(); |
| tr.b.Settings.set(this.settingsKey_, this.checked_); |
| }, |
| |
| }); |
| </script> |
| </polymer-element> |