| <!DOCTYPE html> |
| <html> |
| <!-- |
| Copyright 2010 The Closure Library Authors. All Rights Reserved. |
| |
| Use of this source code is governed by the Apache License, Version 2.0. |
| See the COPYING file for details. |
| --> |
| <head> |
| <title>goog.ui.Checkbox</title> |
| <script src="../base.js"></script> |
| <script> |
| goog.require('goog.debug.DivConsole'); |
| goog.require('goog.debug.LogManager'); |
| goog.require('goog.dom'); |
| goog.require('goog.events'); |
| goog.require('goog.log'); |
| goog.require('goog.ui.Checkbox'); |
| goog.require('goog.ui.Checkbox.State'); |
| </script> |
| <link rel="stylesheet" href="css/demo.css"> |
| <link rel="stylesheet" href="../css/checkbox.css"> |
| </head> |
| <body> |
| <h1>goog.ui.Checkbox</h1> |
| <p>This is a tri-state checkbox.</p> |
| <div> |
| <span id="enable" class="goog-checkbox-checked"></span>Enable/disable</div> |
| <br> |
| <div><span id="all" class="goog-checkbox-undetermined"></span>root</div> |
| <div style="margin-left: 1em;"> |
| <div><span id="leaf1" class="goog-checkbox-checked"></span>leaf 1</div> |
| <div><span id="leaf2"></span>leaf 2</div> |
| </div> |
| <br> |
| <div id="render"> |
| Created with render |
| </div> |
| <br> |
| <div id="decorate"> |
| Created with decorate |
| <span class="goog-checkbox"></span> |
| <span class="goog-checkbox goog-checkbox-checked"></span> |
| <span class="goog-checkbox goog-checkbox-undetermined"></span> |
| <span class="goog-checkbox goog-checkbox-disabled"></span> |
| </div> |
| <br><br> |
| <!-- Event log. --> |
| <fieldset class="goog-debug-panel"> |
| <legend>Event Log for 'root', 'leaf1', 'leaf2'</legend> |
| <div id="log" style="height: 500px"></div> |
| </fieldset> |
| <script type="text/javascript"> |
| // Set up a logger. |
| goog.debug.LogManager.getRoot().setLevel(goog.log.Level.ALL); |
| var logger = goog.log.getLogger('demo'); |
| var logconsole = new goog.debug.DivConsole(goog.dom.getElement('log')); |
| logconsole.setCapturing(true); |
| var EVENTS = goog.object.getValues(goog.ui.Component.EventType); |
| goog.log.fine(logger, 'Listening for: ' + EVENTS.join(', ') + '.'); |
| function logEvent(name, e) { |
| goog.log.info(logger, '"' + name + '" dispatched: ' + e.type); |
| } |
| |
| var all = new goog.ui.Checkbox(); |
| all.decorate(goog.dom.getElement('all')); |
| all.setLabel(all.getElement().parentNode); |
| goog.events.listen(all, EVENTS, goog.partial(logEvent, 'root')); |
| |
| var leaf1 = new goog.ui.Checkbox(); |
| leaf1.decorate(goog.dom.getElement('leaf1')); |
| leaf1.setLabel(leaf1.getElement().parentNode); |
| goog.events.listen(leaf1, EVENTS, goog.partial(logEvent, 'leaf1')); |
| |
| var leaf2 = new goog.ui.Checkbox(); |
| leaf2.decorate(goog.dom.getElement('leaf2')); |
| leaf2.setLabel(leaf2.getElement().parentNode); |
| goog.events.listen(leaf2, EVENTS, goog.partial(logEvent, 'leaf2')); |
| |
| var enable = new goog.ui.Checkbox(); |
| enable.setLabel(goog.dom.getElement('enable').parentNode); |
| enable.decorate(goog.dom.getElement('enable')); |
| |
| var states = [false, true, null]; |
| goog.array.forEach(states, function(state) { |
| new goog.ui.Checkbox(state).render(goog.dom.getElement('render')); |
| }); |
| var checkbox = new goog.ui.Checkbox(); |
| checkbox.render(goog.dom.getElement('render')); |
| checkbox.setEnabled(false); |
| |
| var decorateNodes = goog.dom.getElementsByTagNameAndClass('span', null, |
| goog.dom.getElement('decorate')); |
| for (var i = 0, len = decorateNodes.length; i < len; i++) { |
| goog.ui.decorate(decorateNodes[i]); |
| } |
| |
| function rootChanged(e) { |
| leaf1.setChecked(all.getChecked()); |
| leaf2.setChecked(all.getChecked()); |
| } |
| |
| function leafChanged(e) { |
| var same = leaf1.getChecked() == leaf2.getChecked(); |
| all.setChecked(same ? leaf1.getChecked() : |
| goog.ui.Checkbox.State.UNDETERMINED); |
| } |
| |
| function enableTree(enable) { |
| all.setEnabled(enable); |
| leaf1.setEnabled(enable); |
| leaf2.setEnabled(enable); |
| } |
| |
| goog.events.listen(all, goog.ui.Component.EventType.CHANGE, rootChanged); |
| goog.events.listen(leaf1, goog.ui.Component.EventType.CHANGE, leafChanged); |
| goog.events.listen(leaf2, goog.ui.Component.EventType.CHANGE, leafChanged); |
| goog.events.listen(enable, goog.ui.Component.EventType.CHANGE, |
| function() { enableTree(enable.getChecked()); }); |
| </script> |
| </body> |
| </html> |