From b89a7ee8b956c96a1dcee995ea840feddc5d4b27 Mon Sep 17 00:00:00 2001 From: Pierre Frisch Date: Thu, 22 Dec 2011 07:25:50 -0800 Subject: First commit of Ninja to ninja-internal Signed-off-by: Valerio Virgillito --- js/tools/EyedropperTool.js | 152 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 js/tools/EyedropperTool.js (limited to 'js/tools/EyedropperTool.js') diff --git a/js/tools/EyedropperTool.js b/js/tools/EyedropperTool.js new file mode 100644 index 00000000..795753d2 --- /dev/null +++ b/js/tools/EyedropperTool.js @@ -0,0 +1,152 @@ +/* +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, + ElementsMediator = require("js/mediators/element-mediator").ElementMediator, + + toolBase = require("js/tools/ToolBase").toolBase; + +exports.EyedropperTool = Montage.create(toolBase, { + + _isMouseDown: { value: false }, + _previousColor: { value: null}, + _color: { value: null}, + + Configure: { + value: function ( doActivate ) + { + if (doActivate) + { + NJevent("enableStageMove"); + } + else + { + NJevent("disableStageMove"); + } + } + }, + + HandleLeftButtonDown: { + value : function ( event ) { + this._isMouseDown = true; + this._previousColor = + this.application.ninja.colorController[this.application.ninja.colorController.colorModel.input].css; + + this._updateColorFromPoint(event); + } + }, + + HandleMouseMove: { + value : function (event) + { + if(this._escape) + { + this._isMouseDown = false; + this._escape = false; + } + if(this._isMouseDown) + { + this._updateColorFromPoint(event); + } + } + }, + + HandleLeftButtonUp: { + value : function (event) { + { + this._isMouseDown = false; + + if(this._escape) + { + this._escape = false; + } + + this._updateColor(this._color); + + this._color = null; + } + } + }, + + HandleEscape: { + value: function(event) { + if(this._color && this._color.value) + { + var color = this.application.ninja.colorController.getColorObjFromCss(this._previousColor); + + if (color && color.value) { + color.value.wasSetByCode = true; + color.value.type = 'change'; + if (color.value.a) { + this.application.ninja.colorController.colorModel.alpha = {value: color.value.a, + wasSetByCode: true, + type: 'change'}; + } + this.application.ninja.colorController.colorModel[color.mode] = color.value; + this._color = null; + } + } + this._escape = true; + } + }, + + _updateColorFromPoint: { + value : function (event) { + var obj = this.application.ninja.stage.GetElement(event); + if (obj) + { + // TODO - figure out if user clicked on a border - for now, just get fill + var c = ElementsMediator.getColor(obj, true); + if(c) + { + var color = this.application.ninja.colorController.getColorObjFromCss(c); + if (color && color.value) { + color.value.wasSetByCode = true; + color.value.type = 'changing'; + if (color.value.a) { + this.application.ninja.colorController.colorModel.alpha = {value: color.value.a, + wasSetByCode: true, + type: 'changing'}; + } + this.application.ninja.colorController.colorModel[color.mode] = color.value; + this._color = color; + } + } + } + } + }, + + _updateColor: { + value: function(color) { + if (color && color.value) { + var input = this.application.ninja.colorController.colorModel.input; + + if(input === "fill") + { + this.application.ninja.colorController.colorToolbar.fill_btn.color(color.mode, color.value); + } + else + { + this.application.ninja.colorController.colorToolbar.stroke_btn.color(color.mode, color.value); + } + + // Updating color chips will set the input type to "chip", so set it back here. + this.application.ninja.colorController.colorModel.input = input; + + color.value.wasSetByCode = true; + color.value.type = 'change'; + if (color.value.a) { + this.application.ninja.colorController.colorModel.alpha = {value: color.value.a, + wasSetByCode: true, + type: 'change'}; + } + this.application.ninja.colorController.colorModel[color.mode] = color.value; + this._previousColor = color.value.css; + } + } + } + +}); \ No newline at end of file -- cgit v1.2.3