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 2018/08/17 08:55:45 UTC
[royale-asjs] branch develop updated: final touches to make table
cell selection work
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 3ae50e0 final touches to make table cell selection work
3ae50e0 is described below
commit 3ae50e01dbbfbead76fbb218e2b92eca87956fb9
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Fri Aug 17 10:55:40 2018 +0200
final touches to make table cell selection work
---
.../src/main/royale/TablePlayGround.mxml | 2 +-
.../projects/Jewel/src/main/resources/defaults.css | 5 +-
.../main/royale/org/apache/royale/jewel/Table.as | 23 ++++++++
.../controllers/DateChooserMouseController.as | 3 +-
.../TableCellSelectionMouseController.as | 12 ++---
.../TableItemRendererFactoryForCollectionView.as | 3 +-
.../royale/jewel/beads/models/DateChooserModel.as | 1 -
.../apache/royale/jewel/beads/models/TableModel.as | 62 +++++++++++++++++++++-
.../royale/jewel/beads/views/DateChooserView.as | 3 --
.../apache/royale/jewel/beads/views/TableView.as | 4 +-
.../royale/jewel/itemRenderers/DateItemRenderer.as | 2 +-
.../jewel/supportClasses/table/TBodyContentArea.as | 28 ++++++++--
.../src/main/sass/components/_datechooser.sass | 2 +-
.../Jewel/src/main/sass/components/_table.sass | 3 ++
14 files changed, 123 insertions(+), 30 deletions(-)
diff --git a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
index d367956..50b7043 100644
--- a/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/TablePlayGround.mxml
@@ -198,7 +198,7 @@ limitations under the License.
import org.apache.royale.collections.ArrayList;
private function onChange(event:Event):void {
- selected.text = "Selected: " + table.model.selectedCellItem;
+ selected.text = "Selected: " + table.model.selectedItemProperty;
}
private function clearTable():void
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 804fb20..bea4d1a 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -250,7 +250,7 @@ j|ControlBar {
padding: 0px;
}
.jewel.datechooser .jewel.table td {
- padding: 0px;
+ padding: 2px;
}
.calendar.item {
@@ -2878,6 +2878,9 @@ j|Table {
line-height: normal !important;
overflow: hidden;
}
+.jewel.tableitem.calendar {
+ border-radius: 10%;
+}
.empty-cell {
pointer-events: none;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as
index d78ceca..4b2f48e 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Table.as
@@ -227,6 +227,29 @@ package org.apache.royale.jewel
}
/**
+ * The item property currently selected. Changing this value also
+ * changes the selectedIndex property.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ [Bindable("change")]
+ public function get selectedItemProperty():Object
+ {
+ return TableModel(model).selectedItemProperty;
+ }
+ /**
+ * @royaleignorecoercion org.apache.royale.core.ISelectionModel
+ */
+ public function set selectedItemProperty(value:Object):void
+ {
+ TableModel(model).selectedItemProperty = value;
+ }
+
+ /**
* @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
*/
COMPILE::JS
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
index 4198565..20ae861 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
@@ -81,8 +81,7 @@ package org.apache.royale.jewel.beads.controllers
private function tableHandler(event:Event):void
{
var table:DateChooserTable = event.target as DateChooserTable;
- model.selectedDate = table.selectedItem[table.model.labelField] as Date;
- trace("tableHandler - model.selectedDate: " + model.selectedDate);
+ model.selectedDate = table.selectedItemProperty as Date;
}
/**
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
index 4d875c9..a20f5f0 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/TableCellSelectionMouseController.as
@@ -137,19 +137,13 @@ package org.apache.royale.jewel.beads.controllers
protected function selectedHandler(event:ItemClickedEvent):void
{
- trace("selectedHandler");
var renderer:DataItemRenderer = event.currentTarget as DataItemRenderer;
- // if (renderer) {
- // trace(renderer.rowIndex + ", " + renderer.columnIndex + " :: " + renderer.dataField + ", " + renderer.labelField);
- // }
+
model.labelField = renderer.labelField;
- //event.data[model.labelField];
- trace("model.labelField: " + model.labelField);
- model.selectedIndex = event.index;
- trace("model.selectedIndex: " + model.selectedIndex);
model.selectedItem = event.data;
+ (model as TableModel).selectedItemProperty = model.selectedItem[model.labelField];
+ model.selectedIndex = (model as TableModel).getIndexForSelectedProperty();
- trace("model.selectedItem: " + model.selectedItem);
view.host.dispatchEvent(new Event("change"));
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
index b9c9067..c2c0acc 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/itemRenderers/TableItemRendererFactoryForCollectionView.as
@@ -215,8 +215,7 @@ package org.apache.royale.jewel.beads.itemRenderers
labelField = column.dataField;
var item:Object = dp.getItemAt(i);
- // ir.labelField = labelField;
- //(ir as DataItemRenderer).dataField = labelField;
+ (ir as DataItemRenderer).dataField = labelField;
(ir as DataItemRenderer).rowIndex = i;
(ir as DataItemRenderer).columnIndex = j;
fillRenderer(index++, item, (ir as ISelectableItemRenderer), presentationModel);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as
index 5d937be..b9219bd 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as
@@ -274,7 +274,6 @@ package org.apache.royale.jewel.beads.models
if (test && test.toDateString() == str)
{
- trace("getIndexForSelectedDate, index: " + i);
return i;
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/TableModel.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/TableModel.as
index 922b1e5..e9a7327 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/TableModel.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/TableModel.as
@@ -18,8 +18,9 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.beads.models
{
+ import org.apache.royale.events.Event;
import org.apache.royale.jewel.beads.models.ArrayListSelectionModel;
- import org.apache.royale.html.supportClasses.DataItemRenderer;
+ import org.apache.royale.jewel.supportClasses.table.TableColumn;
public class TableModel extends ArrayListSelectionModel
{
@@ -37,5 +38,64 @@ package org.apache.royale.jewel.beads.models
{
_columns = value;
}
+
+ private var _selectedItemProperty:Object;
+
+ /**
+ * @copy org.apache.royale.core.ISelectionModel#selectedItem
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion Royale 0.9.3
+ */
+ public function get selectedItemProperty():Object
+ {
+ return _selectedItemProperty;
+ }
+
+ /**
+ * @private
+ */
+ public function set selectedItemProperty(value:Object):void
+ {
+ if(labelField == null || labelField == "") return;
+ if (value == _selectedItemProperty) return;
+
+ _selectedItemProperty = value;
+ var n:int = dataProvider.length;
+ for (var i:int = 0; i < n; i++)
+ {
+ if (dataProvider.getItemAt(i)[labelField] == value)
+ {
+ selectedIndex = i;
+ break;
+ }
+ }
+ dispatchEvent(new Event("selectedItemPropertyChanged"));
+ }
+
+ /**
+ * @private
+ */
+ public function getIndexForSelectedProperty():Number
+ {
+ if (!selectedItemProperty) return -1;
+
+ var index:int = 0;
+ for(var i:int=0; i < dataProvider.length; i++) {
+ for(var j:int=0; j < _columns.length; j++) {
+ var column:TableColumn = _columns[j] as TableColumn;
+ var test:Object = dataProvider.getItemAt(i)[column.dataField] as Object;
+
+ if (test === selectedItemProperty)
+ {
+ return index;
+ }
+ index++;
+ }
+ }
+ return -1;
+ }
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as
index ad825c1..f6ac21a 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as
@@ -230,7 +230,6 @@ package org.apache.royale.jewel.beads.views
*/
private function updateDisplay():void
{
- trace("updateDisplay");
_monthLabel.text = model.monthNames[model.displayedMonth] + " " + String(model.displayedYear);
var len:int = columns.length;
@@ -266,7 +265,6 @@ package org.apache.royale.jewel.beads.views
*/
private function selectionChangeHandler(event:Event):void
{
- trace("DateChooserView - selectionChangeHandler");
updateDisplay();
getHost().dispatchEvent(new Event("selectedDateChanged"));
@@ -278,7 +276,6 @@ package org.apache.royale.jewel.beads.views
*/
private function handleModelChange(event:Event):void
{
- trace("DateChooserView - handleModelChange");
updateDisplay();
}
}
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TableView.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TableView.as
index d8b10af..d640561 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TableView.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/TableView.as
@@ -91,7 +91,7 @@ package org.apache.royale.jewel.beads.views
* @royalesuppresspublicvarwarning
*/
public var tfoot:TFoot;
-
+
/**
* @private
* @royaleignorecoercion org.apache.royale.core.ISelectableItemRenderer
@@ -102,9 +102,7 @@ package org.apache.royale.jewel.beads.views
if (ir)
ir.selected = false;
- trace("TableView - selectionChangeHandler - listModel.selectedIndex: " + listModel.selectedIndex);
ir = dataGroup.getItemRendererForIndex(listModel.selectedIndex) as ISelectableItemRenderer;
- trace(ir);
if (ir)
ir.selected = true;
lastSelectedIndex = listModel.selectedIndex;
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as
index d37b374..2ce88c4 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/DateItemRenderer.as
@@ -45,7 +45,7 @@ package org.apache.royale.jewel.itemRenderers
{
super();
- // typeNames = "calendar item date";
+ typeNames = "jewel tableitem calendar";
}
/**
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
index 2662bcb..f14c067 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/supportClasses/table/TBodyContentArea.as
@@ -18,7 +18,6 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.jewel.supportClasses.table
{
- import org.apache.royale.core.IChild;
import org.apache.royale.core.IItemRenderer;
import org.apache.royale.core.IItemRendererParent;
import org.apache.royale.events.IEventDispatcher;
@@ -90,14 +89,33 @@ package org.apache.royale.jewel.supportClasses.table
*/
public function addItemRenderer(renderer:IItemRenderer, dispatchAdded:Boolean):void
{
+ // this method is not used for now, so it needs to be tested to see if it's correctly implemented
+ var r:DataItemRenderer = renderer as DataItemRenderer;
var tableCell:TableCell = new TableCell();
- tableCell.addElement(renderer);
+ tableCell.addElement(r);
+
+ var row:TableRow;
+ try
+ {
+ row = getElementAt(r.rowIndex) as TableRow;
+
+ //this if only happens if numElemens == 0, so throw an Error to make a new TableRow in the catch section
+ if(row == null)
+ {
+ row = new TableRow();
+ addElementAt(row, r.rowIndex, false);
+ }
+ }
+ catch (error:Error)
+ {
+ // this is the only way I found to do this when checking getElementAt() for an index that doen't exists.
+ row = new TableRow();
+ addElementAt(row, r.rowIndex, false);
+ }
- var row:TableRow = new TableRow();
row.addElement(tableCell, dispatchAdded);
- addElement(row, false);
- addElement(renderer, dispatchAdded);
+ itemRenderers.push(r);
dispatchItemAdded(renderer);
}
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_datechooser.sass b/frameworks/projects/Jewel/src/main/sass/components/_datechooser.sass
index 3ed41a8..369afb8 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_datechooser.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_datechooser.sass
@@ -36,7 +36,7 @@
tbody
tr
td
- padding: 0px
+ padding: 2px
.calendar
&.item
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_table.sass b/frameworks/projects/Jewel/src/main/sass/components/_table.sass
index 80b7c87..daaa4da 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_table.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_table.sass
@@ -121,6 +121,9 @@ j|Table
letter-spacing: 0
line-height: normal !important
overflow: hidden
+
+ &.calendar
+ border-radius: 10%
.empty-cell
pointer-events: none