Updated Branches: refs/heads/develop 894c38fe2 -> 31b19d086
Updated the list controls (List and SimpleList) by adding the generic DataItemRendererFactoryForArrayData and DataItemRenderer. Changed List to use these new, more generic, classes and added style definition for SimpleList to use the Text versions of these classes. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/31b19d08 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/31b19d08 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/31b19d08 Branch: refs/heads/develop Commit: 31b19d086f923dd2f6990b1f5b7d0593c1b6d296 Parents: 894c38f Author: Peter Ent <p...@apache.org> Authored: Thu Sep 12 16:02:51 2013 -0400 Committer: Peter Ent <p...@apache.org> Committed: Thu Sep 12 16:02:51 2013 -0400 ---------------------------------------------------------------------- frameworks/as/basic-manifest.xml | 1 + frameworks/as/defaults.css | 17 +++- frameworks/as/src/FlexJSUIClasses.as | 1 + .../DataItemRendererFactoryForArrayData.as | 89 ++++++++++++++++++++ .../flex/html/staticControls/beads/ImageView.as | 8 +- .../supportClasses/DataItemRenderer.as | 50 +++++++++++ .../supportClasses/StringItemRenderer.as | 9 +- .../supportClasses/UIItemRendererBase.as | 20 +++++ 8 files changed, 183 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/basic-manifest.xml ---------------------------------------------------------------------- diff --git a/frameworks/as/basic-manifest.xml b/frameworks/as/basic-manifest.xml index 843c537..14c2c96 100644 --- a/frameworks/as/basic-manifest.xml +++ b/frameworks/as/basic-manifest.xml @@ -61,6 +61,7 @@ <component id="NumericStepper" class="org.apache.flex.html.staticControls.NumericStepper" /> <component id="TextFieldItemRenderer" class="org.apache.flex.html.staticControls.supportClasses.TextFieldItemRenderer"/> <component id="StringItemRenderer" class="org.apache.flex.html.staticControls.supportClasses.StringItemRenderer"/> + <component id="DataItemRenderer" class="org.apache.flex.html.staticControls.supportClasses.DataItemRenderer"/> <component id="ScrollBar" class="org.apache.flex.html.staticControls.supportClasses.ScrollBar"/> <component id="NumericOnlyTextInputBead" class="org.apache.flex.html.staticControls.accessories.NumericOnlyTextInputBead" /> <component id="PasswordInputBead" class="org.apache.flex.html.staticControls.accessories.PasswordInputBead" /> http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/defaults.css ---------------------------------------------------------------------- diff --git a/frameworks/as/defaults.css b/frameworks/as/defaults.css index 7e5e549..cdf7584 100644 --- a/frameworks/as/defaults.css +++ b/frameworks/as/defaults.css @@ -137,13 +137,13 @@ Label List { - IBeadModel: ClassReference("org.apache.flex.html.staticControls.beads.models.ArraySelectionModel"); + IBeadModel: ClassReference("org.apache.flex.html.staticControls.beads.models.ArraySelectionModel"); IBeadView: ClassReference("org.apache.flex.html.staticControls.beads.ListView"); IBeadController: ClassReference("org.apache.flex.html.staticControls.beads.controllers.ListSingleSelectionMouseController"); IBeadLayout: ClassReference("org.apache.flex.html.staticControls.beads.layouts.NonVirtualVerticalScrollingLayout"); - IDataProviderItemRendererMapper: ClassReference("org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData"); + IDataProviderItemRendererMapper: ClassReference("org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData"); IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory"); - IItemRenderer: ClassReference("org.apache.flex.html.staticControls.supportClasses.StringItemRenderer"); + IItemRenderer: ClassReference("org.apache.flex.html.staticControls.supportClasses.DataItemRenderer"); } NumericStepper @@ -201,6 +201,17 @@ SimpleAlert border-thickness: 1; } +SimpleList +{ + IBeadModel: ClassReference("org.apache.flex.html.staticControls.beads.models.ArraySelectionModel"); + IBeadView: ClassReference("org.apache.flex.html.staticControls.beads.ListView"); + IBeadController: ClassReference("org.apache.flex.html.staticControls.beads.controllers.ListSingleSelectionMouseController"); + IBeadLayout: ClassReference("org.apache.flex.html.staticControls.beads.layouts.NonVirtualVerticalScrollingLayout"); + IDataProviderItemRendererMapper: ClassReference("org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData"); + IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory"); + IItemRenderer: ClassReference("org.apache.flex.html.staticControls.supportClasses.StringItemRenderer"); +} + Slider { IBeadModel: ClassReference("org.apache.flex.html.staticControls.beads.models.RangeModel"); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/src/FlexJSUIClasses.as ---------------------------------------------------------------------- diff --git a/frameworks/as/src/FlexJSUIClasses.as b/frameworks/as/src/FlexJSUIClasses.as index 76d26c3..8b1b205 100644 --- a/frameworks/as/src/FlexJSUIClasses.as +++ b/frameworks/as/src/FlexJSUIClasses.as @@ -77,6 +77,7 @@ internal class FlexJSUIClasses import org.apache.flex.html.staticControls.beads.layouts.NonVirtualVerticalScrollingLayout; NonVirtualVerticalScrollingLayout; import org.apache.flex.html.staticControls.beads.layouts.VScrollBarLayout; VScrollBarLayout; import org.apache.flex.html.staticControls.beads.TextItemRendererFactoryForArrayData; TextItemRendererFactoryForArrayData; + import org.apache.flex.html.staticControls.beads.DataItemRendererFactoryForArrayData; DataItemRendererFactoryForArrayData; import org.apache.flex.core.ItemRendererClassFactory; ItemRendererClassFactory; import org.apache.flex.events.CustomEvent; CustomEvent; import org.apache.flex.events.Event; Event; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as ---------------------------------------------------------------------- diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as b/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as new file mode 100644 index 0000000..186a77d --- /dev/null +++ b/frameworks/as/src/org/apache/flex/html/staticControls/beads/DataItemRendererFactoryForArrayData.as @@ -0,0 +1,89 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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.flex.html.staticControls.beads +{ + import org.apache.flex.core.IBead; + import org.apache.flex.core.IItemRenderer; + import org.apache.flex.core.IItemRendererClassFactory; + import org.apache.flex.core.IItemRendererParent; + import org.apache.flex.core.ISelectionModel; + import org.apache.flex.core.IStrand; + import org.apache.flex.core.ValuesManager; + import org.apache.flex.events.Event; + import org.apache.flex.events.IEventDispatcher; + + public class DataItemRendererFactoryForArrayData implements IBead, IDataProviderItemRendererMapper + { + public function DataItemRendererFactoryForArrayData() + { + } + + private var selectionModel:ISelectionModel; + + private var _strand:IStrand; + + public function set strand(value:IStrand):void + { + _strand = value; + selectionModel = value.getBeadByType(ISelectionModel) as ISelectionModel; + var listView:IListView = value.getBeadByType(IListView) as IListView; + dataGroup = listView.dataGroup; + selectionModel.addEventListener("dataProviderChanged", dataProviderChangeHandler); + + if (!itemRendererFactory) + { + _itemRendererFactory = new (ValuesManager.valuesImpl.getValue(_strand, "iItemRendererClassFactory")) as IItemRendererClassFactory; + _strand.addBead(_itemRendererFactory); + } + + dataProviderChangeHandler(null); + } + + public var _itemRendererFactory:IItemRendererClassFactory; + + public function get itemRendererFactory():IItemRendererClassFactory + { + return _itemRendererFactory + } + + public function set itemRendererFactory(value:IItemRendererClassFactory):void + { + _itemRendererFactory = value; + } + + protected var dataGroup:IItemRendererParent; + + private function dataProviderChangeHandler(event:Event):void + { + var dp:Array = selectionModel.dataProvider as Array; + if (!dp) + return; + var n:int = dp.length; + for (var i:int = 0; i < n; i++) + { + var ir:IItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as IItemRenderer; + ir.index = i; + dataGroup.addElement(ir); + ir.data = dp[i]; + } + + IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated")); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/src/org/apache/flex/html/staticControls/beads/ImageView.as ---------------------------------------------------------------------- diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/beads/ImageView.as b/frameworks/as/src/org/apache/flex/html/staticControls/beads/ImageView.as index bcb6044..1171e15 100644 --- a/frameworks/as/src/org/apache/flex/html/staticControls/beads/ImageView.as +++ b/frameworks/as/src/org/apache/flex/html/staticControls/beads/ImageView.as @@ -57,9 +57,11 @@ package org.apache.flex.html.staticControls.beads private function handleUrlChange(event:Event):void { - loader = new Loader(); - loader.contentLoaderInfo.addEventListener("complete",onComplete); - loader.load(new URLRequest(_model.source)); + if (_model.source) { + loader = new Loader(); + loader.contentLoaderInfo.addEventListener("complete",onComplete); + loader.load(new URLRequest(_model.source)); + } } private function onComplete(event:Object):void http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as b/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as new file mode 100644 index 0000000..9a0a58a --- /dev/null +++ b/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/DataItemRenderer.as @@ -0,0 +1,50 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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.flex.html.staticControls.supportClasses +{ + import flash.display.Sprite; + + public class DataItemRenderer extends UIItemRendererBase + { + public function DataItemRenderer() + { + super(); + } + + private var background:Sprite; + + override public function addedToParent():void + { + super.addedToParent(); + + background = new Sprite(); + addChild(background); + } + + override public function updateRenderer():void + { + super.updateRenderer(); + + background.graphics.clear(); + background.graphics.beginFill(backgroundColor, (down||selected||hovered)?1:0); + background.graphics.drawRect(0, 0, this.width, this.height); + background.graphics.endFill(); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as b/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as index fdcee9f..1cef4c4 100644 --- a/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as +++ b/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/StringItemRenderer.as @@ -42,14 +42,11 @@ package org.apache.flex.html.staticControls.supportClasses super.addedToParent(); addChild(textField); - - addEventListener("widthChanged", sizeChangeHandler); - addEventListener("heightChanged", sizeChangeHandler); - - sizeChangeHandler(null); + + adjustSize(); } - private function sizeChangeHandler(event:Event):void + override public function adjustSize():void { textField.x = 0; textField.y = 0; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/31b19d08/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/UIItemRendererBase.as ---------------------------------------------------------------------- diff --git a/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/UIItemRendererBase.as b/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/UIItemRendererBase.as index f32083b..5936387 100644 --- a/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/UIItemRendererBase.as +++ b/frameworks/as/src/org/apache/flex/html/staticControls/supportClasses/UIItemRendererBase.as @@ -20,6 +20,7 @@ package org.apache.flex.html.staticControls.supportClasses { import org.apache.flex.core.IItemRenderer; import org.apache.flex.core.UIBase; + import org.apache.flex.events.Event; public class UIItemRendererBase extends UIBase implements IItemRenderer { @@ -27,6 +28,15 @@ package org.apache.flex.html.staticControls.supportClasses { } + override public function addedToParent():void + { + super.addedToParent(); + + // very common for item renderers to be resized by their containers, + addEventListener("widthChanged", sizeChangeHandler); + addEventListener("heightChanged", sizeChangeHandler); + } + public var backgroundColor:uint = 0xFFFFFF; public var highlightColor:uint = 0xCEDBEF; public var selectedColor:uint = 0xA8C6EE; @@ -99,5 +109,15 @@ package org.apache.flex.html.staticControls.supportClasses else if (selected) backgroundColor = selectedColor; } + + private function sizeChangeHandler(event:Event):void + { + adjustSize(); + } + + public function adjustSize():void + { + // handle in subclass + } } } \ No newline at end of file