Repository: flex-asjs
Updated Branches:
  refs/heads/develop db261add7 -> e87787017


Modified TodoListSample to take advantage of itemRendererCreated event from 
DataItemFactory* class.


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

Branch: refs/heads/develop
Commit: e87787017f689ff0b85b231f28c17be9a703b95b
Parents: db261ad
Author: Peter Ent <p...@apache.org>
Authored: Thu Sep 8 14:26:35 2016 -0400
Committer: Peter Ent <p...@apache.org>
Committed: Thu Sep 8 14:26:35 2016 -0400

----------------------------------------------------------------------
 .../renderers/TodoListItemRendererFactory.as    | 68 --------------------
 .../src/sample/todo/views/TodoListView.mxml     | 53 ++++++++++-----
 2 files changed, 36 insertions(+), 85 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e8778701/examples/flexjs/TodoListSampleApp/src/sample/todo/renderers/TodoListItemRendererFactory.as
----------------------------------------------------------------------
diff --git 
a/examples/flexjs/TodoListSampleApp/src/sample/todo/renderers/TodoListItemRendererFactory.as
 
b/examples/flexjs/TodoListSampleApp/src/sample/todo/renderers/TodoListItemRendererFactory.as
deleted file mode 100644
index 54f11ff..0000000
--- 
a/examples/flexjs/TodoListSampleApp/src/sample/todo/renderers/TodoListItemRendererFactory.as
+++ /dev/null
@@ -1,68 +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 sample.todo.renderers {
-
-       import org.apache.flex.core.ISelectableItemRenderer;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.events.Event;
-       import org.apache.flex.events.IEventDispatcher;
-       import 
org.apache.flex.html.beads.DataItemRendererFactoryAndEventDispatcherForArrayData;
-
-       import sample.todo.events.TodoListEvent;
-       import sample.todo.renderers.TodoItemRenderer;
-
-       [Event(name="itemChecked", type="sample.todo.events.TodoListEvent")]
-       [Event(name="itemRemoveRequest", 
type="sample.todo.events.TodoListEvent")]
-
-       public class TodoListItemRendererFactory extends 
DataItemRendererFactoryAndEventDispatcherForArrayData {
-
-
-               private var _strand:IStrand;
-
-               override public function set strand(value:IStrand):void
-               {
-                       super.strand = value;
-                       _strand = value;
-               }
-
-               override protected function 
itemRendererCreated(ir:ISelectableItemRenderer):void
-               {
-                       
IEventDispatcher(ir).addEventListener("checkChanged",itemChecked);
-                       
IEventDispatcher(ir).addEventListener("removeRequest",itemRemove);
-               }
-
-               private function itemChecked(event:Event):void
-               {
-                       var renderer:TodoItemRenderer = event.target as 
TodoItemRenderer;
-
-                       var newEvent:TodoListEvent = new 
TodoListEvent(TodoListEvent.ITEM_CHECKED);
-                       newEvent.item = renderer.data;
-                       dispatchEvent(newEvent);
-               }
-
-               private function itemRemove(event:Event):void
-               {
-                       var renderer:TodoItemRenderer = event.target as 
TodoItemRenderer;
-
-                       var newEvent:TodoListEvent = new 
TodoListEvent(TodoListEvent.ITEM_REMOVE_REQUEST);
-                       newEvent.item = renderer.data;
-                       dispatchEvent(newEvent);
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/e8778701/examples/flexjs/TodoListSampleApp/src/sample/todo/views/TodoListView.mxml
----------------------------------------------------------------------
diff --git 
a/examples/flexjs/TodoListSampleApp/src/sample/todo/views/TodoListView.mxml 
b/examples/flexjs/TodoListSampleApp/src/sample/todo/views/TodoListView.mxml
index 310cfc0..9ddf675 100644
--- a/examples/flexjs/TodoListSampleApp/src/sample/todo/views/TodoListView.mxml
+++ b/examples/flexjs/TodoListSampleApp/src/sample/todo/views/TodoListView.mxml
@@ -26,6 +26,8 @@ limitations under the License.
     <fx:Script>
                <![CDATA[
                        import org.apache.flex.events.Event;
+                       import org.apache.flex.events.IEventDispatcher;
+                       import org.apache.flex.events.ItemRendererEvent;
                        import 
org.apache.flex.html.beads.controllers.ItemRendererMouseController;
                        
                        import sample.todo.events.TodoListEvent;
@@ -52,13 +54,6 @@ limitations under the License.
                                todoInput.text = "";
                        }
                        
-                       private function forwardEvent(event:TodoListEvent):void
-                       {
-                               var newEvent:TodoListEvent = new 
TodoListEvent(event.type);
-                               newEvent.item = event.item;
-                               dispatchEvent(newEvent);
-                       }
-                       
                        private function 
updateStatus(event:org.apache.flex.events.Event):void {
                                var numberLeft:Number = 0;
                                
@@ -92,6 +87,39 @@ limitations under the License.
                        private function showCompleted():void {
                                (applicationModel as 
TodoListModel).showCompletedTodos();
                        }
+                       
+                       /**
+                        * Handle creation of itemRenderers by listening for 
the events they dispatch.
+                        */
+                       private function 
handleRendererCreated(event:ItemRendererEvent):void {
+                               var renderer:IEventDispatcher = 
event.itemRenderer as IEventDispatcher;
+                               
renderer.addEventListener("checkChanged",itemChecked);
+                               
renderer.addEventListener("removeRequest",itemRemove);
+                       }
+                       
+                       /**
+                        * When an item is checked, form new event and dispatch 
to controller.
+                        */
+                       private function itemChecked(event:Event):void
+                       {
+                               var renderer:TodoItemRenderer = event.target as 
TodoItemRenderer;
+
+                               var newEvent:TodoListEvent = new 
TodoListEvent(TodoListEvent.ITEM_CHECKED);
+                               newEvent.item = renderer.data;
+                               dispatchEvent(newEvent);
+                       }
+
+                       /**
+                        * When an item is removed, form a new event and 
dispatch to the controller.
+                        */
+                       private function itemRemove(event:Event):void
+                       {
+                               var renderer:TodoItemRenderer = event.target as 
TodoItemRenderer;
+
+                               var newEvent:TodoListEvent = new 
TodoListEvent(TodoListEvent.ITEM_REMOVE_REQUEST);
+                               newEvent.item = renderer.data;
+                               dispatchEvent(newEvent);
+                       }
         ]]>
        </fx:Script>
        
@@ -115,8 +143,7 @@ limitations under the License.
                                        
dataProvider="{TodoListModel(applicationModel).todos}"
                     width="100%" height="400">
                        <js:beads>
-                               <renderers:TodoListItemRendererFactory 
itemChecked="forwardEvent(event)" 
-                                                                               
                           itemRemoveRequest="forwardEvent(event)" />
+                               <js:DataItemRendererFactoryForArrayData 
itemRendererCreated="handleRendererCreated(event)" />
                        </js:beads>
         </js:List>
 
@@ -135,14 +162,6 @@ limitations under the License.
         @namespace basic "library://ns.apache.org/flexjs/basic";
         @namespace renderers "sample.todo.renderers.*";
 
-        /* use className="todoList" on the List element in place of 
itemRenderer if you want to specify
-         * the itemRenderer in a style definition along with other settings.
-         */
-        .todoList {
-            IDataProviderItemRendererMapper: 
ClassReference("org.apache.flex.html.beads.DataItemRendererFactoryForArrayData");
-            IItemRenderer: 
ClassReference("sample.todo.renderers.TodoItemRenderer");
-        }
-
         renderers|TodoItemRenderer {
                        backgroundColor: #FFFFFF;
             height: 40px;

Reply via email to