blob: 755bc56706e6b293a23f0375862b413f5d04bfd3 [file] [log] [blame]
// 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.
/**
* The status view at the top of the page. It displays what mode net-internals
* is in (capturing, viewing only, viewing loaded log), and may have extra
* information and actions depending on the mode.
*/
var StatusView = (function() {
'use strict';
// We inherit from View.
var superClass = View;
/**
* Main entry point. Called once the page has loaded.
* @constructor
*/
function StatusView() {
assertFirstConstructorCall(StatusView);
superClass.call(this);
this.subViews_ = {
capture: new CaptureStatusView(),
loaded: new LoadedStatusView(),
halted: new HaltedStatusView()
};
this.activeSubViewName_ = 'capture';
// Hide the non-active views.
for (var k in this.subViews_) {
if (k != this.activeSubViewName_)
this.subViews_[k].show(false);
}
}
cr.addSingletonGetter(StatusView);
StatusView.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.getActiveSubView_().setGeometry(left, top, width, height);
},
getHeight: function() {
return this.getActiveSubView_().getHeight();
},
show: function(isVisible) {
superClass.prototype.show.call(this, isVisible);
this.getActiveSubView_().show(isVisible);
},
setLayoutParent: function(view) {
this.layoutParent_ = view;
},
/**
* Switch the active subview.
*/
switchToSubView: function(name) {
if (!this.subViews_[name])
throw 'Invalid subview name: ' + name;
var prevSubView = this.getActiveSubView_();
this.activeSubViewName_ = name;
var newSubView = this.getActiveSubView_();
prevSubView.show(false);
newSubView.show(this.isVisible());
// Since the subview's dimensions may have changed, re-trigger a layout
// for our parent.
var view = this.layoutParent_;
view.setGeometry(view.getLeft(), view.getTop(),
view.getWidth(), view.getHeight());
return newSubView;
},
getActiveSubView_: function() {
return this.subViews_[this.activeSubViewName_];
}
};
return StatusView;
})();