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 04ec6e7  styled-renderer-classes: rework the jewel item renderer 
classes to use StyledUIBase instead of UIBase
04ec6e7 is described below

commit 04ec6e74483923b7caae37984a9ee9cd9733beb5
Author: Carlos Rovira <carlosrov...@apache.org>
AuthorDate: Fri Apr 10 19:14:41 2020 +0200

    styled-renderer-classes: rework the jewel item renderer classes to use 
StyledUIBase instead of UIBase
---
 .../Basic/src/main/resources/basic-manifest.xml    |   4 +-
 .../supportClasses/StyledBaseMXMLItemRenderer.as   |  92 +++++++++++
 .../html/supportClasses/StyledDataItemRenderer.as  | 137 +++++++++++++++
 .../supportClasses/StyledMXMLStatesItemRenderer.as | 184 +++++++++++++++++++++
 .../supportClasses/StyledUIItemRendererBase.as     | 183 ++++++++++++++++++++
 5 files changed, 598 insertions(+), 2 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml 
b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index 4e0b5b5..589f0e0 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -137,8 +137,10 @@
     <component id="Slider" class="org.apache.royale.html.Slider"/>
     <component id="NumericStepper" 
class="org.apache.royale.html.NumericStepper" />
     <component id="DataItemRenderer" 
class="org.apache.royale.html.supportClasses.DataItemRenderer"/>
+    <component id="StyledDataItemRenderer" 
class="org.apache.royale.html.supportClasses.StyledDataItemRenderer"/>
     <component id="MXMLBeadView" class="org.apache.royale.html.MXMLBeadView"/>
     <component id="MXMLItemRenderer" 
class="org.apache.royale.html.supportClasses.MXMLItemRenderer"/>
+    <component id="StyledMXMLItemRenderer" 
class="org.apache.royale.core.StyledMXMLItemRenderer"/>
     <component id="MXMLStatesItemRenderer" 
class="org.apache.royale.html.supportClasses.MXMLStatesItemRenderer"/>
     <component id="AlternatingBackgroundColorStringItemRenderer" 
class="org.apache.royale.html.supportClasses.AlternatingBackgroundColorStringItemRenderer"/>
     <component id="StringItemRenderer" 
class="org.apache.royale.html.supportClasses.StringItemRenderer"/>
@@ -150,8 +152,6 @@
     <component id="DispatchKeyboardEventBead" 
class="org.apache.royale.html.beads.DispatchKeyboardEventBead"/>
     <component id="TreeItemRenderer" 
class="org.apache.royale.html.supportClasses.TreeItemRenderer"/>
     <component id="TreeXMLItemRenderer" 
class="org.apache.royale.html.supportClasses.TreeXMLItemRenderer"/>
-    <component id="DataItemRenderer" 
class="org.apache.royale.html.supportClasses.DataItemRenderer"/>
-    <component id="MXMLItemRenderer" 
class="org.apache.royale.html.supportClasses.MXMLItemRenderer"/>
     <component id="DateItemRenderer" 
class="org.apache.royale.html.supportClasses.DateItemRenderer"/>
     <component id="DayNameItemRenderer" 
class="org.apache.royale.html.supportClasses.DayNameItemRenderer"/>
     <component id="TextButtonItemRenderer" 
class="org.apache.royale.html.supportClasses.TextButtonItemRenderer"/>
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledBaseMXMLItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledBaseMXMLItemRenderer.as
new file mode 100644
index 0000000..3049dec
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledBaseMXMLItemRenderer.as
@@ -0,0 +1,92 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.royale.core.IBeadLayout;
+       import org.apache.royale.core.ILayoutHost;
+       import org.apache.royale.core.ILayoutParent;
+       import org.apache.royale.core.ILayoutView;
+       import org.apache.royale.core.IStrand;
+       import org.apache.royale.events.Event;
+    
+       /**
+        *  The MXMLItemRenderer class is the base class for itemRenderers that 
are MXML-based
+        *  and provides support for a layout and a data object.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.0
+        */
+       public class StyledBaseMXMLItemRenderer extends StyledDataItemRenderer 
implements ILayoutParent, ILayoutHost, IStrand, ILayoutView
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function StyledBaseMXMLItemRenderer()
+               {
+                       super();
+            typeNames = "";
+               }
+
+        [Bindable("dataChange")]
+        override public function set data(value:Object):void
+        {
+            if (value != data)
+            {
+                super.data = value;
+                dispatchEvent(new Event("dataChange"));
+            }
+        }
+
+               public function getLayoutHost():ILayoutHost
+               {
+                       return this;
+               }
+
+               public function get contentView():ILayoutView
+               {
+                       return this;
+               }
+
+               override public function adjustSize():void
+               {
+                       var layout:IBeadLayout = getBeadByType(IBeadLayout) as 
IBeadLayout;
+                       if (layout != null) {
+                               layout.layout();
+                       }
+               }
+               
+               public function beforeLayout():Boolean
+               {
+                       return true;
+               }
+               
+               public function afterLayout():void
+               {
+                       
+               }
+
+       }
+}
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledDataItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledDataItemRenderer.as
new file mode 100644
index 0000000..7403bcb
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledDataItemRenderer.as
@@ -0,0 +1,137 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       COMPILE::SWF
+       {
+               import flash.display.Sprite;
+       }
+       COMPILE::JS
+       {
+               import org.apache.royale.core.WrappedHTMLElement;
+        import org.apache.royale.html.util.addElementToWrapper;
+               import org.apache.royale.core.IBeadController;
+       }
+
+       /**
+        *  The DataItemRenderer class is the base class for most 
itemRenderers. This class
+        *  extends org.apache.royale.html.supportClasses.UIItemRendererBase and
+        *  includes row and column index values.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.0
+        */
+       public class StyledDataItemRenderer extends StyledUIItemRendererBase
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function StyledDataItemRenderer()
+               {
+                       super();
+               }
+
+               private var _columnIndex:int;
+
+               /**
+                *  The index of the column the itemRenderer represents.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get columnIndex():int
+               {
+                       return _columnIndex;
+               }
+               public function set columnIndex(value:int):void
+               {
+                       _columnIndex = value;
+               }
+
+               private var _rowIndex:int;
+
+               /**
+                *  The index of the row the itemRenderer represents.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get rowIndex():int
+               {
+                       return _rowIndex;
+               }
+               public function set rowIndex(value:int):void
+               {
+                       _rowIndex = value;
+               }
+
+               private var _dataField:String;
+
+               /**
+                *  The name of the field within the data the itemRenderer 
should use.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get dataField():String
+               {
+                       return _dataField;
+               }
+               public function set dataField(value:String):void
+               {
+                       _dataField = value;
+               }
+
+               /**
+                * This should be an implementation like 
ItemRendererMouseController
+                */
+               COMPILE::JS
+        protected var controller:IBeadController;
+
+               /**
+                * @royaleignorecoercion 
org.apache.royale.core.WrappedHTMLElement
+                *
+                */
+               COMPILE::JS
+               override protected function createElement():WrappedHTMLElement
+               {
+                       addElementToWrapper(this,'div');
+                       className = 'DataItemRenderer';
+                       //controller = new ItemRendererMouseController();
+                       //controller.strand = this;
+
+                       return element;
+               }
+
+
+       }
+}
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledMXMLStatesItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledMXMLStatesItemRenderer.as
new file mode 100644
index 0000000..e9438f6
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledMXMLStatesItemRenderer.as
@@ -0,0 +1,184 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.royale.core.IState;
+       import org.apache.royale.core.IStatesImpl;
+       import org.apache.royale.core.IStatesObject;
+       import org.apache.royale.events.ValueChangeEvent;
+       import org.apache.royale.utils.loadBeadFromValuesManager;
+
+       /**
+     *  Indicates that the state change has completed.  All properties
+     *  that need to change have been changed, and all transitinos
+     *  that need to run have completed.  However, any deferred work
+     *  may not be completed, and the screen may not be updated until
+     *  code stops executing.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.9.7
+     */
+    [Event(name="stateChangeComplete", type="org.apache.royale.events.Event")]
+
+       /**
+        *  The StyledMXMLStatesItemRenderer class gives view states support 
for MXML-based item renderers.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.7
+        */
+       public class StyledMXMLStatesItemRenderer extends 
StyledBaseMXMLItemRenderer implements IStatesObject
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.7
+                */
+               public function StyledMXMLStatesItemRenderer()
+               {
+                       super();
+            typeNames = "";
+               }
+
+
+        /**
+         * IStatesObject 
+         */
+        
+               private var _states:Array;
+        
+        /**
+         *  The array of view states. These should
+         *  be instances of org.apache.royale.states.State.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+        public function get states():Array
+        {
+            return _states;
+        }
+
+        /**
+         *  @private
+         *  @royaleignorecoercion Class
+         *  @royaleignorecoercion org.apache.royale.core.IBead
+         */
+        public function set states(value:Array):void
+        {
+            _states = value;
+            _currentState = _states[0].name;
+            
+                       try{
+                       loadBeadFromValuesManager(IStatesImpl, "iStatesImpl", 
this);
+                       }
+                       //TODO:  Need to handle this case more gracefully
+                       catch(e:Error)
+                       {
+                COMPILE::SWF
+                {
+                    trace(e.message);                        
+                }
+                       }
+            
+        }
+        
+        /**
+         *  <code>true</code> if the array of states
+         *  contains a state with this name.
+         * 
+         *  @param state The state namem.
+         *  @return True if state in state array
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+        public function hasState(state:String):Boolean
+        {
+            for each (var s:IState in _states)
+            {
+                if (s.name == state)
+                    return true;
+            }
+            return false;
+        }
+        
+               
+        private var _currentState:String;
+        
+        [Bindable("currentStateChange")]
+        /**
+         *  The name of the current state.
+         * 
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+        public function get currentState():String
+        {
+            return _currentState;   
+        }
+
+        /**
+         *  @private
+         */
+        public function set currentState(value:String):void
+        {
+                       if (value == _currentState) return;
+            var event:ValueChangeEvent = new 
ValueChangeEvent("currentStateChange", false, false, _currentState, value)
+            _currentState = value;
+            dispatchEvent(event);
+        }
+        
+        private var _transitions:Array;
+        
+        /**
+         *  The array of transitions.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.9.7
+         */
+        public function get transitions():Array
+        {
+            return _transitions;   
+        }
+        
+        /**
+         *  @private
+         */
+        public function set transitions(value:Array):void
+        {
+            _transitions = value;   
+        }
+
+       }
+}
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledUIItemRendererBase.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledUIItemRendererBase.as
new file mode 100644
index 0000000..04ce011
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/StyledUIItemRendererBase.as
@@ -0,0 +1,183 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.royale.core.StyledUIBase;
+       import org.apache.royale.core.ValuesManager;
+       import org.apache.royale.events.Event;
+       import org.apache.royale.utils.MXMLDataInterpreter;
+       import org.apache.royale.core.ILabelFieldItemRenderer;
+               
+       [DefaultProperty("mxmlContent")]
+
+       /**
+        *  The UIItemRendererBase class is the base class for all 
itemRenderers. An itemRenderer is used to
+        *  display a single datum within a collection of data. Components such 
as a List use itemRenderers to 
+        *  show their dataProviders.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.0
+        */
+       public class StyledUIItemRendererBase extends StyledUIBase implements 
ILabelFieldItemRenderer
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function StyledUIItemRendererBase()
+               {
+               }
+               
+               /**
+                * @private
+                */
+               override public function addedToParent():void
+               {
+                       MXMLDataInterpreter.generateMXMLProperties(this, 
mxmlProperties);
+                       MXMLDataInterpreter.generateMXMLInstances(this, this, 
MXMLDescriptor);
+                       
+                       super.addedToParent();
+                       
+                       // very common for item renderers to be resized by 
their containers,
+                       addEventListener("widthChanged", sizeChangeHandler);
+                       addEventListener("heightChanged", sizeChangeHandler);
+                       addEventListener("sizeChanged", sizeChangeHandler);
+
+                       // each MXML file can also have styles in fx:Style block
+                       ValuesManager.valuesImpl.init(this);
+                       
+                       dispatchEvent(new Event("initBindings"));
+                       dispatchEvent(new Event("initComplete"));
+               }
+               
+               /**
+                *  @copy 
org.apache.royale.core.ItemRendererClassFactory#mxmlContent
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                * 
+                *  @royalesuppresspublicvarwarning
+                */
+               public var mxmlContent:Array;
+               
+               /**
+                * @private
+                */
+               public function get MXMLDescriptor():Array
+               {
+                       return null;
+               }
+               
+               private var mxmlProperties:Array ;
+               
+               /**
+                * @private
+                */
+               public function generateMXMLAttributes(data:Array):void
+               {
+                       mxmlProperties = data;
+               }
+                               
+               private var _data:Object;
+               
+               [Bindable("__NoChangeEvent__")]
+               /**
+                *  The data being represented by this itemRenderer. This can 
be something simple like a String or
+                *  a Number or something very complex.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get data():Object
+               {
+                       return _data;
+               }
+               public function set data(value:Object):void
+               {
+                       _data = value;
+               }
+               
+               private var _labelField:String = "label";
+               
+               /**
+                * The name of the field within the data to use as a label. 
Some itemRenderers use this field to
+                * identify the value they should show while other 
itemRenderers ignore this if they are showing
+                * complex information.
+                */
+               public function get labelField():String
+               {
+                       return _labelField;
+               }
+               public function set labelField(value:String):void
+               {
+                       _labelField = value;
+               }
+               
+               private var _index:int;
+               
+               /**
+                *  The position with the dataProvider being shown by the 
itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function get index():int
+               {
+                       return _index;
+               }
+               public function set index(value:int):void
+               {
+                       _index = value;
+               }
+                               
+               /**
+                * @private
+                */
+               private function sizeChangeHandler(event:Event):void
+               {
+                       adjustSize();
+               }
+               
+               /**
+                *  This function is called whenever the itemRenderer changes 
size. Sub-classes should override
+                *  this method an handle the size change.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.0
+                */
+               public function adjustSize():void
+               {
+                       // handle in subclass
+               }
+       }
+}

Reply via email to