This is an automated email from the ASF dual-hosted git repository.
aharui 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 6aca2b5 more improvements to item editing
6aca2b5 is described below
commit 6aca2b5c7049ac8443f577f9764a826f880a2537
Author: Alex Harui <[email protected]>
AuthorDate: Sun Mar 1 23:30:23 2020 -0800
more improvements to item editing
---
.../beads/controllers/DateFieldMouseController.as | 4 ++++
.../main/royale/mx/controls/AdvancedDataGrid.as | 9 ++++++--
.../src/main/royale/mx/controls/DateField.as | 17 +++++++++++++--
.../main/royale/mx/controls/beads/DateFieldView.as | 4 ++++
.../src/main/royale/mx/core/IUIComponent.as | 2 +-
.../src/main/royale/mx/core/UIComponent.as | 4 ++--
.../src/main/royale/mx/events/FocusEvent.as | 15 ++++++++++---
.../royale/mx/events/utils/FocusEventConverter.as | 8 +++++++
.../main/royale/spark/components/DataRenderer.as | 25 ++--------------------
.../MXAdvancedDataGridItemRenderer.as | 24 ++++++++++-----------
10 files changed, 67 insertions(+), 45 deletions(-)
diff --git
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
index 464d61b..4b1765a 100644
---
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
+++
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
@@ -83,6 +83,10 @@ package org.apache.royale.html.beads.controllers
var viewBead:DateFieldView =
_strand.getBeadByType(DateFieldView) as DateFieldView;
viewBead.popUpVisible = true;
IEventDispatcher(viewBead.popUp).addEventListener("change", changeHandler);
+ COMPILE::JS
+ {
+ (viewBead.popUp as IUIBase).element.tabIndex =
0;
+ }
removeDismissHandler();
diff --git
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
index 274835f..67116d6 100644
---
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
+++
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/AdvancedDataGrid.as
@@ -10232,7 +10232,7 @@ public class AdvancedDataGrid extends AdvancedListBase
implements IDataGrid
*/
private function setEditedItemPosition(coord:Object):void
{
- bEditedItemPositionChanged = true;
+ //bEditedItemPositionChanged = true;
_proposedEditedItemPosition = coord;
//invalidateDisplayList();
commitEditedItemPosition(coord);
@@ -10952,7 +10952,8 @@ public class AdvancedDataGrid extends AdvancedListBase
implements IDataGrid
private function itemEditorFocusOutHandler(event:FocusEvent):void
{
// trace("itemEditorFocusOut " + event.relatedObject);
- if (event.relatedObject && contains(event.relatedObject as
IUIComponent))
+ if (event.relatedObject && (itemEditorInstance is IUIComponent) &&
+ (itemEditorInstance as
IUIComponent).owns(event.relatedObject as IUIBase))
return;
if (inEndEdit)
@@ -11159,6 +11160,10 @@ public class AdvancedDataGrid extends AdvancedListBase
implements IDataGrid
var listContent:IParent = (view as
AdvancedDataGridView).listArea as IParent;
if (item.parent != listContent)
listContent.addElement(item as IChild);
+ COMPILE::JS
+ {
+ (item as IUIBase).element.style.position = "absolute";
+ }
}
private function getRowInfo(rowNum:int):ListRowInfo
diff --git
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as
index 5634293..b58a619 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as
@@ -42,6 +42,7 @@ import mx.core.IFactory;
import mx.core.mx_internal;
import mx.events.CalendarLayoutChangeEvent;
import mx.events.FlexEvent;
+import mx.events.FocusEvent;
import mx.events.SandboxMouseEvent;
import mx.managers.IFocusManagerComponent;
import mx.managers.ISystemManager;
@@ -2669,8 +2670,9 @@ public class DateField extends ComboBase implements
IDataRenderer,IFocusManagerC
/**
* @private
*/
- /* override protected function focusOutHandler(event:FocusEvent):void
+ override protected function focusOutHandler(event:FocusEvent):void
{
+ /*
if (showingDropdown && event != null &&
this.contains(DisplayObject(event.target)))
displayDropdown(false);
@@ -2681,7 +2683,12 @@ public class DateField extends ComboBase implements
IDataRenderer,IFocusManagerC
checkYearSetSelectedDate(_parseFunction(text, formatString));
selectedDate_changeHandler(event);
- } */
+ */
+ if (owns(event.relatedObject as IUIBase))
+ {
+ setFocus();
+ }
+ }
/**
* @private
@@ -2939,6 +2946,12 @@ public class DateField extends ComboBase implements
IDataRenderer,IFocusManagerC
dispatchEvent(new Event("initComplete"));
}
+
+ override public function owns(child:IUIBase):Boolean
+ {
+ if (child == (view as DateFieldView).popUp) return true;
+ return false;
+ }
}
}
diff --git
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
index 5f77146..f35cd4b 100644
---
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
+++
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as
@@ -49,6 +49,10 @@ package mx.controls.beads
var host:Sprite = getHost() as Sprite;
host.stage.focus = host;
}
+ COMPILE::JS
+ {
+ (_textInput as TextInput).setFocus();
+ }
}
override public function set strand(value:IStrand):void
diff --git
a/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as
index adab8c9..497dbe2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/IUIComponent.as
@@ -486,7 +486,7 @@ public interface IUIComponent extends IFlexDisplayObject,
IChild, IUIBase, IChil
* @playerversion AIR 1.1
* @productversion Flex 3
*/
- function owns(displayObject:IUIComponent):Boolean;
+ function owns(displayObject:IUIBase):Boolean;
}
}
diff --git
a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as
index ab06da7..1dacec8 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as
@@ -3713,7 +3713,7 @@ COMPILE::JS
*/
protected function createChildren():void
{
- MXMLDataInterpreter.generateMXMLInstances(_mxmlDocument, this,
MXMLDescriptor);
+ MXMLDataInterpreter.generateMXMLInstances(mxmlDocument, this,
MXMLDescriptor);
}
private var _mxmlDescriptor:Array;
@@ -5233,7 +5233,7 @@ COMPILE::JS
* @playerversion AIR 1.1
* @productversion Flex 3
*/
- public function owns(child:IUIComponent):Boolean
+ public function owns(child:IUIBase):Boolean
{
trace("owns not implemented");
return true;
diff --git
a/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as
b/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as
index 3242c5c..c1e9873 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/events/FocusEvent.as
@@ -28,6 +28,7 @@ import flash.display.InteractiveObject;
COMPILE::JS
{
import goog.events.BrowserEvent;
+import org.apache.royale.core.WrappedHTMLElement;
}
import org.apache.royale.events.Event;
@@ -123,14 +124,22 @@ public class FocusEvent extends
org.apache.royale.events.Event
*/
private var nativeEvent:Object;
- public function wrapEvent(event:goog.events.BrowserEvent):void
+ public function wrapEvent(event:Object):void
{
- wrappedEvent = event;
- nativeEvent = event.getBrowserEvent();
+ //wrappedEvent = event;
+ nativeEvent = event; //.getBrowserEvent();
}
+ /**
+ * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
+ */
public function get relatedObject():Object
{
+ if (nativeEvent && nativeEvent["relatedTarget"])
+ {
+ return (nativeEvent["relatedTarget"] as
WrappedHTMLElement).royale_wrapper;
+ }
+
return _relatedObject;
}
diff --git
a/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
b/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
index 308f085..d61e4d2 100644
---
a/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
+++
b/frameworks/projects/MXRoyale/src/main/royale/mx/events/utils/FocusEventConverter.as
@@ -28,6 +28,11 @@ package mx.events.utils
import org.apache.royale.events.utils.IHandlesOriginalEvent;
}
+ COMPILE::JS
+ {
+ import goog.events.BrowserEvent;
+ }
+
/**
* Converts low level focus events to Royale FocusEvents
*
@@ -162,6 +167,8 @@ package mx.events.utils
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion Royale 0.8
+ *
+ * @royaleignorecoercion goog.events.BrowserEvent
*/
COMPILE::JS
public static function convert(nativeEvent:Object):FocusEvent
@@ -170,6 +177,7 @@ package mx.events.utils
if (type == "focusin") type = "focusIn";
if (type == "focusout") type = "focusOut";
var newEvent:FocusEvent = new FocusEvent(type, true);
+ newEvent.wrapEvent(nativeEvent as BrowserEvent);
return newEvent;
}
}
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
index e8599dc..4c3beae 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/DataRenderer.as
@@ -26,8 +26,8 @@ import org.apache.royale.core.IBead;
import org.apache.royale.core.IItemRendererOwnerView;
import org.apache.royale.core.ISelectableItemRenderer;
import org.apache.royale.core.ValuesManager;
-import org.apache.royale.events.Event;
-
+import org.apache.royale.events.Event;
+
//import org.apache.royale.events.EventDispatcher;
/**
* Dispatched when the <code>data</code> property changes.
@@ -176,27 +176,6 @@ public class DataRenderer extends Group implements
IDataRenderer
dispatchEvent(new Event("layoutNeeded"));
}
- private var _listData:Object;
-
- [Bindable("__NoChangeEvent__")]
- /**
- * Additional data about the list structure the itemRenderer may
- * find useful.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion Royale 0.0
- */
- public function get listData():Object
- {
- return _listData;
- }
- public function set listData(value:Object):void
- {
- _listData = value;
- }
-
private var _labelField:String = "label";
/**
diff --git
a/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
b/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
index 9098a1b..d0199aa 100644
---
a/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
+++
b/frameworks/projects/SparkRoyale/src/main/royale/spark/controls/advancedDataGridClasses/MXAdvancedDataGridItemRenderer.as
@@ -24,8 +24,8 @@ import mx.events.MouseEvent;
import mx.controls.AdvancedDataGrid;
import mx.controls.listClasses.AdvancedListBase;
import mx.controls.listClasses.BaseListData;
-//import mx.controls.listClasses.IDropInListItemRenderer;
-//import mx.controls.listClasses.IListItemRenderer;
+import mx.controls.listClasses.IDropInListItemRenderer;
+import mx.controls.listClasses.IListItemRenderer;
import mx.core.mx_internal;
import mx.managers.IFocusManagerComponent;
@@ -58,7 +58,7 @@ use namespace mx_internal;
* @playerversion AIR 1.5
* @productversion Flex 4
*/
-public class MXAdvancedDataGridItemRenderer extends ItemRenderer //implements
IListItemRenderer, IDropInListItemRenderer
+public class MXAdvancedDataGridItemRenderer extends ItemRenderer implements
IListItemRenderer, IDropInListItemRenderer
{
//--------------------------------------------------------------------------
//
@@ -88,10 +88,10 @@ public class MXAdvancedDataGridItemRenderer extends
ItemRenderer //implements IL
* @private
* Storage for the listData property.
*/
- /* private var _listData:BaseListData;
+ private var _listData:Object;
[Bindable("dataChange")]
- */
+
/**
* The implementation of the <code>listData</code> property
* as defined by the IDropInListItemRenderer interface.
@@ -105,21 +105,21 @@ public class MXAdvancedDataGridItemRenderer extends
ItemRenderer //implements IL
* @playerversion AIR 1.5
* @productversion Flex 4
*/
- /* public function get listData():BaseListData
+ public function get listData():Object
{
return _listData;
- } */
+ }
/**
* @private
*/
- /* public function set listData(value:BaseListData):void
+ public function set listData(value:Object):void
{
_listData = value;
invalidateProperties();
}
- */
+
//----------------------------------
// editor
//----------------------------------
@@ -132,7 +132,7 @@ public class MXAdvancedDataGridItemRenderer extends
ItemRenderer //implements IL
* @playerversion AIR 1.5
* @productversion Flex 4
*/
- // public var editor:IFocusManagerComponent;
+ public var editor:IFocusManagerComponent;
//----------------------------------
// text
@@ -153,13 +153,13 @@ public class MXAdvancedDataGridItemRenderer extends
ItemRenderer //implements IL
* @playerversion AIR 1.5
* @productversion Flex 4
*/
- /* public function get text():String
+ public function get text():String
{
if (editor && ("text" in editor))
return editor["text"];
return null;
- } */
+ }
//----------------------------------
// disclosureGroup