// 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; })();