Home | History | Annotate | Download | only in tracks
      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