summaryrefslogtreecommitdiffstats
path: root/remoting/webapp/options_menu.js
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/webapp/options_menu.js')
-rw-r--r--remoting/webapp/options_menu.js99
1 files changed, 99 insertions, 0 deletions
diff --git a/remoting/webapp/options_menu.js b/remoting/webapp/options_menu.js
new file mode 100644
index 0000000..fa1b9fd
--- /dev/null
+++ b/remoting/webapp/options_menu.js
@@ -0,0 +1,99 @@
+// 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 {HTMLElement} sendCtrlAltDel
+ * @param {HTMLElement} sendPrtScrn
+ * @param {HTMLElement} resizeToClient
+ * @param {HTMLElement} shrinkToFit
+ * @param {HTMLElement?} fullscreen
+ * @constructor
+ */
+remoting.OptionsMenu = function(sendCtrlAltDel, sendPrtScrn,
+ resizeToClient, shrinkToFit, fullscreen) {
+ this.sendCtrlAltDel_ = sendCtrlAltDel;
+ this.sendPrtScrn_ = sendPrtScrn;
+ this.resizeToClient_ = resizeToClient;
+ this.shrinkToFit_ = shrinkToFit;
+ 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);
+ 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.onFullscreen_ = function() {
+ remoting.fullscreen.toggle();
+};