15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Base class to represent a "view". A view is an absolutely positioned box on 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the page. 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var View = (function() { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'use strict'; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function View() { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isVisible_ = true; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View.prototype = { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called to reposition the view on the page. Measurements are in pixels. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setGeometry: function(left, top, width, height) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.left_ = left; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.top_ = top; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.width_ = width; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.height_ = height; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called to show/hide the view. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show: function(isVisible) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isVisible_ = isVisible; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isVisible: function() { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.isVisible_; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Method of the observer class. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called to check if an observer needs the data it is 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * observing to be actively updated. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isActive: function() { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.isVisible(); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getLeft: function() { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.left_; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getTop: function() { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.top_; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getWidth: function() { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.width_; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getHeight: function() { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.height_; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getRight: function() { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.getLeft() + this.getWidth(); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getBottom: function() { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.getTop() + this.getHeight(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setParameters: function(params) {}, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when loading a log file, after clearing all events, but before 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * loading the new ones. |polledData| contains the data from all 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PollableData helpers. |tabData| contains the data for the particular 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * tab. |logDump| is the entire log dump, which includes the other two 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * values. It's included separately so most views don't have to depend on 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * its specifics. 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onLoadLogStart: function(polledData, tabData, logDump) { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called as the final step of loading a log file. Arguments are the same 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * as onLoadLogStart. Returns true to indicate the tab should be shown, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * false otherwise. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) onLoadLogFinish: function(polledData, tabData, logDump) { 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return View; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)})(); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//----------------------------------------------------------------------------- 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * DivView is an implementation of View that wraps a DIV. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var DivView = (function() { 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'use strict'; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We inherit from View. 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var superClass = View; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function DivView(divId) { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Call superclass's constructor. 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.call(this); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.node_ = $(divId); 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!this.node_) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) throw new Error('Element ' + divId + ' not found'); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Initialize the default values to those of the DIV. 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.width_ = this.node_.offsetWidth; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.height_ = this.node_.offsetHeight; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.isVisible_ = this.node_.style.display != 'none'; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DivView.prototype = { 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Inherit the superclass's methods. 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: superClass.prototype, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setGeometry: function(left, top, width, height) { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.setGeometry.call(this, left, top, width, height); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.node_.style.position = 'absolute'; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setNodePosition(this.node_, left, top, width, height); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show: function(isVisible) { 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.show.call(this, isVisible); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setNodeDisplay(this.node_, isVisible); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the wrapped DIV 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getNode: function() { 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return this.node_; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return DivView; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)})(); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//----------------------------------------------------------------------------- 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Implementation of View that sizes its child to fit the entire window. 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!View} childView The child view. 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var WindowView = (function() { 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'use strict'; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We inherit from View. 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var superClass = View; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function WindowView(childView) { 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Call superclass's constructor. 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.call(this); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.childView_ = childView; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) window.addEventListener('resize', this.resetGeometry.bind(this), true); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowView.prototype = { 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Inherit the superclass's methods. 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: superClass.prototype, 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setGeometry: function(left, top, width, height) { 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.setGeometry.call(this, left, top, width, height); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.childView_.setGeometry(left, top, width, height); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show: function() { 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.show.call(this, isVisible); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.childView_.show(isVisible); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) resetGeometry: function() { 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.setGeometry(0, 0, window.innerWidth, window.innerHeight); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return WindowView; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)})(); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * View that positions two views vertically. The top view should be 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * fixed-height, and the bottom view will fill the remainder of the space. 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * +-----------------------------------+ 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | topView | 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * +-----------------------------------+ 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | bottomView | 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * +-----------------------------------+ 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var VerticalSplitView = (function() { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'use strict'; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We inherit from View. 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var superClass = View; 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!View} topView The top view. 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!View} bottomView The bottom view. 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function VerticalSplitView(topView, bottomView) { 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Call superclass's constructor. 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.call(this); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.topView_ = topView; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.bottomView_ = bottomView; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) VerticalSplitView.prototype = { 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Inherit the superclass's methods. 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: superClass.prototype, 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setGeometry: function(left, top, width, height) { 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.setGeometry.call(this, left, top, width, height); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var fixedHeight = this.topView_.getHeight(); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.topView_.setGeometry(left, top, width, fixedHeight); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.bottomView_.setGeometry( 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) left, top + fixedHeight, width, height - fixedHeight); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show: function(isVisible) { 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.show.call(this, isVisible); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.topView_.show(isVisible); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.bottomView_.show(isVisible); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return VerticalSplitView; 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)})(); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * View that positions two views horizontally. The left view should be 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * fixed-width, and the right view will fill the remainder of the space. 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * +----------+--------------------------+ 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | leftView | rightView | 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * | | | 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * +----------+--------------------------+ 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var HorizontalSplitView = (function() { 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'use strict'; 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We inherit from View. 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var superClass = View; 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!View} leftView The left view. 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!View} rightView The right view. 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function HorizontalSplitView(leftView, rightView) { 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Call superclass's constructor. 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.call(this); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.leftView_ = leftView; 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.rightView_ = rightView; 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HorizontalSplitView.prototype = { 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Inherit the superclass's methods. 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) __proto__: superClass.prototype, 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) setGeometry: function(left, top, width, height) { 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.setGeometry.call(this, left, top, width, height); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var fixedWidth = this.leftView_.getWidth(); 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.leftView_.setGeometry(left, top, fixedWidth, height); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.rightView_.setGeometry( 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) left + fixedWidth, top, width - fixedWidth, height); 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show: function(isVisible) { 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) superClass.prototype.show.call(this, isVisible); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.leftView_.show(isVisible); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.rightView_.show(isVisible); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return HorizontalSplitView; 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)})(); 325