michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: "use strict"; michael@0: michael@0: const gcli = require("gcli/index"); michael@0: michael@0: // Fetch TiltManager using the current loader, but don't save a michael@0: // reference to it, because it might change with a tool reload. michael@0: // We can clean this up once the command line is loadered. michael@0: Object.defineProperty(this, "TiltManager", { michael@0: get: function() { michael@0: return require("devtools/tilt/tilt").TiltManager; michael@0: }, michael@0: enumerable: true michael@0: }); michael@0: michael@0: exports.items = [ michael@0: { michael@0: name: 'tilt', michael@0: description: gcli.lookup("tiltDesc"), michael@0: manual: gcli.lookup("tiltManual") michael@0: }, michael@0: { michael@0: name: 'tilt open', michael@0: description: gcli.lookup("tiltOpenDesc"), michael@0: manual: gcli.lookup("tiltOpenManual"), michael@0: exec: function(args, context) { michael@0: let chromeWindow = context.environment.chromeDocument.defaultView; michael@0: let Tilt = TiltManager.getTiltForBrowser(chromeWindow); michael@0: if (!Tilt.currentInstance) { michael@0: Tilt.toggle(); michael@0: } michael@0: } michael@0: }, michael@0: { michael@0: name: "tilt toggle", michael@0: buttonId: "command-button-tilt", michael@0: buttonClass: "command-button command-button-invertable", michael@0: tooltipText: gcli.lookup("tiltToggleTooltip"), michael@0: hidden: true, michael@0: state: { michael@0: isChecked: function(aTarget) { michael@0: let browserWindow = aTarget.tab.ownerDocument.defaultView; michael@0: return !!TiltManager.getTiltForBrowser(browserWindow).currentInstance; michael@0: }, michael@0: onChange: function(aTarget, aChangeHandler) { michael@0: let browserWindow = aTarget.tab.ownerDocument.defaultView; michael@0: let tilt = TiltManager.getTiltForBrowser(browserWindow); michael@0: tilt.on("change", aChangeHandler); michael@0: }, michael@0: offChange: function(aTarget, aChangeHandler) { michael@0: if (aTarget.tab) { michael@0: let browserWindow = aTarget.tab.ownerDocument.defaultView; michael@0: let tilt = TiltManager.getTiltForBrowser(browserWindow); michael@0: tilt.off("change", aChangeHandler); michael@0: } michael@0: }, michael@0: }, michael@0: exec: function(args, context) { michael@0: let chromeWindow = context.environment.chromeDocument.defaultView; michael@0: let Tilt = TiltManager.getTiltForBrowser(chromeWindow); michael@0: Tilt.toggle(); michael@0: } michael@0: }, michael@0: { michael@0: name: 'tilt translate', michael@0: description: gcli.lookup("tiltTranslateDesc"), michael@0: manual: gcli.lookup("tiltTranslateManual"), michael@0: params: [ michael@0: { michael@0: name: "x", michael@0: type: "number", michael@0: defaultValue: 0, michael@0: description: gcli.lookup("tiltTranslateXDesc"), michael@0: manual: gcli.lookup("tiltTranslateXManual") michael@0: }, michael@0: { michael@0: name: "y", michael@0: type: "number", michael@0: defaultValue: 0, michael@0: description: gcli.lookup("tiltTranslateYDesc"), michael@0: manual: gcli.lookup("tiltTranslateYManual") michael@0: } michael@0: ], michael@0: exec: function(args, context) { michael@0: let chromeWindow = context.environment.chromeDocument.defaultView; michael@0: let Tilt = TiltManager.getTiltForBrowser(chromeWindow); michael@0: if (Tilt.currentInstance) { michael@0: Tilt.currentInstance.controller.arcball.translate([args.x, args.y]); michael@0: } michael@0: } michael@0: }, michael@0: { michael@0: name: 'tilt rotate', michael@0: description: gcli.lookup("tiltRotateDesc"), michael@0: manual: gcli.lookup("tiltRotateManual"), michael@0: params: [ michael@0: { michael@0: name: "x", michael@0: type: { name: 'number', min: -360, max: 360, step: 10 }, michael@0: defaultValue: 0, michael@0: description: gcli.lookup("tiltRotateXDesc"), michael@0: manual: gcli.lookup("tiltRotateXManual") michael@0: }, michael@0: { michael@0: name: "y", michael@0: type: { name: 'number', min: -360, max: 360, step: 10 }, michael@0: defaultValue: 0, michael@0: description: gcli.lookup("tiltRotateYDesc"), michael@0: manual: gcli.lookup("tiltRotateYManual") michael@0: }, michael@0: { michael@0: name: "z", michael@0: type: { name: 'number', min: -360, max: 360, step: 10 }, michael@0: defaultValue: 0, michael@0: description: gcli.lookup("tiltRotateZDesc"), michael@0: manual: gcli.lookup("tiltRotateZManual") michael@0: } michael@0: ], michael@0: exec: function(args, context) { michael@0: let chromeWindow = context.environment.chromeDocument.defaultView; michael@0: let Tilt = TiltManager.getTiltForBrowser(chromeWindow); michael@0: if (Tilt.currentInstance) { michael@0: Tilt.currentInstance.controller.arcball.rotate([args.x, args.y, args.z]); michael@0: } michael@0: } michael@0: }, michael@0: { michael@0: name: 'tilt zoom', michael@0: description: gcli.lookup("tiltZoomDesc"), michael@0: manual: gcli.lookup("tiltZoomManual"), michael@0: params: [ michael@0: { michael@0: name: "zoom", michael@0: type: { name: 'number' }, michael@0: description: gcli.lookup("tiltZoomAmountDesc"), michael@0: manual: gcli.lookup("tiltZoomAmountManual") michael@0: } michael@0: ], michael@0: exec: function(args, context) { michael@0: let chromeWindow = context.environment.chromeDocument.defaultView; michael@0: let Tilt = TiltManager.getTiltForBrowser(chromeWindow); michael@0: michael@0: if (Tilt.currentInstance) { michael@0: Tilt.currentInstance.controller.arcball.zoom(-args.zoom); michael@0: } michael@0: } michael@0: }, michael@0: { michael@0: name: 'tilt reset', michael@0: description: gcli.lookup("tiltResetDesc"), michael@0: manual: gcli.lookup("tiltResetManual"), michael@0: exec: function(args, context) { michael@0: let chromeWindow = context.environment.chromeDocument.defaultView; michael@0: let Tilt = TiltManager.getTiltForBrowser(chromeWindow); michael@0: michael@0: if (Tilt.currentInstance) { michael@0: Tilt.currentInstance.controller.arcball.reset(); michael@0: } michael@0: } michael@0: }, michael@0: { michael@0: name: 'tilt close', michael@0: description: gcli.lookup("tiltCloseDesc"), michael@0: manual: gcli.lookup("tiltCloseManual"), michael@0: exec: function(args, context) { michael@0: let chromeWindow = context.environment.chromeDocument.defaultView; michael@0: let Tilt = TiltManager.getTiltForBrowser(chromeWindow); michael@0: michael@0: Tilt.destroy(Tilt.currentWindowId); michael@0: } michael@0: } michael@0: ];