Also: Any breaking changes really should be discussed before committing.
> On Jan 17, 2025, at 2:58 PM, Harbs <harbs.li...@gmail.com> wrote: > > I just noticed this: > >> mxmlDocument in UIBase > > > UIBase is not **supposed** to have mxmlDocument. > > Why was this done/changed? > >> On Jan 13, 2025, at 10:58 PM, pushminak...@apache.org wrote: >> >> This is an automated email from the ASF dual-hosted git repository. >> >> pushminakazi 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 9bf2aac596 Added parentApplication and mxmlDocument in UIBase and >> some other changes >> 9bf2aac596 is described below >> >> commit 9bf2aac59699b4b29517d12727253b92aa684511 >> Author: pashminakazi <pashminak...@gmail.com> >> AuthorDate: Tue Jan 14 01:54:49 2025 +0500 >> >> Added parentApplication and mxmlDocument in UIBase and some other changes >> --- >> .../projects/Basic/src/main/royale/BasicClasses.as | 3 + >> .../royale/org/apache/royale/core/IChildList.as | 301 >> +++++++++++++++++++++ >> .../royale/org/apache/royale/core/IUIBaseBasic.as} | 9 +- >> .../main/royale/org/apache/royale/core/UIBase.as | 252 +++++++++++++++++ >> .../html/supportClasses/TextFieldItemRenderer.as | 33 +++ >> .../org/apache/royale/managers/ISystemManager.as | 135 +++++++++ >> .../main/royale/org/apache/royale/core/IUIBase.as | 7 + >> .../royale/org/apache/royale/core/UIButtonBase.as | 33 +++ >> .../royale/org/apache/royale/jewel/DateField.as | 86 +++++- >> .../AdvancedDataGridItemRenderer.as | 4 +- >> .../dataGridClasses/DataGridItemRenderer.as | 4 +- >> .../src/main/royale/mx/core/UIComponent.as | 8 +- >> .../src/main/royale/mx/managers/SystemManager.as | 28 +- >> .../src/main/royale/mx/core/IUIComponent.as | 4 +- >> 14 files changed, 889 insertions(+), 18 deletions(-) >> >> diff --git a/frameworks/projects/Basic/src/main/royale/BasicClasses.as >> b/frameworks/projects/Basic/src/main/royale/BasicClasses.as >> index 91a45a7911..16ed5c9cad 100644 >> --- a/frameworks/projects/Basic/src/main/royale/BasicClasses.as >> +++ b/frameworks/projects/Basic/src/main/royale/BasicClasses.as >> @@ -365,6 +365,9 @@ internal class BasicClasses >> } >> >> import org.apache.royale.html.SimpleTextHighlighter; >> SimpleTextHighlighter; >> + import org.apache.royale.managers.ISystemManager; ISystemManager; >> + import org.apache.royale.core.IChildList; IChildList; >> + import org.apache.royale.core.IUIBaseBasic; IUIBaseBasic; >> } >> >> } >> diff --git >> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IChildList.as >> >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IChildList.as >> new file mode 100644 >> index 0000000000..5bcc0bd44a >> --- /dev/null >> +++ >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IChildList.as >> @@ -0,0 +1,301 @@ >> +//////////////////////////////////////////////////////////////////////////////// >> +// >> +// 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.core >> +{ >> + >> +COMPILE::SWF >> +{ >> + import flash.display.DisplayObject; >> +} >> +import org.apache.royale.core.IUIBase; >> + >> +/** >> + * The IChildList interface defines the properties and methods >> + * for accessing and manipulating child lists, which are subsets >> + * of a DisplayObjectContainer's children. >> + * >> + * <p>As an example, consider the Container class. >> + * It overrides DisplayObjectContainer APIs such as the >> + * <code>numChildren</code> and <code>getChildAt()</code> methods >> + * to access only "content" children, which are the controls >> + * and other containers that you put inside it. >> + * But a Container can also have additional children >> + * created automatically by the framework, such as a background or border >> + * skin and scrollbars. >> + * So Container exposes a property called <code>rawChildren</code> >> + * of type IChildList, which lets you access all its children, >> + * not just the content children.</p> >> + * >> + * <p>As another example, the SystemManager class is a >> DisplayObjectContainer >> + * whose children are partitioned into various layers: >> + * normal children like the Application are on the bottom, >> + * popups above them, tooltips above them, and cursors on the top. >> + * The SystemManager class has properties named <code>popUpChildren</code>, >> + * <code>toolTipChildren</code>, and <code>cursorChildren</code> >> + * which let you access these layers, and the type of each of these >> + * properties is IChildList. >> + * Therefore, you can count the number of popups using the >> + * <code>systemManager.popUpChildren.numChildren</code> property, >> + * insert another DisplayObject into the tooltip layer using the >> + * <code>systemManager.toolTipChildren.addChild()</code> method, and so >> on.</p> >> + * >> + * @see mx.core.Container#rawChildren >> + * @see mx.managers.SystemManager#rawChildren >> + * @see mx.managers.SystemManager#popUpChildren >> + * @see mx.managers.SystemManager#toolTipChildren >> + * @see mx.managers.SystemManager#cursorChildren >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> +public interface IChildList >> +{ >> + >> //-------------------------------------------------------------------------- >> + // >> + // Properties >> + // >> + >> //-------------------------------------------------------------------------- >> + >> + //---------------------------------- >> + // numChildren >> + //---------------------------------- >> + >> + /** >> + * The number of children in this child list. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + function get numChildren():int; >> + >> + >> //-------------------------------------------------------------------------- >> + // >> + // Methods >> + // >> + >> //-------------------------------------------------------------------------- >> + >> + /** >> + * Adds a child DisplayObject after the end of this child list. >> + * >> + * <p>Calling <code>childList.addChild(child)</code> is the same as >> calling >> + * <code>childList.addChild(child, childList.numChildren)</code> >> + * After it has been added, its index of the new child >> + * will be <code>(child.numChildren - 1)</code></p> >> + * >> + * @param child The DisplayObject to add as a child. >> + * >> + * @return The child that was added; this is the same >> + * as the argument passed in. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(params="flash.display.DisplayObject", >> altparams="org.apache.royale.core.UIBase", >> returns="flash.display.DisplayObject")] >> + function addChild(child:IUIBase):IUIBase; >> + >> + /** >> + * Adds a child DisplayObject to this child list at the index >> specified. >> + * An index of 0 represents the beginning of the DisplayList, >> + * and an index of <code>numChildren</code> represents the end. >> + * >> + * <p>Adding a child anywhere except at the end of a child list >> + * will increment the indexes of children that were previously >> + * at that index or at higher indices.</p> >> + * >> + * @param child The DisplayObject to add as a child. >> + * >> + * @param index The index to add the child at. >> + * >> + * @return The child that was added; this is the same >> + * as the <code>child</code> argument passed in. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(params="flash.display.DisplayObject,int", >> altparams="org.apache.royale.core.UIBase,int", >> returns="flash.display.DisplayObject")] >> + function addChildAt(child:IUIBase, index:int):IUIBase; >> + >> + /** >> + * Removes the specified child DisplayObject from this child list. >> + * >> + * <p>Removing a child anywhere except from the end of a child list >> + * will decrement the indexes of children that were at higher >> indices.</p> >> + * >> + * <p>The removed child will have its parent set to null and will be >> + * garbage collected if no other references to it exist.</p> >> + * >> + * @param child The DisplayObject to remove. >> + * >> + * @return The child that was removed; this is the same >> + * as the argument passed in. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(params="flash.display.DisplayObject", >> altparams="mx.core.UIComponent", returns="flash.display.DisplayObject")] >> + function removeChild(child:IUIBase):IUIBase; >> + >> + /** >> + * Removes the child DisplayObject at the specified index >> + * from this child list. >> + * >> + * <p>Removing a child anywhere except from the end of a child list >> + * will decrement the indexes of children that were at higher >> indices.</p> >> + * >> + * <p>The removed child will have its parent set to null and will be >> + * garbage collected if no other references to it exist.</p> >> + * >> + * @param index The child index of the DisplayObject to remove. >> + * >> + * @return The child that was removed. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(returns="flash.display.DisplayObject")] >> + function removeChildAt(index:int):IUIBase; >> + >> + /** >> + * Gets the child DisplayObject at the specified index in this child >> list. >> + * >> + * @param index An integer from 0 to <code>(numChildren - 1)</code> >> + * that specifies the index of a child in this child list. >> + * >> + * @return The child at the specified index. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(returns="flash.display.DisplayObject")] >> + function getChildAt(index:int):IUIBase; >> + >> + /** >> + * Gets the child DisplayObject with the specified name >> + * in this child list. >> + * >> + * @param name The name of the child to return. >> + * >> + * @return The child with the specified name. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(returns="flash.display.DisplayObject")] >> + function getChildByName(name:String):IUIBase; >> + >> + /** >> + * Gets the index of a specific child in this child list. >> + * >> + * <p>The first child in the child list has an index of 0, >> + * the second child has an index of 1, and the last child >> + * has an index of <code>(numChildren - 1)</code>.</p> >> + * >> + * <p>If <code>getChildIndex(myChild)</code> returns 5, >> + * then <code>myView.getChildAt(5)</code> returns >> + * <code>myChild</code>.</p> >> + * >> + * <p>If you add a child by calling the <code>addChild()</code> method, >> + * the new child's index is equal to the largest index among the >> + * existing children plus one.</p> >> + * >> + * <p>You can insert a child at a specified index by using the >> + * <code>addChildAt()</code> method >> + * In that case the children previously at that index and higher >> + * indices have their index increased by 1 so that all >> + * children are indexed from 0 to <code>(numChildren - 1)</code>.</p> >> + * >> + * <p>If you remove a child by calling the <code>removeChild()</code> >> + * or <code>removeChildAt()</code> method, then the children >> + * at higher indices have their index decreased by 1 so that >> + * all children are indexed from 0 to <code>(numChildren - >> 1)</code>.</p> >> + * >> + * <p>If you change a child's index by calling the >> + * <code>setChildIndex()</code> method, then the children between >> + * the old index and the new index, inclusive, have their indexes >> + * adjusted so that all children are indexed from >> + * 0 to <code>(numChildren - 1)</code>.</p> >> + * >> + * @param child The child whose index to get. >> + * >> + * @return The index of the child, which is an integer >> + * between 0 and <code>(numChildren - 1)</code>. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(params="flash.display.DisplayObject", >> altparams="org.apache.royale.core.UIBase")] >> + function getChildIndex(child:IUIBase):int; >> + >> + /** >> + * Changes the index of a particular child in this child list. >> + * See the <code>getChildIndex()</code> method for a >> + * description of the child's index. >> + * >> + * @param child The child whose index to set. >> + * >> + * @param newIndex The new index for the specified child. >> + * This must be an integer between zero and <code>(numChildren - >> 1)</code>. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(params="flash.display.DisplayObject,int", >> altparams="org.apache.royale.core.UIBase,int")] >> + function setChildIndex(child:IUIBase, newIndex:int):void; >> + >> + /** >> + * Determines if a DisplayObject is in this child list, >> + * or is a descendant of an child in this child list. >> + * >> + * @param child The DisplayObject to test. >> + * >> + * @return <code>true</code> if the DisplayObject is in this child list >> + * or is a descendant of an child in this child list; >> + * <code>false</code> otherwise. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + [SWFOverride(params="flash.display.DisplayObject", >> altparams="org.apache.royale.core.UIBase")] >> + function contains(child:IUIBase):Boolean; >> +} >> + >> +} >> diff --git >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IUIBase.as >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IUIBaseBasic.as >> similarity index 95% >> copy from >> frameworks/projects/Core/src/main/royale/org/apache/royale/core/IUIBase.as >> copy to >> frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IUIBaseBasic.as >> index f35f6d0049..c36e1e58eb 100644 >> --- >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IUIBase.as >> +++ >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/IUIBaseBasic.as >> @@ -28,7 +28,7 @@ package org.apache.royale.core >> * @playerversion AIR 2.6 >> * @productversion Royale 0.0 >> */ >> - public interface IUIBase extends IStrand, IEventDispatcher, IChild >> + public interface IUIBaseBasic extends IStrand, IEventDispatcher, IChild >> { >> >> /** >> @@ -53,6 +53,13 @@ package org.apache.royale.core >> function get alpha():Number; >> function set alpha(value:Number):void; >> >> + function get mxmlDocument():Object >> + >> + /** >> + * @private >> + */ >> + function set mxmlDocument(value:Object):void >> + >> /** >> * The x co-ordinate or left side position of the bounding box. >> * >> diff --git >> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as >> index 522d5d5da4..159edfcfea 100644 >> --- >> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as >> +++ >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as >> @@ -35,6 +35,7 @@ package org.apache.royale.core >> import org.apache.royale.events.ValueChangeEvent; >> import org.apache.royale.utils.loadBeadFromValuesManager; >> import org.apache.royale.utils.sendEvent; >> + import org.apache.royale.managers.ISystemManager; >> >> COMPILE::JS >> { >> @@ -212,6 +213,257 @@ package org.apache.royale.core >> createElement(); >> } >> } >> + >> + //---------------------------------- >> + // parentApplication >> + //---------------------------------- >> + >> + [Bindable("initialize")] >> + >> + /* >> + * Note: >> + * There are two reasons that 'parentApplication' is typed as >> Object >> + * rather than as Application. The first is that typing it as >> Application >> + * would make UIComponent dependent on Application, slowing >> down compile >> + * times not only for SWCs for also for MXML and AS >> components. The >> + * second is that authors would not be able to access >> properties and >> + * methods in the <Script> of their <Application> without >> casting it >> + * to their application's subclass, as in >> + * MyApplication(paentApplication).myAppMethod(). >> + * Therefore we decided to dispense with strict typing for >> + * 'parentApplication'. >> + */ >> + /** >> + * A reference to the Application object that contains this >> UIComponent >> + * instance. >> + * This Application object might exist in a SWFLoader control >> in another >> + * Application, and so on, creating a chain of Application >> objects that >> + * can be walked using parentApplication. >> + * >> + * <p>The <code>parentApplication</code> property of an >> Application is never itself; >> + * it is either the Application into which it was loaded or >> null >> + * (for the top-level Application).</p> >> + * >> + * <p>Walking the application chain using the >> <code>parentApplication</code> >> + * property is similar to walking the document chain using the >> + * <code>parentDocument</code> property. >> + * You can access the top-level application using the >> + * <code>application</code> property of the Application >> class.</p> >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + public function get parentApplication():Object >> + { >> + // Look for the SystemManager's document, >> + // which should be the Application. >> + var o:Object = systemManagerBasic.mxmlDocument; >> + >> + // If this UIBase is its own root, then it is an >> Application. >> + // We want to return its parent Application, or null >> + // (if it has no parent because it is the top-level >> Application). >> + // The hierarchy in this situation looks something like >> this: >> + // >> + // SystemManager >> + // Application >> + // SomeContainer >> + // Loader >> + // Loaded App's SystemManager >> + // Application >> + // ThisComponent >> + if (o == this) >> + { >> + var p:UIBase = o.systemManagerBasic.parent as >> UIBase; >> + o = p ? p.systemManagerBasic.mxmlDocument : >> null; >> + } >> + >> + return o; >> + } >> + >> + //---------------------------------- >> + // parentComponent >> + //---------------------------------- >> + >> + [Bindable("initialize")] >> + >> + /** >> + * A reference to the parent component object for this >> UIComponent. >> + * A component object is a UIComponent at the top of >> the hierarchy >> + * of a Flex application, MXML component, or AS >> component. >> + * >> + * <p>For the Application object, the >> <code>parentDocument</code> >> + * property is null. >> + * This property is useful in MXML scripts to go up a >> level >> + * in the chain of document objects. >> + * It can be used to walk this chain using >> + * <code>parentDocument.parentDocument</code>, and so >> on.</p> >> + * >> + * <p>It is typed as Object so that authors can access >> properties >> + * and methods on ancestor document objects without >> casting.</p> >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + public function get parentMxmlDocument():Object >> + { >> + if (mxmlDocument == this) >> + { >> + var p:IUIBase = parent as IUIBase; >> + if (p) >> + return p.mxmlDocument; >> + >> + var sm:ISystemManager = parent as >> ISystemManager; >> + if (sm) >> + return sm.mxmlDocument; >> + >> + return null; >> + } >> + else >> + { >> + return mxmlDocument; >> + } >> + } >> + >> + //---------------------------------- >> + // systemManager >> + //---------------------------------- >> + >> + /** >> + * @private >> + * Storage for the systemManager property. >> + * Set by the SystemManager so that each UIBase >> + * has a references to its SystemManager >> + */ >> + private var _systemManager:ISystemManager; >> + >> + [Inspectable(environment="none")] >> + >> + /** >> + * Returns the SystemManager object used by this component. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + public function get systemManagerBasic():ISystemManager >> + { >> + // TODO >> + if (_systemManager == null && parent != null && parent >> is UIBase) >> + _systemManager = (parent as >> UIBase).systemManagerBasic; >> + >> + return _systemManager; >> + } >> + >> + /** >> + * @private >> + */ >> + public function set >> systemManagerBasic(value:ISystemManager):void >> + { >> + // TODO >> + _systemManager = value; >> + } >> + >> + private var processedMXMLDescriptors : Boolean; >> + >> + private var _mxmlDescriptor:Array; >> + >> + /** >> + * @copy org.apache.royale.core.Application#MXMLDescriptor >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 10.2 >> + * @playerversion AIR 2.6 >> + * @productversion Royale 0.8 >> + */ >> + public function get MXMLDescriptorBasic():Array >> + { >> + return _mxmlDescriptor; >> + } >> + >> + >> + /** >> + * @private >> + */ >> + // COMPILE::SWF >> + // { override } >> + public function get numChildrenBasic():int >> + { >> + return numElements; >> + } >> + >> + /** >> + * @private >> + * @royaleignorecoercion org.apache.royale.core.IUIBase >> + */ >> + // [SWFOverride(returns="flash.display.DisplayObject")] >> + // COMPILE::SWF >> + // { override } >> + public function getChildAtBasic(index:int):IUIBase >> + { >> + return getElementAt(index) as IUIBase; >> + } >> + >> + >> + public var _mxmlDocument:Object; >> + >> + [Inspectable(environment="none")] >> + >> + /** >> + * A reference to the document object associated with this >> UIComponent. >> + * A document object is an Object at the top of the hierarchy >> of a >> + * Flex application, MXML component, or AS component. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + public function get mxmlDocument():Object >> + { >> + if (!_mxmlDocument && MXMLDescriptorBasic != null) >> + _mxmlDocument = this; >> + return _mxmlDocument; >> + } >> + >> + public static var topLevelApplication:Object; >> + >> + /** >> + * A reference to the document object associated with this >> UIComponent. >> + * A document object is an Object at the top of the hierarchy >> of a >> + * Flex application, MXML component, or AS component. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + public function set mxmlDocument(value:Object):void >> + { >> + var n:int = numChildrenBasic; >> + for (var i:int = 0; i < n; i++) >> + { >> + var child:IUIBase = getChildAtBasic(i) as >> IUIBase; >> + if (!child) >> + continue; >> + // JS subtrees will point back to the >> component. Ignore those. >> + if (child == this) >> + continue; >> + >> + if (child.mxmlDocument == _mxmlDocument || >> + // child.mxmlDocument == >> FlexGlobals.topLevelApplication) >> + child.mxmlDocument == >> topLevelApplication) >> + { >> + child.mxmlDocument = value; >> + } >> + } >> + >> + _mxmlDocument = value; >> + } >> >> COMPILE::SWF >> public function get $displayObject():DisplayObject >> diff --git >> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as >> >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as >> index 3c98bd6bbd..09c610ce2c 100644 >> --- >> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as >> +++ >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/TextFieldItemRenderer.as >> @@ -69,6 +69,39 @@ package org.apache.royale.html.supportClasses >> >> MouseEventConverter.setupInstanceConverters(this); >> } >> + >> + //---------------------------------- >> + // document >> + //---------------------------------- >> + >> + /** >> + * @private >> + * Storage for the enabled property. >> + */ >> + private var _mxmlDocument:Object; >> + >> + /** >> + * A reference to the document object associated with this >> UITextField object. >> + * A document object is an Object at the top of the hierarchy >> of a Flex application, >> + * MXML component, or AS component. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + public function get mxmlDocument():Object >> + { >> + return _mxmlDocument; >> + } >> + >> + /** >> + * @private >> + */ >> + public function set mxmlDocument(value:Object):void >> + { >> + _mxmlDocument = value; >> + } >> >> public var highlightColor:uint = 0xCEDBEF; >> public var selectedColor:uint = 0xA8C6EE; >> diff --git >> a/frameworks/projects/Basic/src/main/royale/org/apache/royale/managers/ISystemManager.as >> >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/managers/ISystemManager.as >> new file mode 100644 >> index 0000000000..4dbdd2c84b >> --- /dev/null >> +++ >> b/frameworks/projects/Basic/src/main/royale/org/apache/royale/managers/ISystemManager.as >> @@ -0,0 +1,135 @@ >> +//////////////////////////////////////////////////////////////////////////////// >> +// >> +// 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.managers >> +{ >> + >> +import org.apache.royale.events.IEventDispatcher; >> +import org.apache.royale.core.IChildList; >> +//import mx.core.UIComponent; >> +//import flash.display.Stage; >> +/** >> + * An ISystemManager manages an "application window". >> + * Every application that runs on the desktop or in a browser >> + * has an area where the visuals of the application will be >> + * displayed. It may be a window in the operating system >> + * or an area within the browser. That is an "application window" >> + * and different from an instance of <code>mx.core.Application</code>, >> which >> + * is the main "top-level" window within an application. >> + * >> + * <p>Every application has an ISystemManager. >> + * The ISystemManager sends an event if >> + * the size of the application window changes (you cannot change it from >> + * within the application, but only through interaction with the operating >> + * system window or browser). It parents all displayable items within the >> + * application, such as the main mx.core.Application instance and all >> popups, >> + * tooltips, cursors, an so on. Any object parented by the ISystemManager >> is >> + * considered to be a "top-level" window, even tooltips and cursors.</p> >> + * >> + * <p>The ISystemManager also switches focus between top-level windows >> + * if there are more than one IFocusManagerContainer displayed and users >> + * are interacting with components within the IFocusManagerContainers.</p> >> + * >> + * <p>All keyboard and mouse activity that is not expressly trapped is seen >> + * by the ISystemManager, making it a good place to monitor activity >> + * should you need to do so.</p> >> + * >> + * <p>If an application is loaded into another application, an >> ISystemManager >> + * will still be created, but will not manage an "application window", >> + * depending on security and domain rules. >> + * Instead, it will be the <code>content</code> of the <code>Loader</code> >> + * that loaded it and simply serve as the parent of the sub-application</p> >> + * >> + * <p>The ISystemManager maintains multiple lists of children, one each for >> + * tooltips, cursors, popup windows. >> + * This is how it ensures that popup windows "float" above the main >> + * application windows and that tooltips "float" above that >> + * and cursors above that. >> + * If you examine the <code>numChildren</code> property >> + * or <code>getChildAt()</code> method on the ISystemManager >> + * you are accessing the main application window and any other windows >> + * that aren't popped up. >> + * To get the list of all windows, including popups, tooltips and cursors, >> + * use the <code>rawChildren</code> property.</p> >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Royale 0.9.4 >> + */ >> +public interface ISystemManager extends IEventDispatcher, IChildList /*, >> IFlexModuleFactory */ >> +{ >> + >> //-------------------------------------------------------------------------- >> + // >> + // Properties >> + // >> + >> //-------------------------------------------------------------------------- >> + >> + //---------------------------------- >> + // component >> + //---------------------------------- >> + >> + /** >> + * A reference to the document object. >> + * A document object is an Object at the top of the hierarchy of a >> + * Flex application, MXML component, or AS component. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Royale 0.9.4 >> + */ >> + function get mxmlDocument():Object; >> + >> + /** >> + * @private >> + */ >> + function set mxmlDocument(value:Object):void; >> + function get rawChildren():IChildList; >> + function get numModalWindows():int; >> + function set numModalWindows(value:int):void; >> + /* COMPILE::SWF { >> + function get stage():Stage; >> + } >> + COMPILE::JS { >> + function get stage():Object; >> + } */ >> + >> + >> + >> //-------------------------------------------------------------------------- >> + // >> + // Methods >> + // >> + >> //-------------------------------------------------------------------------- >> + /** >> + * Gets the system manager that is the root of all >> + * top level system managers in this SecurityDomain. >> + * >> + * @return the highest-level systemManager in the sandbox >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Royale 0.9.4 >> + */ >> + function getSandboxRoot():Object; >> + >> +} >> + >> +} >> diff --git >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IUIBase.as >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IUIBase.as >> index f35f6d0049..f87437804f 100644 >> --- >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IUIBase.as >> +++ >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/IUIBase.as >> @@ -42,6 +42,13 @@ package org.apache.royale.core >> */ >> function addedToParent():void; >> >> + function get mxmlDocument():Object >> + >> + /** >> + * @private >> + */ >> + function set mxmlDocument(value:Object):void >> + >> /** >> * The alpha or opacity in the range of 0 to 1. >> * >> diff --git >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as >> >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as >> index 38bc88c599..1612b18866 100644 >> --- >> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as >> +++ >> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/UIButtonBase.as >> @@ -97,6 +97,39 @@ package org.apache.royale.core >> { >> >> } >> + >> + //---------------------------------- >> + // document >> + //---------------------------------- >> + >> + /** >> + * @private >> + * Storage for the enabled property. >> + */ >> + private var _mxmlDocument:Object; >> + >> + /** >> + * A reference to the document object associated with this >> UITextField object. >> + * A document object is an Object at the top of the hierarchy >> of a Flex application, >> + * MXML component, or AS component. >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + public function get mxmlDocument():Object >> + { >> + return _mxmlDocument; >> + } >> + >> + /** >> + * @private >> + */ >> + public function set mxmlDocument(value:Object):void >> + { >> + _mxmlDocument = value; >> + } >> >> private var _x:Number; >> >> diff --git >> a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as >> >> b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as >> index 0d6fa25698..b378646c1e 100644 >> --- >> a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as >> +++ >> b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/DateField.as >> @@ -24,6 +24,7 @@ package org.apache.royale.jewel >> import org.apache.royale.core.StyledUIBase; >> import org.apache.royale.events.Event; >> import org.apache.royale.utils.loadBeadFromValuesManager; >> + import org.apache.royale.jewel.beads.views.DateFieldView; >> >> /** >> * The change event is dispatched when the selectedDate is changed. >> @@ -135,5 +136,88 @@ package org.apache.royale.jewel >> { >> _dateFormat = value.toUpperCase(); >> } >> - } >> + >> + //---------------------------------- >> + // formatString >> + //---------------------------------- >> + >> + /** >> + * @private >> + * Storage for the formatString property. >> + */ >> + // private var _formatString:String = "MM/DD/YYYY"; >> + >> + // [Bindable("formatStringChanged")] >> + // [Inspectable(defaultValue="null")] >> + >> + // /** >> + // * @private >> + // */ >> + // private var formatStringOverride:String; >> + >> + /** >> + * The format of the displayed date in the text field. >> + * This property can contain any combination of >> <code>"M"</code>, >> + * <code>"MM"</code>, <code>"MMM"</code> (3 letter month >> names), >> + * <code>"MMMM"</code> (month names), <code>"D"</code>, >> <code>"DD"</code>, >> + * <code>"YY"</code>, <code>"YYYY"</code>, >> + * delimiter, and punctuation characters. >> + * >> + * <p>Only upper case characters are supported.</p> >> + * >> + * @default "MM/DD/YYYY" >> + * >> + * @langversion 3.0 >> + * @playerversion Flash 9 >> + * @playerversion AIR 1.1 >> + * @productversion Flex 3 >> + */ >> + // public function get formatString():String >> + // { >> + // return _formatString; >> + // } >> + >> + // /** >> + // * @private >> + // */ >> + // public function set formatString(value:String):void >> + // { >> + // formatStringOverride = value; >> + >> + // if (value != _formatString) >> + // { >> + // _formatString = value /* != null ? >> + // value : >> + // >> resourceManager.getString( >> + // >> "SharedResources", "dateFormat")*/; >> + // var formatter:IBead = >> getBeadByType(IFormatter); >> + // if (formatter) >> + // removeBead(formatter); >> + // if (value == "MM/DD/YYYY") >> + // addBead(new DateFormatMMDDYYYY()); >> + // else if (value == "DD/MM/YYYY") >> + // addBead(new DateFormatDDMMYYYY()); >> + // else if (value == "YYYY/MM/DD") >> + // addBead(new DateFormatYYYYMMDD()); >> + // } >> + // } >> + >> + /** >> + * @private >> + */ >> + public function get text():String >> + { >> + // var s:String = ((view as >> DateFieldView).textInputField as TextInput).text; >> + // return s == null ? "" : s; >> + return ""; >> + } >> + >> + /** >> + * @private >> + */ >> + public function set text(value:String):void >> + { >> + // ((view as DateFieldView).textInputField as >> TextInput).text = value == null ? "" : value; >> + } >> +} >> } >> diff --git >> a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as >> >> b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as >> index 30b717f2c2..0dcae179e2 100644 >> --- >> a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as >> +++ >> b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/advancedDataGridClasses/AdvancedDataGridItemRenderer.as >> @@ -800,7 +800,7 @@ public class AdvancedDataGridItemRenderer extends >> StringItemRenderer >> * @playerversion AIR 1.1 >> * @productversion Flex 3 >> */ >> - public function get mxmlDocument():Object >> + override public function get mxmlDocument():Object >> { >> return _mxmlDocument; >> } >> @@ -808,7 +808,7 @@ public class AdvancedDataGridItemRenderer extends >> StringItemRenderer >> /** >> * @private >> */ >> - public function set mxmlDocument(value:Object):void >> + override public function set mxmlDocument(value:Object):void >> { >> _mxmlDocument = value; >> } >> diff --git >> a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as >> >> b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as >> index 727630cae4..6b86afd51b 100644 >> --- >> a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as >> +++ >> b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dataGridClasses/DataGridItemRenderer.as >> @@ -960,7 +960,7 @@ public class DataGridItemRenderer extends >> StringItemRenderer >> * @playerversion AIR 1.1 >> * @productversion Flex 3 >> */ >> - public function get mxmlDocument():Object >> + override public function get mxmlDocument():Object >> { >> return _mxmlDocument; >> } >> @@ -968,7 +968,7 @@ public class DataGridItemRenderer extends >> StringItemRenderer >> /** >> * @private >> */ >> - public function set mxmlDocument(value:Object):void >> + override public function set mxmlDocument(value:Object):void >> { >> _mxmlDocument = value; >> } >> 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 da171add4b..1e51d1f061 100644 >> --- a/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as >> +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/core/UIComponent.as >> @@ -2391,7 +2391,7 @@ COMPILE::JS >> * @playerversion AIR 1.1 >> * @productversion Flex 3 >> */ >> - public function get mxmlDocument():Object >> + override public function get mxmlDocument():Object >> { >> if (!_mxmlDocument && MXMLDescriptor != null) >> _mxmlDocument = this; >> @@ -2408,7 +2408,7 @@ COMPILE::JS >> * @playerversion AIR 1.1 >> * @productversion Flex 3 >> */ >> - public function set mxmlDocument(value:Object):void >> + override public function set mxmlDocument(value:Object):void >> { >> var n:int = numChildren; >> for (var i:int = 0; i < n; i++) >> @@ -2519,7 +2519,7 @@ COMPILE::JS >> * @playerversion AIR 1.1 >> * @productversion Flex 3 >> */ >> - public function get parentApplication():Object >> + override public function get parentApplication():Object >> { >> // Look for the SystemManager's document, >> // which should be the Application. >> @@ -2572,7 +2572,7 @@ COMPILE::JS >> * @playerversion AIR 1.1 >> * @productversion Flex 3 >> */ >> - public function get parentMxmlDocument():Object >> + override public function get parentMxmlDocument():Object >> { >> if (mxmlDocument == this) >> { >> diff --git >> a/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as >> b/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as >> index af6debe60a..af94fd5825 100644 >> --- >> a/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as >> +++ >> b/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as >> @@ -833,7 +833,9 @@ public class SystemManager extends SystemManagerBase >> implements ISystemManager, >> >> return _densityScale; >> } */ >> - >> + >> + >> + >> //---------------------------------- >> // component (was 'document' in Flex, but collides with browser >> 'document' >> //---------------------------------- >> @@ -842,7 +844,8 @@ public class SystemManager extends SystemManagerBase >> implements ISystemManager, >> * @private >> * Storage for the mxmlDocument property. >> */ >> - private var _mxmlDocument:Object; >> + >> + private var _mxmlDocument:Object; >> >> /** >> * @inheritDoc >> @@ -852,18 +855,31 @@ public class SystemManager extends SystemManagerBase >> implements ISystemManager, >> * @playerversion AIR 1.1 >> * @productversion Royale 0.9.4 >> */ >> - public function get mxmlDocument():Object >> + COMPILE::JS { >> + override public function get mxmlDocument():Object >> { >> return _mxmlDocument; >> } >> >> - /** >> - * @private >> - */ >> + >> + override public function set mxmlDocument(value:Object):void >> + { >> + _mxmlDocument = value; >> + } >> + } >> + >> + COMPILE::SWF { >> + public function get mxmlDocument():Object >> + { >> + return _mxmlDocument; >> + } >> + >> + >> public function set mxmlDocument(value:Object):void >> { >> _mxmlDocument = value; >> } >> + } >> >> //---------------------------------- >> // embeddedFontList >> diff --git >> a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/core/IUIComponent.as >> b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/core/IUIComponent.as >> index 497dbe2532..8478678a43 100644 >> --- >> a/frameworks/projects/MXRoyaleBase/src/main/royale/mx/core/IUIComponent.as >> +++ >> b/frameworks/projects/MXRoyaleBase/src/main/royale/mx/core/IUIComponent.as >> @@ -56,12 +56,12 @@ public interface IUIComponent extends >> IFlexDisplayObject, IChild, IUIBase, IChil >> * @playerversion AIR 1.1 >> * @productversion Flex 3 >> */ >> - function get mxmlDocument():Object >> + // function get mxmlDocument():Object >> >> /** >> * @private >> */ >> - function set mxmlDocument(value:Object):void >> + // function set mxmlDocument(value:Object):void >> >> //---------------------------------- >> // enabled >> >