You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2022/07/24 15:52:18 UTC
[royale-asjs] branch develop updated: Some improvements to ColorPicker - also, start showing palette in emulation
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 <yi...@hotmail.com>
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;
+ }
+}
+
+}