This is an automated email from the ASF dual-hosted git repository.

yishayw pushed a commit to branch color_picker
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/color_picker by this push:
     new 1c4489e  Make thumb in color spectrum draggable.
1c4489e is described below

commit 1c4489eff9ec1ceaa9ea0524831b657f9b69b635
Author: DESKTOP-RH4S838\Yishay <[email protected]>
AuthorDate: Mon Apr 15 14:51:18 2019 +0300

    Make thumb in color spectrum draggable.
---
 .../controllers/ColorSpectrumMouseController.as    | 59 +++++++++++++++++++---
 1 file changed, 53 insertions(+), 6 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ColorSpectrumMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ColorSpectrumMouseController.as
index dedf641..0667663 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ColorSpectrumMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/ColorSpectrumMouseController.as
@@ -22,12 +22,14 @@ package org.apache.royale.html.beads.controllers
        import org.apache.royale.core.IColorSpectrumModel;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IStrandWithModel;
+       import org.apache.royale.core.IStrandWithModelView;
        import org.apache.royale.core.IUIBase;
-       import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.events.MouseEvent;
+       import org.apache.royale.html.beads.ISliderView;
        import org.apache.royale.utils.HSV;
        import org.apache.royale.utils.hsvToHex;
        import org.apache.royale.utils.rgbToHsv;
+
        COMPILE::JS 
        {
         import org.apache.royale.events.BrowserEvent;
@@ -62,14 +64,28 @@ package org.apache.royale.html.beads.controllers
                public function set strand(value:IStrand):void
                {
                        _strand = value;
-                       (value as 
IEventDispatcher).addEventListener(MouseEvent.CLICK, handleClick);
+                       
sliderView.thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbDownHandler);
+                       sliderView.track.addEventListener(MouseEvent.CLICK, 
trackClickHandler);
                }
                
         /**
                 * @royaleignorecoercion org.apache.royale.events.BrowserEvent
          */
-        private function handleClick(event:MouseEvent):void
+        private function trackClickHandler(event:MouseEvent):void
         {
+                       if (event.target != sliderView.track)
+                       {
+                               return;
+                       }
+                       var modifiedColor:uint = 
getColorFromMousePosition(event);
+                       model.hsvModifiedColor = modifiedColor;
+        }
+               
+        /**
+                * @royaleignorecoercion org.apache.royale.events.BrowserEvent
+         */
+               private function 
getColorFromMousePosition(event:MouseEvent):uint
+               {
             var host:IUIBase = _strand as IUIBase;
                        var yloc:Number;
                        var xloc:Number;
@@ -81,12 +97,43 @@ package org.apache.royale.html.beads.controllers
                        }
                        var widthRatio:Number = xloc / host.width;
                        var heightRatio:Number = (host.height - yloc) / 
host.height;
-                       var model:IColorSpectrumModel = (_strand as 
IStrandWithModel).model as IColorSpectrumModel;
                        var r:uint = (model.baseColor >> 16 ) & 255;
                        var g:uint = (model.baseColor >> 8 ) & 255;
                        var b:uint = model.baseColor & 255;
                        var hsvBaseColor:HSV = rgbToHsv(r, g, b);
-                       model.hsvModifiedColor = hsvToHex(hsvBaseColor.h, 
widthRatio * 100, heightRatio * 100);
-        }
+                       return hsvToHex(hsvBaseColor.h, widthRatio * 100, 
heightRatio * 100);
+               }
+               
+               private function get sliderView():ISliderView
+               {
+                       return (_strand as IStrandWithModelView).view as 
ISliderView;
+               }
+               
+               private function get model():IColorSpectrumModel
+               {
+                       return (_strand as IStrandWithModel).model as 
IColorSpectrumModel;
+               }
+
+               private function thumbDownHandler( event:MouseEvent ) : void
+               {
+                       
sliderView.track.addEventListener(MouseEvent.MOUSE_MOVE, thumbMoveHandler);
+                       sliderView.track.addEventListener(MouseEvent.MOUSE_UP, 
thumbUpHandler);
+               }
+               
+               private function thumbMoveHandler(event:MouseEvent):void
+               {
+                       if (event.target != sliderView.track)
+                       {
+                               return;
+                       }
+                       model.hsvModifiedColor = 
getColorFromMousePosition(event);
+               }
+               
+               private function thumbUpHandler(event:MouseEvent):void
+               {
+                       
sliderView.track.removeEventListener(MouseEvent.MOUSE_MOVE, thumbMoveHandler);
+                       
sliderView.track.removeEventListener(MouseEvent.MOUSE_UP, thumbUpHandler);
+               }
+
        }
 }

Reply via email to