From 42d78d11764dca5df6c7d01f3221f398bee17152 Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Thu, 1 Mar 2012 15:00:48 -0800 Subject: Squashed commit of the workspace-bugs - Panels fixes. Signed-off-by: Valerio Virgillito --- js/panels/resize-composer.js | 121 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 js/panels/resize-composer.js (limited to 'js/panels/resize-composer.js') diff --git a/js/panels/resize-composer.js b/js/panels/resize-composer.js new file mode 100644 index 00000000..6e5e89f8 --- /dev/null +++ b/js/panels/resize-composer.js @@ -0,0 +1,121 @@ +/* +This file contains proprietary software owned by Motorola Mobility, Inc.
+No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.
+(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. +
*/ + +var Montage = require("montage/core/core").Montage; +var Composer = require("montage/ui/composer/composer").Composer; + +exports.ResizeComposer = Montage.create(Composer, { + + enabled : { + enumerable: false, + value: true + }, + + inversed : { + enumarable: false, + value: false + }, + + _startX: { + enumerable: false, + value: 0 + }, + + _startY: { + enumerable: false, + value: 0 + }, + + _deltaX: { + enumerable: false, + value: 0 + }, + + _deltaY: { + enumerable: false, + value: 0 + }, + + _startTimestamp: { + enumerable: false, + value: 0 + }, + + _reset: { + enumerable: false, + value: function() { + this._startX = 0; + this._startY = 0; + this._deltaX = 0; + this._deltaY = 0; + } + }, + + _executeEvent: { + value: function(eventName) { + resizeEvent = document.createEvent("CustomEvent"); + resizeEvent.initCustomEvent(eventName, true, false, null); + resizeEvent.startX = this._startX; + resizeEvent.startY = this._startY; + resizeEvent.dX = this._deltaX; + resizeEvent.dY = this._deltaY; + this.dispatchEvent(resizeEvent); + } + }, + + load: { + value: function() { + this.element.addEventListener("mousedown", this, true); + } + }, + + unload: { + value: function() { + this.element.removeEventListener("mousedown", this, true); + } + }, + + captureMousedown: { + value: function(e) { + e.preventDefault(); + if (this.enabled) { + this._reset(); + this._startX = e.clientX; + this._startY = e.clientY; + this._startTimestamp = e.timeStamp; + window.addEventListener("mousemove", this, true); + window.addEventListener("mouseup", this, true); + this._executeEvent("resizeStart"); + } + } + }, + + captureMouseup: { + value: function(e) { + e.preventDefault(); + window.removeEventListener("mousemove", this, true); + window.removeEventListener("mouseup", this, true); + this._executeEvent("resizeEnd"); + } + }, + + captureMousemove: { + value: function(e) { + this._deltaX = e.clientX - this._startX; + this._deltaY = e.clientY - this._startY; + this._executeEvent("resizeMove"); + } + }, + + deserializedFromTemplate: { + value: function() { + if (this.component) { + this.component.addComposer(this); + } + } + } + +}); \ No newline at end of file -- cgit v1.2.3