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 7base.requireStylesheet('ui.info_bar'); 8base.require('ui'); 9base.require('ui.dom_helpers'); 10 11base.exportTo('ui', function() { 12 /** 13 * @constructor 14 */ 15 var InfoBar = ui.define('info-bar'); 16 17 InfoBar.prototype = { 18 __proto__: HTMLDivElement.prototype, 19 20 decorate: function() { 21 this.messageEl_ = ui.createSpan({className: 'message'}); 22 this.buttonsEl_ = ui.createSpan({className: 'buttons'}); 23 24 this.appendChild(this.messageEl_); 25 this.appendChild(this.buttonsEl_); 26 this.message = ''; 27 this.visible = false; 28 }, 29 30 get message() { 31 return this.messageEl_.textContent; 32 }, 33 34 set message(message) { 35 this.messageEl_.textContent = message; 36 }, 37 38 get visible() { 39 return this.classList.contains('info-bar-hidden'); 40 }, 41 42 set visible(visible) { 43 if (visible) 44 this.classList.remove('info-bar-hidden'); 45 else 46 this.classList.add('info-bar-hidden'); 47 }, 48 49 removeAllButtons: function() { 50 this.buttonsEl_.textContent = ''; 51 }, 52 53 addButton: function(text, clickCallback) { 54 var button = document.createElement('button'); 55 button.textContent = text; 56 button.addEventListener('click', clickCallback); 57 this.buttonsEl_.appendChild(button); 58 return button; 59 } 60 }; 61 62 return { 63 InfoBar: InfoBar 64 }; 65}); 66