Renderer unscaledHeight in layoutContents

I'm creating my own renderer and wonder where the value for unscaledHeight (and width) comes from when updateDisplayList is called that in turn calls layoutContents for LabelItemRenderer.
I'm creating a grid item renderer (poor mans version of datagrid) for a mobile application. GridItemRenderer subclasses LabelItemRender. I've studied the code of LabelItemRenderer and IconItemRenderer and I think I understand the basics.
I'm currently using a DataGroup but could just as easily be using a List and my experimentation with list yields the same information. Why are the individual rows so tall? I set the font size smaller hoping that the vertical space each renderer would take would get smaller but it doesn't and I don't understand why.
In my measure() method, I've calculated the measuredHeight to be:
     var verticalPadding:Number = getStyle("paddingTop") + getStyle("paddingBottom");
     measuredHeight = getElementPreferredHeight(ld) + verticalPadding;
With the fontsize set to 16, the measured height comes back as 12. The top and bottom padding I have set to 0.
But when updateDisplayList is called which inturn calls layoutContents, unscaledHeight is set to 66. Even if the font size is set to 28, the unscaledHeight is set to 66. 66 is returned when I debug the application as an Andriod App (Droid 2) on the desktop. If I debug on an actual device like a Motorola Atrix, fontsize 16 yields a measuredHeight of 12 (just like the desktop debug) but the unscaledHeight is set to 44.
I've tried setting the gap in the vertical layout to 0 within the datagroup but that didn't work.
So how can I control that "row" height? What set of values is Flex looking at to come up with "66"?
Thanks!
Randy

I threw the following together using only spark components to hilight the issue. It is a mobile application. To reproduce, just debug the application on the desktop. I happen to use motorola droid 2 but the problem persists with other debug configurations. I'm using flex 4.5.1.
I don't know how else to more clearly describe the problem or how to more easily describe how to reproduce it. I await your explaination as to why the flex provided components seem to be ignoring the values in measure() or if it is working as designed, how one can override this behavior.
The below example shows 2 examples. The first example is a spark list using a spark iconitemrenderer. The 2nd example is using a spark datagroup using a spark labelitemrenderer. Just uncomment one and comment out the other to run the examples:
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
          xmlns:s="library://ns.adobe.com/flex/spark"
          xmlns:mx="library://ns.adobe.com/flex/mx"
          title="HomeView">
     <fx:Declarations>
          <!-- Place non-visual elements (e.g., services, value objects) here -->
     </fx:Declarations>
     <fx:Style>          
          .iconItemRendererMessageStyle {
               fontSize: 12;
     </fx:Style>     
     <!-- EXAMPLE OF List with IconItemRenderer      -->
<!--     
     <s:List id="taskList" height="100%" width="100%">
          <s:dataProvider>
               <mx:ArrayCollection>
                    <fx:String>one</fx:String>
                    <fx:String>two</fx:String>
                    <fx:String>three</fx:String>
                    <fx:String>four</fx:String>
               </mx:ArrayCollection>
          </s:dataProvider>          
          <s:itemRenderer>
               <fx:Component>
                    <s:IconItemRenderer labelFunction="getLabel" messageFunction="getMessage" fontSize="12">
                         <fx:Script>
                              <![CDATA[
                                   private function getLabel(item:Object):String {
                                        return "myLabel";
                                   private function getMessage(item:Object):String {
                                        return "myMessage";
                              ]]>
                         </fx:Script>
                    </s:IconItemRenderer>
               </fx:Component>
          </s:itemRenderer>
     </s:List>
-->     
     <!-- EXAMPLE OF DATAGROUP with LableItemRenderer -->
     <s:Scroller width="100%" height="100%">
          <s:DataGroup id="detailsDataGroup" height="100%" width="100%" >
               <s:layout>
                    <s:VerticalLayout useVirtualLayout="false" variableRowHeight="true" rowHeight="12" gap="0"/>
     <!--
          doesn't matter which vertical layout you use
                    <s:VerticalLayout useVirtualLayout="false" variableRowHeight="false"/>
    -->                    
               </s:layout>
               <s:dataProvider>
                    <mx:ArrayCollection>
                         <fx:String>one</fx:String>
                         <fx:String>two</fx:String>
                         <fx:String>three</fx:String>
                         <fx:String>four</fx:String>
                    </mx:ArrayCollection>
               </s:dataProvider>          
               <s:itemRenderer>
                    <fx:Component>
<!--
                         by setting the fontsize to 12 and padding to 0, when you put a break point in LableItemRenderer, the measure
                         method sets measured height to 9 (debugging on the desktop as a droid 2). measure is called 4 times.
                         layoutContents is called 8 times. twice for each record in array collection. The first time it is called for
                         each array element, the unscaledHeight is 0. The 2nd time it is called for each array element,
                         the unscaledHeight is 66 even though the measuredHeight is set to 9.
-->
                         <s:LabelItemRenderer fontSize="12" paddingTop="0" paddingBottom="0"/>
                    </fx:Component>
               </s:itemRenderer>
          </s:DataGroup>
     </s:Scroller>     
</s:View>

Similar Messages

  • What exactly are unscaledWidth and unscaledHeight in mobile item renderers?

    Hello,
    What exactly are unscaledWidth and unscaledHeight that get passed to the measure() method for a mobile item renderer?
    I am guessing renderers start at  "default" width and height (so unscaled) which get scaled based on DPI. Is that it?
    Thank you.

    measure() doesn't take any parameters so I assume you mean the layoutContents() and/or drawBackground() methods.
    If you look at the code in LabelItemRenderer (and MobileSkin) for updateDisplayList() you'll see that it just delegates the work to the drawBackground() and layoutContents() methods:
        override protected function updateDisplayList(unscaledWidth:Number,
                                                      unscaledHeight:Number):void
            // clear the graphics before calling super.updateDisplayList()
            graphics.clear();
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            drawBackground(unscaledWidth, unscaledHeight);
            layoutContents(unscaledWidth, unscaledHeight);
    This was done to make it a little bit easier for people to subclass LabelItemRenderer/IconItemRenderer by breaking the positioning logic apart from drawing the background visuals.  Check out the documentation for UIComponent.updateDisplayList and look around on Google for more information on how updateDisplayList fits into the Flex component life cycle.

  • Header renderer click handler not working

    Hi All
    Below is code of my header renderer which copied code from default headerrenderer and created new one, I added textinput with down arrow and close button,
    But when i click on close button, I am making filter box invisible, If i put a break point inside griditemrenderer1_mouseOutHandler() function then filter box becomes invisible, but while running in debug mode without break point filter box shows visible only,
    Please let me know where i am doing wrong.
    <?xml version="1.0" encoding="utf-8"?>
    <s:GridItemRenderer minWidth="21" minHeight="21"
                        xmlns:fx="http://ns.adobe.com/mxml/2009"
                        xmlns:s="library://ns.adobe.com/flex/spark"
                        xmlns:mx="library://ns.adobe.com/flex/mx"
                        mouseOver="griditemrenderer1_mouseOverHandler(event)"
                        creationComplete="griditemrenderer1_creationCompleteHandler(event)">
        <fx:Declarations>
            <s:Label id="labelDisplay"
                     verticalCenter="1"
                     textAlign="start"
                     fontWeight="bold"
                     verticalAlign="middle"
                     maxDisplayedLines="1"
                     showTruncationTip="true" />
        </fx:Declarations>
        <fx:Script>
            <![CDATA[
                import com.db.view.components.FilterPopup;
                import mx.managers.PopUpManager;
                import mx.controls.Menu;
                import mx.events.FlexEvent;
                import spark.components.gridClasses.IGridVisualElement;
                import mx.core.IVisualElement;
                import spark.components.DataGrid;
                import spark.components.GridColumnHeaderGroup;
                import spark.components.gridClasses.GridColumn;
                import spark.primitives.supportClasses.GraphicElement;
                // chrome color constants and variables
                private static const DEFAULT_COLOR_VALUE:uint = 0xCC;
                private static const DEFAULT_COLOR:uint = 0xCCCCCC;
                private static const DEFAULT_SYMBOL_COLOR:uint = 0x000000;
                private static var colorTransform:ColorTransform = new ColorTransform();
                 *  @private
                private function dispatchChangeEvent(type:String):void
                    if (hasEventListener(type))
                        dispatchEvent(new Event(type));
                //  maxDisplayedLines
                private var _maxDisplayedLines:int = 1;
                [Bindable("maxDisplayedLinesChanged")]
                [Inspectable(minValue="-1")]
                 *  The value of this property is used to initialize the
                 *  <code>maxDisplayedLines</code> property of this renderer's
                 *  <code>labelDisplay</code> element.
                 *  @copy spark.components.supportClasses.TextBase#maxDisplayedLines
                 *  @default 1
                 *  @langversion 3.0
                 *  @playerversion Flash 10
                 *  @playerversion AIR 1.5
                 *  @productversion Flex 4.5
                public function get maxDisplayedLines():int
                    return _maxDisplayedLines;
                 *  @private
                public function set maxDisplayedLines(value:int):void
                    if (value == _maxDisplayedLines)
                        return;
                    _maxDisplayedLines = value;
                    if (labelDisplay)
                        labelDisplay.maxDisplayedLines = value;
                    invalidateSize();
                    invalidateDisplayList();
                    dispatchChangeEvent("maxDisplayedLinesChanged");
                 *  @private
                 *  Create and add the sortIndicator to the sortIndicatorGroup and the
                 *  labelDisplay into the labelDisplayGroup.
                override public function prepare(hasBeenRecycled:Boolean):void
                    super.prepare(hasBeenRecycled);
                    if (labelDisplay && labelDisplayGroup && (labelDisplay.parent != labelDisplayGroup))
                        labelDisplayGroup.removeAllElements();
                        labelDisplayGroup.addElement(labelDisplay);
                private var chromeColorChanged:Boolean = false;
                private var colorized:Boolean = false;
                [Bindable]
                private var _filterVisibility:Boolean = false;
                 *  @private
                 *  Apply chromeColor style.
                override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
                    // Apply chrome color
                    if (chromeColorChanged)
                        var chromeColor:uint = getStyle("chromeColor");
                        if (chromeColor != DEFAULT_COLOR || colorized)
                            colorTransform.redOffset = ((chromeColor & (0xFF << 16)) >> 16) - DEFAULT_COLOR_VALUE;
                            colorTransform.greenOffset = ((chromeColor & (0xFF << 8)) >> 8) - DEFAULT_COLOR_VALUE;
                            colorTransform.blueOffset = (chromeColor & 0xFF) - DEFAULT_COLOR_VALUE;
                            colorTransform.alphaMultiplier = alpha;
                            transform.colorTransform = colorTransform;
                            var exclusions:Array = [labelDisplay];
                            // Apply inverse colorizing to exclusions
                            if (exclusions && exclusions.length > 0)
                                colorTransform.redOffset = -colorTransform.redOffset;
                                colorTransform.greenOffset = -colorTransform.greenOffset;
                                colorTransform.blueOffset = -colorTransform.blueOffset;
                                for (var i:int = 0; i < exclusions.length; i++)
                                    var exclusionObject:Object = exclusions[i];
                                    if (exclusionObject &&
                                        (exclusionObject is DisplayObject ||
                                            exclusionObject is GraphicElement))
                                        colorTransform.alphaMultiplier = exclusionObject.alpha;
                                        exclusionObject.transform.colorTransform = colorTransform;
                            colorized = true;
                        chromeColorChanged = false;
                    super.updateDisplayList(unscaledWidth, unscaledHeight);
                 *  @private
                override public function styleChanged(styleProp:String):void
                    var allStyles:Boolean = !styleProp || styleProp == "styleName";
                    super.styleChanged(styleProp);
                    if (allStyles || styleProp == "chromeColor")
                        chromeColorChanged = true;
                        invalidateDisplayList();
                protected function griditemrenderer1_mouseOverHandler(event:MouseEvent):void
                    _filterVisibility = true;
                protected function griditemrenderer1_mouseOutHandler():void
                    _filterVisibility = false;
                protected function griditemrenderer1_creationCompleteHandler(event:FlexEvent):void
                    trace(label);
                protected function textinput1_clickHandler(event:MouseEvent):void
                    var filterpopUp:FilterPopup = new FilterPopup();
                    filterpopUp.filterColumn = label;
                    PopUpManager.addPopUp(filterpopUp,this,false);
                    filterpopUp.addEventListener("test",testHandler);
                    filterpopUp.x = event.stageX - 50;
                    filterpopUp.y = event.stageY + 10;
                protected function testHandler(event:Event):void
                    owner.dispatchEvent(new Event("test"));
            ]]>
        </fx:Script>
        <s:VGroup left="7" right="7" top="5" bottom="5" gap="2" verticalAlign="bottom">
            <s:HGroup id="tiFilter" width="100%" gap="3" verticalAlign="middle" visible="{_filterVisibility}">
                <s:TextInput width="{labelDisplay.width + 20}" height="16" skinClass="com.db.view.skins.FilterTextInputSkin"
                              text="{label}" click="textinput1_clickHandler(event)"/>
                <s:HGroup id="closeBtn" width="15" height="15" click="griditemrenderer1_mouseOutHandler()"
                          buttonMode="true" useHandCursor="true" mouseChildren="false" keyDown="griditemrenderer1_mouseOutHandler()">
                    <s:Image source="@Embed('/assets/images/icon_close.gif')"/>
                </s:HGroup>
            </s:HGroup>
            <s:Group id="labelDisplayGroup" width="100%"/>
            <s:Group id="sortIndicatorGroup" includeInLayout="false" />
        </s:VGroup>
    </s:GridItemRenderer>

    Hi Sudhir,
    Thanks for posting your issue, Kindly find the code snnipet below to Add a new item in Custom list
    public override void ItemAdded(SPItemEventProperties properties)
        base.ItemAdded(properties);
        if (properties.List.Title
    == "Test")
    Get Properties
            string ABC=
    properties.ListItem["Column"].ToString();
            string DEF=
    properties.ListItem["Column"].ToString();
            DateTime XYZ=
    (DateTime)properties.ListItem["Start Column"];
            DateTime WSD=
    (DateTime)properties.ListItem["End Column"];
    Create sub site
            SPWeb web
    = properties.Site.AllWebs.Add(name.Replace(" ", string.Empty),
    name,
                description, 0, SPWebTemplate.WebTemplateSTS, false, false);
            web.Update();
    Also, browse the below mentioned URL to implementation your custom list step by step. and how you can debug your custom code.
    http://www.c-sharpcorner.com/UploadFile/40e97e/create-site-automatically-when-a-list-item-is-added/
    http://msdn.microsoft.com/en-us/library/ee231550.aspx
    I hope this is helpful to you, mark it as Helpful.
    If this works, Please mark it as Answered.
    Regards,
    Dharmendra Singh (MCPD-EA | MCTS)
    Blog : http://sharepoint-community.net/profile/DharmendraSingh

  • Can Line Chart charts base renderer by category

    I have done some Googling on this, but frankly I'm not sure
    what to even search for. Here is what my boss wants:
    A month by month chart of sales showing revenue trends as
    well as projections for then next two months. He wants a solid line
    for actual data in existing months which turns into a dotted line
    with projection data for future months.
    I have downloaded and played with the code from quietly
    scheming (
    http://www.quietlyscheming.com/blog/charts/dashed-lines/)
    but it seems to apply to the entire line.
    I'm not sure if the direction I should be taking is two
    different line renders based on the category axis, or a way to make
    the renderer smart enough to change the line at the appropriate
    time.
    Thoughts please?
    Thanks.

    I'm still playing with this solution, but for what it's worth
    this is what I am doing:
    I downloaded the source from quietly scheming for the dashed
    line renderer. (
    http://www.quietlyscheming.com/blog/charts/dashed-lines/)
    I changed the DashedLineSeries to a ProjectionLineSeries and
    changed the DashedLineRenderer to be ProjectionLineRenderer. Then
    in the renderer, I changed the updateDisplayList method to loop
    over the LineSeriesItems (_lineSegment.items array) and find where
    past meets future. Note: in doing this, I made an assumption that
    your xValue would be a date to use this series. I then used a
    combination of the drawPolyLine and drawDashedPolyLine methods from
    their respective graphics utility classes to draw the applicable
    portions of the line.
    Here is the contents of the
    ProjectionLineRenderer.updateDisplayList method as I have it now.
    override protected function
    updateDisplayList(unscaledWidth:Number,
    unscaledHeight:Number):void
    var stroke:IStroke = getStyle("lineStroke");
    var form:String = getStyle("form");
    var pattern:Array = getStyle("dashingPattern");
    pattern = (pattern == null) ? _pattern : pattern;
    graphics.clear();
    var current_date:Date = new Date();
    var beginning_of_month:Date = new
    Date(current_date.getMonth(),1,current_date.getFullYear());
    var projected_items:Array = new Array();
    // Loop over the lineseriesitems
    for(var i:int = 1;i<_lineSegment.items.length;i++)
    // Grab the items whose dates are in the future
    if(LineSeriesItem(_lineSegment.items
    ).xValue = beginning_of_month)
    // If this is the first item that is in the future, back
    // up and grab the previous one so our dotted has a starting
    point
    if(projected_items.length == 0 && i > 0)
    projected_items.push(_lineSegment.items[i-1]);
    // Add the future data points into the projected array
    projected_items.push(_lineSegment.items);
    // Draw the solid portion of the line. Notice the end point
    is the size of the entire array, minus the future points.
    // Adjusted by two because they overlap one point and the
    array starts at 0.
    GraphicsUtilities.drawPolyLine(graphics,_lineSegment.items,_lineSegment.start,_lineSegmen t.end,"x","y",stroke,form);
    // Draw the dashed portion with the projected_items array
    DashedGraphicUtilities.drawDashedPolyLine(graphics, stroke,
    pattern, projected_items);
    Technically, I am also assuming that the last data point is
    the current month, and therefore the projected one. Based on that,
    the date math is probably unnecessary, but maybe I'll change that
    later.

  • Flex SDK 3.4 Tree Item Renderer Root Folder displays Tooltip for Child

    I have a Flex Tree that uses a custom item renderer.  The item renderer extends Tree Item Renderer and I add my button in commit properties (since the data is dynamic) and I use update displaylist to move it to the right position.  I set the button to be visible on rollover and make the icon invisible. On rollout I reverse that logic.
    When I have my item renderer add the button, it causes only one problem and it seems to be under certain conditions:
    - Single root folder for the tree
    - Upon opening the tree, the root folder displays the tool tip for the last child in the tree
    Any idea why the tooltip comes up?
    public function AssetTreeItemRenderer ()
                super();
                addEventListener(MouseEvent.ROLL_OVER, onItemRollover);
                addEventListener(MouseEvent.ROLL_OUT, onItemRollout);
                addEventListener(ToolTipEvent.TOOL_TIP_SHOWN, toolTipShown);
                addEventListener(ToolTipEvent.TOOL_TIP_CREATE, onCreateToolTip);
            // OVERRIDEN FUNCTIONS
             * override createChildren
            override protected function commitProperties():void {
                super.commitProperties();
                if(data is IAsset) {
                    if(playBtn === null) {
                        playBtn = new Button();
                        playBtn.styleName = "previewPlayButton";
                        playBtn.toolTip = "Play";
                        playBtn.width = icon.width + 2;
                        playBtn.height = icon.height + 2;
                        playBtn.visible = false;
                        playBtn.addEventListener(MouseEvent.CLICK, onPlayBtnClick);
                        addChild(playBtn);
                } else {
                    if(playBtn !== null) {
                        removeChild(playBtn);
                        playBtn = null;
             * override updateDisplayList
             * @param Number unscaledWidth
             * @param Number unscaledHeight
            override protected function updateDisplayList(unscaledWidth:Number,
                                                          unscaledHeight:Number):void
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                //Move our play button to the correct place
                if(super.data && playBtn !== null)
                    playBtn.x = icon.x;
                    playBtn.y = icon.y;

    You are not clearing tooltip if data is not IAsset

  • Item renderer question

    I have an item renderer that adds a checkbox to my tree and
    checks it. My problem is that when i uncheck the box and scroll
    down the tree there are random boxes that are unchecked. Does
    anyone know how to get around this? Here is the renderer, and any
    help would be greatly appreciated!!
    package components
    import mx.core.Container;
    import mx.core.IDataRenderer;
    import mx.controls.CheckBox;
    import mx.controls.treeClasses.*;
    import mx.collections.*;
    import flash.xml.*;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import mx.controls.Alert;
    import mx.controls.listClasses.*;
    public class myTreeItemRenderer extends TreeItemRenderer
    private var nodeType:String;
    // myCheckBox: holds the CheckBox we are adding to the tree
    nodes
    protected var myCheckBox:CheckBox;
    // set the margin between the image we are adding, and the
    label
    private var cbToLabelMargin:Number = 2;
    // show default branch icon?
    private var showDefaultBranchIcon:Boolean = false;
    // show default leaf icon?
    private var showDefaultLeafIcon:Boolean = false;
    public function myTreeItemRenderer()
    super();
    // InteractiveObject variables.
    mouseEnabled = false;
    public function openBranch(evt:Event):void
    // get the TreeListData
    var myListData:TreeListData = TreeListData(this.listData);
    // get the selected node
    // var selectedNode:Object = myListData.node;
    var selectedNode:Object = myListData.item;
    var selectedNodeXML:XMLList = new XMLList(selectedNode);
    // get the tree that owns us
    var theTree:Tree = Tree(myListData.owner);
    // find out if the selected branch is already open
    //var isBranchOpen:Boolean = theTree.getIsOpen( selectedNode
    //mx.controls.Alert.show(selectedNode.toString());
    // if the selected branch is open, let's close it
    // and if it's closed, let's open it
    //var isBranchOpen:Boolean = isBranchOpen ? false : true;
    //theTree.setIsOpen( selectedNode, isBranchOpen, true, false
    if(theTree.id=="soTree")
    this.parentApplication.soCheckBoxChanged(evt,selectedNodeXML);
    //mx.controls.Alert.show(selectedNodeXML.attribute('id')+"
    "+selectedNodeXML.attribute('type')+" False");
    else if(theTree.id=="ntaTree")
    override protected function createChildren():void
    // create a new CheckBox() to hold the CheckBox we'll add to
    the tree item
    myCheckBox = new CheckBox();
    myCheckBox.setStyle( "verticalAlign", "middle" );
    myCheckBox.selected=true
    // and apply it to the tree item
    addChild(myCheckBox);
    // add the event listener to the whole tree item
    // this will let us click anywhere on the branch item to
    expose the children of this branch
    myCheckBox.addEventListener( MouseEvent.CLICK, openBranch );
    super.createChildren();
    override public function set data(value:Object):void
    if(value==null)
    return;
    else
    super.data = value;
    // get the tree that owns us
    var _tree:Tree = Tree(this.parent.parent);
    // if the current node is a branch node
    if(TreeListData(super.listData).hasChildren)
    // set styles...
    setStyle("color", 0x000000);
    setStyle("fontWeight", 'bold');
    // if we don't want to show the default branch icons, let's
    empty them
    if( !showDefaultBranchIcon )
    _tree.setStyle("folderClosedIcon", null);
    _tree.setStyle("folderOpenIcon", null);
    else
    // if we are in here, then the current node is a leaf node
    // set styles...
    setStyle("color", 0x000000);
    setStyle("fontWeight", 'normal');
    // if we don't want to show the default leaf icons, let's
    empty them
    if( !showDefaultLeafIcon )
    _tree.setStyle("defaultLeafIcon", null);
    override protected function
    updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    if(super.data)
    // if the current node is a branch
    if(TreeListData(super.listData).hasChildren)
    // get the current node and it's children as XMLList
    // var currentNodeXMLList:XMLList = new
    XMLList(TreeListData(super.listData).node);
    var currentNodeXMLList:XMLList = new
    XMLList(TreeListData(super.listData).item);
    nodeType= currentNodeXMLList.attribute('type');
    // get the number of children under the current node
    var numOfImmediateChildren:int =
    currentNodeXMLList[0].children().length();
    // set the image to be displayed in the branches
    //myImage.source = branchImage;
    // set the label text
    super.label.text = TreeListData(super.listData).text + "(" +
    numOfImmediateChildren + ")";
    else
    // if we are in here, then the current node is a leaf node
    //myImage.source = leafImage;
    // reset the position of the image to be before the label
    myCheckBox.x = super.label.x;
    // reset the position of the label to be after the image,
    plus give it a margin
    super.label.x = myCheckBox.x + 10 + cbToLabelMargin;
    }

    Hi,
    The links you have refered are really useful. Unfortunatelly, my environment is just flex sdk 3.
    So I have to find some other solution to finish this logic.
    Nith

  • Checkbox renderer

    Hi
    i have a data grid with one of its column having check box as
    renderer.
    check box is visible for only some rows based on a
    condition.and this condition is in a function which is called from
    updateDiaplayList() function.
    but,the checkbox some how appears twice only for the first
    row in the data grid.
    the condition function is
    public function checkDelPermission():void{
    var checkpermissioninstance:CheckPermission = new
    CheckPermission();
    checkpermissioninstance.permissions = [8];
    if(data.hasOwnProperty("permission")){
    checkpermissioninstance.permBit = data.permission;
    var delpermission:ArrayCollection =
    checkpermissioninstance.getPermissions()
    if(delpermission!=null){
    this.logmessage("==== "+data.id+" =========del permisison
    =="+ delpermission[0]);
    if(delpermission[0]==true){
    this.visible = true;
    else{
    this.visible = false;
    else
    this.visible = false;
    and updatedisplaylist() is
    override protected function
    updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void
    super.updateDisplayList(unscaledWidth,unscaledHeight);
    checkDelPermission();
    var n:int = numChildren;
    for (var i:int = 0; i < n; i++)
    var c:DisplayObject = getChildAt(i);
    if (!(c is TextField))
    c.x = (unscaledWidth - c.width) / 2;
    c.y = 0;
    the log message is printed twice for the first row data..and
    for all other rows in a datagrid,every thing appears as expected.
    and this happens randomly and not alwayss..
    Thanks
    chandana

    thank u very much..
    in set data method,i added the following
    override public function set data(value:Object):void{
    if(value != null){
    super.data = value;
    if((data.chkselected==null) ||
    (data.chkselected=="undefined")){
    data.chkselected = false;
    this.selected = data.chkselected;
    this works when i change checkbox selection in each row..
    i have another problem..can u please help me in solving this
    i have a checkbox as header renderer..
    On click, it is selectiing/deselecting only the checkboxes of
    rows which are visible and when i scroll the datagrid,other
    checkboxes are not selected/deselected
    thanks

  • Tree Cell Renderer

    is there anyone who knows or can point me to some explanation
    on how to place a background image inside the tree??
    i'm trying to place different images for in behind the text
    and icons for each state, open and close.
    any info would be appreciated.
    thanks...

    You will need to specify an itemRenderer for your tree.
    Probably the easiest thing to do is to create an Actionscript
    itemRenderer that extends the current TreeItemRenderer. In your
    renderer, you can override the updateDisplayList function to allow
    for a background image depending on your data.
    Here is a skeleton of what your itemRenderer might look like:
    package
    import mx.controls.treeClasses.*;
    import mx.collections.*;
    public class MyTreeItemRenderer extends TreeItemRenderer
    public function MyTreeItemRenderer()
    super();
    override protected function
    updateDisplayList(unscaledWidth:Number,
    unscaledHeight:Number):void
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    if(super.data)
    //Add your code here to add an image to the background of
    this item

  • Datgrid and Item Renderer scrollling problem

    Hello,
    I have a Datgrid containign item rendrer as follows :
    <mx:DataGrid  width="800" id="gridSecondaire" styleName="dataGridStyle" verticalScrollPolicy="off" headerHeight="30" >
              <mx:columns>
                   <mx:DataGridColumn rendererIsEditor="true" 
                                              editorDataField="result"
                                              itemRenderer="com.cdf.intra_cmmi.view.advancedTree.BodyDetailDocumentRenderer" />
              </mx:columns>
         </mx:DataGrid>
    The problem is I when i scroll the datagrid the  rows do not stay in the same position how to solve this please ?

    Here the item Renderer
    ===================ITEM RENDRER==========================
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="28" width="388" creationComplete="init(event)"  click="clickTexte(event);">
        <mx:Script>
        <![CDATA[
            [Embed(source="images/icon/tree_defaultLeafIcon.png")]
            public static const tree_defaultLeafIcon:Class;
            [Embed(source="images/icon/tree_pptLeafIcon.png")]
            public static const tree_pptLeafIcon:Class;
            [Embed(source="images/icon/tree_xlsLeafIcon.png")]
            public static const tree_xlsLeafIcon:Class;
            [Embed(source="images/icon/anglais.png")]
            private var anglaisIcon:Class;
            import com.sqli.intra_cmmi.constants.ConstantAssets;
            private function clickTexte(event:MouseEvent):void {
                    var fileReference:FileReference = new FileReference();
                    fileReference.download(new URLRequest(data.chemin_document));
            private function init(event:Event):void {
                import com.sqli.intra_cmmi.vo.DocumentVO;
                import mx.controls.Alert;
                import mx.collections.ArrayCollection;
                    var nom_document:String =data.nom_document as String;
                    var description_document:String = data.description_document as String;
                    var language_document:String =data.language_document as String;
                    var ext:String = data.ext as String;
                    var type:String = data.type_document as String;
                    var chemin_document:String = data.chemin_document as String;
                    switch (type)
                            case "Modèle":
                                imageTypeDoc.source = ConstantAssets.modele;
                                break;
                            case "Guide":
                                imageTypeDoc.source = ConstantAssets.guide;
                                break;
                            case "Document":
                                imageTypeDoc.source = ConstantAssets.document;
                                break;
                            case "Outils":
                                imageTypeDoc.source = ConstantAssets.outils;
                                break;
                            case "Check-liste":
                                imageTypeDoc.source = ConstantAssets.checklist;
                                break;
                            default:
                                imageTypeDoc.source = ConstantAssets.document;
                    nom.text=nom_document+' ('+ext+')';
                    if(language_document!='1036'){
                        imageAnglais.source=anglaisIcon;
                    if(description_document!=""){
                        imageDescription.source=anglaisIcon;
        ]]>
    </mx:Script>
        <mx:Image id="imageTypeDoc" x="5" y="5" height="15" width="15"   />
        <mx:Text x="23" y="3" width="326" id="nom"/>
        <mx:Image x="351" y="5" height="15" width="15" id="imageAnglais"/>
        <mx:Image x="370" y="5" height="15" width="15" id="imageDescription"/>
    </mx:Canvas>
    ======================Main.MXLM  (Blue Code part) ===============================
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
        width="830"  creationComplete="init()">
        <mx:Script>
            <![CDATA[
                import com.sqli.intra_cmmi.services.MainService;
                import mx.rpc.events.FaultEvent;
                import mx.rpc.events.ResultEvent;
                import com.sqli.intra_cmmi.controller.ProduitController;
                import com.sqli.intra_cmmi.services.VerticalMenuService;
                //import com.sqli.intra_cmmi.services.MainService;
                import com.sqli.intra_cmmi.vo.ProduitVO;
                import mx.controls.Alert;
                public var objectList : Array = new Array();
                public function init():void
                    myProc.listeDomaineProcessus();
                    if(VerticalMenuService.getInstance().produitVerticalMenu.getChildren().length > 0)
                        // On positionne l'accordion des produits sous l'accordion commun
                        VerticalMenuService.getInstance().produitVerticalMenu.y = VerticalMenuService.getInstance().verticalMenu.height - 49;
                        MainService.getInstance().lefter.addChild(VerticalMenuService.getInstance().produitVertic alMenu);
                    var id:String;
                    id=ProduitController.getInstance().currentProduitId;
                    if(id!=null)
                        myProd.getProduitDescription(id);
                        myProd.getDocumentPrincipauxByProduit(id,1);
                        myProd.getDocumentSecondaireByProduit(id,0);
                        myProd.getRolesProduit(id);
                        myProd.getAjustementProduitByID(id);
                private function getDataListener_listeDomaineProcessus(event:ResultEvent):void
                    //refPhase= new ArrayCollection();
                    this.objectList = event.result as Array;
                    // Peupler l'accordion
                    ProduitController.getInstance().populateVerticalMenu(this.objectList);
                private function getDataListener_getDocumentSecondaireByProduit(event:ResultEvent):void
                    var obje:Array = event.result as Array;
                    if(obje.length>0)
                        gridSecondaire.dataProvider = event.result as Array;
                        gridSecondaire.rowHeight = 33;                   
                        gridSecondaire.height = obje.length*33+30;
                        var maximumHeight : int = 228;
                        if ( gridSecondaire.height > maximumHeight){
                          gridSecondaire.verticalScrollPolicy = "on";
                          gridSecondaire.height = maximumHeight;                   
                    else
                        gridSecondaire.visible=false;
                        gridSecondaire.includeInLayout=false;
                override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
                    super.updateDisplayList(unscaledWidth, unscaledHeight);
                    // Peupler l'accordion (rafraichissement lors du passage d'une rubrique à une autre)
                    ProduitController.getInstance().populateVerticalMenu(this.objectList);
                private function getDataListener_getProduitDescription(event:ResultEvent):void{
                        description.title=ProduitVO(event.result).nom_produit;
                        idPanelDescription.htmlText=ProduitVO(event.result).description_produit;
                private function faultListener(event:FaultEvent):void {
                        Alert.show(event.fault.message, "Error");
            ]]>
        </mx:Script>
        <mx:VBox verticalGap="20"  horizontalCenter="0" top="10" bottom="10">       
        <mx:Panel width="800" height="121" id="description"  styleName="stylePanel"  >
            <mx:Label paddingLeft="5"  paddingRight="5" paddingTop="40"  width="100%" id="idPanelDescription"/>
        </mx:Panel>
       <mx:DataGrid  width="800" id="gridSecondaire" styleName="dataGridStyle" verticalScrollPolicy="off" headerHeight="30"  >
            <mx:columns>
                <mx:DataGridColumn rendererIsEditor="true"  editorDataField="result"
                 itemRenderer="com.sqli.intra_cmmi.view.advancedTree.BodyDetailDocumentRenderer"
                  headerText="Documents secondaires"/>
                <mx:DataGridColumn rendererIsEditor="true"  editorDataField="result" dataField="livrable_document" headerText="Livrables" width="100"/>    
            </mx:columns>
        </mx:DataGrid>
        </mx:VBox>
        <mx:RemoteObject id="myProc" destination="zend" source="ProcessusService" showBusyCursor="true" fault="faultListener(event)">
            <mx:method name="listeDomaineProcessus" result="getDataListener_listeDomaineProcessus(event);" />
        </mx:RemoteObject>
        <mx:RemoteObject id="myProd" destination="zend" source="ProduitsService" showBusyCursor="true" fault="faultListener(event)">
            <mx:method name="getRolesProduit" result="getDataListener_getRolesProduit(event);" />
            <mx:method name="getDocumentPrincipauxByProduit" result="getDataListener_getDocumentPrincipauxByProduit(event);" />
            <mx:method name="getDocumentSecondaireByProduit" result="getDataListener_getDocumentSecondaireByProduit(event);" />
            <mx:method name="getAjustementProduitByID" result="getDataListener_getAjustementProduit(event);" />
            <mx:method name="getProduitDescription" result="getDataListener_getProduitDescription(event);" />
        </mx:RemoteObject>
    </mx:Canvas>

  • Load tree using renderer

    Hi,
    My current application contains a <mx:tree>
    his dataprovider is an xml file loaded from a httpservice
    this tree have a renderer extends TreeItemRenderer that allow me to add checkbox when node doesn't have childs.
    When user check or uncheck a node, i put some information in a datagrid.
    This datagrid is finally export to a file.
    Now the question is how can i initialize the tree using the two file (the original and this saved) ?
    See below my renderer code :
    package manageCheckBox
    import flash.events.Event;
    import flash.events.MouseEvent;
    import mx.collections.IViewCursor;
    import mx.controls.Alert;
    import mx.controls.CheckBox;
    import mx.controls.DataGrid;
    import mx.controls.treeClasses.*;
    import mx.controls.treeClasses.TreeItemRenderer;
    public class DisplayCheckBox extends TreeItemRenderer{
    public var chk:CheckBox;
    public var itemXml:XML; // original xml file
    public var dg:DataGrid; // datagrid to put information on
    public var myFields:XML; // saving file
    public function DisplayCheckBox(){
    super();
    mouseEnabled = false;
    override public function set data(value:Object):void{
    if(value != null){
    super.data = value;
    this.itemXml = XML(value);
    if(this.itemXml.@checked == "1"){
    this.chk.selected = true;
    }else{
    this.chk.selected = false;
    override protected function createChildren():void{
    super.createChildren();
    chk = new CheckBox();
    chk.addEventListener(MouseEvent.CLICK, handleChkClick);
    addChild(chk);
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
    super.updateDisplayList(unscaledWidth,unscaledHeight);
    if(super.data){
    var tld:TreeListData = TreeListData(super.listData);
    if(tld.hasChildren){
    this.chk.visible = false;
    }else{
    this.chk.visible = true;
    if(chk.visible){
    this.chk.x = super.label.x
    super.label.x = this.chk.x + 17;
    this.chk.y = super.label.y+8;
    private function handleChkClick(evt:MouseEvent):void{
    if(this.chk.selected){
    this.itemXml.@checked = "1";
    // put information on the datagrid
    dg.dataProvider.addItem(
    "col1": this.itemXml.@label,
    "col2": this.itemXml.@label,
    "col3": this.itemXml.@resourceId
    }else{
    //this.checked = false;
    this.itemXml.@checked = "0";
    var vObject:Object = dg.dataProvider ;
    var cursor:IViewCursor=vObject.createCursor();
    while( !cursor.afterLast )
    if(cursor.current.col1 == this.itemXml.@label) {
    cursor.remove() ;
    cursor.moveNext();
    Thanks in advanc for your reply,
    Regards,
    HadanMarv

    A) The tree region is not refresh-enabled. If you want it to act on any change in session state the page will always have to be submitted/reloaded to reflect those changes.
    B) Providing a where-clause to the tree query is not done. There is nothing to achieve by doing so because of the nature of the query: the connect by occurs before the where clause filtering. You will break any and all metadata for the whole tree construct to use.
    Consider nodes which are from a different department than the one you filter on: how would the tree have to be constructed? What if a parent node misses because of that? How would it's child nodes match up? Worse: what if you select a dept which does not belong to the root node? The root node would not be displayed and subsequently no child nodes would be shown. Simply because the generated meta-data does not match up.
    Eg if "BLAKE" would be "SALES" and "JAMES" would be "ACCOUNTING", and you filter on dept = "ACCOUNTING", then "BLAKE" would be gone... But "JAMES" too. Just to illustrate how the represented data would be wrong.
    There is a reason the tree query requires the addition of the LEVEL pseudo-column, as this is used to iterate over the data to provide to the tree. You can see how horribly a where clause breaks that mechanism by simply running the query in sql developer or the sql workshop.
    tldr; Don't.

  • How do I use my third computer with cloud. I am rendering a project in Avid Media composer

    How do I get my third computer to work with when I am rendering Avid project on the other two computers computers

    Hi,
    Running creative cloud on third machine will prompt you for the deactivation from last 2 machines. As per EULA for Creative cloud you can only install and work on 2 machines only, be it MAC-MAC, MAC-windows and windows-windows.
    working on third machine without deactivation from previous machines is not possible.
    Hope this helps.
    Thanks
    Kapil Malik

  • Is that a webkit rendering issue in Safari 5.1?

    I add my voice to rendering issues encountered in Safari 5.1, here they are:
    1) Fonts look pixelated on some websites. Here's an example drawn from weebly.
    The font used here is OFL Sorts Mill Goudy, so I guess there must be a font rendering engine in weebly that allows non web safe fonts to be displayed properly. That works fine in Firefox 5 & 6, and until recently on Safari 5. Chrome 12 has exactly the same issue as Safari 5.1, so it could be a general rendering issue in webkit.
    2) Videos on Vimeo show now a black rectangle instead of the video.
    3) The "Insert image" feature in this forum takes forever to load, displaying a white rectangle during several seconds. Same issue with the Evernote clip bookmarklet.
    Hope these issues will be fixed soon, any help is appreciated if something can be changed in Safari settings.
    Note: resetting Safari (including cleaning cache) doesn't solve the described problems. I'm running Snow Leopard 10.6.8 on Mac Pro Quad 2.8 Ghz.

    Thanks for helping diagnose this.
    However, my testing indicates that this is not a bug with border-collapse: collapse. Here is why:
    If I change the value of border-collapse to "separate" and add "border-spacing: 0", the bug remains. To try this, request http://www.panlex.org/cgi-bin/plxu28-bug2.cgi .
    If I leave the value of border-collapse unchanged but change the button elements in the cells to plain text, the bug disappears. To try this, request http://www.panlex.org/cgi-bin/plxu28-bug1.cgi .
    On the basis of this testing, it would seem to me that the bug is dependent on the button elements and independent of the border-collapse CSS attribute.
    This doesn't explain, however, why you have found border-collapse: collapse producing slow results with other large tables and it doesn't do so with my table in http://www.panlex.org/cgi-bin/plxu28-bug1.cgi . It also doesn't explain why you saw the bug disappear when you changed border-collapse on my page but I didn't see it disappear.
    Any further diagnostic help would be welcome.

  • Problem when rendering a report in BI Publisher deployed on Apache Tomcat

    Hello for all.
    First, I am going to tell you technical specifications about the software where I have deployed BI Publisher:
    1. OS: Windows XP SP3
    2. JDK and JRE: 1.6.0_24
    3. Apache Tomcat: 5.5.33 (Set JVM Max Memory in 768MB)
    4. BI Publisher EE: 10.1.3.4.1
    I have deployed BI Publisher on Apache Tomcat without any problem, I uploaded Report files (both XDO and RTF), and I can see the reports in XML output format, but when I try to see the reports rendered by using the rtf file I have configured, BI Publisher shows me an Error; I checked the Apache Tomcat log and the following error is reported:
    [042511_033325984][oracle.apps.xdo.common.xml.XSLTWrapper][ERROR] XSL error:
    <Line 3, Column 123>: XML-22002: (Fatal Error) Error while processing include XSL file (rtf2xsl://http_//localhost:8080/xmlpserver/SubTemplates/sub-template-parameters.rtf?sid=1&eaf=3).
    <Line 296, Column 18>: XML-22000: (Error) Error while parsing XSL file (null).
    [042511_033325984][oracle.apps.xdo.template.FOProcessor][ERROR] End Memory: max=247MB, total=44MB, free=15MB
    [042511_033325984][][EXCEPTION] java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at oracle.apps.xdo.common.xml.XSLT10gR1.invokeNewXSLStylesheet(Unknown Source)
         at oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
         at oracle.apps.xdo.common.xml.XSLTWrapper.transform(Unknown Source)
         at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
         at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
         at oracle.apps.xdo.template.FOProcessor.createFO(Unknown Source)
         at oracle.apps.xdo.template.FOProcessor.generate(Unknown Source)
         at oracle.apps.xdo.servlet.RTFCoreProcessor.transform(RTFCoreProcessor.java:91)
         at oracle.apps.xdo.servlet.CoreProcessor.process(CoreProcessor.java:276)
         at oracle.apps.xdo.servlet.CoreProcessor.generateDocument(CoreProcessor.java:82)
         at oracle.apps.xdo.servlet.ReportImpl.renderBodyHTTP(ReportImpl.java:552)
         at oracle.apps.xdo.servlet.ReportImpl.renderReportBodyHTTP(ReportImpl.java:255)
         at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:270)
         at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:250)
         at oracle.apps.xdo.servlet.XDOServlet.doGet(XDOServlet.java:178)
         at oracle.apps.xdo.servlet.XDOServlet.doPost(XDOServlet.java:201)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at oracle.apps.xdo.servlet.security.SecurityFilter.doFilter(SecurityFilter.java:94)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
         at java.lang.Thread.run(Unknown Source)
    Caused by: java.util.EmptyStackException
         at oracle.xdo.parser.v2.XSLProcessor.reportException(XSLProcessor.java:806)
         at oracle.xdo.parser.v2.XSLProcessor.newXSLStylesheet(XSLProcessor.java:571)
         ... 39 more
    [042511_033325984][][EXCEPTION] java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
         at java.lang.reflect.Method.invoke(Unknown Source)
         at oracle.apps.xdo.common.xml.XSLT10gR1.invokeNewXSLStylesheet(Unknown Source)
         at oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
         at oracle.apps.xdo.common.xml.XSLTWrapper.transform(Unknown Source)
         at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
         at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
         at oracle.apps.xdo.template.FOProcessor.createFO(Unknown Source)
         at oracle.apps.xdo.template.FOProcessor.generate(Unknown Source)
         at oracle.apps.xdo.servlet.RTFCoreProcessor.transform(RTFCoreProcessor.java:91)
         at oracle.apps.xdo.servlet.CoreProcessor.process(CoreProcessor.java:276)
         at oracle.apps.xdo.servlet.CoreProcessor.generateDocument(CoreProcessor.java:82)
         at oracle.apps.xdo.servlet.ReportImpl.renderBodyHTTP(ReportImpl.java:552)
         at oracle.apps.xdo.servlet.ReportImpl.renderReportBodyHTTP(ReportImpl.java:255)
         at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:270)
         at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:250)
         at oracle.apps.xdo.servlet.XDOServlet.doGet(XDOServlet.java:178)
         at oracle.apps.xdo.servlet.XDOServlet.doPost(XDOServlet.java:201)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at oracle.apps.xdo.servlet.security.SecurityFilter.doFilter(SecurityFilter.java:94)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
         at java.lang.Thread.run(Unknown Source)
    Caused by: java.util.EmptyStackException
         at oracle.xdo.parser.v2.XSLProcessor.reportException(XSLProcessor.java:806)
         at oracle.xdo.parser.v2.XSLProcessor.newXSLStylesheet(XSLProcessor.java:571)
         ... 39 more
    I checked that the url http://localhost:8080/xmlpserver/SubTemplates/sub-template-parameters.rtf would be accesible via Internet Explorer, and It is accesible.
    I am glad if you can tell me what could be the cause of the error.
    Thanks.

    Finally, I stop working in the implementation of BIP over Apache Tomcat; I installed OC4J 10.1.3.5.0 (standalone installation) and I deployed BIP on it.
    It seems the error I wrote in last post has been fixed, but actually I am obtaining the following error with the deployment on OC4J:
    [042711_055706687][][ERROR] Namespace 'http://www.oracle.com/XSL/Transform/java/
    oracle.com.xmlpublisher.reports.BIPExtension' failed Secure Java Extensions chec
    k.
    [042711_055706687][oracle.apps.xdo.template.FOProcessor][ERROR] End Memory: max=
    494MB, total=46MB, free=21MB
    [042711_055706687][][EXCEPTION] oracle.apps.xdo.XDOException: XSLT10gR1: Failed
    Secure Java Extensions check.
    at oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
    at oracle.apps.xdo.common.xml.XSLTWrapper.transform(Unknown Source)
    at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
    at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
    at oracle.apps.xdo.template.FOProcessor.createFO(Unknown Source)
    at oracle.apps.xdo.template.FOProcessor.generate(Unknown Source)
    at oracle.apps.xdo.servlet.RTFCoreProcessor.transform(RTFCoreProcessor.j
    ava:91)
    at oracle.apps.xdo.servlet.CoreProcessor.process(CoreProcessor.java:276)
    at oracle.apps.xdo.servlet.CoreProcessor.generateDocument(CoreProcessor.
    java:82)
    at oracle.apps.xdo.servlet.ReportImpl.renderBodyHTTP(ReportImpl.java:552
    at oracle.apps.xdo.servlet.ReportImpl.renderReportBodyHTTP(ReportImpl.ja
    va:255)
    at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:270)
    at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:250)
    at oracle.apps.xdo.servlet.XDOServlet.doGet(XDOServlet.java:178)
    at oracle.apps.xdo.servlet.XDOServlet.doPost(XDOServlet.java:201)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterC
    hain.java:64)
    at oracle.apps.xdo.servlet.security.SecurityFilter.doFilter(SecurityFilt
    er.java:94)
    at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletReque
    stDispatcher.java:644)
    at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(Ser
    vletRequestDispatcher.java:391)
    at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequ
    estHandler.java:908)
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpReques
    tHandler.java:458)
    at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpReque
    stHandler.java:226)
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
    va:127)
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
    va:116)
    at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSo
    cketReadHandler.java:260)
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(Relea
    sableResourcePooledExecutor.java:303)
    at java.lang.Thread.run(Thread.java:662)
    [042711_055706687][][EXCEPTION] oracle.apps.xdo.XDOException: XSLT10gR1: Failed
    Secure Java Extensions check.
    at oracle.apps.xdo.common.xml.XSLT10gR1.transform(Unknown Source)
    at oracle.apps.xdo.common.xml.XSLTWrapper.transform(Unknown Source)
    at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
    at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(Unknown Source)
    at oracle.apps.xdo.template.FOProcessor.createFO(Unknown Source)
    at oracle.apps.xdo.template.FOProcessor.generate(Unknown Source)
    at oracle.apps.xdo.servlet.RTFCoreProcessor.transform(RTFCoreProcessor.j
    ava:91)
    at oracle.apps.xdo.servlet.CoreProcessor.process(CoreProcessor.java:276)
    at oracle.apps.xdo.servlet.CoreProcessor.generateDocument(CoreProcessor.
    java:82)
    at oracle.apps.xdo.servlet.ReportImpl.renderBodyHTTP(ReportImpl.java:552
    at oracle.apps.xdo.servlet.ReportImpl.renderReportBodyHTTP(ReportImpl.ja
    va:255)
    at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:270)
    at oracle.apps.xdo.servlet.XDOServlet.writeReport(XDOServlet.java:250)
    at oracle.apps.xdo.servlet.XDOServlet.doGet(XDOServlet.java:178)
    at oracle.apps.xdo.servlet.XDOServlet.doPost(XDOServlet.java:201)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterC
    hain.java:64)
    at oracle.apps.xdo.servlet.security.SecurityFilter.doFilter(SecurityFilt
    er.java:94)
    at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletReque
    stDispatcher.java:644)
    at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(Ser
    vletRequestDispatcher.java:391)
    at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequ
    estHandler.java:908)
    at com.evermind.server.http.HttpRequestHandler.processRequest(HttpReques
    tHandler.java:458)
    at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpReque
    stHandler.java:226)
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
    va:127)
    at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.ja
    va:116)
    at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSo
    cketReadHandler.java:260)
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(Relea
    sableResourcePooledExecutor.java:303)
    at java.lang.Thread.run(Thread.java:662)
    May you know the cause of the error above?
    Thanks,

  • Rendering problem in output of Pages 5.1

    Has anyone else seen a print rendering problem when trying to print a table in Pages 5.1?
    All my text in tables is jagged and lower-resolution than other text:
    (Printed from Pages 5.1 (1769) on a HP Color LaserJet CP2025 from a retina MacBook Pro original model running Mavericks 10.9.1.)
    To see the problem, you must look at the full size image. Right-click to open it in a new tab.
    The type is set to Helvetica 12 pt black.
    The borders are set to 0.5 pt black. The top two lines have a border on all sides.
    The top line's border is nearly invisible; on the full size image you should see a faint blueish line.
    The middle line's box box is supposed to be&#8232; a full box, but it is missing two sides. But at least this hairline renders properly.
    The pdf of the same file looks fine on screen, even at high magnification. The problem only shows up in print.
    The same problem exists in Numbers (where I first experienced it):
    https://discussions.apple.com/message/24695801#24695801

    I see you followed Jerry's advice to post over here, and haven't got any responces, so I'll at least try to get a little more information into the discussion.
    Since the document prints to pdf correctly, but not to the actual printer, it seems likely that it is a print driver issue. In the Numbers discussion on the issue, the original person with the issue was using a HP printer with a postscript driver. Since the HP support site was not very clear about whether a driver for that printer on Mavericks even existed, and the recommendation for a generic driver was for a PCL driver, not postscript, I suspect that they were not using a recommended configuration. It would probably be helpful to know the details about your printer and print driver.
    Do you have access to more than one printer to test this on?
    The new versions of Numbers and Pages are doing something strange in terms of how they copy tables to the system clipboard; the pdf version is no longer available, only bitmap images. Print to pdf, however seems to still get the pdf data. I don't think this should have anything to do with the data getting to the print driver, but it does seem consistent with your results.

  • JSF Pages are not rendering correctly when  loaded using Non JSF actions

    Hi All,
    This problem is irritating me and I am posting the same query for the third time here.
    When I come from non jsf actions such as page submitting using Javascript, clicking anchor link, clicking normal Html submit button and so on my page is not rendering correctlly .
    In other words, My first GET method/Post method works perfectly for the first time when the page is loaded.
    But when we try to access the page for the second time, although logical work is perfect in bean, I am getting same old page.
    How to resolve this issue?
    or
    Is this Bug of Sun's Implementation of JSF Framework.
    Thanks,
    Sudhakar

    Hi Sudhakar,
    There is a discussion about refreshing a page, Take a look at the below thread
    http://swforum.sun.com/jive/thread.jspa?threadID=55660
    Hope this what you are looking for
    MJ

Maybe you are looking for