Hi Pashmina, I agree with Harbs, here. This is quite a big change for a low level/base class like UIBase. The problem with this change is that because it is so low level it affects everybody and will break a lot of established projects, and because UIBase was not intended to have this included at the outset (which is clear by having it implemented in other sets like createjs or MXRoyale, and not in UIBase). It's not that there can't be changes to UIBase, it's more that they need shared scrutiny and shared input/agreement, because of the greater risk of breaking changes that can impact the wider community.
I've worked on projects porting to Jewel from Flex before and was able to avoid this, but of course you might be facing something different in your case. What types of view classes were you seeing problems with? If it is unavoidable to add this code, then a more community-oriented solution may be to find a lower level class inside Jewel and add it there, similar to how it was previously supported in MXRoyale, or to create a new intermediate base class inside Jewel where this can be added (like createjs). If you look inside Jewel, there is only one class that directly extends this UIBase, for example (although that doesn't mean it will be 'easy' depending on how many other core/basic classes are extended in other Jewel components). If you can provide examples of what you are trying to solve, perhaps we can all find a more Jewel-centric solution. Cheers, Greg On Tue, Jan 21, 2025 at 9:26 AM Harbs <harbs.li...@gmail.com> wrote: > That is not PAYG. > > Can you explain more why you need parentApplication? > > I have many, many apps and I never needed parentApplication. You can > easily keep a reference to your main application in many different ways. > > You broke any third party code which extends any of the core components > with this change. That’s not something we want to do lightly. > > Thanks, > Harbs > > > On Jan 20, 2025, at 11:02 AM, Pashmina Kazi <pashminak...@gmail.com> > wrote: > > > > Hi Harbs, > > > > Sorry for the late reply and sorry for the change, > > > > We are porting Flex application in jewel so i need ParentApplication > > property in UIBase, because in jewel we are using UIBase instead of > > UIComponent that why i have to add mxmlDocument and other stuff to > achieve > > the functionality of ParentApplication. > > > > Thanks and regards, > > Pushmina kazi > > > > On Mon, Jan 20, 2025, 3:36 AM Harbs <harbs.li...@gmail.com> wrote: > > > >> Pashmina, > >> > >> Please respond to my questions. It’s important to understand if there > was > >> a good technical reason for this change. > >> > >> Thanks, > >> Harbs > >> > >>> On Jan 17, 2025, at 3:46 PM, Harbs <harbs.li...@gmail.com> wrote: > >>> > >>> 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 > >>>>> > >>>> > >>> > >> > >> > >