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

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


The following commit(s) were added to refs/heads/develop by this push:
     new ae10781  jewel slider working ok
ae10781 is described below

commit ae10781c7ae7a5ee61ce52a9461540ddf0468548
Author: Carlos Rovira <carlosrov...@apache.org>
AuthorDate: Thu Apr 12 18:25:38 2018 +0200

    jewel slider working ok
---
 .../src/main/royale/SliderPlayGround.mxml          | 32 ++++++++++++--
 .../main/royale/org/apache/royale/jewel/Slider.as  |  2 +-
 .../beads/controllers/SliderMouseController.as     | 49 +++++++++++++++-------
 .../royale/jewel/beads/models/SliderRangeModel.as  |  4 +-
 .../apache/royale/jewel/beads/views/SliderView.as  | 18 ++++++--
 5 files changed, 80 insertions(+), 25 deletions(-)

diff --git a/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml 
b/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml
index 0886393..c64d197 100644
--- a/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml
@@ -25,12 +25,31 @@ limitations under the License.
     
        <fx:Script>
                <![CDATA[
-        private function onChange(event:Event):void
+               
+               private function clickHandler(event:MouseEvent):void
+               {
+                       trace("clickHandler");
+                       slider_w.value = 400;
+                       slider_h.value = 200;
+               }
+
+        private function onInput(event:Event):void
         {
+                       trace("onInput");
                button.width = slider_w.value;
                        button.height = slider_h.value;
                        button.text = slider_w.value + "x" + slider_h.value;
         }
+
+               private function onChange(event:Event):void
+        {
+                       trace("onChange");
+               }
+
+               private function onValueChange(event:Event):void
+        {
+                       trace("onValueChange");
+               }
        ]]>
        </fx:Script>
 
@@ -41,9 +60,13 @@ limitations under the License.
        <html:H3 text="Jewel Slider"/>
        
        <j:Slider id="slider_w" width="250" value="250" minimum="100" 
maximum="500"
-                               change="onChange(event)" 
input="onChange(event)"/>
+                               change="onChange(event)" 
+                               input="onInput(event)"
+                               valueChange="onValueChange(event)"/>
        <j:Slider id="slider_h" width="250" value="80" minimum="40" 
maximum="300"
-                               change="onChange(event)" 
input="onChange(event)"/>
+                               change="onChange(event)" 
+                               input="onInput(event)"
+                               valueChange="onValueChange(event)"/>
 
        <j:Slider id="slider_dis" width="250" value="70" minimum="0" 
maximum="100">
                <j:beads>
@@ -51,6 +74,7 @@ limitations under the License.
                </j:beads>
        </j:Slider>
 
-       <j:TextButton id="button" text="Button" width="250" height="140" 
primary="true"/>
+       <j:TextButton id="button" text="Slider to 400x200" width="250" 
height="80" primary="true"
+                                       click="clickHandler(event)"/>
 
 </js:Group>
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as
index 99b02a6..8a7b2e8 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as
@@ -41,7 +41,7 @@ package org.apache.royale.jewel
      *  @playerversion AIR 2.6
      *  @productversion Royale 0.9.3
      */
-       [Event(name="valueChange", type="org.apache.royale.events.Event")]
+       [Event(name="valueChange", 
type="org.apache.royale.events.ValueChangeEvent")]
 
      /**
      *  Dispatched when Slider ends its change from one position to another.
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
index 59f53d8..0b7b2f3 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
@@ -29,14 +29,14 @@ package org.apache.royale.jewel.beads.controllers
        import org.apache.royale.events.ValueChangeEvent;
        import org.apache.royale.geom.Point;
        import org.apache.royale.html.beads.ISliderView;
+    import org.apache.royale.jewel.beads.views.SliderView;
+    import org.apache.royale.jewel.Slider;
 
     COMPILE::JS
     {
         import goog.events;
         import goog.events.EventType;
         import org.apache.royale.events.BrowserEvent;
-        import org.apache.royale.jewel.Slider;
-        import org.apache.royale.jewel.beads.views.SliderView;
     }
        
        /**
@@ -78,6 +78,8 @@ package org.apache.royale.jewel.beads.controllers
                private var _strand:IStrand;
 
                private var oldValue:Number;
+
+               public var sliderView:ISliderView;
                                
                /**
                 *  @copy org.apache.royale.core.IBead#strand
@@ -109,11 +111,36 @@ package org.apache.royale.jewel.beads.controllers
                 goog.events.listen(UIBase(_strand).element, 
goog.events.EventType.CHANGE, handleChange, false, this);
                 goog.events.listen(UIBase(_strand).element, 
goog.events.EventType.INPUT, handleInput, false, this);
 
-                               changeStyles();
+                               SliderView(sliderView).redraw();
             }
+
+                       // listen for changes to the model and adjust the model 
accordingly.
+                       
IEventDispatcher(rangeModel).addEventListener("valueChange",modelChangeHandler);
+                       
IEventDispatcher(rangeModel).addEventListener("stepSizeChange", 
modelChangeHandler);
+                       
IEventDispatcher(rangeModel).addEventListener("minimumChange", 
modelChangeHandler);
+                       
IEventDispatcher(rangeModel).addEventListener("maximumChange", 
modelChangeHandler);
+                       
IEventDispatcher(rangeModel).addEventListener("valueChange", 
modelChangeHandler);
                }
 
-               public var sliderView:ISliderView;
+               /**
+                * @private
+                * @royaleignorecoercion org.apache.royale.core.UIBase
+                * @royaleignorecoercion org.apache.royale.core.IRangeModel
+                */
+               private function modelChangeHandler( event:Event ) : void
+               {
+                       COMPILE::JS
+                       {
+                               SliderView(sliderView).redraw();
+
+                               // value has change so dispatch VALUE_CHANGE 
event to the strand
+                               if(event is ValueChangeEvent) {
+                                       
IEventDispatcher(_strand).dispatchEvent(event.cloneEvent());
+                               }
+                       }
+               }
+
+               
 
                /**
          *  Manages the change event to update the range model value
@@ -130,7 +157,7 @@ package org.apache.royale.jewel.beads.controllers
 
             rangeModel.value = Number((UIBase(_strand).element as 
HTMLInputElement).value);
 
-                       changeStyles();
+                       SliderView(sliderView).redraw();
 
             //host.dispatchEvent(new 
org.apache.royale.events.Event('change')); --- This is not needed, the event is 
thrown in the main comp
         }
@@ -152,19 +179,9 @@ package org.apache.royale.jewel.beads.controllers
 
             host.dispatchEvent(new org.apache.royale.events.Event('input'));
 
-                       changeStyles();
+                       SliderView(sliderView).redraw();
         }
 
-               COMPILE::JS
-        private function changeStyles():void
-        {
-                       var barsize:Number = (rangeModel.value - 
rangeModel.minimum) / (rangeModel.maximum - rangeModel.minimum);
-
-                       SliderView(sliderView).sliderTrack.style.flex = ( 1 - 
barsize ).toString();
-                       SliderView(sliderView).sliderTrackFill.style.flex = 
barsize.toString();
-               }
-
-
                COMPILE::SWF
                private var origin:Point;
         COMPILE::SWF
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/SliderRangeModel.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/SliderRangeModel.as
index c7055a7..0d227b4 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/SliderRangeModel.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/SliderRangeModel.as
@@ -23,6 +23,7 @@ package org.apache.royale.jewel.beads.models
     import org.apache.royale.core.IStrand;
     import org.apache.royale.events.EventDispatcher;
     import org.apache.royale.events.Event;
+    import org.apache.royale.events.ValueChangeEvent;
 
     /**
      *  The SliderRangeModel class bead defines a set of for a numeric range 
of values
@@ -190,8 +191,9 @@ package org.apache.royale.jewel.beads.models
         {
             if (value != _value)
             {
+                var newEvent:ValueChangeEvent = 
ValueChangeEvent.createUpdateEvent(_strand, "value", _value, value);
                 _value = value;
-                dispatchEvent(new Event("valueChange"));
+                dispatchEvent(newEvent);
             }
         }
     }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
index d41eccc..29d7148 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
@@ -35,6 +35,7 @@ package org.apache.royale.jewel.beads.views
     import org.apache.royale.core.ValuesManager;
     import org.apache.royale.events.Event;
     import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.events.ValueChangeEvent;
     import org.apache.royale.jewel.Button;
        
        /**
@@ -62,10 +63,11 @@ package org.apache.royale.jewel.beads.views
                        super();
                }
                
+        private var rangeModel:IRangeModel;
+               
                private var _track:Button;
-               private var _thumb:Button;
 
-        private var rangeModel:IRangeModel;
+               private var _thumb:Button;
                
                /**
                 *  The track component.
@@ -157,6 +159,15 @@ package org.apache.royale.jewel.beads.views
 
                COMPILE::JS
                public var sliderTrack:HTMLDivElement;
+
+               COMPILE::JS
+        public function redraw():void
+        {
+                       var barsize:Number = (rangeModel.value - 
rangeModel.minimum) / (rangeModel.maximum - rangeModel.minimum);
+
+                       sliderTrack.style.flex = ( 1 - barsize ).toString();
+                       sliderTrackFill.style.flex = barsize.toString();
+               }
                
                /**
                 * @private
@@ -170,13 +181,14 @@ package org.apache.royale.jewel.beads.views
                {
                        COMPILE::JS
                        {
+                               
                                var inputElement:HTMLInputElement = 
(UIBase(_strand).element as HTMLInputElement);
                                inputElement.step = String(rangeModel.stepSize);
                                inputElement.min = String(rangeModel.minimum);
                                inputElement.max = String(rangeModel.maximum);
                                inputElement.value = 
rangeModel.value.toString();
                        }
-
+                       
                        //(_strand as IEventDispatcher).dispatchEvent(new 
Event("layoutNeeded"));
                }
        }

-- 
To stop receiving notification emails like this one, please contact
carlosrov...@apache.org.

Reply via email to