123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- <!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.Select & goog.ui.Option</title>
- <script src="../base.js"></script>
- <script>
- goog.require('goog.array');
- goog.require('goog.debug.DivConsole');
- goog.require('goog.debug.LogManager');
- goog.require('goog.events');
- goog.require('goog.events.EventType');
- goog.require('goog.log');
- goog.require('goog.object');
- goog.require('goog.ui.Component.EventType');
- goog.require('goog.ui.FlatMenuButtonRenderer');
- goog.require('goog.ui.Option');
- goog.require('goog.ui.Select');
- goog.require('goog.ui.Separator');
- goog.require('goog.ui.decorate');
- </script>
- <link rel="stylesheet" href="css/demo.css">
- <link rel="stylesheet" href="../css/menubutton.css">
- <link rel="stylesheet" href="../css/menu.css">
- <link rel="stylesheet" href="../css/menuitem.css">
- <link rel="stylesheet" href="../css/menuseparator.css">
- <link rel="stylesheet" href="../css/flatmenubutton.css">
- <style>
- .good {
- color: #080;
- vertical-align: middle;
- }
- .bad {
- color: #800;
- vertical-align: middle;
- }
- </style>
- </head>
- <body>
- <h1>goog.ui.Select & goog.ui.Option</h1>
- <fieldset>
- <legend>Demo of the <strong>goog.ui.Select</strong> component:</legend>
- <br>
- <label id="select1">The best movie of all time is </label>
- <span class="good" id="value1"></span>
- <br>
- <br>
- <label id="select2">The worst movie of all time is </label>
- <span class="bad" id="value2"></span>
- <br>
- <br>
- <label id="select3">The <strong>Select</strong> component for worst movie is
- </label> <i>(This control doesn't auto-highlight; it only dispatches
- ENTER and LEAVE events.)</i>
- <br>
- <br>
- <a id="add" href="#">Click here</a> to add a new option for the best movie,
- <a id="hide" href="#">here</a>
- to hide/show the select component for the best movie, or
- <a id="worst" href="#">here</a>
- to set the worst movie of all time to "Catwoman."
- <br>
- </fieldset>
- <br>
- <fieldset>
- <legend>This <strong>goog.ui.Select</strong> was decorated:</legend>
- <br>
- <label>
- My favorite Sergio Leone character is
- <div id="spaghetti" class="goog-select">
- Make your choice...
- <ul class="goog-menu">
- <li class="goog-menuitem">the Good</li>
- <li class="goog-menuitem">the Bad</li>
- <li class="goog-menuitem">the Ugly</li>
- <li class="goog-menuitem">the Man with the Harmonica</li>
- </ul>
- </div>
- </label>
- <span class="good" id="value4"></span>
- <br>
- <br>
- </fieldset>
- <br>
- <br>
- <fieldset>
- <legend>
- Demo of <strong>goog.ui.Select</strong> using
- <strong>goog.ui.FlatMenuButtonRenderer</strong>:
- </legend>
- <br>
- <label id="flat-select1">The best Arnold movie is </label>
- <span class="good" id="flat-value1"></span>
- <br>
- <br>
- <label id="flat-select2">The worst Arnold movie is </label>
- <span class="bad" id="flat-value2"></span>
- <br>
- <br>
- <label id="flat-select3">
- The <strong>Select</strong> component for worst movie is
- </label> <i>(This control doesn't auto-highlight; it only dispatches
- ENTER and LEAVE events.)</i>
- <br>
- <br>
- <a id="flat-add" href="#">Click here</a>
- to add a new option for the best Arnold movie,
- <a id="flat-hide" href="#">here</a>
- to hide/show the select component for the best Arnold movie, or
- <a id="flat-worst" href="#">here</a>
- to set the worst Arnold movie to "Jingle All the Way."
- <br>
- </fieldset>
- <br>
- <fieldset>
- <legend>This Flat <strong>goog.ui.Select</strong> was decorated:</legend>
- <br>
- <label>
- My favorite Will Ferrell character is
- <div id="flat-ferrell" class="goog-flat-menu-button">
- Make your choice...
- <ul class="goog-menu">
- <li class="goog-menuitem">Ron Burgundy</li>
- <li class="goog-menuitem">Chazz Reinhold</li>
- <li class="goog-menuitem">Chazz Michael Michaels</li>
- <li class="goog-menuitem">Ricky Bobby</li>
- </ul>
- </div>
- </label>
- <span class="good" id="flat-value4"></span>
- <br>
- <br>
- </fieldset>
- <br>
- <br>
- <!-- Event log. -->
- <fieldset class="goog-debug-panel">
- <legend>Event Log</legend>
- <div id="log"></div>
- </fieldset>
- <br>
- <div id="perf"></div>
- <script>
- var timer = goog.now();
- // 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(e) {
- var component = e.target;
- var caption = (typeof component.getCaption == 'function') ?
- component.getCaption() : component.getId();
- goog.log.info(logger, '"' + caption + '" dispatched: ' + e.type);
- }
- var select1 = new goog.ui.Select();
- select1.addItem(new goog.ui.MenuItem('Blade Runner'));
- select1.addItem(new goog.ui.MenuItem('Godfather Part II'));
- select1.addItem(new goog.ui.MenuItem('Citizen Kane'));
- select1.setSelectedIndex(0);
- select1.render(goog.dom.getElement('select1'));
- var select2 = new goog.ui.Select();
- var disabledItem;
- select2.addItem(new goog.ui.Option('Transformers'));
- select2.addItem(new goog.ui.Option('Spider-Man 3'));
- select2.addItem(disabledItem = new goog.ui.Option('Howard the Duck'));
- select2.addItem(new goog.ui.Option('Catwoman'));
- disabledItem.setEnabled(false);
- select2.setValue('Spider-Man 3');
- select2.render(goog.dom.getElement('select2'));
- var select3 = new goog.ui.Select('Click to select');
- // Turn off auto-highlighting, just for fun.
- select3.setAutoStates(goog.ui.Component.State.HOVER, false);
- select3.addItem(new goog.ui.Option('enabled', true));
- select3.addItem(new goog.ui.Option('disabled', false));
- select3.render(goog.dom.getElement('select3'));
- select3.setSelectedIndex(0);
- goog.events.listen(select1, goog.ui.Component.EventType.ACTION,
- function(e) {
- var select = e.target;
- var value = 'Yay ' + select.getValue() + '!';
- goog.dom.setTextContent(goog.dom.getElement('value1'), value);
- goog.dom.setTextContent(goog.dom.getElement('value2'), '');
- });
- goog.events.listen(select2, goog.ui.Component.EventType.ACTION,
- function(e) {
- var select = e.target;
- var value = 'Boo ' + select.getValue() + '...';
- goog.dom.setTextContent(goog.dom.getElement('value2'), value);
- goog.dom.setTextContent(goog.dom.getElement('value1'), '');
- });
- goog.events.listen(select3, goog.ui.Component.EventType.ACTION,
- function(e) {
- var select = e.target;
- select2.setEnabled(select.getValue());
- });
- goog.events.listen(goog.dom.getElement('add'), goog.events.EventType.CLICK,
- function(e) {
- var good = prompt('What\'s another good movie...?');
- if (select1.getItemCount() == 3) {
- select1.addItem(new goog.ui.Separator());
- }
- select1.addItem(new goog.ui.MenuItem(good));
- });
- goog.events.listen(goog.dom.getElement('hide'), goog.events.EventType.CLICK,
- function(e) {
- select1.setVisible(!select1.isVisible());
- });
- goog.events.listen(goog.dom.getElement('worst'),
- goog.events.EventType.CLICK,
- function(e) {
- select2.setValue('Catwoman');
- });
- // Decorate an element with a Select control.
- var select4 = goog.ui.decorate(goog.dom.getElement('spaghetti'));
- goog.events.listen(select1, EVENTS, logEvent);
- goog.events.listen(select2, EVENTS, logEvent);
- goog.events.listen(select3, EVENTS, logEvent);
- goog.events.listen(select4, EVENTS, logEvent);
- // goog.ui.Select using goog.ui.FlatMenuButtonRenderer
- var flatSelect1 = new goog.ui.Select(null, null,
- goog.ui.FlatMenuButtonRenderer.getInstance());
- flatSelect1.addItem(new goog.ui.MenuItem('Total Recall'));
- flatSelect1.addItem(new goog.ui.MenuItem('Kindergarten Cop'));
- flatSelect1.addItem(new goog.ui.MenuItem('Predator'));
- flatSelect1.setSelectedIndex(0);
- flatSelect1.render(goog.dom.getElement('flat-select1'));
- var flatSelect2 = new goog.ui.Select(null, null,
- goog.ui.FlatMenuButtonRenderer.getInstance());
- var flatDisabledItem;
- flatSelect2.addItem(new goog.ui.Option('Conan the Barbarian'));
- flatSelect2.addItem(new goog.ui.Option('Last Action Hero'));
- flatSelect2.addItem(
- flatDisabledItem = new goog.ui.Option('Eraser'));
- flatSelect2.addItem(new goog.ui.Option('Jingle All the Way'));
- flatDisabledItem.setEnabled(false);
- flatSelect2.setValue('Last Action Hero');
- flatSelect2.render(goog.dom.getElement('flat-select2'));
- var flatSelect3 = new goog.ui.Select('Click to select', null,
- goog.ui.FlatMenuButtonRenderer.getInstance());
- // Turn off auto-highlighting, just for fun.
- flatSelect3.setAutoStates(goog.ui.Component.State.HOVER, false);
- flatSelect3.addItem(new goog.ui.Option('enabled', true));
- flatSelect3.addItem(new goog.ui.Option('disabled', false));
- flatSelect3.render(goog.dom.getElement('flat-select3'));
- flatSelect3.setSelectedIndex(0);
- goog.events.listen(flatSelect1, goog.ui.Component.EventType.ACTION,
- function(e) {
- var select = e.target;
- var value = 'Yay ' + select.getValue() + '!';
- goog.dom.setTextContent(goog.dom.getElement('flat-value1'), value);
- goog.dom.setTextContent(goog.dom.getElement('flat-value2'), '');
- });
- goog.events.listen(flatSelect2, goog.ui.Component.EventType.ACTION,
- function(e) {
- var select = e.target;
- var value = 'Boo ' + select.getValue() + '...';
- goog.dom.setTextContent(goog.dom.getElement('flat-value2'), value);
- goog.dom.setTextContent(goog.dom.getElement('flat-value1'), '');
- });
- goog.events.listen(flatSelect3, goog.ui.Component.EventType.ACTION,
- function(e) {
- var select = e.target;
- flatSelect2.setEnabled(select.getValue());
- });
- goog.events.listen(goog.dom.getElement('flat-add'),
- goog.events.EventType.CLICK,
- function(e) {
- var good = prompt('What\'s another good Arnold movie...?');
- if (flatSelect1.getItemCount() == 3) {
- flatSelect1.addItem(new goog.ui.Separator());
- }
- flatSelect1.addItem(new goog.ui.MenuItem(good));
- });
- goog.events.listen(goog.dom.getElement('flat-hide'),
- goog.events.EventType.CLICK,
- function(e) {
- flatSelect1.setVisible(!flatSelect1.isVisible());
- });
- goog.events.listen(goog.dom.getElement('flat-worst'),
- goog.events.EventType.CLICK,
- function(e) {
- flatSelect2.setValue('Jingle All the Way');
- });
- // Decorate an element with a Select control using FlatMenuButtonRenderer.
- var flatSelect4 = new goog.ui.Select(null, null,
- goog.ui.FlatMenuButtonRenderer.getInstance());
- flatSelect4.decorate(goog.dom.getElement('flat-ferrell'));
- goog.events.listen(flatSelect1, EVENTS, logEvent);
- goog.events.listen(flatSelect2, EVENTS, logEvent);
- goog.events.listen(flatSelect3, EVENTS, logEvent);
- goog.events.listen(flatSelect4, EVENTS, logEvent);
- goog.dom.setTextContent(goog.dom.getElement('perf'),
- (goog.now() - timer) + 'ms');
- </script>
- </body>
- </html>
|