You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/09/14 21:31:10 UTC
[20/30] git commit: [flex-asjs] [refs/heads/spark] - Modified
TodoListSample to take advantage of itemRendererCreated event from
DataItemFactory* class.
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/spark
Commit: e87787017f689ff0b85b231f28c17be9a703b95b
Parents: db261ad
Author: Peter Ent <pe...@apache.org>
Authored: Thu Sep 8 14:26:35 2016 -0400
Committer: Peter Ent <pe...@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;