| Index: netlog_viewer/view.js
|
| diff --git a/netlog_viewer/view.js b/netlog_viewer/view.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7cb2e879361ff62da3d5f3072d22f559be7cb558
|
| --- /dev/null
|
| +++ b/netlog_viewer/view.js
|
| @@ -0,0 +1,326 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +/**
|
| + * Base class to represent a "view". A view is an absolutely positioned box on
|
| + * the page.
|
| + */
|
| +var View = (function() {
|
| + 'use strict';
|
| +
|
| + /**
|
| + * @constructor
|
| + */
|
| + function View() {
|
| + this.isVisible_ = true;
|
| + }
|
| +
|
| + View.prototype = {
|
| + /**
|
| + * Called to reposition the view on the page. Measurements are in pixels.
|
| + */
|
| + setGeometry: function(left, top, width, height) {
|
| + this.left_ = left;
|
| + this.top_ = top;
|
| + this.width_ = width;
|
| + this.height_ = height;
|
| + },
|
| +
|
| + /**
|
| + * Called to show/hide the view.
|
| + */
|
| + show: function(isVisible) {
|
| + this.isVisible_ = isVisible;
|
| + },
|
| +
|
| + isVisible: function() {
|
| + return this.isVisible_;
|
| + },
|
| +
|
| + /**
|
| + * Method of the observer class.
|
| + *
|
| + * Called to check if an observer needs the data it is
|
| + * observing to be actively updated.
|
| + */
|
| + isActive: function() {
|
| + return this.isVisible();
|
| + },
|
| +
|
| + getLeft: function() {
|
| + return this.left_;
|
| + },
|
| +
|
| + getTop: function() {
|
| + return this.top_;
|
| + },
|
| +
|
| + getWidth: function() {
|
| + return this.width_;
|
| + },
|
| +
|
| + getHeight: function() {
|
| + return this.height_;
|
| + },
|
| +
|
| + getRight: function() {
|
| + return this.getLeft() + this.getWidth();
|
| + },
|
| +
|
| + getBottom: function() {
|
| + return this.getTop() + this.getHeight();
|
| + },
|
| +
|
| + setParameters: function(params) {},
|
| +
|
| + /**
|
| + * Called when loading a log file, after clearing all events, but before
|
| + * loading the new ones. |polledData| contains the data from all
|
| + * PollableData helpers. |tabData| contains the data for the particular
|
| + * tab. |logDump| is the entire log dump, which includes the other two
|
| + * values. It's included separately so most views don't have to depend on
|
| + * its specifics.
|
| + */
|
| + onLoadLogStart: function(polledData, tabData, logDump) {
|
| + },
|
| +
|
| + /**
|
| + * Called as the final step of loading a log file. Arguments are the same
|
| + * as onLoadLogStart. Returns true to indicate the tab should be shown,
|
| + * false otherwise.
|
| + */
|
| + onLoadLogFinish: function(polledData, tabData, logDump) {
|
| + return false;
|
| + }
|
| + };
|
| +
|
| + return View;
|
| +})();
|
| +
|
| +//-----------------------------------------------------------------------------
|
| +
|
| +/**
|
| + * DivView is an implementation of View that wraps a DIV.
|
| + */
|
| +var DivView = (function() {
|
| + 'use strict';
|
| +
|
| + // We inherit from View.
|
| + var superClass = View;
|
| +
|
| + /**
|
| + * @constructor
|
| + */
|
| + function DivView(divId) {
|
| + // Call superclass's constructor.
|
| + superClass.call(this);
|
| +
|
| + this.node_ = $(divId);
|
| + if (!this.node_)
|
| + throw new Error('Element ' + divId + ' not found');
|
| +
|
| + // Initialize the default values to those of the DIV.
|
| + this.width_ = this.node_.offsetWidth;
|
| + this.height_ = this.node_.offsetHeight;
|
| + this.isVisible_ = this.node_.style.display != 'none';
|
| + }
|
| +
|
| + DivView.prototype = {
|
| + // Inherit the superclass's methods.
|
| + __proto__: superClass.prototype,
|
| +
|
| + setGeometry: function(left, top, width, height) {
|
| + superClass.prototype.setGeometry.call(this, left, top, width, height);
|
| +
|
| + this.node_.style.position = 'absolute';
|
| + setNodePosition(this.node_, left, top, width, height);
|
| + },
|
| +
|
| + show: function(isVisible) {
|
| + superClass.prototype.show.call(this, isVisible);
|
| + setNodeDisplay(this.node_, isVisible);
|
| + },
|
| +
|
| + /**
|
| + * Returns the wrapped DIV
|
| + */
|
| + getNode: function() {
|
| + return this.node_;
|
| + }
|
| + };
|
| +
|
| + return DivView;
|
| +})();
|
| +
|
| +
|
| +//-----------------------------------------------------------------------------
|
| +
|
| +/**
|
| + * Implementation of View that sizes its child to fit the entire window.
|
| + *
|
| + * @param {!View} childView The child view.
|
| + */
|
| +var WindowView = (function() {
|
| + 'use strict';
|
| +
|
| + // We inherit from View.
|
| + var superClass = View;
|
| +
|
| + /**
|
| + * @constructor
|
| + */
|
| + function WindowView(childView) {
|
| + // Call superclass's constructor.
|
| + superClass.call(this);
|
| +
|
| + this.childView_ = childView;
|
| + window.addEventListener('resize', this.resetGeometry.bind(this), true);
|
| + }
|
| +
|
| + WindowView.prototype = {
|
| + // Inherit the superclass's methods.
|
| + __proto__: superClass.prototype,
|
| +
|
| + setGeometry: function(left, top, width, height) {
|
| + superClass.prototype.setGeometry.call(this, left, top, width, height);
|
| + this.childView_.setGeometry(left, top, width, height);
|
| + },
|
| +
|
| + show: function() {
|
| + superClass.prototype.show.call(this, isVisible);
|
| + this.childView_.show(isVisible);
|
| + },
|
| +
|
| + resetGeometry: function() {
|
| + this.setGeometry(0, 0, document.documentElement.clientWidth,
|
| + document.documentElement.clientHeight);
|
| + }
|
| + };
|
| +
|
| + return WindowView;
|
| +})();
|
| +
|
| +/**
|
| + * View that positions two views vertically. The top view should be
|
| + * fixed-height, and the bottom view will fill the remainder of the space.
|
| + *
|
| + * +-----------------------------------+
|
| + * | topView |
|
| + * +-----------------------------------+
|
| + * | |
|
| + * | |
|
| + * | |
|
| + * | bottomView |
|
| + * | |
|
| + * | |
|
| + * | |
|
| + * | |
|
| + * +-----------------------------------+
|
| + */
|
| +var VerticalSplitView = (function() {
|
| + 'use strict';
|
| +
|
| + // We inherit from View.
|
| + var superClass = View;
|
| +
|
| + /**
|
| + * @param {!View} topView The top view.
|
| + * @param {!View} bottomView The bottom view.
|
| + * @constructor
|
| + */
|
| + function VerticalSplitView(topView, bottomView) {
|
| + // Call superclass's constructor.
|
| + superClass.call(this);
|
| +
|
| + this.topView_ = topView;
|
| + this.bottomView_ = bottomView;
|
| + }
|
| +
|
| + VerticalSplitView.prototype = {
|
| + // Inherit the superclass's methods.
|
| + __proto__: superClass.prototype,
|
| +
|
| + setGeometry: function(left, top, width, height) {
|
| + superClass.prototype.setGeometry.call(this, left, top, width, height);
|
| +
|
| + var fixedHeight = this.topView_.getHeight();
|
| + this.topView_.setGeometry(left, top, width, fixedHeight);
|
| +
|
| + this.bottomView_.setGeometry(
|
| + left, top + fixedHeight, width, height - fixedHeight);
|
| + },
|
| +
|
| + show: function(isVisible) {
|
| + superClass.prototype.show.call(this, isVisible);
|
| +
|
| + this.topView_.show(isVisible);
|
| + this.bottomView_.show(isVisible);
|
| + }
|
| + };
|
| +
|
| + return VerticalSplitView;
|
| +})();
|
| +
|
| +/**
|
| + * View that positions two views horizontally. The left view should be
|
| + * fixed-width, and the right view will fill the remainder of the space.
|
| + *
|
| + * +----------+--------------------------+
|
| + * | | |
|
| + * | | |
|
| + * | | |
|
| + * | leftView | rightView |
|
| + * | | |
|
| + * | | |
|
| + * | | |
|
| + * | | |
|
| + * | | |
|
| + * | | |
|
| + * | | |
|
| + * +----------+--------------------------+
|
| + */
|
| +var HorizontalSplitView = (function() {
|
| + 'use strict';
|
| +
|
| + // We inherit from View.
|
| + var superClass = View;
|
| +
|
| + /**
|
| + * @param {!View} leftView The left view.
|
| + * @param {!View} rightView The right view.
|
| + * @constructor
|
| + */
|
| + function HorizontalSplitView(leftView, rightView) {
|
| + // Call superclass's constructor.
|
| + superClass.call(this);
|
| +
|
| + this.leftView_ = leftView;
|
| + this.rightView_ = rightView;
|
| + }
|
| +
|
| + HorizontalSplitView.prototype = {
|
| + // Inherit the superclass's methods.
|
| + __proto__: superClass.prototype,
|
| +
|
| + setGeometry: function(left, top, width, height) {
|
| + superClass.prototype.setGeometry.call(this, left, top, width, height);
|
| +
|
| + var fixedWidth = this.leftView_.getWidth();
|
| + this.leftView_.setGeometry(left, top, fixedWidth, height);
|
| +
|
| + this.rightView_.setGeometry(
|
| + left + fixedWidth, top, width - fixedWidth, height);
|
| + },
|
| +
|
| + show: function(isVisible) {
|
| + superClass.prototype.show.call(this, isVisible);
|
| +
|
| + this.leftView_.show(isVisible);
|
| + this.rightView_.show(isVisible);
|
| + }
|
| + };
|
| +
|
| + return HorizontalSplitView;
|
| +})();
|
| +
|
|
|