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 0bcbdbc158 Some improvements to ColorPicker - also, start showing 
palette in emulation
     new 63db3dbcd2 Merge branch 'develop' of 
https://github.com/apache/royale-asjs into develop
0bcbdbc158 is described below

commit 0bcbdbc158f7610a9f98347ac5c120f2af8aee4e
Author: Yishay Weiss <[email protected]>
AuthorDate: Sun Jul 24 18:52:00 2022 +0300

    Some improvements to ColorPicker - also, start showing palette in emulation
---
 .../Basic/src/main/resources/basic-manifest.xml    |   1 +
 .../SolidBackgroundSelectableItemRendererBead.as   |   9 +-
 .../beads/models/ArrayListColorSelectionModel.as   |  65 +++++++++++
 .../html/supportClasses/ColorItemRenderer.as       |  26 ++---
 .../MXRoyale/src/main/resources/defaults.css       |  10 +-
 .../src/main/royale/mx/controls/ColorPicker.as     |  49 +++++++-
 .../controls/colorPickerClasses/WebSafePalette.as  | 126 +++++++++++++++++++++
 7 files changed, 261 insertions(+), 25 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml 
b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index f62886f611..64d184c470 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -87,6 +87,7 @@
     <component id="ArraySelectionModel" 
class="org.apache.royale.html.beads.models.ArraySelectionModel"/>
     <component id="ArrayMultiSelectionModel" 
class="org.apache.royale.html.beads.models.ArrayMultiSelectionModel"/>
     <component id="ArrayColorSelectionModel" 
class="org.apache.royale.html.beads.models.ArrayColorSelectionModel"/>
+    <component id="ArrayListColorSelectionModel" 
class="org.apache.royale.html.beads.models.ArrayListColorSelectionModel"/>
     <component id="MultiSelectionCollectionViewModel" 
class="org.apache.royale.html.beads.models.MultiSelectionCollectionViewModel"/>
     <component id="MultiSelectionTreeModel" 
class="org.apache.royale.html.beads.models.MultiSelectionTreeModel"/>
     <component id="SingleSelectionCollectionViewModel" 
class="org.apache.royale.html.beads.models.SingleSelectionCollectionViewModel"/>
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
index 47cb962f14..2815ea38b4 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SolidBackgroundSelectableItemRendererBead.as
@@ -25,6 +25,7 @@ package org.apache.royale.html.beads
     import org.apache.royale.core.IBead;
     import org.apache.royale.core.IUIBase;
     import org.apache.royale.core.IStrand;
+    import org.apache.royale.utils.CSSUtils;
 
        /**
         *  UnselectableElement bead prevents from text selection of html 
element
@@ -68,13 +69,9 @@ package org.apache.royale.html.beads
             }
             COMPILE::JS
             {
+                super.updateRenderer();
                 var element:HTMLElement = (_strand as IUIBase).element;
-                if (selected)
-                    element.style.backgroundColor = '#9C9C9C';
-                else if (hovered)
-                    element.style.backgroundColor = '#ECECEC';
-                else
-                    element.style.backgroundColor = 'transparent';
+                element.style.backgroundColor = 
CSSUtils.attributeFromColor(useColor);
             }
         }
         
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/models/ArrayListColorSelectionModel.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/models/ArrayListColorSelectionModel.as
new file mode 100644
index 0000000000..4fdee77634
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/models/ArrayListColorSelectionModel.as
@@ -0,0 +1,65 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.royale.html.beads.models
+{
+       import org.apache.royale.core.IColorModel;
+       import org.apache.royale.events.Event;
+
+    /**
+     *  The ArrayListColorSelectionModel class is a color selection model for
+     *  a dataProvider that is an array list.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.10
+     */
+       public class ArrayListColorSelectionModel extends 
ArrayListSelectionModel implements IColorModel
+       {
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.10
+         */
+               public function ArrayListColorSelectionModel()
+               {
+                       super();
+                       addEventListener("selectedItemChanged", 
dispatchChangeEvent);
+                       addEventListener("selectedIndexChanged", 
dispatchChangeEvent);
+               }
+               
+               protected function dispatchChangeEvent(event:Event):void
+               {
+                       dispatchEvent(new Event("change"));
+               }
+               
+               public function get color():Number
+               {
+                       return selectedItem == null ? NaN : 
Number(selectedItem);
+               }
+               public function set color(value:Number):void
+               {
+                       selectedItem = value;
+               }
+               
+       }
+}
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
index 547ad8b305..bc2236cbde 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/ColorItemRenderer.as
@@ -66,19 +66,19 @@ package org.apache.royale.html.supportClasses
                override public function set data(value:Object):void
                {
                        super.data = value;
-            
-            var color:uint;
-            if (!isNaN(uint(data)))
-            {
-                color = uint(data);
-            } else if (dataField)
-            {
-                color = uint(data[dataField]);
-            } else
-            {
-                color = 0x000000;
-            }
-            backgroundBead.backgroundColor = color;
+                       var color:uint;
+                       if (!isNaN(uint(data)))
+                       {
+                               color = uint(data);
+                       } else if (dataField)
+                       {
+                               color = uint(data[dataField]);
+                       } else
+                       {
+                               color = 0x000000;
+                       }
+                       backgroundBead.backgroundColor = color;
+                       backgroundBead.updateRenderer();
                }
        }
 }
diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css 
b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 68236d5501..8aafb41356 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -206,10 +206,16 @@ CheckBox
 
 ColorPicker
 {
-       IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.ColorModel");
+       IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.ArrayListColorSelectionModel");
        IBeadView: 
ClassReference("org.apache.royale.html.beads.ColorPickerView");
        IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.ComboBoxController");
-       IPopUp: 
ClassReference("org.apache.royale.html.supportClasses.ColorPickerPopUp");
+       IPopUp: 
ClassReference("org.apache.royale.html.supportClasses.ColorPickerPopUpWithPalette");
+}
+
+Basic|ColorPalette
+{
+       IBeadModel: 
ClassReference("org.apache.royale.html.beads.models.ArrayListSelectionModel");
+       IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayList");
 }
 
 ComboBox
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as
index 3db9f5d5e0..1e8364a61a 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/ColorPicker.as
@@ -23,6 +23,8 @@ package mx.controls
     import org.apache.royale.core.IColorModel;
        //import mx.controls.ComboBase;
     import mx.core.UIComponent;
+    import mx.controls.colorPickerClasses.WebSafePalette;
+    import org.apache.royale.core.ISelectionModel;
 /*
 import flash.display.DisplayObject;
 import flash.events.Event;
@@ -34,7 +36,6 @@ import flash.geom.Rectangle;
 import flash.ui.Keyboard;
 import flash.utils.getTimer;
 import mx.controls.colorPickerClasses.SwatchPanel;
-import mx.controls.colorPickerClasses.WebSafePalette;
 import mx.core.LayoutDirection;
 import mx.core.UIComponent;
 import mx.core.UIComponentGlobals;
@@ -502,8 +503,8 @@ public class ColorPicker extends UIComponent //ComboBase
         super();
 
         typeNames = "ColorPicker";
-        //if (!isModelInited)
-        //    loadDefaultPalette();
+        if (!isModelInited)
+           loadDefaultPalette();
 
         // Make editable false so that focus doesn't go
         // to the comboBase's textInput which is not used by CP
@@ -555,7 +556,7 @@ public class ColorPicker extends UIComponent //ComboBase
     /**
      *  @private
      */
-    //private var isModelInited:Boolean = false;
+    private var isModelInited:Boolean = false;
 
     /**
      *  @private
@@ -689,6 +690,46 @@ public class ColorPicker extends UIComponent //ComboBase
     {
         (model as IColorModel).color = uint(value);
     }
+
+    /**
+     *  @private
+     *  Load Default Palette
+     */
+    private function loadDefaultPalette():void
+    {
+        // Initialize default swatch list
+        if (!dataProvider || dataProvider.length < 1)
+        {
+            var wsp:WebSafePalette = new WebSafePalette();
+            dataProvider = wsp.getList();
+        }
+    }
+    //----------------------------------
+    //  dataProvider
+    //----------------------------------
+
+    [Bindable("collectionChange")]
+    [Inspectable(category="Data")]
+
+    /**
+     *  @private
+     *  The dataProvider for the ColorPicker control.
+     *  The default dataProvider is an Array that includes all
+     *  the web-safe colors.
+     *
+     *  @helpid 4929
+     */
+    public function set dataProvider(value:Object):void
+    {
+        (model as ISelectionModel).dataProvider = value;
+        isModelInited = true;
+    }
+
+    public function get dataProvider():Object
+    {
+        return (model as ISelectionModel).dataProvider;
+    }
+
 }
 
 } 
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/colorPickerClasses/WebSafePalette.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/colorPickerClasses/WebSafePalette.as
new file mode 100644
index 0000000000..3b27db4b7f
--- /dev/null
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/colorPickerClasses/WebSafePalette.as
@@ -0,0 +1,126 @@
+
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.colorPickerClasses
+{
+
+import mx.collections.ArrayList;
+import mx.collections.IList;
+
+[ExcludeClass]
+
+/**
+ *  @private
+ */
+public class WebSafePalette
+{
+//     include "../../core/Version.as";
+
+       
//--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    
//--------------------------------------------------------------------------
+
+    /**
+     *  Constructor.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function WebSafePalette()
+    {
+               super();
+    }
+    
+    
//--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    
//--------------------------------------------------------------------------
+    
+    /**
+     *  @private
+     */
+    public function getList():IList /* of Number */
+    {
+               // Dynamically generate the default websafe color palette.
+        var dp:IList = new ArrayList();
+        
+               var n:Number = 0;
+        
+               var spacer:Number = 0x000000;
+        
+               var c1:Array = [ 0x000000, 0x333333, 0x666666, 0x999999,
+                                                0xCCCCCC, 0xFFFFFF, 0xFF0000, 
0x00FF00,
+                                                0x0000FF, 0xFFFF00, 0x00FFFF, 
0xFF00FF ];
+        
+               var ra:Array = [ "00", "00", "00", "00", "00", "00",
+                                                "33", "33", "33", "33", "33", 
"33",
+                                                "66", "66", "66", "66", "66", 
"66" ];
+        
+               var rb:Array = [ "99", "99", "99", "99", "99", "99",
+                                                "CC", "CC", "CC", "CC", "CC", 
"CC",
+                                                "FF", "FF", "FF", "FF", "FF", 
"FF" ];
+        
+               var g:Array = [ "00", "33", "66", "99", "CC", "FF",
+                                               "00", "33", "66", "99", "CC", 
"FF",
+                                               "00", "33", "66", "99", "CC", 
"FF" ];
+        
+               var b:Array = [ "00", "33", "66", "99", "CC", "FF",
+                                               "00", "33", "66", "99", "CC", 
"FF" ];
+
+        for (var x:int = 0; x < 12; x++)
+        {
+            for (var j:int = 0; j < 20; j++)
+            {
+                var item:Number;
+                
+                               if (j == 0)
+                {
+                    item = c1[x];
+                    
+                }
+                else if (j == 1)
+                {
+                    item = spacer;
+                }
+                else
+                {
+                    var r:String;
+                    if (x < 6)
+                        r = ra[j - 2];
+                    else
+                        r = rb[j - 2];
+                    item = Number("0x" + r + g[j - 2] + b[x]);
+                }
+                
+                               dp.addItem(item);
+                n++;
+            }
+        }
+
+        return dp;
+    }
+}
+
+}

Reply via email to