You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2018/08/18 16:02:30 UTC

[royale-asjs] branch develop updated: new examples for List and DataContainer and removeAll items, as well new styles for StringItemRenderer and DataContainer

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 50dc297  new examples for List and DataContainer and removeAll items, as well new styles for StringItemRenderer and DataContainer
50dc297 is described below

commit 50dc297b67daf13a05d710720dc14df03a13940b
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Sat Aug 18 18:02:25 2018 +0200

    new examples for List and DataContainer and removeAll items, as well new styles for StringItemRenderer and DataContainer
---
 .../src/main/resources/jewel-example-styles.css    |   8 +
 .../src/main/royale/CardPlayGround.mxml            |   9 +-
 .../src/main/royale/ListPlayGround.mxml            |  24 +++
 .../src/main/royale/TablePlayGround.mxml           |  24 ++-
 .../projects/Jewel/src/main/resources/defaults.css |   2 +-
 .../Jewel/src/main/resources/jewel-manifest.xml    |   2 +
 .../org/apache/royale/jewel/DataContainer.as       |   2 +-
 ...DynamicRemoveAllItemRendererForArrayListData.as | 162 +++++++++++++++++++++
 .../jewel/itemRenderers/StringItemRenderer.as      |   2 +-
 9 files changed, 225 insertions(+), 10 deletions(-)

diff --git a/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css b/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css
index 0b9be57..3e7d8d1 100644
--- a/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css
+++ b/examples/royale/JewelExample/src/main/resources/jewel-example-styles.css
@@ -67,4 +67,12 @@
     padding: 12px;
     color: white;
     /* outline: 1px dashed navy; */
+}
+
+.jewel.item.string
+{
+    background: #dedede;
+    border: 1px dashed #cccccc;
+    border-radius: 3px;
+    padding: 14px;
 }
\ No newline at end of file
diff --git a/examples/royale/JewelExample/src/main/royale/CardPlayGround.mxml b/examples/royale/JewelExample/src/main/royale/CardPlayGround.mxml
index 2256c43..e39b8cf 100644
--- a/examples/royale/JewelExample/src/main/royale/CardPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/CardPlayGround.mxml
@@ -21,8 +21,13 @@ limitations under the License.
 		xmlns:j="library://ns.apache.org/royale/jewel"
 		xmlns:html="library://ns.apache.org/royale/html">
 
-	<j:Card width="350">
-		<html:H3 text="Cards (TODO)"/>
+	<j:Card width="600">
+		<html:H3 text="items expand test"/>
 
+		<j:HGroup itemsExpand="true" gap="3">
+			<j:Button text="Hello"/>
+			<j:Button text="Apache"/>
+			<j:Button text="Royale!!!!"/>
+		</j:HGroup>
 	</j:Card>
 </j:SectionContent>
diff --git a/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml b/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml
index 02773c8..8b603eb 100644
--- a/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/ListPlayGround.mxml
@@ -47,6 +47,11 @@ limitations under the License.
 			{
 				list.dataProvider = new ArrayList(["blue", "red", "yellow", "green"]);
 			}
+
+			public function removeAllData():void
+			{
+				simple.removeAll();
+			}
 		]]>
 	</fx:Script>
 
@@ -69,10 +74,12 @@ limitations under the License.
 						<js:ConstantBinding
 							sourcePropertyName="simple"
 							destinationPropertyName="dataProvider" />
+						<j:DynamicRemoveAllItemRendererForArrayListData/>
 					</j:beads>
 				</j:List>
 				<j:Label id="selected"/>
 				<j:Button text="Assign new data" emphasis="{Button.PRIMARY}" click="assignNewData()"/>
+				<j:Button text="Remove all data" click="removeAllData()"/>
 			</j:Card>
 		</j:GridCell>
 		<j:GridCell desktopNumerator="1" desktopDenominator="2"
@@ -91,5 +98,22 @@ limitations under the License.
 			</j:Card>
 		</j:GridCell>
 	</j:Grid>
+	<j:Grid gap="true">
+		<j:GridCell desktopNumerator="1" desktopDenominator="2"
+					tabletNumerator="1" tabletDenominator="2"
+					phoneNumerator="1" phoneDenominator="1">
+			<j:Card width="100%">
+				<html:H3 text="Jewel DataContainer"/>
+				<j:DataContainer width="100%" height="100">
+					<j:beads>
+						<j:HorizontalFlowLayout gap="3"/>
+						<js:ConstantBinding
+							sourcePropertyName="simple"
+							destinationPropertyName="dataProvider" />
+					</j:beads>
+				</j:DataContainer>
+			</j:Card>
+		</j:GridCell>
+	</j:Grid>
 
 </j:SectionContent>
diff --git a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
index f9a18ab..ec04c08 100644
--- a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
@@ -177,26 +177,35 @@ limitations under the License.
 
 		<j:Table id="table" width="440" change="onChange(event)">
 			<j:TableColumn dataField="guitarrist" label="Guitarrist"/>
-			<j:TableColumn dataField="album" label="Album" align="center"/>
-			<j:TableColumn dataField="year" label="Release Year" align="right"
-							itemRenderer="org.apache.royale.jewel.itemRenderers.TableItemRenderer"/>
+			<j:TableColumn dataField="album" label="Album" align="center" columnLabelAlign="center"/>
+			<j:TableColumn dataField="year" label="Release Year" align="right" columnLabelAlign="right"
+							itemRenderer="itemRenderers.TableCellCloseIconItemRenderer"/>
 							<!--item renderers can be get from CSS or declared in column but must extend TableItemRenderer -->
 			<j:beads>
 				<js:ConstantBinding sourceID="tablesModel"
 									sourcePropertyName="guitarrists"
 									destinationPropertyName="dataProvider" />
+				<j:DynamicRemoveAllItemRendererForArrayListData/>
 			</j:beads>
 		</j:Table>
 
-		<j:Button click="clearTable()" text="Clear Table"/>
-		
 		<j:Label id="selected"/>
+		<j:ControlBar>
+			<j:Button click="clearTable()" text="Change Data" emphasis="primary"/>
+			<j:Button text="Remove all data" click="removeAllData()"/>
+			<j:Button click="changeCell()" text="Change Cell"/>
+		</j:ControlBar>
+		
 	</j:Card>
 
 	<fx:Script>
 		<![CDATA[
 			import org.apache.royale.collections.ArrayList;
 
+			private function changeCell():void
+			{
+			}
+
 			private function onChange(event:Event):void {
                 selected.text = "Selected: " + table.selectedItemProperty;
             }
@@ -211,6 +220,11 @@ limitations under the License.
 					{guitarrist: "Mark Knopfler", album: "Local sf", year: "1983"}
 				]);
 			}
+
+			public function removeAllData():void
+			{
+				tablesModel.guitarrists.removeAll();
+			}
 		]]>
 	</fx:Script>
 
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 543cd82..335f018 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -83,7 +83,7 @@ j|DataContainer {
   IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.DataProviderModel");
   IBeadView: ClassReference("org.apache.royale.html.beads.DataContainerView");
   IBeadLayout: ClassReference("org.apache.royale.jewel.beads.layouts.VerticalLayout");
-  IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DataItemRendererFactoryForArrayData");
+  IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DataItemRendererFactoryForCollectionView");
   IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory");
   IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.StringItemRenderer");
   IViewport: ClassReference("org.apache.royale.html.supportClasses.Viewport");
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index b070756..254d73e 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -118,6 +118,8 @@
     <component id="DataItemRendererFactoryForCollectionView" class="org.apache.royale.jewel.beads.itemRenderers.DataItemRendererFactoryForCollectionView"/>
     <component id="TableItemRendererFactoryForCollectionView" class="org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView"/>
     
+    <component id="DynamicRemoveAllItemRendererForArrayListData" class="org.apache.royale.jewel.beads.itemRenderers.DynamicRemoveAllItemRendererForArrayListData" />
+    
     <!-- <component id="JewelLabelViewBead" class="org.apache.royale.jewel.beads.views.JewelLabelViewBead"/> -->
     
 </componentPackage>
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as
index c5f0104..8a067cb 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DataContainer.as
@@ -68,7 +68,7 @@ package org.apache.royale.jewel
 		public function DataContainer()
 		{
 			super();
-            typeNames = "";
+            typeNames = "jewel datacontainer";
 			classSelectorList = new ClassSelectorList(this);
 		}
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DynamicRemoveAllItemRendererForArrayListData.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DynamicRemoveAllItemRendererForArrayListData.as
new file mode 100644
index 0000000..409ddf0
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DynamicRemoveAllItemRendererForArrayListData.as
@@ -0,0 +1,162 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.jewel.beads.itemRenderers
+{
+	import org.apache.royale.core.IBead;
+	import org.apache.royale.core.IDataProviderModel;
+	import org.apache.royale.core.IItemRendererParent;
+	import org.apache.royale.core.IList;
+	import org.apache.royale.core.ISelectionModel;
+	import org.apache.royale.core.IStrand;
+	import org.apache.royale.events.CollectionEvent;
+	import org.apache.royale.events.Event;
+	import org.apache.royale.events.IEventDispatcher;
+
+	/**
+	 * Handles the removal of all itemRenderers once the all items has been removed
+	 * from the IDataProviderModel.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion Royale 0.9.0
+	 */
+	public class DynamicRemoveAllItemRendererForArrayListData implements IBead
+	{
+		/**
+		 * Constructor
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.0
+		 */
+		public function DynamicRemoveAllItemRendererForArrayListData()
+		{
+		}
+
+		private var _strand:IStrand;
+
+		/**
+		 * @copy org.apache.royale.core.IStrand
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.0
+		 */
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+			IEventDispatcher(value).addEventListener("initComplete", initComplete);
+		}
+		
+		/**
+		 *  finish setup
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.8
+		 */
+		protected function initComplete(event:Event):void
+		{
+			IEventDispatcher(_strand).removeEventListener("initComplete", initComplete);
+			
+			_dataProviderModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel;
+			dataProviderModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);	
+			
+			// invoke now in case "dataProviderChanged" has already been dispatched.
+			dataProviderChangeHandler(null);
+		}
+		
+		/**
+		 * @private
+		 */
+		protected function dataProviderChangeHandler(event:Event):void
+		{
+			var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+			if (!dp)
+				return;
+			
+			// listen for all items being removed in the future.
+			dp.addEventListener(CollectionEvent.ALL_ITEMS_REMOVED, handleAllItemsRemoved);
+		}
+
+		/**
+		 * Handles the itemRemoved event by removing the item.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.0
+		 */
+		protected function handleAllItemsRemoved(event:CollectionEvent):void
+		{
+			if (dataProviderModel is ISelectionModel)
+			{
+				var model:ISelectionModel = dataProviderModel as ISelectionModel;
+				model.selectedIndex = -1;
+				model.selectedItem = null;
+			}
+
+			itemRendererParent.removeAllItemRenderers();
+			(_strand as IEventDispatcher).dispatchEvent(new Event("layoutNeeded"));
+		}
+
+		private var _dataProviderModel: IDataProviderModel;
+
+		/**
+		 *  The org.apache.royale.core.IDataProviderModel that contains the
+		 *  data source.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.0
+		 */
+		public function get dataProviderModel(): IDataProviderModel
+		{
+			if (_dataProviderModel == null) {
+				_dataProviderModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel;
+			}
+			return _dataProviderModel;
+		}
+
+		private var _itemRendererParent: IItemRendererParent;
+
+		/**
+		 *  The org.apache.royale.core.IItemRendererParent used
+		 *  to generate instances of item renderers.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion Royale 0.9.0
+		 */
+		public function get itemRendererParent():IItemRendererParent
+		{
+			if (_itemRendererParent == null) {
+				var list:IList = _strand as IList;
+				_itemRendererParent = list.dataGroup;
+			}
+			return _itemRendererParent;
+		}
+	}
+}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as
index c08b5a8..5db55bf 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/StringItemRenderer.as
@@ -58,7 +58,7 @@ package org.apache.royale.jewel.itemRenderers
 		{
 			super();
 
-            typeNames = "";
+            typeNames = "jewel item string";
 
             COMPILE::SWF
             {