12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// Use of this source code is governed by a BSD-style license that can be 32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis// found in the LICENSE file. 42da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 52da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 62da489cd246702bee5938545b18a6f710ed214bcJamie Gennis/** 72da489cd246702bee5938545b18a6f710ed214bcJamie Gennis * @fileoverview Renders an array of slices into the provided div, 82da489cd246702bee5938545b18a6f710ed214bcJamie Gennis * using a child canvas element. Uses a FastRectRenderer to draw only 92da489cd246702bee5938545b18a6f710ed214bcJamie Gennis * the visible slices. 102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis */ 112da489cd246702bee5938545b18a6f710ed214bcJamie Gennisbase.requireStylesheet('tracks.timeline_track'); 122da489cd246702bee5938545b18a6f710ed214bcJamie Gennisbase.require('ui'); 132da489cd246702bee5938545b18a6f710ed214bcJamie Gennisbase.exportTo('tracks', function() { 142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis /** 162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis * The base class for all tracks. 172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis * @constructor 182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis */ 192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var TimelineTrack = base.ui.define('div'); 202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis TimelineTrack.prototype = { 212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis __proto__: HTMLDivElement.prototype, 222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis decorate: function() { 242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }, 252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis get visible() { 272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return this.style.display !== 'none'; 282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }, 292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis set visible(v) { 312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis this.style.display = (v ? '' : 'none'); 322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }, 332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis get numVisibleTracks() { 352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return (this.visible ? 1 : 0); 362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }, 372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis addControlButtonElements_: function(canCollapse) { 392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var closeEl = document.createElement('div'); 402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis closeEl.classList.add('timeline-track-button'); 412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis closeEl.classList.add('timeline-track-close-button'); 422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis closeEl.textContent = String.fromCharCode(215); // × 432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var that = this; 442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis closeEl.addEventListener('click', function() { 452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis that.style.display = 'None'; 462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }); 472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis this.appendChild(closeEl); 482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var collapseEl = document.createElement('div'); 502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis collapseEl.classList.add('timeline-track-button'); 512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis collapseEl.classList.add('timeline-track-collapse-button'); 522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var minus = '\u2212'; // minus sign; 532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var plus = '\u002b'; // plus sign; 542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis collapseEl.textContent = minus; 552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis var collapsed = false; 562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis collapseEl.addEventListener('click', function() { 572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis collapsed = !collapsed; 582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis this.collapsedDidChange(collapsed); 592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis collapseEl.textContent = collapsed ? plus : minus; 602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }); 612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis this.appendChild(collapseEl); 622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis if (!canCollapse) 632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis collapseEl.style.display = 'None'; 642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis } 652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }; 662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis return { 682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis TimelineTrack: TimelineTrack 692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis }; 702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis}); 71