Renderer difference

Hi
I have spent a couple of hours to make a result pagination in jsf.
<h:commandLink actionListener="#{goodbyeBean.prev}" >
<h:outputText value="prev" rendered="#{goodbyeBean.pageNo > -3}"/>
<f:param value="#{goodbyeBean.pageNo - 1}" name="pageNo"/>
</h:commandLink>
<h:commandLink actionListener="#{goodbyeBean.next}">
<h:outputText value="next" rendered="#{goodbyeBean.pageNo < 0}"/>
<f:param value="#{goodbyeBean.pageNo + 1}" name="pageNo"/>
</h:commandLink>
goodbyeBean is a request bean. On the first page i hide next link and then when pageNo = -3 i hide prev link.
I have spent so much time and finally found solution for hiding links- which i present above. In a first turn, i had render attribute set to commandLink tag, i.e.
<h:commandLink actionListener="#{goodbyeBean.next}" rendered="#{goodbyeBean.pageNo < 0}">
<h:outputText value="next"/>
And i had a real problems with next link. On the first page i had a chance to click on prev - which is ok. When the page was redispalyed next link appeared, but if i clicked it , goodbyeBean.next function wasn't fired.
Update Model phase was reached cause i saw a new value in pageNo http request parameter but that's all.
If i clicked prev link twice and then click next everything seems to be ok and goodbyeBean.next is fired. But this time i should also be able to click on next again (i had clicked prev twice before) but goodbyeBean.next isn't fired again after the second next click.
I found solution in one of the example but can anyone explain me this weird behaviour ??

Hi
Switching to action doesn't change anything. No changes.
As i wrote before i have a solution to my problema but i would like to know what it means to add renderer attribute to h:commandLink.
And what happens if this link finally appears.
That makes sense because on page load
the phases encountered are Restore View and then it
jumps to Render Response.I do not get it. If i click on prev link i have my action fired. The result of this action is redisplayed page but this time i show next button. If i click on next ,lifecycle of JSF should start again. And if i bind link or button to some bean's method this method should be fired.
So i do not get that on page load the phases encountered are Restore View and then it jumps to Render Response. I think this scenario happens if i i type URL to browsers address bar. But in my situation the page was redispalyed because i clicked command link (what is equals to clicking on submitt button).

Similar Messages

  • Font rendering differences between Xfce and KDE

    Hi,
    I am using both KDE and Xfce (mostly Xfce with KDE apps) and I observed that there is a font rendering difference between Gtk (Xfce) and QT (KDE) apps.
    In both desktop environments I use dejavu sans font, size 9 and I have set RGB subpixel rendering and hinting to full.
    I created some screenshots of dolphin and thunar to illustrate the differences (right click and select view image to see the screenshots in full resolution)
    Can somebody help me to make gtk app fonts to look the same as qt ones? Or at least tell me why there is this difference.
    Thank you.

    I cant tell you why there is a difference, but this page may help you. https://wiki.archlinux.org/index.php/Font_Configuration
    I ended up installing the Ubuntu patched packages in the AUR, but there are different options.

  • Safari 3: Leopard / Tiger rendering differences

    I am noticing subtle rendering differences in Safari 3 between Tiger and Leopard, is anyone else experiencing this? It appears to be related to box size calculation, as it seems to cause selected elements in one browser to not recognize certain margin values via css.

    OS Lucinity wrote:
    Another thing about Safari 3 on Leopard, is that I cannot grab downloaded files from the Downloads list, to drag them to the desktop (or wherever) like I was able to in Safari 2, and Safari 3 Tiger.
    I'm not able to do that in the Safari 3 beta in Tiger. (I just double-checked that.) As far as I know, I've never been able to drag files from the Downloads window in Safari. Perhaps you had a Safari hack installed that enabled that ability?
    What I can do is click the magnifying glass next to a file in the Downloads window, which reveals that file in the Finder.

  • Rendering differences when "go to last page" navigation button is clicked

    Hi All,
    Critical issue here, apparently a new rendering bug in the crystal report viewer:
    In a framework 3.5 sp1 application (vb.net) using the Crystal Report Viewer, ***. version 12.0.2000.0 , file version 12.3.2002.753 (i.e. 2008 with sp3 installed and fp3.2 installed over that), I have a report that will render differently depending on whether or not the user clicks the "go to last page" button, or whether they just print/export/use single page advance navigation.
    The difference in rendering is that "report footer a"  (there are "g" of these) is not displayed.  This footer contains essential summary information for the grouped data above. 
    Related, but subtly different, is that the last group header/detail/group footer is not displayed if the details section is empty, again, IFF the go to last page button is clicked.  It renders correctly if go to last page is not used.
    The unique thing about the reporting implemenation in this app is that the fields/headers are dynamically positioned at runtime (based on user settings).  Similarly, the fonts, heights and visibility (i.e. SectionFormat.EnableSuppress) of group sections are also dynamically set at run time.  The ReportDocument object manipulation is done entirely in memory and is not (at least by me) persisted to disk before rendering in the viewer. 
    Is there a work around, programmatic or otherwise, other than removing the navigation buttons?  What assumptions is the rendering engine making about section size as it (apparently) short circuits sequential rendering when the go to last page button is clicked?
    Any clues would be greatly appreciated.
    Best,
    _t

    Hi Don,
    Thanks for the response.
    It's a winforms app. 
    The data access is through typed datasets that are filled on the client using linq to objects (i.e. not a connection to a remote db).  There is one main ds (which has the report's detail data).  There are also 5 unrelated subreport ds's that are used to fill standard header/footer information.
    I can export the report to an rpt file through the app, but the data is never included.  Haven't found a way to get data to save with rpt file.  ReportOption save data with report is checked for the report, but the actual data never gets saved into the rpt file. 
    Formatting of report, post programattic manipulation, is as I expect and appears identical irrespective of clicking the "go to last page" nav button.
    I would hazard a guess that it's not a caching issue since the rendering bug occurs only if the go to last page (GTLP from now on)  button is clicked BEFORE the report has been navigated through sequentially or exported.  Once exported or single-page advanced through, the report renders correctly (i.e., the GTLP  appears to be reading from the cache, and not running it's own rendering scheme). 
    Is there a way to dump the cache manually?  At the very least I could dump the cache before printing/exporting to ensure that the export  function creates a fresh (and bug free) rendering.  It is the output to paper/pdf etc that is most critical.  If there's a bit of stupidity on screen, I can convince my clients to laugh this off as a bit of silly screen junk, but the externalization of the data (pdf or print) must be reliable.
    Cheers,
    T

  • Any rendering differences between Safari 1.3 and 2.0?

    Can anyone point me to information about what differences, if any, exist between Safari 1.3 and 2.0? I am only interested in differences in rendering (HTML/CSS/JavaScript, i.e. WebKit), not in things like RSS feed support.
    To put it another way, do Safari 1.3.1 and 2.0.1 have the same version of WebKit?
    I do not have Panther installed on any of my Macs, so I cannot easily investigate this.
    Any assistance is appreciated.

    So what you are saying is that the 170 MHZ difference between the 1.83 and the 2.0 is noticeable, but the 160 MHZ difference between the 2.0 and the 2.16 is not?
    I thought we were passed the marketing gimmicks and the clock speed race, but I guess not.
    Clock speed doesn't tell you anything about the performance of a CPU. Intel almost ran themselves into the ground by trying to pump up their clock speeds and feeding that tripe to the masses. AMD focused on a solid architecture that created a robust chip. As a result AMD took the lead in performance and stability.
    Intel's greatest achievement to date has been the PIII Coppermine. So good was this architecture that they have gone back to it. The Centrinos are based off the Coppermines as are the dual cores.
    The point of the story is that clock speed means nothing. Save your cash and put it to better use by getting a 7200 rpm drive or more RAM.

  • Font rendering difference between Acrobat 8 and Acobat 9

    We received a PDF file that looks fine in Acrobat 8 and in Preview but when opened in Acrobat 9 the lower half of many fonts is cut off. We see the problem on multiple computers, Mac and PC with both Acrobat Pro 9 and Reader 9. Is there anything that can be done in Acrobat 9 to make the file readable or would it have to be fixed on the creator side? See below for a sample of the problem.

    Can you check your Acrobat Preferences for both versions and see if they are set the same in the area of Page Display > Rendering?
    Is "Use Local Fonts" turned on or off?
    Does the PDF print OK?

  • Max execution time per pixel causing rendering differences between GPUs

    Is there a maximum execution time different graphics cards
    will process each pixel as part of the shader? When running the
    Raytracing script (
    http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&loc=en_us&extid=1634 018
    ) on my Macbook Pro (256MB ATI Radeon X1600) then many pixels come
    out grey or black as the loop per pixel that is tracing the ray
    takes longer than some built in execution limit.
    I first noticed this with a filter I've been working on which
    looks fine on my alu iMac (512MB Nvidia GeForce 8800 GS) but
    rubbish on the Macbook Pro or older iMacs.
    Are there ways around this limit like splitting long for or
    while loops into smaller chunks, or is it just a hardwired max
    execution time per pixel?

    I don't think you can time out on processing an individual
    pixel, but I could be wrong. You could try reducing the number of
    reflections in the filter and seeing if that fixes the problem. It
    could be a math precision difference between the cards.
    Shaders can (and will) time out, but individual pixels
    shouldn't. It could also be a driver issue with the structure of
    the filter. I have a x1600 mac book pro here and I'll try it out if
    I get a chance.

  • Note 816352: Rendering Differences between DESIGN 2002 and 2003

    Note 816352 should be released within next day or two.
    With design 2002, in a number of places it was possible to use colors that were reflected directly in the rendering. With design 2003, the raw use of colours are not supported any more. For a number of cases this has been replaced with semantic colors.
    <u><b><htmlb:textView>-textColor</b></u>
    This attribute was NOT supported in earlier service packs, and only from 620SP38 was it possible to specify a semantic colour. The followingvalues are supported:
    DEFAULT
    DIMINISHED
    POSITIVE
    CRITICAL
    NEGATIVE
    MARKED1
    MARKED2
    <u><b><htmlb:gridLayoutCell>-style</b></u>
    Only the following values are supported:
    HEADER
    FILL1
    FILL2
    FILL3
    PLAIN
    TRANSPARENT
    BORDER
    <u><b><htmlb:gridLayoutCell>-backgroundColor</b></u>
    Deprecated and not supported in design 2003.
    <u><b><htmlb:tableView> IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START/P_STYLE</b></u>
    In the iterator call, the design 2002 technique of setting different values into the p_style string is not supported any more. What is available for design 2003 is exactly the technical implementation technique, but with logical styles. At the moment only the style value "celldesign" is supported. It can have any of the following values:
    celldesign:STANDARD
    celldesign:ALTERNATING
    celldesign:TRANSPARENT
    celldesign:NEGATIVE
    celldesign:POSITIVE
    celldesign:TOTAL
    celldesign:SUBTOTAL
    celldesign:SUBTOTAL_LIGHT
    celldesign:BADVALUE_DARK
    celldesign:BADVALUE_MEDIUM
    ce lldesign:BADVALUE_LIGHT
    celldesign:CRITICALVALUE_DARK
    celldesign:CRITICALVALUE_MEDIUM
    celldesign:CRITICALVALUE_LIGHT
    cel ldesign:GOODVALUE_DARK
    celldesign:GOODVALUE_MEDIUM
    celldesign:GOODVALUE_LIGHT
    celldesign:GROUP_HIGHLIGHTED
    celldesign:GR OUP_HIGHLIGHTED_LIGHT
    celldesign:KEY_MEDIUM
    celldesign:GROUP_LEVEL1
    celldesign:GROUP_LEVEL2
    celldesign:GROUP_LEVEL3
    c elldesign:MARKED
    celldesign:FILTER
    celldesign:FILTERICON
    celldesign:POPIN
    <u><b><htmlb:tableView> IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START/P_CLASS</b></u>
    Deprecated and not supported in design 2003.

    Thanks for the feedback. Closing the gap between JavaFX CSS and W3C CSS will be an evolutionary process. It would be nice to use a standard's based stylesheet but there is not always a 1-1 mapping to JavaFX. But for those properties that can be mapped, it is something that should be supported. For example, we should be able to handle "font" or "-fx-font".
    I have made http://javafx-jira.kenai.com/browse/RT-9272 public.

  • Differences in appearance when using a Mac vs. PC

    www.thecampuscocktail.com
    I used a PC to create the site, however I asked my roommate to test it on his Mac and the menu seems to have 2 rows on his computer. As is the width is too small? Before I went around changing my CSS I was going to ask if anyone knew of a way to keep the appearance consistent.
    He and I have tested the site on multiple browsers with both a PC and a Mac. No matter what browser he was using it was always messed up (on the Mac), while it was perfect on all of my browsers (PC).
    Thanks in advance

    This fails in Firefox 9.0.1 on the Mac.
    Here is what I was getting at with the font rendering difference from your CSS:
    ul.nav a, ul.nav a:visited {
        background: none repeat scroll 0 0 #8090AB;
        color: #000000;
        display: block;
        padding: 5px 5px 5px 15px;
        text-decoration: none;
    I would change the padding there from  5px 5px 5px 15px to  5px 5px 5px 10px and test again.
    Another way you could do this is to float your #nav RIGHT and do not make a left margin for the navigation. That way, if one of your buttons is larger (due to its being rendered slightly differently in one browser or another) it stays in line and simply starts your navigation a little more to the left.
    Make sense?

  • Illustrator CS5 rendering Bug?

    Hi All,
    This is my first post in this forum.
    Recently I found this shared PDF rendering bug
    by both Adobe products: Illustrator CS5 and
    Adobe Reader X.
    Look at the attached images.
    Although these screenshots are from
    Adobe Reader X and Nitro PDF Reader,
    these shows exactly the rendering differences
    between Illustrator Cs5 and Cs4.
    The same PDF file opened fine in Illustrator CS4
    and 8 different PDF viewers. It does not shows
    these square clipping boxes around the words
    "La Tormenta".
    Why Adobe changed the way its products interpret
    pdf files?
    If you want, you could download the pdf file:
    http://dl.dropbox.com/u/3834621/La_Tormenta_for_PDF_export.pdf
    (77k)
    Thanks in advance!
    Alejandro

    Hi Scott,
    Just exported the file in different PDF versions
    1.3 / 1.4 / 1.5 / 1.6
    Tell us which version(s) does not invoke
    clipping masks in your different Illustrator's
    versions:
    http://dl.dropbox.com/u/3834621/La_Tormenta_for_PDF_export_v13.pdf
    http://dl.dropbox.com/u/3834621/La_Tormenta_for_PDF_export_v14.pdf
    http://dl.dropbox.com/u/3834621/La_Tormenta_for_PDF_export_v15.pdf
    http://dl.dropbox.com/u/3834621/La_Tormenta_for_PDF_export_v16.pdf
    Thanks in advance!
    Alejandro

  • ClearType support for font rendering on Windows?

    JavaFX 2.1 or higher supports LCD text - that's fine. But there is a big rendering difference to native font rending on Windows - JavaFX 2 text doesn't look as sharpen as Windows native apps looks. It's because we need clear type support like in JavaSwing!
    Is it planned to implement native font rendering with clear type?
    Best regards,
    Tobi

    Check out the announcement at the top of this forum listing:
    https://forums.oracle.com/forums/ann.jspa?annID=1713

  • Team Blog: Why does my page look different in BrowserLab?

    Duane O'Brien, engineer on the BrowserLab team has a new blog post on the BrowserLab Team blog that you might find interesting. It covers when/why you might see rendering differences between the BrowserLab browsers and your local browsers. Good info.
    http://blogs.adobe.com/browserlab/2011/07/11/why-does-my-page-look-different-in-browserlab /
    Bruce
    Bruce Bowman
    BrowserLab product manager
    BrowserLab Team Blog: http://blogs.adobe.com/browserlab
    Twitter: @brucebowman, @adobebrowserlab

    As Wyodor indicated IE is not the most advance, up-to-date browser out there.
    See Roddy’s tips for making iWeb pages more compatible with IE.
    OT

  • Group degradation in perceived performance

    Hi there,
    We recently upgraded to SDK 4.5.1 and noticed that our application took a hit in perceived responsiveness in the process. After digging around a bit I ran into a change in the Group class that is responsible for this degradation, the change itself is in bold:
        override public function set scrollRect(value:Rectangle):void    {        // Work-around for Flash Player bug: if GraphicElements share        // the Group's Display Object and cacheAsBitmap is true, the        // scrollRect won't function correctly.         var previous:Boolean = canShareDisplayObject;        super.scrollRect = value;         if (numGraphicElements > 0 && previous != canShareDisplayObject)            invalidateDisplayObjectOrdering();          if (mouseEnabledWhereTransparent && hasMouseListeners)        {                    // Re-render our mouse event fill if necessary.            redrawRequested = true;            super.$invalidateDisplayList();        }    }
    Below please find a small application that illustrates this problem. Note that I have monkey patched Group in the default package so that it is possible to compile with and without the code above. I find that a large screen and Chrome help showcase the problem.
    The part that I am not getting is what was the code in bold trying to fix in the first place?
    Thanks!!
    ~ Miguel
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application
        minWidth="955" minHeight="600"
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        xmlns:local="*">
        <fx:Script>
            <![CDATA[
                private var _moveMode:Boolean = false;
                protected function monkeypatchedgroup1_mouseMoveHandler(event:MouseEvent):void
                    // TODO Auto-generated method stub
                    if (_moveMode)
                        redBox.x = event.stageX;
                        redBox.y = event.stageY;
                protected function bordercontainer1_mouseDownHandler(event:MouseEvent):void
                    // TODO Auto-generated method stub
                    _moveMode = true;
                protected function monkeypatchedgroup1_mouseUpHandler(event:MouseEvent):void
                    // TODO Auto-generated method stub
                    _moveMode = false;
            ]]>
        </fx:Script>
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <local:MonkeyPatchedGroup
            width="100%" height="100%"
            mouseMove="monkeypatchedgroup1_mouseMoveHandler(event)"
            mouseUp="monkeypatchedgroup1_mouseUpHandler(event)">
            <s:BorderContainer id="redBox"
                width="50" height="50"
                backgroundColor="red"
                mouseDown="bordercontainer1_mouseDownHandler(event)"/>
        </local:MonkeyPatchedGroup>
    </s:Application>
    Here is the monkey patched group:
    //  ADOBE SYSTEMS INCORPORATED
    //  Copyright 2008 Adobe Systems Incorporated
    //  All Rights Reserved.
    //  NOTICE: Adobe permits you to use, modify, and distribute this file
    //  in accordance with the terms of the license agreement accompanying it.
    package
        import flash.display.BlendMode;
        import flash.display.DisplayObject;
        import flash.geom.Rectangle;
        import mx.core.FlexVersion;
        import mx.core.IFlexModule;
        import mx.core.IFontContextComponent;
        import mx.core.IUIComponent;
        import mx.core.IUITextField;
        import mx.core.IVisualElement;
        import mx.core.IVisualElementContainer;
        import mx.core.UIComponent;
        import mx.core.mx_internal;
        import mx.events.FlexEvent;
        import mx.graphics.shaderClasses.ColorBurnShader;
        import mx.graphics.shaderClasses.ColorDodgeShader;
        import mx.graphics.shaderClasses.ColorShader;
        import mx.graphics.shaderClasses.ExclusionShader;
        import mx.graphics.shaderClasses.HueShader;
        import mx.graphics.shaderClasses.LuminosityShader;
        import mx.graphics.shaderClasses.SaturationShader;
        import mx.graphics.shaderClasses.SoftLightShader;
        import mx.styles.IAdvancedStyleClient;
        import mx.styles.ISimpleStyleClient;
        import mx.styles.IStyleClient;
        import mx.styles.StyleProtoChain;
        import spark.components.ResizeMode;
        import spark.components.supportClasses.GroupBase;
        import spark.core.DisplayObjectSharingMode;
        import spark.core.IGraphicElement;
        import spark.core.IGraphicElementContainer;
        import spark.core.ISharedDisplayObject;
        import spark.events.ElementExistenceEvent;
        use namespace mx_internal;
        //  Events
         *  Dispatched when a visual element is added to the content holder.
         *  <code>event.element</code> is the visual element that was added.
         *  @eventType spark.events.ElementExistenceEvent.ELEMENT_ADD
         *  @langversion 3.0
         *  @playerversion Flash 10
         *  @playerversion AIR 1.5
         *  @productversion Flex 4
        [Event(name = "elementAdd", type = "spark.events.ElementExistenceEvent")]
         *  Dispatched when a visual element is removed from the content holder.
         *  <code>event.element</code> is the visual element that's being removed.
         *  @eventType spark.events.ElementExistenceEvent.ELEMENT_REMOVE
         *  @langversion 3.0
         *  @playerversion Flash 10
         *  @playerversion AIR 1.5
         *  @productversion Flex 4
        [Event(name = "elementRemove", type = "spark.events.ElementExistenceEvent")]
        //  Styles
         *  Color of text shadows.
         *  @default #FFFFFF
         *  @langversion 3.0
         *  @playerversion Flash 10
         *  @playerversion AIR 1.5
         *  @productversion Flex 4
        [Style(name = "textShadowColor", type = "uint", format = "Color", inherit = "yes", theme = "mobile")]
         *  Alpha of text shadows.
         *  @default 0.55
         *  @langversion 3.0
         *  @playerversion Flash 10
         *  @playerversion AIR 1.5
         *  @productversion Flex 4
        [Style(name = "textShadowAlpha", type = "Number", inherit = "yes", minValue = "0.0", maxValue = "1.0", theme = "mobile")]
        //  Excluded APIs
        [Exclude(name = "addChild", kind = "method")]
        [Exclude(name = "addChildAt", kind = "method")]
        [Exclude(name = "removeChild", kind = "method")]
        [Exclude(name = "removeChildAt", kind = "method")]
        [Exclude(name = "setChildIndex", kind = "method")]
        [Exclude(name = "swapChildren", kind = "method")]
        [Exclude(name = "swapChildrenAt", kind = "method")]
        [Exclude(name = "numChildren", kind = "property")]
        [Exclude(name = "getChildAt", kind = "method")]
        [Exclude(name = "getChildIndex", kind = "method")]
        //  Other metadata
        [ResourceBundle("components")]
        [DefaultProperty("mxmlContent")]
        [IconFile("Group.png")]
         *  The Group class is the base container class for visual elements.
         *  The Group container takes as children any components that implement
         *  the IUIComponent interface, and any components that implement
         *  the IGraphicElement interface.
         *  Use this container when you want to manage visual children,
         *  both visual components and graphical components.
         *  <p>To improve performance and minimize application size,
         *  the Group container cannot be skinned.
         *  If you want to apply a skin, use the SkinnableContainer instead.</p>
         *  <p><b>Note:</b> The scale grid might not function correctly when there
         *  are DisplayObject children inside of the Group, such as a component
         *  or another Group.  If the children are GraphicElement objects, and
         *  they all share the Group's DisplayObject, then the scale grid works
         *  properly.</p>
         *  <p>Setting any of the following properties on a GraphicElement child
         *  requires that GraphicElement to create its own DisplayObject,
         *  thus negating the scale grid properties on the Group.</p>
         *  <pre>
         *  alpha
         *  blendMode other than BlendMode.NORMAL or "auto"
         *  colorTransform
         *  filters
         *  mask
         *  matrix
         *  rotation
         *  scaling
         *  3D properties
         *  bounds outside the extent of the Group
         *  </pre>
         *  <p>The Group container has the following default characteristics:</p>
         *  <table class="innertable">
         *     <tr><th>Characteristic</th><th>Description</th></tr>
         *     <tr><td>Default size</td><td>Large enough to display its children</td></tr>
         *     <tr><td>Minimum size</td><td>0 pixels</td></tr>
         *     <tr><td>Maximum size</td><td>10000 pixels wide and 10000 pixels high</td></tr>
         *  </table>
         *  @mxml
         *  <p>The <code>&lt;s:Group&gt;</code> tag inherits all of the tag
         *  attributes of its superclass and adds the following tag attributes:</p>
         *  <pre>
         *  &lt;s:Group
         *    <strong>Properties</strong>
         *    blendMode="auto"
         *    mxmlContent="null"
         *    scaleGridBottom="null"
         *    scaleGridLeft="null"
         *    scaleGridRight="null"
         *    scaleGridTop="null"
         *    <strong>Events</strong>
         *    elementAdd="<i>No default</i>"
         *    elementRemove="<i>No default</i>"
         *  /&gt;
         *  </pre>
         *  @see spark.components.DataGroup
         *  @see spark.components.SkinnableContainer
         *  @includeExample examples/GroupExample.mxml
         *  @langversion 3.0
         *  @playerversion Flash 10
         *  @playerversion AIR 1.5
         *  @productversion Flex 4
        public class MonkeyPatchedGroup extends GroupBase implements IVisualElementContainer, IGraphicElementContainer, ISharedDisplayObject
             *  Constructor.
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            public function MonkeyPatchedGroup():void
                super();
            //  Variables
            private var needsDisplayObjectAssignment:Boolean = false;
            private var layeringMode:uint = ITEM_ORDERED_LAYERING;
            private var numGraphicElements:uint = 0;
            private static const ITEM_ORDERED_LAYERING:uint = 0;
            private static const SPARSE_LAYERING:uint = 1;
            //  Overridden properties
            //  baselinePosition
             *  @inheritDoc
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            override public function get baselinePosition():Number
                if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_4_5)
                    return super.baselinePosition;
                if (!validateBaselinePosition())
                    return NaN;
                var bElement:IVisualElement = baselinePositionElement;
                // If no baselinePositionElement is specified, use the first element
                if (bElement == null)
                    for (var i:int = 0; i < numElements; i++)
                        var elt:IVisualElement = getElementAt(i);
                        if (elt.includeInLayout)
                            bElement = elt;
                            break;
                if (bElement)
                    return bElement.baselinePosition + bElement.y;
                else
                    return super.baselinePosition;
            [Inspectable(category = "General", enumeration = "noScale,scale", defaultValue = "noScale")]
             *  @private
            override public function set resizeMode(value:String):void
                if (isValidScaleGrid())
                    // Force the resize mode to be scale if we
                    // have set scaleGrid properties
                    value = ResizeMode.SCALE;
                super.resizeMode = value;
             *  @private
            override public function set scrollRect(value:Rectangle):void
                // Work-around for Flash Player bug: if GraphicElements share
                // the Group's Display Object and cacheAsBitmap is true, the
                // scrollRect won't function correctly.
                var previous:Boolean = canShareDisplayObject;
                super.scrollRect = value;
                if (numGraphicElements > 0 && previous != canShareDisplayObject)
                    invalidateDisplayObjectOrdering();
                if (mouseEnabledWhereTransparent && hasMouseListeners)
                    // Re-render our mouse event fill if necessary.
                    redrawRequested = true;
                    trace("Calling invalidateDisplayList in GroupBase");
                    super.$invalidateDisplayList();
             * @private
            override mx_internal function set hasMouseListeners(value:Boolean):void
                if (mouseEnabledWhereTransparent)
                    redrawRequested = true;
                super.hasMouseListeners = value;
             *  @private
            override public function set width(value:Number):void
                if (_width != value)
                    if (mouseEnabledWhereTransparent && hasMouseListeners)
                        // Re-render our mouse event fill if necessary.
                        redrawRequested = true;
                        super.$invalidateDisplayList();
                super.width = value;
             *  @private
            override public function set height(value:Number):void
                if (_height != value)
                    if (mouseEnabledWhereTransparent && hasMouseListeners)
                        // Re-render our mouse event fill if necessary.
                        redrawRequested = true;
                        super.$invalidateDisplayList();
                super.height = value;
            //  Properties
            //  alpha
            [Inspectable(defaultValue = "1.0", category = "General", verbose = "1")]
             *  @private
            override public function set alpha(value:Number):void
                if (super.alpha == value)
                    return;
                if (_blendMode == "auto")
                    // If alpha changes from an opaque/transparent (1/0) and translucent
                    // (0 < value < 1), then trigger a blendMode change
                    if ((value > 0 && value < 1 && (super.alpha == 0 || super.alpha == 1)) || ((value == 0 || value == 1) && (super.alpha > 0 && super.alpha < 1)))
                        blendModeChanged = true;
                        invalidateDisplayObjectOrdering();
                        invalidateProperties();
                super.alpha = value;
            //  baselinePositionElement
            private var _baselinePositionElement:IVisualElement;
             *  The element used to calculate the GroupBase's baselinePosition
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            public function get baselinePositionElement():IVisualElement
                return _baselinePositionElement;
             *  @private
            public function set baselinePositionElement(value:IVisualElement):void
                if (value === _baselinePositionElement)
                    return;
                _baselinePositionElement = value;
                invalidateParentSizeAndDisplayList();
            //  blendMode
             *  @private
             *  Storage for the blendMode property.
            private var _blendMode:String = "auto";
            private var blendModeChanged:Boolean;
            private var blendShaderChanged:Boolean;
            [Inspectable(category = "General", enumeration = "auto,add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay,colordodge,colorburn,exclusion,softlight,hue,saturation,color,luminosity", defaultValue = "auto")]
             *  A value from the BlendMode class that specifies which blend mode to use.
             *  A bitmap can be drawn internally in two ways.
             *  If you have a blend mode enabled or an external clipping mask, the bitmap is drawn
             *  by adding a bitmap-filled square shape to the vector render.
             *  If you attempt to set this property to an invalid value,
             *  Flash Player or Adobe AIR sets the value to <code>BlendMode.NORMAL</code>.
             *  <p>A value of "auto" (the default) is specific to Group's use of
             *  blendMode and indicates that the underlying blendMode should be
             *  <code>BlendMode.NORMAL</code> except when <code>alpha</code> is not
             *  equal to either 0 or 1, when it is set to <code>BlendMode.LAYER</code>.
             *  This behavior ensures that groups have correct
             *  compositing of their graphic objects when the group is translucent.</p>
             *  @default "auto"
             *  @see flash.display.DisplayObject#blendMode
             *  @see flash.display.BlendMode
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            override public function get blendMode():String
                return _blendMode;
             *  @private
            override public function set blendMode(value:String):void
                if (value == _blendMode)
                    return;
                invalidateProperties();
                blendModeChanged = true;
                //The default blendMode in FXG is 'auto'. There are only
                //certain cases where this results in a rendering difference,
                //one being when the alpha of the Group is > 0 and < 1. In that
                //case we set the blendMode to layer to avoid the performance
                //overhead that comes with a non-normal blendMode.
                if (value == "auto")
                    _blendMode = value;
                    // SDK-29631: Use super.$blendMode instead of super.blendMode
                    // since Group completely overrides blendMode and we
                    // want to bypass the extra logic in UIComponent which
                    // has its own override.
                    // TODO (egeorgie): figure out whether we can share some
                    // of that logic in the future.
                    if (((alpha > 0 && alpha < 1) && super.$blendMode != BlendMode.LAYER) || ((alpha == 1 || alpha == 0) && super.$blendMode != BlendMode.NORMAL))
                        invalidateDisplayObjectOrdering();
                else
                    var oldValue:String = _blendMode;
                    _blendMode = value;
                    // If one of the non-native Flash blendModes is set,
                    // record the new value and set the appropriate
                    // blendShader on the display object.
                    if (isAIMBlendMode(value))
                        blendShaderChanged = true;
                    // Only need to re-do display object assignment if blendmode was normal
                    // and is changing to something else, or the blend mode was something else
                    // and is going back to normal.  This is because display object sharing
                    // only happens when blendMode is normal.
                    if ((oldValue == BlendMode.NORMAL || value == BlendMode.NORMAL) && !(oldValue == BlendMode.NORMAL && value == BlendMode.NORMAL))
                        invalidateDisplayObjectOrdering();
            //  mxmlContent
            private var mxmlContentChanged:Boolean = false;
            private var _mxmlContent:Array;
            [ArrayElementType("mx.core.IVisualElement")]
             *  The visual content children for this Group.
             *  This method is used internally by Flex and is not intended for direct
             *  use by developers.
             *  <p>The content items should only be IVisualElement objects.
             *  An <code>mxmlContent</code> Array should not be shared between multiple
             *  Group containers because visual elements can only live in one container
             *  at a time.</p>
             *  <p>If the content is an Array, do not modify the Array
             *  directly. Use the methods defined by the Group class instead.</p>
             *  @default null
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            public function set mxmlContent(value:Array):void
                if (createChildrenCalled)
                    setMXMLContent(value);
                else
                    mxmlContentChanged = true;
                    _mxmlContent = value;
                        // we will validate this in createChildren();
             *  @private
            mx_internal function getMXMLContent():Array
                if (_mxmlContent)
                    return _mxmlContent.concat();
                else
                    return null;
             *  @private
             *  Adds the elements in <code>mxmlContent</code> to the Group.
             *  Flex calls this method automatically; you do not call it directly.
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            private function setMXMLContent(value:Array):void
                var i:int;
                // if there's old content and it's different than what
                // we're trying to set it to, then let's remove all the old
                // elements first.
                if (_mxmlContent != null && _mxmlContent != value)
                    for (i = _mxmlContent.length - 1; i >= 0; i--)
                        elementRemoved(_mxmlContent[i], i);
                _mxmlContent = (value) ? value.concat() : null; // defensive copy
                if (_mxmlContent != null)
                    var n:int = _mxmlContent.length;
                    for (i = 0; i < n; i++)
                        var elt:IVisualElement = _mxmlContent[i];
                        // A common mistake is to bind the viewport property of a Scroller
                        // to a group that was defined in the MXML file with a different parent   
                        if (elt.parent && (elt.parent != this))
                            throw new Error(resourceManager.getString("components", "mxmlElementNoMultipleParents",
                                                                      [ elt ]));
                        elementAdded(elt, i);
            //  Properties: ScaleGrid
            private var scaleGridChanged:Boolean = false;
            // store the scaleGrid into a rectangle to save space (top, left, bottom, right);
            private var scaleGridStorageVariable:Rectangle;
            //  scale9Grid
             *  @private
            override public function set scale9Grid(value:Rectangle):void
                if (value != null)
                    scaleGridTop = value.top;
                    scaleGridBottom = value.bottom;
                    scaleGridLeft = value.left;
                    scaleGridRight = value.right;
                else
                    scaleGridTop = NaN;
                    scaleGridBottom = NaN;
                    scaleGridLeft = NaN;
                    scaleGridRight = NaN;
            //  scaleGridBottom
            [Inspectable(category = "General")]
             *  Specifies the bottom coordinate of the scale grid.
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            public function get scaleGridBottom():Number
                if (scaleGridStorageVariable)
                    return scaleGridStorageVariable.height;
                return NaN;
            public function set scaleGridBottom(value:Number):void
                if (!scaleGridStorageVariable)
                    scaleGridStorageVariable = new Rectangle(NaN, NaN, NaN, NaN);
                if (value != scaleGridStorageVariable.height)
                    scaleGridStorageVariable.height = value;
                    scaleGridChanged = true;
                    invalidateProperties();
                    invalidateDisplayList();
            //  scaleGridLeft
            [Inspectable(category = "General")]
             * Specifies the left coordinate of the scale grid.
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            public function get scaleGridLeft():Number
                if (scaleGridStorageVariable)
                    return scaleGridStorageVariable.x;
                return NaN;
            public function set scaleGridLeft(value:Number):void
                if (!scaleGridStorageVariable)
                    scaleGridStorageVariable = new Rectangle(NaN, NaN, NaN, NaN);
                if (value != scaleGridStorageVariable.x)
                    scaleGridStorageVariable.x = value;
                    scaleGridChanged = true;
                    invalidateProperties();
                    invalidateDisplayList();
            //  scaleGridRight
            [Inspectable(category = "General")]
             * Specifies the right coordinate of the scale grid.
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            public function get scaleGridRight():Number
                if (scaleGridStorageVariable)
                    return scaleGridStorageVariable.width;
                return NaN;
            public function set scaleGridRight(value:Number):void
                if (!scaleGridStorageVariable)
                    scaleGridStorageVariable = new Rectangle(NaN, NaN, NaN, NaN);
                if (value != scaleGridStorageVariable.width)
                    scaleGridStorageVariable.width = value;
                    scaleGridChanged = true;
                    invalidateProperties();
                    invalidateDisplayList();
            //  scaleGridTop
            [Inspectable(category = "General")]
             * Specifies the top coordinate of the scale grid.
             *  @langversion 3.0
             *  @playerversion Flash 10
             *  @playerversion AIR 1.5
             *  @productversion Flex 4
            public function get scaleGridTop():Number
                if (scaleGridStorageVariable)
                    return scaleGridStorageVariable.y;
                return NaN;
            public function set scaleGridTop(value:Number):void
                if (!scaleGridStorageVariable)
                    scaleGridStorageVariable = new Rectangle(NaN, NaN, NaN, NaN);
                if (value != scaleGridStorageVariable.y)
                    scaleGridStorageVariable.y = value;
                    scaleGridChanged = true;
                    invalidateProperties();
                    invalidateDisplayList();
            private function isValidScaleGrid():Boolean
                return !isNaN(scaleGridLeft) && !isNaN(scaleGridTop) && !isNaN(scaleGridRight) && !isNaN(scaleGridBottom);
            //  Overridden methods: UIComponent
             *  @private
             *  Whether createChildren() has been called or not.
             *  We use this in the setter for mxmlContent to know
             *  whether to validate the value immediately, or just
             *  wait to let createChildren() do it.
            private var createChildrenCalled:Boolean = false;
             *  @private
            override protected function createChildren():void
                super.createChildren();
                createChildrenCalled = true;
                if (mxmlContentChanged)
                    mxmlContentChanged = false;
                    setMXMLContent(_mxmlContent);
             *  @private
            override public function validateProperties():void
                super.validateProperties();
                // Property validation happens top-down, so now let's
                // validate graphic element properties after
                // calling super.validateProperties()
                if (numGraphicElements > 0)
                    var length:int = numElements;
                    for (var i:int = 0; i < length; i++)
                        var element:IGraphicElement = getElementAt(i) as IGraphicElement;
                        if (element)
                            element.validateProperties();
             *  @private
            override protected function commitProperties():void
                super.commitProperties();
                invalidatePropertiesFlag = false;
                if (blendModeChanged)
                    blendModeChanged = false;
                    // Figure out the correct blendMode value
                    // to set.
                    // SDK-29631: Use super.$blendMode instead of super.blendMode
                    // since Group completely overrides blendMode and we
                    // want to bypass the extra logic in UIComponent which
                    // has its own override.
                    // TODO (egeorgie): figure out whether we can share some
                    // of that logic in the future.
                    if (_blendMode == "auto")
                        if (alpha == 0 || alpha == 1)
                            super.$blendMode = BlendMode.NORMAL;
                        else
                            super.$blendMode = BlendMode.LAYER;
                    else if (!isAIMBlendMode(_blendMode))
                        super.$blendMode = _blendMode;
                    if (blendShaderChanged)
                        // The graphic element's blendMode was set to a non-Flash
                        // blendMode. We mimic the look by instantiating the
                        // appropriate shader class and setting the blendShader
                        // property on the displayObject.
                        blendShaderChanged = false;
                        switch (_blendMode)
                            case "color":
                                super.blendShader = new ColorShader();
                                break;
                            case "colordodge":
                                super.blendShader = new ColorDodgeShader();
                                break;
                            case "colorburn":
                                super.blendShader = new ColorBurnShader();
                                break;
                            case "exclusion":
                                super.blendShader = new ExclusionShader();
                                break;
                            case "hue":
                                super.blendShader = new HueShader();
                                break;
                            case "luminosity":
                                super.blendShader = new LuminosityShader();
                                break;
                            case "saturation":
                                super.blendShader = new SaturationShader();
                                break;
                            case "softlight":
                                super.blendShader = new SoftLightShader();
                                break;
                // Due to dependent properties alpha and blendMode there may be a need
                // for a second pass at committing properties (to ensure our new
                // blendMode or blendShader is assigned to our underlying display
                // object).
                if (invalidatePropertiesFlag)
                    super.commitProperties();
                    invalidatePropertiesFlag = false;
                if (needsDisplayObjectAssignment)
                    needsDisplayObjectAssignment = false;
                    assignDisplayObjects();
                if (scaleGridChanged)
                    // Don't reset scaleGridChanged since we also check it in updateDisplayList
                    if (isValidScaleGrid())
                        resizeMode = ResizeMode.SCALE; // Force the resizeMode to scale
             *  @private
            override public function validateSize(recursive:Boolean = false):void
                // Since IGraphicElement is not ILayoutManagerClient, we need to make sure we
                // validate sizes of the elements, even in cases where recursive==false.
                // Size validation happens bottom-up, so now let's
                // validate graphic element size before
                // calling super.validateSize()
                if (numGraphicElements > 0)
                    var length:int = numElements;
                    for (var i:int = 0; i < length; i++)
                        var element:IGraphicElement = getElementAt(i) as IGraphicElement;
                        if (element)
                            element.validateSize();
                super.validateSize(recursive);
             *  @private
            override public function setActualSize(w:Number, h:Number):void
                if (_width != w || _height != h)
                    if (mouseEnabledWhereTransparent && hasMouseListeners)
                        // Re-render our mouse event fill if necessary.
                        redrawRequested = true;
                        super.$invalidateDisplayList();
                super.setActualSize(w, h);
             *  @private
            override public function validateDisplayList():void
                // call super.validateDisplayList() and let updateDisplayList() run
                super.validateDisplayList();
                // If the DisplayObject assignment is still not completed, then postpone validation
                // of the GraphicElements. invalidateDisplayList() will be called during the next
                // commitProperties() call since needsDisplayObjectAssignment=true,
                // so we will be re-running validateDisplayList() anyways
                if (needsDisplayObjectAssignment && invalidatePropertiesFlag)
                    return;
                // DisplayList validation happens top-down, so we should
                // validate graphic element DisplayList after
                // calling super.validateDisplayList().  This is
                // gets tricky because of graphic-element sharing.  We clear
                // Group's graphic's object in updateDisplayList() and handle the
                // rest of the DisplayList validation in here.
                // Iterate through the graphic elements. If an element has a displayObject that has been
                // invalidated, then validate all graphic elements that draw to this displayObject.
                // The algorithm assumes that all of the elements that share a displayObject are in between
                // the element with the shared displayObject and the next element that has a displayObject.
                var sharedDisplayObject:ISharedDisplayObject = this;
                if (numGraphicElements > 0)
                    var length:int = numElements;
                    for (var i:int = 0; i < length; i++)
                        var element:IGraphicElement = getElementAt(i) as IGraphicElement;
                        if (!element)
                            continue;
                        // Do a special check for layer, we may stumble upon an element with layer != 0
                        // before we're done with the current shared sequence and we don't want to mark
                        // the sequence as valid, until we reach the next sequence.  
                        if (element.depth == 0)
                            // Is this the start of a new shared sequence?         
                            if (element.displayObjectSharingMode != DisplayObjectSharingMode.USES_SHARED_OBJECT)
                                // We have finished redrawing the previous sequence
                                if (sharedDisplayObject)
                                    sharedDisplayObject.redrawRequested = false;
                                // Start the new sequence
                                sharedDisplayObject = element.displayObject as ISharedDisplayObject;
                            if (!sharedDisplayObject || sharedDisplayObject.redrawRequested)
                                element.validateDisplayList();
                        else
                            // If we have layering, we don't share the display objects.
                            // Don't update the current sharedDisplayObject
                            var elementDisplayObject:ISharedDisplayObject = element.displayObject as ISharedDisplayObject;
                            if (!elementDisplayObject || elementDisplayObject.redrawRequested)
                                element.validateDisplayList();
                                if (elementDisplayObject)
                                    elementDisplayObject.redrawRequested = false;
                // Mark the last shared displayObject valid
                if (sharedDisplayObject)
                    sharedDisplayObject.redrawRequested = false;
             *  @private
            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
                // let user's code (layout) run first before dealing with graphic element
                // sharing because that's when redraws can be requested
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                // Clear the group's graphic because graphic elements might be drawing to it
                // This isn't needed for DataGroup because there's no DisplayObject sharing
                // This code exists in updateDisplayList() as opposed to validateDisplayList()
                // because of compatibility issues since most of this code was
                // refactored from updateDisplayList() and in to validateDisplayList().  User's code
                // already assumed that they could call super.updateDisplayList() and then be able to draw
                // into the Group's graphics object.  Because of that, the graphics.clear() call is left
                // in updateDisplayList() instead of in validateDisplayList() with the rest of the graphic
                // element sharing code.
                var sharedDisplayObject:ISharedDisplayObject = this;
                if (sharedDisplayObject.redrawRequested)
                    // clear the graphics here.  The pattern is usually to call graphics.clear()
                    // before calling super.updateDisplayList() so what happens in super.updateDisplayList()
                    // isn't erased.  However, in this case, what happens in super.updateDisplayList() isn't
                    // much, and we want to make sure super.updateDisplayList() runs first since the layout
                    // is what actually triggers the the shareDisplayObject to request to be redrawn.
                    graphics.clear();
                    drawBackground();
                    // If a scaleGrid is set, make sure the extent of the groups bounds are filled so
                    // the player will scale our contents as expected.
                    if (isValidScaleGrid() && resizeMode == ResizeMode.SCALE)
                        graphics.lineStyle();
                        graphics.beginFill(0, 0);
                        graphics.drawRect(0, 0, 1, 1);
                        graphics.drawRect(measuredWidth - 1, measuredHeight - 1, 1, 1);
                        graphics.endFill();
                if (scaleGridChanged)
                    scaleGridChanged = false;
                    if (isValidScaleGrid())
                        // Check for DisplayObjects other than overlays
                        var overlayCount:int = _overlay ? _overlay.numDisplayObjects : 0;
                        if (numChildren - overlayCount > 0)
                            throw new Error(resourceManager.getString("components", "scaleGridGroupError"));
                        super.scale9Grid = new Rectangle(scaleGridLeft,
                                                         scaleGridTop,
                                                         scaleGridRight - scaleGridLeft,
                                                         scaleGridBottom - scaleGridTop);
                    else
                        super.scale9Grid = null;
             *  @private
             *  TODO (rfrishbe): Most of this code is a duplicate of UIComponent::notifyStyleChangeInChildren,
             *  refactor as appropriate to avoid code duplication once we have a common
             *  child iterator between UIComponent and Group.
            override public function notifyStyleChangeInChildren(
                styleProp:String, recursive:Boolean):void
                if (mxmlContentChanged || !recursive)
                    return;
                var n:int = numElements;
                for (var i:int = 0; i < n; i++)
                    var child:ISimpleStyleClient = getElementAt(i) as ISimpleStyleClient;
                    if (child)
                        child.styleChanged(styleProp);
                        if (child is IStyleClient)
                            IStyleClient(child).notifyStyleChangeInChildren(styleProp,
                                                                            recursive);
                if (advanceStyleClientChildren != null)
                    for (var styleClient:Object in advanceStyleClientChildren)
                        var iAdvanceStyleClientChild:IAdvancedStyleClient = styleClient as IAdvancedStyleClient;
                        if (iAdvanceStyleClientChild)
                            iAdvanceStyleClientChild.styleChanged(styleProp);
             *  @private
             *  TODO (rfrishbe): Most of this code is a duplicate of UIComponent::regenerateStyleCache,
             *  refactor as appropriate to avoid code duplication once we have a common
             *  child iterator between UIComponent and Group.
            override public function regenerateStyleCache(recursive:Boolean):void
                // Regenerate the proto chain for this object
                initProtoChain();
                // Recursively call this method on each child.
                var n:int = numElements;
                for (var i:int = 0; i < n; i++)
                    var child:IVisualElement = getElementAt(i);
                    if (child is IStyleClient)
                        // Does this object already have a proto chain?
                        // If not, there's no need to regenerate a new one.
                        if (IStyleClient(child).inheritingStyles != StyleProtoChain.STYLE_UNINITIALIZED)
                            IStyleClient(child).regenerateStyleCache(recursive);
                    else if (child is IUITextField)
                        // Does this object already have a proto chain?
                        // If not, there's no need to regenerate a new one.
                        if (IUITextField(child).inheritingStyles)
                            StyleProtoChain.initTextField(IUITextField(child));
                // Call this method on each non-visual StyleClient
                if (advanceStyleClientChildren != null)
                    for (var styleClient:Object in advanceStyleClientChildren)
                        var iAdvanceStyleClientChild:IAdvancedStyleClient = styleClient as IAdvancedStyleClient;
                        if (iAdvanceStyleClientChild && iAdvanceStyleClientChild.inheritingStyles != StyleProtoChain.STYLE_UNINITIALIZED)
                            iAdvanceStyleClientChild.regenerateStyleCache(recursive);
            //  Content management
             *  @private
            override public function get numElements():int
                if (_mxmlContent == null)
                    return 0;
                return _mxmlContent.length;
             *  @private
            override public function getElementAt(index:int):IVisualElement
                // check for RangeError:
                checkForRangeError(index);
                return _mxmlContent[index];
             *  @private
             *  Checks the range of index to make sure it's valid
            private function checkForRangeError(index:int, addingElement:Boolean = false):void
                // figure out the maximum allowable index
                var maxIndex:int = (_mxmlContent == null ? -1 : _mxmlContent.length - 1);
                // if adding an element, we allow an extra index at the end
                if (addingElement)
                    maxIndex++;
                if (index < 0 || index > maxIndex)
                    throw new RangeError(resourceManager.getString("components", "indexOutOfRange",
                                                                   [ index ]));
             * @private
            private function isAIMBlendMode(value:String):Boolean
                if (value == "colordodge" || value == "colorburn" || value == "exclusion" || value == "softlight" || value == "hue" || value == "saturatio

    FYI - This regression has been filed here: http://bugs.adobe.com/jira/browse/SDK-31989

  • Emails are not showing to receipt person in genuine format

    Whenever, I send an email to anyone from my Thunderbird to MS outlook. The receiving person does not get my email in proper format i.e. I had send an email to my client and got reply from client that, email is not in proper format. They gave me screenshot of my email and I found that, all the lines were breaking and the color which I had done in red of some line are not in Red color..
    It's major issue with the Thunderbird. I have tried a lot to resolve this issue but unfortunately, I am failed.
    Please help me to fix it.
    Thanks,
    Shailendra Singh Tomar

    I presume you are composing in html and using the Formatting Bar to set colour and formatting options.
    OR are you copy pasting text from a word processing package? This is not a good idea as not all formatting options available in Word processing software are available in the HTML.
    I also presume you are sending the email in both html and plain text.
    Are you using a standard universal font which the recipient is likely to have on their computer?
    some helpful links:
    * https://support.sendgrid.com/hc/en-us/articles/200184928-HTML-Rendering-The-Do-s-and-Dont-s-of-Cross-Platform-Email-Design
    * http://kb.mailchimp.com/campaigns/previews-and-tests/my-campaign-looks-bad-in-outlook
    * http://robcubbon.com/create-html-email-newsletters-outlook/
    * http://www.verticalresponse.com/blog/its-not-you-its-outlook-the-complete-guide-for-email-marketers/
    I would advise that if you creating complicated emails to send information that would be better in a eg: word document, then keep the email more simple and attach the document. Then the attached document can be read by the recipient using the correct software. So that they can read the data as you intended.
    Anyone can set up their computer to preferred viewing options, which can change the way the message is displayed. So they would need to find out what settings they are using which is changing the formatting.
    if they view using Plain Text then all formatting is stripped.
    Are they viewing using Original Html option or Rich Text?
    Are they using the wrong character encoding?
    This is not the place to try and work out what they are doing on a product not supported in this forum.
    Some helpful sites for Outlook:
    https://litmus.com/blog/a-guide-to-rendering-differences-in-microsoft-outlook-clients
    http://www.sitepoint.com/microsoft-breaks-html-email-rendering-in-outlook/

  • Forms 9i sizing metrics/ network bandwith

    I have a potential customer who are evaluating Forms 9i for their intranet. Their biggest concern is the size of the Forms deployed to the client compared to JSP pages and HTML/Javascript, the size of any java classes that would need to download to the client, on-going communication between the client and app server, and any Jinitiator programs that would need to be installed as all program applications are managed by local IT teams and not the end user.
    I need some ballpark facts and figures on the size of Forms and their relative % reduction in footprint in comparison with previous releases of Forms and JSPs.
    Also, I need to confirm what exactly other than a browser (the customer's corp standard is IE 5.0.1) has to preinstalled on an end user's PC.

    Hi Grant,
    Thank you for the info thus far.
    I've read through the capacity planning guide. It gives me a good indication of resource usage on the middle tier. However, what about the client?
    I understand from what you have stated that the JAR files are cached once regardless of the JVM used. Is this true for JVM supplied with Internet Explorer 5.01? Will this 'older' version of the browser even have a JVM modern enough to cope with the demands of forms 9i? Or will I need JInitiator?
    How big is Jinitiator if I do need to download it? 5mb, 10mb, 50mb?
    What about the one off JAR file that will get cached? I heard a ball park of 8mb.
    When I launch a medium form as a servlet, the capacity planning guide says approx 6.2mb per user. What is this 6.2mb? Is it an approximate .FMX file size, memory, or a combination of the two? Where is this 6.2mb allocated? Is this memory/swap space allocated on the servlet engine on the application server machine or is this 6.2mb downloaded/allocated on the client PC?
    What for a typical form is downloaded to the client when I launch a Forms based application as a servlet? Is the entire Forms file downloaded after which there is only minimal traffic going back and forth between the client and middle tier. Or does the servlet act like a screen scraper (i.e., Citrix) and the already cached classes are used to render everything and the extend of the network traffic limited to rendering differences in screen appearance?
    I understand that a Forms application is typically aimed for more complex interactive applications. However, if you have skills in both Web PLSQL (to render HTML and Javascript), Java and Forms, it would make sense to leverage those skills that would make you more productive. It is very quick to build a large number of screens in Forms - it would take longer coding from scratch with HTML/Javascript. The application we need to build is large in terms of the number of screens, but not too complex in terms of a demand for a high level of client side validation.
    If the trade off in performance is small it would be prudent to develop in Forms if you could get the application built and live in a quarter of the man days. If the trade off is going to be significant then it would be more prudent to go down the HTML/Javascript or JSP route.
    I hope this makes sense.
    Cheers,
    John

Maybe you are looking for

  • Moving photos to an external drive from iPhoto

    I'm exporting from macback pro iphoto library to an external drive (passport for mac) and getting message unable to create/volumes/My Passport for Mac.  I use this drive as my back up drive for the macbook.  Does this mean I need to get a new drive o

  • 802.11ac not recognized on Windows 8.1 Pro under Boot Camp.

    I just installed Windows 8.1 Pro under Boot Camp. The issue I am having is that the 802.11ac network is not recognized in Windows. Windows only recohnizes the 802.11n network. When I boot up OSX Yosemite, It works as usual. Anyone else have this prob

  • Itunes will not open on new computer

    I am getting an error message "iTunes has encountered a problem and needs to close" whenever I try to open iTunes or when I connect my iPod to my new computer. Help!

  • Folders in Icon view with overlapping icons (vertically)

    I have folders with icon view and the icons move too close together vertically, but not horizontally. This is new behavior. I am using 10.6.7 and have already tried trashing finder prefs. It doesn't seem to be related to the slider for icon size. or

  • Apps 11i Load Balancing

    Hi, I have load balancing between 2 Apps Tier, and all the Users are connected to Node2 only, none of the users are on Node1. Apps 11i and DB 10.2 Any suggestion please.... Thanks,