// 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. /** * @fileoverview * Class handling the in-session options menu (or menus in the case of apps v1). */ 'use strict'; /** @suppress {duplicate} */ var remoting = remoting || {}; /** * @param {Element} sendCtrlAltDel * @param {Element} sendPrtScrn * @param {Element} resizeToClient * @param {Element} shrinkToFit * @param {Element} newConnection * @param {Element?} fullscreen * @constructor */ remoting.OptionsMenu = function(sendCtrlAltDel, sendPrtScrn, resizeToClient, shrinkToFit, newConnection, fullscreen) { this.sendCtrlAltDel_ = sendCtrlAltDel; this.sendPrtScrn_ = sendPrtScrn; this.resizeToClient_ = resizeToClient; this.shrinkToFit_ = shrinkToFit; this.newConnection_ = newConnection; this.fullscreen_ = fullscreen; /** * @type {remoting.ClientSession} * @private */ this.clientSession_ = null; this.sendCtrlAltDel_.addEventListener( 'click', this.onSendCtrlAltDel_.bind(this), false); this.sendPrtScrn_.addEventListener( 'click', this.onSendPrtScrn_.bind(this), false); this.resizeToClient_.addEventListener( 'click', this.onResizeToClient_.bind(this), false); this.shrinkToFit_.addEventListener( 'click', this.onShrinkToFit_.bind(this), false); this.newConnection_.addEventListener( 'click', this.onNewConnection_.bind(this), false); if (this.fullscreen_) { this.fullscreen_.addEventListener( 'click', this.onFullscreen_.bind(this), false); } }; /** * @param {remoting.ClientSession} clientSession The active session, or null if * there is no connection. */ remoting.OptionsMenu.prototype.setClientSession = function(clientSession) { this.clientSession_ = clientSession; }; remoting.OptionsMenu.prototype.onShow = function() { if (this.clientSession_) { remoting.MenuButton.select( this.resizeToClient_, this.clientSession_.getResizeToClient()); remoting.MenuButton.select( this.shrinkToFit_, this.clientSession_.getShrinkToFit()); if (this.fullscreen_) { remoting.MenuButton.select( this.fullscreen_, remoting.fullscreen.isActive()); } } }; remoting.OptionsMenu.prototype.onSendCtrlAltDel_ = function() { if (this.clientSession_) { this.clientSession_.sendCtrlAltDel(); } }; remoting.OptionsMenu.prototype.onSendPrtScrn_ = function() { if (this.clientSession_) { this.clientSession_.sendPrintScreen(); } }; remoting.OptionsMenu.prototype.onResizeToClient_ = function() { if (this.clientSession_) { this.clientSession_.setScreenMode(this.clientSession_.getShrinkToFit(), !this.clientSession_.getResizeToClient()); } }; remoting.OptionsMenu.prototype.onShrinkToFit_ = function() { if (this.clientSession_) { this.clientSession_.setScreenMode(!this.clientSession_.getShrinkToFit(), this.clientSession_.getResizeToClient()); } }; remoting.OptionsMenu.prototype.onNewConnection_ = function() { chrome.app.window.create('main.html', { 'width': 800, 'height': 600, 'frame': 'none' }); }; remoting.OptionsMenu.prototype.onFullscreen_ = function() { remoting.fullscreen.toggle(); };