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 <[email protected]>
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
+ }
+ }
+}