You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2014/01/29 21:26:14 UTC

[2/2] git commit: [flex-asjs] [refs/heads/develop] - Added custom RowHeightBead and ProductItemRenderer to DataGridExample.

Added custom RowHeightBead and ProductItemRenderer to DataGridExample.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/c9db817c
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/c9db817c
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/c9db817c

Branch: refs/heads/develop
Commit: c9db817cb227c7741197714fb3be61da4240a887
Parents: 20320a8
Author: Peter Ent <pe...@apache.org>
Authored: Wed Jan 29 15:25:17 2014 -0500
Committer: Peter Ent <pe...@apache.org>
Committed: Wed Jan 29 15:25:17 2014 -0500

----------------------------------------------------------------------
 .../src/models/MyGridPresentation.as            |  32 ----
 .../DataGridExample/src/models/ProductsModel.as |  12 +-
 .../src/mybeads/RowHeightBead.as                | 155 +++++++++++++++++++
 .../DataGridExample/src/products/Product.as     |   6 +-
 .../src/products/ProductItemRenderer.as         |  61 ++++++++
 examples/DataGridExample/src/smallbluerect.jpg  | Bin 0 -> 13500 bytes
 examples/DataGridExample/src/smallgreenrect.jpg | Bin 0 -> 13542 bytes
 .../DataGridExample/src/smallorangerect.gif     | Bin 0 -> 821 bytes
 .../DataGridExample/src/smallorangerect.jpg     | Bin 0 -> 13571 bytes
 .../DataGridExample/src/smallpurplerect.jpg     | Bin 0 -> 13517 bytes
 examples/DataGridExample/src/smallredrect.jpg   | Bin 0 -> 13477 bytes
 .../DataGridExample/src/smallyellowrect.jpg     | Bin 0 -> 13598 bytes
 12 files changed, 226 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/models/MyGridPresentation.as
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/models/MyGridPresentation.as b/examples/DataGridExample/src/models/MyGridPresentation.as
deleted file mode 100644
index 3434348..0000000
--- a/examples/DataGridExample/src/models/MyGridPresentation.as
+++ /dev/null
@@ -1,32 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 models
-{
-	import org.apache.flex.html.staticControls.beads.models.DataGridPresentationModel;
-	
-	public class MyGridPresentation extends DataGridPresentationModel
-	{
-		public function MyGridPresentation()
-		{
-			super();
-			
-			this.columnLabels = ["ID","Title","Inventory"];
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/models/ProductsModel.as
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/models/ProductsModel.as b/examples/DataGridExample/src/models/ProductsModel.as
index 5b452b8..88f6662 100644
--- a/examples/DataGridExample/src/models/ProductsModel.as
+++ b/examples/DataGridExample/src/models/ProductsModel.as
@@ -29,18 +29,18 @@ package models
 		}
 
 		private var _productList:Array = [
-			new Product("ps100","Widgets","44","smallbluerect.jpg"),
-			new Product("tx200","Thingys","out of stock","smallgreenrect.jpg"),
-			new Product("rz300","Sprockets","8,000","smallyellowrect.jpg"),
-			new Product("dh440","Doohickies","out of stock","smallredrect.jpg"),
-			new Product("ps220","Weejets","235","smallorangerect.jpg")
+			new Product("ps100","Widgets",44,200,"smallbluerect.jpg"),
+			new Product("tx200","Thingys",5,285,"smallgreenrect.jpg"),
+			new Product("rz300","Sprockets",80,105,"smallyellowrect.jpg"),
+			new Product("dh440","Doohickies",10,340,"smallredrect.jpg"),
+			new Product("ps220","Weejets",35,190,"smallorangerect.jpg")
 			];
 		public function get productList():Array
 		{
 			return _productList;
 		}
 
-		private var _labelFields:Array = [ "id", "title", "detail" ];
+		private var _labelFields:Array = [ "id", "title", "sales", "detail" ];
 		public function get labelFields():Array
 		{
 			return _labelFields;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/mybeads/RowHeightBead.as
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/mybeads/RowHeightBead.as b/examples/DataGridExample/src/mybeads/RowHeightBead.as
new file mode 100644
index 0000000..2b0661e
--- /dev/null
+++ b/examples/DataGridExample/src/mybeads/RowHeightBead.as
@@ -0,0 +1,155 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 mybeads
+{
+	import flash.display.DisplayObject;
+	
+	import org.apache.flex.core.IBead;
+	import org.apache.flex.core.IDataGridModel;
+	import org.apache.flex.core.IItemRenderer;
+	import org.apache.flex.core.IItemRendererParent;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.staticControls.List;
+	import org.apache.flex.html.staticControls.beads.DataGridView;
+	import org.apache.flex.html.staticControls.beads.IListView;
+	
+	public class RowHeightBead implements IBead
+	{
+		public function RowHeightBead()
+		{
+		}
+		
+		private var _strand:IStrand;
+		public function set strand(value:IStrand):void
+		{
+			_strand = value;
+			
+			IEventDispatcher(_strand).addEventListener("layoutComplete",handleLayoutComplete);
+		}
+		
+		private var _rowHeight:Number = 30;
+		public function get rowHeight():Number
+		{
+			return _rowHeight;
+		}
+		public function set rowHeight(value:Number):void
+		{
+			_rowHeight = value;
+			// dispatch some event which will trigger layout recalculation
+		}
+		
+		private var _minRowHeight:Number = 30;
+		public function get minRowHeight():Number
+		{
+			return _minRowHeight;
+		}
+		public function set minRowHeight(value:Number):void
+		{
+			_minRowHeight = value;
+			// dispatch some event which will trigger layout recalculation
+		}
+		
+		private var _variableRowHeight:Boolean = false;
+		public function get variableRowHeight():Boolean
+		{
+			return _variableRowHeight;
+		}
+		public function set variableRowHeight(value:Boolean):void
+		{
+			_variableRowHeight = value;
+			// dispatch some event which will trigger a layout recalculation
+		}
+		
+		private function handleLayoutComplete(event:Event):void
+		{
+			if (variableRowHeight) {
+				makeAllRowsVariableHeight(minRowHeight);
+			}
+			else {
+				makeAllRowsSameHeight(rowHeight);
+			}
+		}
+		
+		private function makeAllRowsSameHeight(newHeight:Number):void
+		{
+			// this function forces every cell in the DataGrid to be the same height
+			var view:DataGridView = _strand.getBeadByType(DataGridView) as DataGridView;
+			var lists:Array = view.getColumnLists();
+			
+			for(var i:int=0; i < lists.length; i++)
+			{
+				var list:List = lists[i] as List;
+				var listView:IListView = list.getBeadByType(IListView) as IListView;
+				var p:IItemRendererParent = listView.dataGroup;
+				var n:Number = (list.dataProvider as Array).length;
+
+				for(var j:int=0; j < n; j++)
+				{
+					var c:UIBase = p.getItemRendererForIndex(j) as UIBase;
+					c.height = newHeight;
+				}
+				
+				IEventDispatcher(list).dispatchEvent( new Event("layoutNeeded") );
+			}
+		}
+		
+		private function makeAllRowsVariableHeight(minHeight:Number):void
+		{
+			// this function makes every cell in a row the same height
+			// (at least minHeight) but all the rows can have different
+			// heights
+			var view:DataGridView = _strand.getBeadByType(DataGridView) as DataGridView;
+			var lists:Array = view.getColumnLists();
+			
+			// future: maybe IDataGridModel.dataProvider should implement IDataProvider which
+			// can have a length property and not assume that the .dataProvider is an Array.
+			var n:Number = ((_strand.getBeadByType(IDataGridModel) as IDataGridModel).dataProvider as Array).length;
+			
+			for(var i:int=0; i < n; i++)
+			{
+				var maxHeight:Number = minHeight;
+				for(var j:int=0; j < lists.length; j++)
+				{
+					var list:List = lists[j] as List;
+					var listView:IListView = list.getBeadByType(IListView) as IListView;
+					var p:IItemRendererParent = listView.dataGroup;
+					var c:UIBase = p.getItemRendererForIndex(i) as UIBase;
+					maxHeight = Math.max(maxHeight,c.height);
+				}
+				for(j=0; j < lists.length; j++)
+				{
+					list = lists[j] as List;
+					listView = list.getBeadByType(IListView) as IListView;
+					p = listView.dataGroup;
+					c = p.getItemRendererForIndex(i) as UIBase;
+					c.height = maxHeight;
+				}
+			}
+			
+			for(j=0; j < lists.length; j++)
+			{
+				list = lists[j] as List;
+				IEventDispatcher(list).dispatchEvent( new Event("layoutNeeded") );
+			}
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/products/Product.as
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/products/Product.as b/examples/DataGridExample/src/products/Product.as
index 34abf6b..fd4b31e 100644
--- a/examples/DataGridExample/src/products/Product.as
+++ b/examples/DataGridExample/src/products/Product.as
@@ -20,18 +20,20 @@ package products
 {
 	public class Product
 	{
-		public function Product(id:String,title:String,detail:String,image:String)
+		public function Product(id:String,title:String,detail:Number,sales:Number,image:String)
 		{
 			this.id = id;
 			this.title = title;
 			this.detail = detail;
+			this.sales = sales;
 			this.image = image;
 		}
 		
 		public var id:String;
 		public var title:String;
-		public var detail:String;
+		public var detail:Number;
 		public var image:String;
+		public var sales:Number;
 		
 		public function toString():String
 		{

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/products/ProductItemRenderer.as
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/products/ProductItemRenderer.as b/examples/DataGridExample/src/products/ProductItemRenderer.as
new file mode 100644
index 0000000..f24da32
--- /dev/null
+++ b/examples/DataGridExample/src/products/ProductItemRenderer.as
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 products
+{
+	import org.apache.flex.html.staticControls.Image;
+	import org.apache.flex.html.staticControls.supportClasses.DataItemRenderer;
+	
+	public class ProductItemRenderer extends DataItemRenderer
+	{
+		public function ProductItemRenderer()
+		{
+			super();
+		}
+		
+		private var image:Image;
+		
+		override public function addedToParent():void
+		{
+			super.addedToParent();
+			
+			// add an image and two labels
+			image = new Image();
+			addElement(image);
+		}
+		
+		override public function set data(value:Object):void
+		{
+			super.data = value;
+			
+			image.source = value.image;
+		}
+		
+		override public function adjustSize():void
+		{
+			var cy:Number = this.height/2;
+			
+			image.x = 4;
+			image.y = cy - 16;
+			image.width = 32;
+			image.height = 32;
+			
+			updateRenderer();
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/smallbluerect.jpg
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/smallbluerect.jpg b/examples/DataGridExample/src/smallbluerect.jpg
new file mode 100755
index 0000000..80ed275
Binary files /dev/null and b/examples/DataGridExample/src/smallbluerect.jpg differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/smallgreenrect.jpg
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/smallgreenrect.jpg b/examples/DataGridExample/src/smallgreenrect.jpg
new file mode 100755
index 0000000..c5f9ce6
Binary files /dev/null and b/examples/DataGridExample/src/smallgreenrect.jpg differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/smallorangerect.gif
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/smallorangerect.gif b/examples/DataGridExample/src/smallorangerect.gif
new file mode 100644
index 0000000..603f810
Binary files /dev/null and b/examples/DataGridExample/src/smallorangerect.gif differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/smallorangerect.jpg
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/smallorangerect.jpg b/examples/DataGridExample/src/smallorangerect.jpg
new file mode 100755
index 0000000..4982d87
Binary files /dev/null and b/examples/DataGridExample/src/smallorangerect.jpg differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/smallpurplerect.jpg
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/smallpurplerect.jpg b/examples/DataGridExample/src/smallpurplerect.jpg
new file mode 100755
index 0000000..201f625
Binary files /dev/null and b/examples/DataGridExample/src/smallpurplerect.jpg differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/smallredrect.jpg
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/smallredrect.jpg b/examples/DataGridExample/src/smallredrect.jpg
new file mode 100644
index 0000000..d2cfa31
Binary files /dev/null and b/examples/DataGridExample/src/smallredrect.jpg differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/c9db817c/examples/DataGridExample/src/smallyellowrect.jpg
----------------------------------------------------------------------
diff --git a/examples/DataGridExample/src/smallyellowrect.jpg b/examples/DataGridExample/src/smallyellowrect.jpg
new file mode 100755
index 0000000..b17b62d
Binary files /dev/null and b/examples/DataGridExample/src/smallyellowrect.jpg differ