blob: 9de49183853ae45d4ad604a97f95647ce8309cf4 [file] [log] [blame]
<!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>