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

yishayw 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 89cc3fd6ae Emulation CP - infra for changing skin according to mouse 
state
89cc3fd6ae is described below

commit 89cc3fd6aefd856737f350ee84e6d13df2ed1198
Author: Yishay Weiss <yishayj...@hotmail.com>
AuthorDate: Wed Dec 7 10:22:56 2022 +0200

    Emulation CP - infra for changing skin according to mouse state
---
 .../MXRoyale/src/main/resources/defaults.css       |  7 +-
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |  1 +
 .../mx/controls/beads/ColorPickerController.as     | 78 ++++++++++++++++++++++
 .../royale/mx/controls/beads/ColorPickerView.as    | 13 +++-
 .../src/main/royale/mx/skins/ColorPickerSkin.as    |  7 +-
 5 files changed, 97 insertions(+), 9 deletions(-)

diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css 
b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 3d6d427552..071dec46f3 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -209,7 +209,7 @@ ColorPicker
 {
        IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.ArrayListColorSelectionModel");
        IBeadView: ClassReference("mx.controls.beads.ColorPickerView");
-       IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ComboBoxController");
+       IBeadController: 
ClassReference("mx.controls.beads.ColorPickerController");
        IPopUp: ClassReference("mx.controls.beads.ColorPickerPopUp");
 }
 
@@ -1149,10 +1149,5 @@ charts|DataTip
                iMeasurementBead: 
ClassReference("org.apache.royale.html.beads.TextFieldLabelMeasurementBead");
        }
 
-       ColorPickerSkin
-       {
-               iconColor: #111111;
-               disabledIconColor: #999999;
-       }
 
 }
diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as 
b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index b64f43d1da..1b7bdf05b2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -437,6 +437,7 @@ internal class MXRoyaleClasses
 
        import mx.controls.SimpleTextHighlighter;SimpleTextHighlighter;
        import mx.controls.beads.ColorPickerView; ColorPickerView;
+       import mx.controls.beads.ColorPickerController; ColorPickerController;
 }
 
 }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerController.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerController.as
new file mode 100644
index 0000000000..ffe5e08e58
--- /dev/null
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerController.as
@@ -0,0 +1,78 @@
+
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package mx.controls.beads
+{
+       import org.apache.royale.events.Event;
+       import org.apache.royale.events.IEventDispatcher;
+       import org.apache.royale.html.beads.IComboBoxView;
+       import org.apache.royale.html.beads.controllers.ComboBoxController;
+       import org.apache.royale.events.MouseEvent;
+       import mx.core.IUIComponent;
+       
+       /**
+        *  The ColorPickerView class creates the visual elements of the 
org.apache.royale.html.ColorPicker 
+        *  component. The job of the view bead is to put together the parts of 
the ComboBox such as the color container
+        *  and org.apache.royale.html.Button to trigger the pop-up.
+        *  
+        *  @viewbead
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.10
+        */
+       public class ColorPickerController extends ComboBoxController
+       {
+
+               override protected function finishSetup(event:Event):void
+               {
+                       super.finishSetup(event);
+                       if (viewBead == null) {
+                               viewBead = _strand.getBeadByType(IComboBoxView) 
as IComboBoxView;
+                       }
+                       (viewBead.popupButton as 
IEventDispatcher).addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
+                       (viewBead.popupButton as 
IEventDispatcher).addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
+                       (viewBead.popupButton as 
IEventDispatcher).addEventListener(MouseEvent.MOUSE_OVER, handleMouseOver);
+               }
+
+               /**
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                */
+               protected function handleMouseUp(event:MouseEvent):void
+               {                       
+                       (event.target as IUIComponent).name = "upSkin";
+               }
+
+               /**
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                */
+               protected function handleMouseDown(event:MouseEvent):void
+               {                       
+                       (event.target as IUIComponent).name = "downSkin";
+               }
+
+               /**
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                */
+               protected function handleMouseOver(event:MouseEvent):void
+               {                       
+                       (event.target as IUIComponent).name = "overSkin";
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as
index 2b5564c5e4..9cbe3894c3 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/ColorPickerView.as
@@ -116,6 +116,16 @@ package mx.controls.beads
                        return list;
                }
                
+               /**
+                * @private
+                * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
+                * @royaleignorecoercion org.apache.royale.core.UIBase
+                */
+               private function handleDisableChange(event:Event=null):void
+               {
+                       button.name = (_strand as UIComponent).enabled ? 
"upSkin" : "disabledSkin";
+               }
+
                /**
                 * @private
                 * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
@@ -128,7 +138,8 @@ package mx.controls.beads
                        var host:UIBase = value as UIBase;
                        
                        selectedColorDisplay = button = new ColorPickerSkin();
-                       button.name = (_strand as UIComponent).enabled ? 
"upSkin" : "disabledSkin";
+                       button.addEventListener("disabledChange", 
handleDisableChange)
+                       handleDisableChange();
                        
                        if (isNaN(host.width)) selectedColorDisplay.width = 25;
                        
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/skins/ColorPickerSkin.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/skins/ColorPickerSkin.as
index e2dff8fbbf..89f853d3d5 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/skins/ColorPickerSkin.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/skins/ColorPickerSkin.as
@@ -114,7 +114,6 @@ public class ColorPickerSkin extends UIComponent
         var arrowY:Number = (h - arrowHeight - bevelSize);
 
         graphics.clear();
-       graphics.lineStyle(1);
         
         if (name == "upSkin" || name == "overSkin")
         {
@@ -222,8 +221,12 @@ public class ColorPickerSkin extends UIComponent
 
     override public function set name(value:String):void
     {
+       var change:Boolean = value != name;
        super.name = value;
-       updateDisplayList(getExplicitOrMeasuredWidth(), 
getExplicitOrMeasuredHeight());
+       if (change)
+       {
+               // updateDisplayList(width, height); // uncomment when we 
figure out why this messes with mouse event handlers
+       }
     }
 
     
//--------------------------------------------------------------------------

Reply via email to