Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Unified Diff: third_party/WebKit/Source/devtools/front_end/timeline/TransformController.js

Issue 2358253002: DevTools: extract a component for layer viewer (Closed)
Patch Set: review comments addressed Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/timeline/TransformController.js
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TransformController.js b/third_party/WebKit/Source/devtools/front_end/timeline/TransformController.js
deleted file mode 100644
index 2c0d0f73f501c7b95bf038fee3969b7a83e36d81..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TransformController.js
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * 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
- * @extends {WebInspector.Object}
- * @param {!Element} element
- * @param {boolean=} disableRotate
- */
-WebInspector.TransformController = function(element, disableRotate)
-{
- this._shortcuts = {};
- this.element = element;
- if (this.element.tabIndex < 0)
- this.element.tabIndex = 0;
- this._registerShortcuts();
- WebInspector.installDragHandle(element, this._onDragStart.bind(this), this._onDrag.bind(this), this._onDragEnd.bind(this), "move", null);
- element.addEventListener("keydown", this._onKeyDown.bind(this), false);
- element.addEventListener("keyup", this._onKeyUp.bind(this), false);
- element.addEventListener("mousewheel", this._onMouseWheel.bind(this), false);
- this._minScale = 0;
- this._maxScale = Infinity;
-
- this._controlPanelToolbar = new WebInspector.Toolbar("transform-control-panel");
-
- /** @type {!Object<string, !WebInspector.ToolbarToggle>} */
- this._modeButtons = {};
- if (!disableRotate) {
- var panModeButton = new WebInspector.ToolbarToggle(WebInspector.UIString("Pan mode (X)"), "pan-toolbar-item");
- panModeButton.addEventListener("click", this._setMode.bind(this, WebInspector.TransformController.Modes.Pan));
- this._modeButtons[WebInspector.TransformController.Modes.Pan] = panModeButton;
- this._controlPanelToolbar.appendToolbarItem(panModeButton);
- var rotateModeButton = new WebInspector.ToolbarToggle(WebInspector.UIString("Rotate mode (V)"), "rotate-toolbar-item");
- rotateModeButton.addEventListener("click", this._setMode.bind(this, WebInspector.TransformController.Modes.Rotate));
- this._modeButtons[WebInspector.TransformController.Modes.Rotate] = rotateModeButton;
- this._controlPanelToolbar.appendToolbarItem(rotateModeButton);
- }
- this._setMode(WebInspector.TransformController.Modes.Pan);
-
- var resetButton = new WebInspector.ToolbarButton(WebInspector.UIString("Reset transform (0)"), "center-toolbar-item");
- resetButton.addEventListener("click", this.resetAndNotify.bind(this, undefined));
- this._controlPanelToolbar.appendToolbarItem(resetButton);
-
- this._reset();
-}
-
-/** @enum {symbol} */
-WebInspector.TransformController.Events = {
- TransformChanged: Symbol("TransformChanged")
-}
-
-/**
- * @enum {string}
- */
-WebInspector.TransformController.Modes = {
- Pan: "Pan",
- Rotate: "Rotate",
-}
-
-WebInspector.TransformController.prototype = {
- /**
- * @return {!WebInspector.Toolbar}
- */
- toolbar: function()
- {
- return this._controlPanelToolbar;
- },
-
- _onKeyDown: function(event)
- {
- if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Shift.code) {
- this._toggleMode();
- return;
- }
-
- var shortcutKey = WebInspector.KeyboardShortcut.makeKeyFromEventIgnoringModifiers(event);
- var handler = this._shortcuts[shortcutKey];
- if (handler && handler(event))
- event.consume();
- },
-
- _onKeyUp: function(event)
- {
- if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Shift.code)
- this._toggleMode();
- },
-
- _addShortcuts: function(keys, handler)
- {
- for (var i = 0; i < keys.length; ++i)
- this._shortcuts[keys[i].key] = handler;
- },
-
- _registerShortcuts: function()
- {
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.ResetView, this.resetAndNotify.bind(this));
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.PanMode, this._setMode.bind(this, WebInspector.TransformController.Modes.Pan));
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.RotateMode, this._setMode.bind(this, WebInspector.TransformController.Modes.Rotate));
- var zoomFactor = 1.1;
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.ZoomIn, this._onKeyboardZoom.bind(this, zoomFactor));
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.ZoomOut, this._onKeyboardZoom.bind(this, 1 / zoomFactor));
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.Up, this._onKeyboardPanOrRotate.bind(this, 0, -1));
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.Down, this._onKeyboardPanOrRotate.bind(this, 0, 1));
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.Left, this._onKeyboardPanOrRotate.bind(this, -1, 0));
- this._addShortcuts(WebInspector.ShortcutsScreen.LayersPanelShortcuts.Right, this._onKeyboardPanOrRotate.bind(this, 1, 0));
- },
-
- _postChangeEvent: function()
- {
- this.dispatchEventToListeners(WebInspector.TransformController.Events.TransformChanged);
- },
-
- _reset: function()
- {
- this._scale = 1;
- this._offsetX = 0;
- this._offsetY = 0;
- this._rotateX = 0;
- this._rotateY = 0;
- },
-
- _toggleMode: function()
- {
- this._setMode(this._mode === WebInspector.TransformController.Modes.Pan ? WebInspector.TransformController.Modes.Rotate : WebInspector.TransformController.Modes.Pan);
- },
-
- /**
- * @param {!WebInspector.TransformController.Modes} mode
- */
- _setMode: function(mode)
- {
- if (this._mode === mode)
- return;
- this._mode = mode;
- this._updateModeButtons();
- this.element.focus();
- },
-
- _updateModeButtons: function()
- {
- for (var mode in this._modeButtons)
- this._modeButtons[mode].setToggled(mode === this._mode);
- },
-
- /**
- * @param {!Event=} event
- */
- resetAndNotify: function(event)
- {
- this._reset();
- this._postChangeEvent();
- if (event)
- event.preventDefault();
- this.element.focus();
- },
-
- /**
- * @param {number} minScale
- * @param {number} maxScale
- */
- setScaleConstraints: function(minScale, maxScale)
- {
- this._minScale = minScale;
- this._maxScale = maxScale;
- this._scale = Number.constrain(this._scale, minScale, maxScale);
- },
-
- /**
- * @param {number} minX
- * @param {number} maxX
- * @param {number} minY
- * @param {number} maxY
- */
- clampOffsets: function(minX, maxX, minY, maxY)
- {
- this._offsetX = Number.constrain(this._offsetX, minX, maxX);
- this._offsetY = Number.constrain(this._offsetY, minY, maxY);
- },
-
- /**
- * @return {number}
- */
- scale: function()
- {
- return this._scale;
- },
-
- /**
- * @return {number}
- */
- offsetX: function()
- {
- return this._offsetX;
- },
-
- /**
- * @return {number}
- */
- offsetY: function()
- {
- return this._offsetY;
- },
-
- /**
- * @return {number}
- */
- rotateX: function()
- {
- return this._rotateX;
- },
-
- /**
- * @return {number}
- */
- rotateY: function()
- {
- return this._rotateY;
- },
-
- /**
- * @param {number} scaleFactor
- * @param {number} x
- * @param {number} y
- */
- _onScale: function(scaleFactor, x, y)
- {
- scaleFactor = Number.constrain(this._scale * scaleFactor, this._minScale, this._maxScale) / this._scale;
- this._scale *= scaleFactor;
- this._offsetX -= (x - this._offsetX) * (scaleFactor - 1);
- this._offsetY -= (y - this._offsetY) * (scaleFactor - 1);
- this._postChangeEvent();
- },
-
- /**
- * @param {number} offsetX
- * @param {number} offsetY
- */
- _onPan: function(offsetX, offsetY)
- {
- this._offsetX += offsetX;
- this._offsetY += offsetY;
- this._postChangeEvent();
- },
-
- /**
- * @param {number} rotateX
- * @param {number} rotateY
- */
- _onRotate: function(rotateX, rotateY)
- {
- this._rotateX = rotateX;
- this._rotateY = rotateY;
- this._postChangeEvent();
- },
-
- /**
- * @param {number} zoomFactor
- */
- _onKeyboardZoom: function(zoomFactor)
- {
- this._onScale(zoomFactor, this.element.clientWidth / 2, this.element.clientHeight / 2);
- },
-
- /**
- * @param {number} xMultiplier
- * @param {number} yMultiplier
- */
- _onKeyboardPanOrRotate: function(xMultiplier, yMultiplier)
- {
- var panStepInPixels = 6;
- var rotateStepInDegrees = 5;
-
- if (this._mode === WebInspector.TransformController.Modes.Rotate) {
- // Sic! _onRotate treats X and Y as "rotate around X" and "rotate around Y", so swap X/Y multiplers.
- this._onRotate(this._rotateX + yMultiplier * rotateStepInDegrees, this._rotateY + xMultiplier * rotateStepInDegrees);
- } else {
- this._onPan(xMultiplier * panStepInPixels, yMultiplier * panStepInPixels);
- }
- },
-
- /**
- * @param {!Event} event
- */
- _onMouseWheel: function(event)
- {
- /** @const */
- var zoomFactor = 1.1;
- /** @const */
- var mouseWheelZoomSpeed = 1 / 120;
- var scaleFactor = Math.pow(zoomFactor, event.wheelDeltaY * mouseWheelZoomSpeed);
- this._onScale(scaleFactor, event.clientX - this.element.totalOffsetLeft(), event.clientY - this.element.totalOffsetTop());
- },
-
- /**
- * @param {!Event} event
- */
- _onDrag: function(event)
- {
- if (this._mode === WebInspector.TransformController.Modes.Rotate) {
- this._onRotate(this._oldRotateX + (this._originY - event.clientY) / this.element.clientHeight * 180, this._oldRotateY - (this._originX - event.clientX) / this.element.clientWidth * 180);
- } else {
- this._onPan(event.clientX - this._originX, event.clientY - this._originY);
- this._originX = event.clientX;
- this._originY = event.clientY;
- }
- },
-
- /**
- * @param {!MouseEvent} event
- */
- _onDragStart: function(event)
- {
- this.element.focus();
- this._originX = event.clientX;
- this._originY = event.clientY;
- this._oldRotateX = this._rotateX;
- this._oldRotateY = this._rotateY;
- return true;
- },
-
- _onDragEnd: function()
- {
- delete this._originX;
- delete this._originY;
- delete this._oldRotateX;
- delete this._oldRotateY;
- },
-
- __proto__: WebInspector.Object.prototype
-}

Powered by Google App Engine
This is Rietveld 408576698