blob: 5b0a4a9db1fc530fce59aed57ca8a63b482062f3 [file] [log] [blame]
// Copyright 2014 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.
/**
* @constructor
* @implements {WebInspector.TargetManager.Observer}
*/
WebInspector.TargetsToolbar = function()
{
this.element = document.createElement("div");
this.element.className = "status-bar scripts-debug-toolbar targets-toolbar hidden";
this._comboBox = new WebInspector.StatusBarComboBox(this._onComboBoxSelectionChange.bind(this));
this.element.appendChild(this._comboBox.element);
/** @type {!Map.<!WebInspector.Target, !Element>} */
this._targetToOption = new Map();
if (!WebInspector.experimentsSettings.workersInMainWindow.isEnabled())
return;
WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._targetChangedExternally, this);
WebInspector.targetManager.observeTargets(this);
}
WebInspector.TargetsToolbar.prototype = {
/**
* @param {!WebInspector.Target} target
*/
targetAdded: function(target)
{
var option = this._comboBox.createOption(target.name());
option.__target = target;
this._targetToOption.put(target, option);
if (WebInspector.context.flavor(WebInspector.Target) === target)
this._comboBox.select(option);
this._updateVisibility();
},
/**
* @param {!WebInspector.Target} target
*/
targetRemoved: function(target)
{
var option = this._targetToOption.remove(target);
this._comboBox.removeOption(option);
this._updateVisibility();
},
_onComboBoxSelectionChange: function()
{
var selectedOption = this._comboBox.selectedOption();
if (!selectedOption)
return;
WebInspector.context.setFlavor(WebInspector.Target, selectedOption.__target);
},
_updateVisibility: function()
{
var hidden = this._comboBox.size() === 1;
this.element.classList.toggle("hidden", hidden);
},
/**
* @param {!WebInspector.Event} event
*/
_targetChangedExternally: function(event)
{
var target = /** @type {?WebInspector.Target} */ (event.data);
if (target) {
var option = /** @type {!Element} */ (this._targetToOption.get(target));
this._comboBox.select(option);
}
}
}