1 // Copyright (c) 2012 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 6 /** 7 * @fileoverview Renders an array of slices into the provided div, 8 * using a child canvas element. Uses a FastRectRenderer to draw only 9 * the visible slices. 10 */ 11 base.requireStylesheet('tracks.track'); 12 base.require('ui'); 13 base.exportTo('tracing.tracks', function() { 14 15 /** 16 * The base class for all tracks. 17 * @constructor 18 */ 19 var Track = tracing.ui.define('div'); 20 Track.prototype = { 21 __proto__: HTMLDivElement.prototype, 22 23 decorate: function() { 24 }, 25 26 get visible() { 27 return this.style.display !== 'none'; 28 }, 29 30 set visible(v) { 31 this.style.display = (v ? '' : 'none'); 32 }, 33 34 get numVisibleTracks() { 35 return (this.visible ? 1 : 0); 36 }, 37 38 addControlButtonElements_: function(canCollapse) { 39 var closeEl = document.createElement('div'); 40 closeEl.classList.add('track-button'); 41 closeEl.classList.add('track-close-button'); 42 closeEl.textContent = String.fromCharCode(215); // × 43 var that = this; 44 closeEl.addEventListener('click', function() { 45 that.style.display = 'None'; 46 }); 47 this.appendChild(closeEl); 48 49 var collapseEl = document.createElement('div'); 50 collapseEl.classList.add('track-button'); 51 collapseEl.classList.add('track-collapse-button'); 52 var minus = '\u2212'; // minus sign; 53 var plus = '\u002b'; // plus sign; 54 collapseEl.textContent = minus; 55 var collapsed = false; 56 collapseEl.addEventListener('click', function() { 57 collapsed = !collapsed; 58 this.collapsedDidChange(collapsed); 59 collapseEl.textContent = collapsed ? plus : minus; 60 }); 61 this.appendChild(collapseEl); 62 if (!canCollapse) 63 collapseEl.style.display = 'None'; 64 } 65 }; 66 67 return { 68 Track: Track 69 }; 70 }); 71