1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/**
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * The status view at the top of the page.  It displays what mode net-internals
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * is in (capturing, viewing only, viewing loaded log), and may have extra
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * information and actions depending on the mode.
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var TopBarView = (function() {
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  'use strict';
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // We inherit from View.
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  var superClass = DivView;
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  /**
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * Main entry point. Called once the page has loaded.
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   * @constructor
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)   */
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  function TopBarView() {
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    assertFirstConstructorCall(TopBarView);
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    superClass.call(this, TopBarView.BOX_ID);
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    this.nameToSubView_ = {
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      capture: new CaptureStatusView(),
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      loaded: new LoadedStatusView(),
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      halted: new HaltedStatusView()
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    };
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    this.activeSubView_ = null;
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TopBarView.BOX_ID = 'top-bar-view';
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TopBarView.TAB_DROPDOWN_MENU_ID = 'top-bar-view-tab-selecter';
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  cr.addSingletonGetter(TopBarView);
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  TopBarView.prototype = {
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Inherit the superclass's methods.
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    __proto__: superClass.prototype,
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    switchToSubView: function(name) {
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var newSubView = this.nameToSubView_[name];
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      if (!newSubView)
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        throw Error('Invalid subview name');
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      var prevSubView = this.activeSubView_;
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      this.activeSubView_ = newSubView;
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      if (prevSubView)
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        prevSubView.show(false);
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      newSubView.show(this.isVisible());
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      // Let the subview change the color scheme of the top bar.
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      $(TopBarView.BOX_ID).className = name + '-status-view';
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return newSubView;
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    },
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  };
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return TopBarView;
64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)})();
65