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 f8f2c55 jewel-table: add
CRUDTableItemRendererFactoryForCollectionView that deprecated all CRUD Table
classes
f8f2c55 is described below
commit f8f2c5573a45cda23b0bef5d73e506fe4a97cf03
Author: Carlos Rovira <[email protected]>
AuthorDate: Sat Jul 25 10:43:15 2020 +0200
jewel-table: add CRUDTableItemRendererFactoryForCollectionView that
deprecated all CRUD Table classes
---
.../Jewel/src/main/resources/jewel-manifest.xml | 1 +
...RUDTableItemRendererFactoryForCollectionView.as | 208 +++++++++++++++++++++
2 files changed, 209 insertions(+)
diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index c06a4d0..8dee5b1 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -241,6 +241,7 @@
<component id="VirtualDataItemRendererFactoryForCollectionView"
class="org.apache.royale.jewel.beads.itemRenderers.VirtualDataItemRendererFactoryForCollectionView"/>
<component id="DropDownListItemRendererFactoryForCollectionView"
class="org.apache.royale.jewel.beads.itemRenderers.DropDownListItemRendererFactoryForCollectionView"/>
<component id="TableItemRendererFactoryForCollectionView"
class="org.apache.royale.jewel.beads.itemRenderers.TableItemRendererFactoryForCollectionView"/>
+ <component id="CRUDTableItemRendererFactoryForCollectionView"
class="org.apache.royale.jewel.beads.itemRenderers.CRUDTableItemRendererFactoryForCollectionView"/>
<component id="NoClassSelectorListSelectableItemRendererBead"
class="org.apache.royale.jewel.beads.itemRenderers.NoClassSelectorListSelectableItemRendererBead"/>
<component id="NoHoverClassSelectorListSelectableItemRendererBead"
class="org.apache.royale.jewel.beads.itemRenderers.NoHoverClassSelectorListSelectableItemRendererBead"/>
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/CRUDTableItemRendererFactoryForCollectionView.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/CRUDTableItemRendererFactoryForCollectionView.as
new file mode 100644
index 0000000..ebe77fd
--- /dev/null
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/CRUDTableItemRendererFactoryForCollectionView.as
@@ -0,0 +1,208 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// 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.IIndexedItemRendererInitializer;
+ import org.apache.royale.core.IParent;
+ import org.apache.royale.events.CollectionEvent;
+ import org.apache.royale.events.Event;
+ import org.apache.royale.events.IEventDispatcher;
+ import org.apache.royale.jewel.itemRenderers.TableItemRenderer;
+ import org.apache.royale.jewel.supportClasses.table.TableCell;
+ import org.apache.royale.jewel.supportClasses.table.TableColumn;
+ import org.apache.royale.jewel.supportClasses.table.TableRow;
+
+ /**
+ * This class creates itemRenderer instances from the data contained
within an ICollectionView
+ * and generates the appropiate table structure with thead, tbody and
table rows and cells
+ * to hold the columns and data in cells.
+ */
+ public class CRUDTableItemRendererFactoryForCollectionView extends
TableItemRendererFactoryForCollectionView
+ {
+ public function
CRUDTableItemRendererFactoryForCollectionView(target:Object = null)
+ {
+ super(target);
+ }
+
+ /**
+ * the dataProvider as a dispatcher
+ */
+ protected var dped:IEventDispatcher;
+
+ /**
+ * @private
+ * @royaleignorecoercion
org.apache.royale.collections.ICollectionView
+ * @royaleignorecoercion
org.apache.royale.core.IListPresentationModel
+ * @royaleignorecoercion
org.apache.royale.core.IIndexedItemRenderer
+ * @royaleignorecoercion
org.apache.royale.events.IEventDispatcher
+ */
+ override protected function
dataProviderChangeHandler(event:Event):void
+ {
+ super.dataProviderChangeHandler(event);
+
+ if(dped)
+ {
+
dped.removeEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
+
dped.removeEventListener(CollectionEvent.ITEM_REMOVED, itemRemovedHandler);
+
dped.removeEventListener(CollectionEvent.ITEM_UPDATED, itemUpdatedHandler);
+ dped = null;
+ }
+
+ if (!dataProviderModel.dataProvider)
+ return;
+
+ // listen for individual items being added in the
future.
+ dped = dataProviderModel.dataProvider as
IEventDispatcher;
+ dped.addEventListener(CollectionEvent.ITEM_ADDED,
itemAddedHandler);
+ dped.addEventListener(CollectionEvent.ITEM_REMOVED,
itemRemovedHandler);
+ dped.addEventListener(CollectionEvent.ITEM_UPDATED,
itemUpdatedHandler);
+ }
+
+ /**
+ * Handles the itemRemoved event by removing the item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.4
+ *
+ * @private
+ *
+ * @royaleignorecoercion
org.apache.royale.events.CollectionEvent
+ * @royaleignorecoercion
org.apache.royale.jewel.supportClasses.table.TableColumn
+ * @royaleignorecoercion
org.apache.royale.jewel.itemRenderers.TableItemRenderer
+ * @royaleignorecoercion
org.apache.royale.core.IIndexedItemRendererInitializer
+ */
+ protected function itemAddedHandler(event:CollectionEvent):void
+ {
+ var column:TableColumn;
+ var ir:TableItemRenderer;
+
+ var index:int = event.index * model.columns.length;
+ for(var j:int = 0; j < model.columns.length; j++)
+ {
+ column = model.columns[j] as TableColumn;
+
+ if(column.itemRenderer != null)
+ {
+ ir = column.itemRenderer.newInstance()
as TableItemRenderer;
+ } else
+ {
+ ir =
itemRendererFactory.createItemRenderer() as TableItemRenderer;
+ }
+
+ ir.dataField = column.dataField;
+ ir.rowIndex = event.index;
+ ir.columnIndex = j;
+ if(column.align != "")
+ ir.align = column.align;
+
+ (itemRendererInitializer as
IIndexedItemRendererInitializer).initializeIndexedItemRenderer(ir, event.item,
index);
+
+ dataGroup.addItemRendererAt(ir, index);
+
+ ir.labelField = column.dataField;
+ ir.index = index;
+ ir.data = event.item;
+
+ index++;
+ }
+
+ // update the index values in the itemRenderers to
correspond to their shifted positions.
+ // adjust the itemRenderers' index to adjust for the
shift
+ var len:int = dataGroup.numItemRenderers;
+ for (var i:int = event.index; i < len; i++)
+ {
+ ir = dataGroup.getItemRendererAt(i) as
TableItemRenderer;
+ ir.index = i;
+ ir.rowIndex = i;
+ }
+ }
+
+ /**
+ * Handles the itemRemoved event by removing the item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.4
+ *
+ * @private
+ * @royaleignorecoercion
org.apache.royale.events.CollectionEvent
+ * @royaleignorecoercion
org.apache.royale.jewel.itemRenderers.TableItemRenderer
+ * @royaleignorecoercion
org.apache.royale.jewel.supportClasses.table.TableCell
+ * @royaleignorecoercion
org.apache.royale.jewel.supportClasses.table.TableRow
+ * @royaleignorecoercion org.apache.royale.core.IParent
+ */
+ protected function
itemRemovedHandler(event:CollectionEvent):void
+ {
+ var ir:TableItemRenderer;
+ var cell:TableCell;
+ var processedRow:TableRow = (dataGroup as
IParent).getElementAt(event.index) as TableRow;
+
+ while (processedRow.numElements > 0) {
+ cell = processedRow.getElementAt(0) as
TableCell;
+ ir = cell.getElementAt(0) as TableItemRenderer;
+ dataGroup.removeItemRenderer(ir);
+ cell.removeElement(ir);
+ processedRow.removeElement(cell);
+ }
+ (dataGroup as IParent).removeElement(processedRow);
+
+ // adjust the itemRenderers' index to adjust for the
shift
+ var len:int = dataGroup.numItemRenderers;
+ for (var i:int = event.index; i < len; i++)
+ {
+ ir = dataGroup.getItemRendererAt(i) as
TableItemRenderer;
+ ir.index = i;
+ ir.rowIndex = i;
+ }
+ }
+
+ /**
+ * Handles the itemUpdated event by updating the item.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.4
+ *
+ * @private
+ *
+ * @royaleignorecoercion
org.apache.royale.jewel.itemRenderers.TableItemRenderer
+ * @royaleignorecoercion
org.apache.royale.jewel.supportClasses.table.TableRow
+ * @royaleignorecoercion org.apache.royale.core.IParent
+ * @royaleignorecoercion
org.apache.royale.jewel.supportClasses.table.TableCell
+ */
+ protected function
itemUpdatedHandler(event:CollectionEvent):void
+ {
+ var ir:TableItemRenderer;
+ var processedRow:TableRow = (dataGroup as
IParent).getElementAt(event.index) as TableRow;
+ var cell:TableCell;
+ var n:int = processedRow.numElements;
+ for (var i:int = 0; i < n; i++)
+ {
+ cell = processedRow.getElementAt(i) as
TableCell;
+ ir = cell.getElementAt(0) as TableItemRenderer;
+ ir.index = event.index;
+ ir.data = event.item;
+ }
+ }
+ }
+}
\ No newline at end of file