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 2020/03/13 12:16:39 UTC
[royale-asjs] branch develop updated: jewel-dropdownlist: change
mapper to basic one, and add its own render initializer
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 6efdb47 jewel-dropdownlist: change mapper to basic one, and add its own render initializer
6efdb47 is described below
commit 6efdb47863a9752dd97b33959e47adc70f71b39d
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Fri Mar 13 13:16:30 2020 +0100
jewel-dropdownlist: change mapper to basic one, and add its own render initializer
---
.../projects/Jewel/src/main/resources/defaults.css | 1 +
.../projects/Jewel/src/main/royale/JewelClasses.as | 1 +
...DownListItemRendererFactoryForCollectionView.as | 67 ++++++++++++-------
.../DropDownListItemRendererInitializer.as | 76 ++++++++++++++++++++++
.../src/main/sass/components/_dropdownlist.sass | 4 +-
5 files changed, 122 insertions(+), 27 deletions(-)
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 0b80757..e05a0d2 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -844,6 +844,7 @@ j|DropDownList {
IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.DropDownListModel");
IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererFactoryForCollectionView");
IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory");
+ IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererInitializer");
IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer");
IBeadController: ClassReference("org.apache.royale.jewel.beads.controllers.DropDownListController");
}
diff --git a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
index f5fb7e2..09ea966 100644
--- a/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
+++ b/frameworks/projects/Jewel/src/main/royale/JewelClasses.as
@@ -139,6 +139,7 @@ package
import org.apache.royale.jewel.beads.itemRenderers.ButtonBarItemRendererInitializer; ButtonBarItemRendererInitializer;
import org.apache.royale.jewel.beads.itemRenderers.TabBarItemRendererInitializer; TabBarItemRendererInitializer;
import org.apache.royale.jewel.beads.itemRenderers.NavigationItemRendererInitializer; NavigationItemRendererInitializer;
+ import org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererInitializer; DropDownListItemRendererInitializer;
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
index f6b7b55..26c1205 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererFactoryForCollectionView.as
@@ -20,8 +20,14 @@ package org.apache.royale.jewel.beads.itemRenderers
{
import org.apache.royale.collections.ICollectionView;
import org.apache.royale.core.IIndexedItemRenderer;
+ import org.apache.royale.core.IIndexedItemRendererInitializer;
+ import org.apache.royale.core.IItemRendererOwnerView;
+ import org.apache.royale.core.IStrandWithModelView;
+ import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.html.beads.DataItemRendererFactoryForCollectionView;
+ import org.apache.royale.html.beads.IListView;
import org.apache.royale.jewel.beads.models.IDropDownListModel;
import org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer;
import org.apache.royale.jewel.supportClasses.list.IListPresentationModel;
@@ -47,37 +53,49 @@ package org.apache.royale.jewel.beads.itemRenderers
{
if (!dataProviderModel)
return;
- var dp:ICollectionView = dataProviderModel.dataProvider as ICollectionView;
+
+ var view:IListView = (_strand as IStrandWithModelView).view as IListView;
+ var dataGroup:IItemRendererOwnerView = view.dataGroup;
+
+ removeAllItemRenderers(dataGroup);
+
+ dp = dataProviderModel.dataProvider;
if (!dp)
return;
- dataGroup.removeAllItemRenderers();
-
- var presentationModel:IListPresentationModel = _strand.getBeadByType(IListPresentationModel) as IListPresentationModel;
- labelField = dataProviderModel.labelField;
-
- var ir:IIndexedItemRenderer;
- var item:Object;
-
- var model:IDropDownListModel = _strand.getBeadByType(IDropDownListModel) as IDropDownListModel;
- var offset:int = model.offset;
-
- if(offset == 1)
- {
+ var offset:int = (dataProviderModel as IDropDownListModel).offset;
+ if(offset == 1) {
promptRender = itemRendererFactory.createItemRenderer() as IIndexedItemRenderer;
- item = DropDownListItemRenderer.OPTION_DISABLED;
- fillRenderer(0, item, promptRender, presentationModel);
+ data = DropDownListItemRenderer.OPTION_DISABLED;
+ (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(promptRender, data, 0);
+ promptRender.data = data;
+ dataGroup.addItemRenderer(promptRender, false);
}
-
- var n:int = dp.length;
+
+ var n:int = dataProviderLength;
for (var i:int = 0; i < n; i++)
- {
- ir = itemRendererFactory.createItemRenderer() as IIndexedItemRenderer;
- item = dp.getItemAt(i);
- fillRenderer(i + offset, item, ir, presentationModel);
+ {
+ var ir:IIndexedItemRenderer = itemRendererFactory.createItemRenderer() as IIndexedItemRenderer;
+
+ var data:Object = getItemAt(i);
+ (itemRendererInitializer as IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, data, i + offset);
+ ir.data = data;
+ dataGroup.addItemRenderer(ir, false);
}
- IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
+ dispatchItemCreatedEvent();
+
+ if(dped)
+ {
+ dped.removeEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
+ dped.removeEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
+ dped.removeEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
+ }
+ // listen for individual items being added in the future.
+ dped = dp as IEventDispatcher;
+ dped.addEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
+ dped.addEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
+ dped.addEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
}
public var promptRender:IIndexedItemRenderer;
@@ -89,7 +107,8 @@ package org.apache.royale.jewel.beads.itemRenderers
{
if(promptRender)
{
- setData(promptRender, DropDownListItemRenderer.OPTION_DISABLED, 0);
+ promptRender.index = 0;
+ promptRender.data = DropDownListItemRenderer.OPTION_DISABLED;
}
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererInitializer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererInitializer.as
new file mode 100644
index 0000000..c7ab275
--- /dev/null
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/DropDownListItemRendererInitializer.as
@@ -0,0 +1,76 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.IIndexedItemRenderer;
+ import org.apache.royale.core.IIndexedItemRendererInitializer;
+ import org.apache.royale.core.IItemRendererOwnerView;
+ import org.apache.royale.core.IStrand;
+ import org.apache.royale.core.IStrandWithModelView;
+ import org.apache.royale.html.beads.IndexedItemRendererInitializer;
+ import org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer;
+
+ /**
+ * The DropDownListItemRendererInitializer class initializes item renderers
+ * in DropDownList classes.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ public class DropDownListItemRendererInitializer extends IndexedItemRendererInitializer implements IIndexedItemRendererInitializer
+ {
+ /**
+ * constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ */
+ public function DropDownListItemRendererInitializer()
+ {
+ }
+
+ protected var ownerView:IItemRendererOwnerView;
+
+ /**
+ * @copy org.apache.royale.core.IBead#strand
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.7
+ * @royaleignorecoercion HTMLInputElement
+ * @royaleignorecoercion org.apache.royale.core.UIBase;
+ */
+ override public function set strand(value:IStrand):void
+ {
+ super.strand = value;
+ ownerView = (value as IStrandWithModelView).view as IItemRendererOwnerView;
+ }
+
+ override protected function setupVisualsForItemRenderer(ir:IIndexedItemRenderer):void
+ {
+ if (ir is DropDownListItemRenderer && ownerView)
+ (ir as DropDownListItemRenderer).itemRendererOwnerView = ownerView;
+ }
+ }
+}
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass b/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass
index 9eeabb3..449538a 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_dropdownlist.sass
@@ -44,15 +44,13 @@ $dropdownlist-button-yoffset: calc(50% - #{$dropdownlist-button-size/2})
j|DropDownList
IBeadView: ClassReference("org.apache.royale.jewel.beads.views.DropDownListView")
- // IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")
IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.DropDownListModel")
IDataProviderItemRendererMapper: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererFactoryForCollectionView")
IItemRendererClassFactory: ClassReference("org.apache.royale.core.ItemRendererClassFactory")
+ IItemRendererInitializer: ClassReference("org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererInitializer")
IItemRenderer: ClassReference("org.apache.royale.jewel.itemRenderers.DropDownListItemRenderer")
IBeadController: ClassReference("org.apache.royale.jewel.beads.controllers.DropDownListController")
- // IDataProviderItemRendererMapper: ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData")
-
@media -royale-swf
j|DropDownList
IBeadModel: ClassReference("org.apache.royale.jewel.beads.models.ArrayListSelectionModel")