Thank you. Don’t get scared off from committing improvements, but discussing things is always a good idea. :-)
Best, Harbs > On Jan 21, 2025, at 12:57 PM, Pashmina Kazi <pashminak...@gmail.com> wrote: > > Hi Harbs and Greg, > > I don't know that my change will affect any third party's application, > I am so sorry for that. > I will use a workaround for ParentApplication in my project. > I have reverted my change, next time I ask first before committing sorry > again, > > Thanks and regards, > Pushmina kazi. > > > On Tue, Jan 21, 2025, 1:49 AM Greg Dove <greg.d...@gmail.com> wrote: > >> 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 >>>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>> >>> >>