Keeping Animation States on Item renderers when scrolling TileList

Hey all,
            so I have a simple custom item renderer (CustomRenderer.as) which has a FlexShape that gets tweened by TweenLite depending on the percent value in the data value object (CustomRendererData.as). So in the example below I have 8 items
|    DATA ITEM 1     |    DATA ITEM 2     |      DATA ITEM 3     |     DATA ITEM 4     |
|    DATA ITEM 5     |    DATA ITEM 6     |      DATA ITEM 7     |     DATA ITEM 8    |
The issue I run into is when i scroll (vertically) the FlexShape starts to Tween from the previous data values.
For example DATA ITEM 1 is has tweened upto 80% and DATA ITEM 2 has tweened up to 20% . DATAITEM 2 appears to be at 80% first and then Tweens to 20% . You can try the sample below. Once you clicck on the Load Data button the animations will begin. When you use the scroll bar you can see the animation states being swapped to the previous data renderer items and then resuming their orignal values
package
     [Bindable]
     public class CustomRendererData
          public var percent:int=0;
          public var title:String;
          public var color:uint;
          public var time:int;
          public var isUploading:Boolean = false;          
          public function CustomRendererData(){}
package
     import flash.geom.ColorTransform;
     import gs.TweenLite;
     import mx.controls.Label;
     import mx.controls.listClasses.IListItemRenderer;
     import mx.core.FlexShape;
     import mx.core.IDataRenderer;
     import mx.core.UIComponent;
     public class CustomRenderer extends UIComponent implements IListItemRenderer, IDataRenderer
          protected var _progressBar:FlexShape;
          protected var _data:CustomRendererData;
          protected var _percentValue:int;
          protected var _percentChanged:Boolean;
          protected var _progressBarTween:TweenLite;
          protected var _title:Label;
          protected var _titleValue:String;
          protected var _titleChanged:Boolean;
          protected var _colorValue:uint;
          protected var _colorChanged:Boolean;
          protected var _uploadingChanged:Boolean;          
          protected var _isUploading:Boolean;          
          public function CustomRenderer()
               super();
          override protected function createChildren():void
               super.createChildren();
               if (!_progressBar)
                    _progressBar=new FlexShape();                    
                    _progressBar.x=_progressBar.y=4;
                    __drawProgressBar();
                    addChild(_progressBar);
               if (!_title)
                    _title=new Label();
                    _title.setActualSize(100,22);                    
                    _title.x=4;
                    _title.y=120;     
                    _title.text ="data";
                    _title.setStyle("color" , 0xffffff);               
                    addChild(_title);
               this.graphics.beginFill(0x333333, 1);
               this.graphics.drawRect(0, 0, 124, 148);
               this.graphics.endFill();
               _percentChanged = false;
               _titleChanged = false;
               _uploadingChanged = false;
               _isUploading = false;
               _colorChanged = false;
               _percentValue = 0;
          private function __drawProgressBar():void
               _progressBar.graphics.beginFill(0xffffff, 1);
               _progressBar.graphics.drawRect(0, 0, 1, 87);
               _progressBar.graphics.endFill();
          //_progressBar.width=0;
          override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
               super.updateDisplayList(unscaledWidth, unscaledHeight);
          override protected function commitProperties():void
               super.commitProperties();
               if (_data)
                    //if(_uploadingChanged)
                         //_uploadingChanged = false;
                         if(_isUploading)
                              if(_percentChanged)
                                   _percentChanged = false;
                                   if(_progressBarTween)
                                        TweenLite.removeTween(_progressBarTween);                                        
                                   const newWidth:int = Math.round((_data.percent * 116) / 100);
                                   //_progressBar.width = newWidth;
                                   _progressBarTween=TweenLite.to(_progressBar, _data.time, {width:newWidth});                                   
                         else
                    if(_titleChanged)
                         _titleChanged = false;
                         _title.text = _titleValue;
                    if(_colorChanged)
                         _colorChanged = false;
                         var colorTransform:ColorTransform;
                         colorTransform=_progressBar.transform.colorTransform;
                         colorTransform.color = _data.color;
                         _progressBar.transform.colorTransform=colorTransform;     
          public function set data(obj:Object):void
               _data=obj as CustomRendererData;
               if(_data)
                    if(_data.percent != _percentValue)
                         _percentValue = _data.percent;                         
                         _percentChanged = true;
                    if(_titleValue != _data.title)
                         _titleValue = _data.title;                         
                         _titleChanged = true;
                    if(_colorValue != _data.color)
                         _colorValue = _data.color;                         
                         _colorChanged = true;
                    if(_isUploading != _data.isUploading)
                         _isUploading = _data.isUploading;                         
                         _uploadingChanged = true;
               invalidateProperties();
               invalidateDisplayList();
          public function get data():Object
               return _data;
          override protected function measure():void
               super.measure();
               measuredWidth=124;
               measuredHeight=148;
               measuredMinWidth=124;
               measuredMinHeight=148;
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                    layout="vertical"
                    xmlns:local="*" applicationComplete="init();" height="375">
     <mx:Script>
          <![CDATA[
               import mx.collections.ArrayCollection;
               public var data1:CustomRendererData = new CustomRendererData();
               public var data2:CustomRendererData = new CustomRendererData();
               public var data3:CustomRendererData = new CustomRendererData();
               public var data4:CustomRendererData = new CustomRendererData();               
               public var data5:CustomRendererData = new CustomRendererData();               
               public var data6:CustomRendererData = new CustomRendererData();               
               public var data7:CustomRendererData = new CustomRendererData();               
               public var data8:CustomRendererData = new CustomRendererData();               
               [Bindable]
               public var coll:ArrayCollection=new ArrayCollection([data1, data2, data3, data4, data5, data6, data7, data8]);
               private var _changePercentTimer:Timer;
               private function init():void
                    data1.title ="data1";
                    data1.color = 0xff0000;
                    data1.time = 8;
                    data1.isUploading = true;
                    data2.title ="data2";
                    data2.color = 0x00ff00;
                    data2.time = 11;
                    data2.isUploading = true;
                    data3.title ="data3";
                    data3.color = 0x0000ff;
                    data3.time = 9;
                    data3.isUploading = true;
                    data4.title ="data4";
                    data4.color = 0x00ffff;
                    data4.time = 13;
                    data4.isUploading = true;
                    data5.title ="data5";
                    data5.color = 0xffff00;
                    data5.time = 12;
                    data5.isUploading = true;
                    data6.title ="data6";
                    data6.color = 0xff00ff;
                    data6.time = 18;
                    data6.isUploading = true;
                    data7.title ="data7";
                    data7.color = 0xfff0ff;
                    data7.time = 15;
                    data7.isUploading = true;
                    data8.title ="data8";
                    data8.color = 0xaff9ff;
                    data8.time = 15;
                    data8.isUploading = true;
                    _changePercentTimer = new Timer(1000,5);
                    _changePercentTimer.addEventListener(TimerEvent.TIMER , onChangePercentHandler , false ,0  , true);
               public function onChangePercentHandler(event:TimerEvent):void
                    data1.percent+=3;
                    data3.percent+=10;
                    data2.percent+=20;
                    data4.percent+=11;
                    data5.percent+=5;
                    data6.percent+=13;
                    data7.percent+=18;
                    data8.percent+=8;
                    trace (data1.percent , data2.percent ,data3.percent , data4.percent);
               public function itemClick():void
                    _changePercentTimer.start();
          ]]>
     </mx:Script>
     <mx:TileList id="list"
                          itemRenderer="CustomRenderer"
                          width="640"
                          height="150"                         
                          useRollOver="false"
                          dataProvider="{coll}"
                          columnWidth="150"
                          itemClick="itemClick();"
                          dropEnabled="true"
                          dragEnabled="true"
                          dragMoveEnabled="true"
                          paddingLeft="10">
     </mx:TileList>
     <mx:Button label="LoadData" click="itemClick();"/>
</mx:Application>

The problem with renderers is that they're recycled, so probably that's why  your List keep losing the animation states.

Similar Messages

  • Keep the zoom level the same when scrolling through photos

    To decide which is the best photo that i’ve got, i usually compares the details by zooming and switching through photos back and forth, but keep the zoom level the same..
    The problem is, in iPhoto 11 i can’t do this..
    Because everytime i scroll to another photo, it always zoomed out by itself..
    Does anybody know how to retain the zoom level when scrolling through images?

    How hare you zooming? When I double click on a photo to bring up its full sized image and use the keyboards arrow keys to scroll thu the size stays the same?  Is that how you're doing it?
    Have you tried using the Full Screen mode?
    OT

  • Images dissapearing when scrolling TileList.

    Hello,
    In the AIR application I am working on, I need to load a large number of images to a TileList on the clients computer. Since they can't be embedded, they were taking a long time to load since each image could be 3-4mb+. In an attempt to reduce the load time (initially and when reloading when scrolling) when the user selected a directory, I would load each image using a Loader and store a scaled down Bitmap of it in an Array. I bound the source property of the Image in the ItemRenderer to the Bitmap in the Array.
    This works really well and the images load faster however.. When I scroll and an image goes off the screen and I scroll back to it the tile is blank. Checking the debugger I see that as soon as the tile goes off the screen the BitmapData property of the Bitmap in the array becomes null.
    Any ideas on what might be causing this? I can post the code if it would help.
    I'm not limited to loading the images this way. I had just seen something similar and was trying to adapt it. If anyone has any other methods or controls that may work better please share!
    Thank you in advance for any help.

    I have the same problem.

  • Maintaining State For Item Renderers

    Hey guys,
                    I have a custom item renderer CustomRenderer.as and CustomRendererData.as. The item renderer component has a loading animation and each renderer reads the loading percent , wether its in Uploading state and the color of the progressbar from the data class . The issue I run into is when these animations are playing and the user is dragging and dropping them sometimes the progress bar does not maintain its state , animation plays again or has a color from the previous item renderer .
    When you click the LoadData button the animations will start and if you start to drag and drop them around you can see sometimes the states gets confused for example
    data1 is red
    data2 is green
    data3 is blue
    data4 never loads because its isUploading property is false
    Sometimes data4 will have the progress bar animating even though it should never animate or data3 would have a red progress bar. I have attached the source as a zip file and a image of the error state. Any help is much appreciated. Thanks
    Below is the custom Item renderer class CustomRenderer.as
    package
         import flash.geom.ColorTransform;
         import gs.TweenLite;
         import mx.controls.Label;
         import mx.controls.listClasses.IListItemRenderer;
         import mx.core.FlexShape;
         import mx.core.IDataRenderer;
         import mx.core.UIComponent;
         public class CustomRenderer extends UIComponent implements IListItemRenderer, IDataRenderer
              protected var _progressBar:FlexShape;
              protected var _data:CustomRendererData;
              protected var _percentValue:int;
              protected var _percentChanged:Boolean;
              protected var _progressBarTween:TweenLite;
              protected var _title:Label;
              protected var _titleValue:String;
              protected var _titleChanged:Boolean;
              protected var _uploadingChanged:Boolean;          
              public function CustomRenderer()
                   super();
              override protected function createChildren():void
                   super.createChildren();
                   if (!_progressBar)
                        _progressBar=new FlexShape();                    
                        _progressBar.x=_progressBar.y=4;
                        __drawProgressBar();
                        addChild(_progressBar);
                   if (!_title)
                        _title=new Label();
                        _title.setActualSize(100,22);                    
                        _title.x=4;
                        _title.y=120;     
                        _title.text ="data";
                        _title.setStyle("color" , 0xffffff);               
                        addChild(_title);
                   this.graphics.beginFill(0x333333, 1);
                   this.graphics.drawRect(0, 0, 124, 148);
                   this.graphics.endFill();
                   _percentChanged = false;
                   _titleChanged = false;
                   _uploadingChanged = false;
                   _percentValue = 0;
              private function __drawProgressBar():void
                   _progressBar.graphics.beginFill(0xffffff, 1);
                   _progressBar.graphics.drawRect(0, 0, 1, 87);
                   _progressBar.graphics.endFill();
                   _progressBar.width=0;
              override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
                   super.updateDisplayList(unscaledWidth, unscaledHeight);
              override protected function commitProperties():void
                   super.commitProperties();
                   if (_data)
                        if(_percentChanged && _data.isUploading == true)
                             _percentChanged = false;
                             if(_progressBarTween)
                                  TweenLite.removeTween(_progressBarTween);                                        
                             var colorTransform:ColorTransform;
                             colorTransform=_progressBar.transform.colorTransform;
                             colorTransform.color = _data.color;
                             _progressBar.transform.colorTransform=colorTransform;     
                             const newWidth:int = Math.round((_data.percent * 116) / 100);
                             _progressBarTween=TweenLite.to(_progressBar, _data.time, {width:newWidth});                         
                        if(_titleChanged)
                             _titleChanged = false;
                             _title.text = _titleValue;
              public function set data(obj:Object):void
                   _data=obj as CustomRendererData;
                   if(_data)
                        if(_data.percent != _percentValue)
                             _percentValue = _data.percent;                         
                             _percentChanged = true;
                        if(_titleValue != _data.title)
                             _titleValue = _data.title;                         
                             _titleChanged = true;
                   invalidateProperties();
                   invalidateDisplayList();
              public function get data():Object
                   return _data;
              override protected function measure():void
                   super.measure();
                   measuredWidth=124;
                   measuredHeight=148;
                   measuredMinWidth=124;
                   measuredMinHeight=148;
    This is the data class CustomRendererData.as
    package
         [Bindable]
         public class CustomRendererData
              public var percent:int=0;
              public var title:String;
              public var color:uint;
              public var time:int;
              public var isUploading:Boolean = false;          
              public function CustomRendererData(){}
    Main application class CustomTileList.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                        layout="vertical"
                        xmlns:local="*" applicationComplete="init();" height="375">
         <mx:Script>
              <![CDATA[
                   import mx.collections.ArrayCollection;
                   public var data1:CustomRendererData = new CustomRendererData();
                   public var data2:CustomRendererData = new CustomRendererData();
                   public var data3:CustomRendererData = new CustomRendererData();
                   public var data4:CustomRendererData = new CustomRendererData();
                   [Bindable]
                   public var coll:ArrayCollection=new ArrayCollection([data1, data2, data3, data4]);
                   private function init():void
                        data1.title ="data1";
                        data1.color = 0xff0000;
                        data1.time = 8;
                        data1.isUploading = true;
                        data2.title ="data2";
                        data2.color = 0x00ff00;
                        data2.time = 11;
                        data2.isUploading = true;
                        data3.title ="data3";
                        data3.color = 0x0000ff;
                        data3.time = 9;
                        data3.isUploading = true;
                        data4.title ="data4";
                        data4.color = 0x00ffff;
                        data4.time = 2;
                        data4.isUploading = false;
                   public function itemClick():void
                        trace(list.selectedIndex);
              ]]>
         </mx:Script>
         <mx:TileList id="list"
                              itemRenderer="CustomRenderer"
                              width="640"
                              height="228"
                              verticalScrollPolicy="off"
                              useRollOver="false"
                              dataProvider="{coll}"
                              columnWidth="150"
                              itemClick="itemClick();"
                              dropEnabled="true"
                              dragEnabled="true"
                              dragMoveEnabled="true">
         </mx:TileList>
         <mx:Button label="LoadData" click="{data1.percent=100;data3.percent=100;data2.percent=100;}"/>
    </mx:Application>

    Yes, they are kinda tough. I claim no expertise, but have
    managed to get them working by using the examples of others.
    Does that exaple not work for you? Here is another:
    http://www.cflex.net/showfiledetails.cfm?ChannelID=1&Object=File&objectID=575
    For general info on the construction, and the overridden set
    data() and updateDisplayList() methods, you will just need to study
    the documentation.
    Tracy

  • Keeping audio played to play even when scrolling pages (epub)

    Hello,
    I am about to produce a new epub, a fixed layout book, in which I want an audio mp3 file that can be heard in the background.
    It is an audio book, the user can either read by himself, or choose to listen to the recording.
    The problem is that each time the user scrolls to a new page - the audio player stops... and has to be activated again.
    Is there any smart way to avoid it? Maybe setting the audio player in a header?
    I have tried in a master page, but it did not work.
    Thank you!

    Thank you.
    What I am actually aiming out to is to make a page with two columns, in which in one the text scrolls from page to page, and the other one is sort of a "constant vertical header" - which will stay the same in all pages. In this column I want to place the media files - which are independent and not linked to any page. Thus, the user can select on each page any media he wishes. The problem is that when the media is playing, and a page turns - the media actually "resets" - and you need to activate it again - which is very annoying.
    Would you have any solution or idea for such an issue?
    BTW - I use the epub fix layout method.

  • IFrame is Obscuring Content When Scrolling Down

    Hi,
    I've got a Flex 3 project. I'm having some problems gettting an iFrame to work. If I open my project in a normal size browser window, it looks fine. If I open it in a smaller window with scrolllbars and scroll down, then the iFrame scrolls down as well and covers content. How do I keep the iFrame from obscuring content when scrolling.
    My iFrame looks like:
    <flexiframe:IFrame id="myiFrame"  source="http://www.mysite.com/myStuff.html"  x="315" y="20" width="498" height="65" scrollPolicy="off"   />
    Any suggestions?
    Thank you.
    -Laxmidi

    Now, I've got it so that the iFrame doesn't overlap. But the problem is that if the user opens a small browser window, they don't get scrollbars. How can I solve this problem? Is there a way to force the browser to put up scrollbars?
    In the main app:
    In the Application tag, I've got:
         horizontalScrollPolicy="off" verticalScrollPolicy="off"
    My iFrame looks like:
    <flexiframe:IFrame id="myiFrame"  source="http://www.mysite.com/myStuff.html"  x="315" y="20" width="498" height="65" scrollPolicy="off"   />
    In the HTML Template, I've put a div around the swf and added css:
    <style type="text/css">
    #blockwrapper{
    display: block;
    margin:0;
    padding:0;
    width: 980px;
    height: 800px;
    </style>
    <div id="blockwrapper">
    <noscript>
      <object classid="clsid:D26CDA6E-AE6D-11cf-96B8-444553540000"
    id="${application}" width="${width}" height="${height}"
    codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
    <param name="movie" value="${swf}.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="${bgcolor}" />
    <param name="allowScriptAccess" value="sameDomain" />
    <embed src="${swf}.swf" quality="high" bgcolor="${bgcolor}"
    width="${width}" height="${height}" name="${application}" align="middle"
    play="true"
    loop="false"
    quality="high"
    allowScriptAccess="sameDomain"
    type="application/x-shockwave-flash"
    pluginspage="http://www.adobe.com/go/getflashplayer">
    </embed>
    </object>
    </noscript>
    </div>
    Any suggestions?
    Thank you.
    -Laxmidi

  • When to use Drop In Item renderer and InLine Item Renderers ??

    Hi ,
    I am getting confused in where to use Inline ItemRenderer and DropIn Item Renderer .
    What i feel is that DROP in Item Renderer are easy to use , and those can satisfy any requirements .
    What i read from tutorilas that we cant use Drop In because they say ,  The only drawback to using  drop in is that them is that you cannot configure them
    Please help me .

    Hi Kiran,
    Here is the detailed explanation you needed:
    You can also refer the link below:
    http://blog.flexdevelopers.com/2009/02/flex-basics-item-renderers.html
    Drop-In Item Renderers
    Drop-In Item Renderers are generic in nature and don't rely on specific data fields to render data. This allows them to be used with a wide range of data sets, hence, the term “drop-in”. Drop-In Item Renderers can be “dropped-in” to any list-based control regardless of the dataprovider’s data properties.
    In our previous example, the employee photo property requires use of a custom Item Renderer to render properly in the UI. In this scenario the Image component satisfies our rendering needs out of the box. Implemented as a Drop-In Item Renderer, the Image component takes any data property regardless of name and uses it as the Image component's source property value. Assuming our employee photo property contains a valid image path, the Image Drop-In Item Renderer will work perfectly and resolve the image path as an image in the UI.
    <!-- Drop-in Item Renderer: Image control -->
    <mx:DataGridColumn dataField="photo"
                       headerText="Employee Photo"
                       itemRenderer="mx.controls.Image"/>
    Drop-In Item Renderers are simple and easy to use and satisfy specific use cases nicely. However, they provide no flexibility whatsoever. If your needs are not satisfied by a Drop-In Item Renderer, you must create your own Item Renderer as an inline component or an external component.
    Inline Item Renderers
    Generally used for simple item rendering requiring minimal customization, inline Item Renderers are defined as a component nested within the MXML of your list-based control.
    It is important to note that Item Renderers nested within the itemrender property of a list-based control occupy a different scope than the list-based control. Any attempt to reference members (properties or methods) of the parent component from the nested Item Renderer component will result in a compile-time error. However, references to the members of the parent component can be achieved by utilizing the outerDocument object.
    <mx:DataGrid id="myGrid" dataProvider="{gridData}">
       <mx:columns>
          <mx:DataGridColumn headerText="Show Relevance">
             <mx:itemRenderer>
                <mx:Component>
                   <mx:Image source="{'assets/images/indicator_' + data.showRelevance + '.png'}"
                             toolTip="{(data.showRelevance == 1) ? 'On' : 'Off'}"
                             click="outerDocument.toggle()" />
                </mx:Component>
             </mx:itemRenderer>
          </mx:DataGridColumn>
       </mx:columns>
    </mx:DataGrid>
    Remember, rules of encapsulation still apply. Mark all properties or methods public if you want them accessible by your inline Item Renderer. In the previous example, the toggle() method must have a public access modifier to expose itself to the inline Item Renderer.
    public function toggle():void
    Inline Item Renderers can also be reusable by creating a named component instance outside of the list-based control. This component must have an id property and contain the rendering logic of the Item Renderer. Using data bindings, the component is assigned to the itemrenderer property of one or more data properties of a list-based control.
    <!-- Reusable inline Item Renderer -->
    <mx:Component id="ImageRenderer">
       <mx:VBox width="100%" height="140"
                horizontalAlign="center" verticalAlign="middle">
          <mx:Image source="{'assets/'+data.image}"/>
          <mx:Label text="{data.image}" />
       </mx:VBox>
    </mx:Component>
    <!-- Used within a list-based control-->
    <mx:DataGridColumn headerText="Image"
                       dataField="image" width="150"
                       itemRenderer="{ImageRenderer}"/>
    In the previous example, note that the Item Renderer component contains 2 UI controls – Image and Label. When using multiple controls within an Item Renderer, a layout container is required. In this example, a VBox was used.
    If this post answers your question or helps, please kindly mark it as such.
    Thanks,
    Bhasker Chari
    Message was edited by: BhaskerChari

  • Why my Firefox keeps lagging and freezing when scrolling on Facebook?

    When scrolling through Facebook it keeps lagging and freezing for a few seconds, and when it happens it says "Connecting..." on the tab title. It keeps happening while I'm scrolling in the Facebook page, and if I leave the tab with Facebook working all Firefox looks a little laggy.
    I've tried some possible solutions here in the support but it keeps happening.
    It doesn't happen with others browser, such as Chrome.

    Many site issues can be caused by corrupt cookies or cache.
    * Clear the Cache and
    * Remove Cookies<br> '''''Warning ! ! '' This will log you out of sites you're logged in to.'''
    Type '''about:preferences'''<Enter> in the address bar.
    * '''Cookies;''' Select '''Privacy.''' Under '''History,''' select Firefox will '''Use Custom Settings.''' Press the button on the right side called '''Show Cookies.''' Use the search bar to look for the site. Note; There may be more than one entry. Remove '''All''' of them.
    * '''Cache;''' Select '''Advanced > Network.''' Across from '''Cached Web Content,''' Press '''Clear Now.'''
    If there is still a problem,
    '''[https://support.mozilla.org/en-US/kb/troubleshoot-firefox-issues-using-safe-mode Start Firefox in Safe Mode]''' {web link}
    While you are in safe mode;
    Type '''about:preferences#advanced'''<Enter> in the address bar.
    Under '''Advanced,''' Select '''General.'''
    Look for and turn off '''Use Hardware Acceleration'''.
    Poke around safe web sites. Are there any problems?
    Then restart.

  • Session state consistency - how does APEX keep session state across pages

    I would like to know how the APEX develper tool keeps session state from being overwritten across mutiltple pages in the same Session. Because this is difficult to explain I'll use an example from withing the APEX dev tool
    For Example:
    1. I navigate to the page (4150) thet allows me to edit my Page 880 [Window 1]
    2. I now do a Cntrl^N to Open a New Window in the same session (this opens on the same Page 880 in the new window) [Window 2].
    3. In Window 1, I click an item to update ie I want to put a comment on the Unconditional Branch so click this to go to the Update page. I see the F4000_P4313_ID is passed in the URL (ie the context, UID of the Branch).
    4. In Window 2, I change the page to 881 - ie this is overwriting my Session State variables for page 880 with page 881.
    5. I click an item in Page 881 to update ie I want to put a comment on the Unconditional Branch so click this to go to the Update page. I see the F4000_P4313_ID is passed in the URL (ie the context, teh UID of the Branch).
    6. In Window 1 (the Page 880), I add a comment to the Branch and 'Apply' changes. On returning to the Page the context has changed from 880 to 881 (as expected as Window 2 had overwritten the session state). Slightly confusing for the user as they did go from Page 880 not 881 but ok
    What intrigues me is how the Edit Branch page applied the update to the correct branch [good !]. Why weren't the Branch Session state variables (ie the Branch for Page 880) overwritten with the Branch Session state variables for the Branch from Page 881 ?
    Both navigations go to the same Page passing the UID of the branch, hence I would of thought the last navigation is the one that would be persisting (ie from Page 881 Window) ?
    Any tips on preventing users updating the wrong record because of the Session State being overwritten would be most welcome.
    Look forward to hearing from you.

    Let me take a shot at explaining this.
    Session state is stored in Oracle database tables. When a APEX page is rendered, those tables are read and the HTML is sent to the browser. When that page is submitted, all the HTML form inputs on the page are saved back into session state over-writing any existing values for that session
    So, in your example, since Page 4313 has the hidden page item (the "GUID" of the branch), it doesn't matter if any other window has the same page open with some other GUID. Each page is a self-contained "unit" which has all the information necessary to properly process that page when it is submitted.
    Think of it this way...in your example, when you have windows 1 and 2 open (window 2 was opened after window 1), go back to Window 1 and click the browser's Reload/Refresh button. Instead of refreshing the same page (branch 9000000), you will find that it will load branch 8000000! This is because session state is read from the database and when Window 2 was rendered, it has set F4000_P4313_ID in session state to 8000000.
    Hope this helps.

  • Programmatically selecting hovered state of item renderer - Greg pleeease

    I'm a bit new to Flex, so I have the idea but can't get it to work.
    I'm using an item renderer that takes its data from an HTTPService
        <s:SkinnableDataContainer
                                  dataProvider="{boData}"
                                  itemRenderer="extras.BoItemRenderer"
                                  skinClass="extras.BoSkin" />
    the boData data provider is an ArrayCollection not an Array
    In my <s:ItemRenderer ...... > (BoItemRenderer.mxml)  I have
    - 2 states: normal and hovered (each has different style, which I will leave out to keep things simple)
    - and the data is presented as follows:
        <s:HGroup>
            <s:Label text="{data.idNum}" />         
            <s:Label text="{data.firstName}" />
            <s:Label text="{data.lastName}" />
        </s:HGroup>
    Naturally as I hover on any row in the item renderer, it changes to the hovered state styling, all done by flex.
    What I want to do however is programmatically induce that hover state without actually hovering.
    For example, given a hard-coded idNum, I need to programmatically set the state of that row to hovered.
    My approach is as follows, but not sure how to target that specific item,
    - search the dataProvider to find the index of the row with idNum that matches my hard-coded value. I looked at the documentation, and there is indexOf, but it's for Array and not ArrayCollection.. also not sure how that works since I'd like to read the data from the item renderer directly, not from the original data provider.
    - then I would find that index in the itemrenderer and set the state of that index to hovered.
    Simpler said then done, but I'm stuck on it...
    Thanks,
    David

    Depending on what is it the ArrayCollection, in theory you might be able to do this:
    var myIndex:uint;
    for(var a:uint=0;a<myCollection.length;a++){
        if(myCollection.getItemAt(a).idNum == myHardCodedIdNum){
            myIndex = a;
            break;
    You can programmatically simulate a hover over by having the component manually dispatch a mouseOver event, but this is not the way to do it with itemRenderers.
    Item renderers can be tricky, particularly if they are being used in List based controls, like List, DataGrid, TileList, etc. because the itemRenderers are recycled.
    With that in mind, and with your somewhat non-typical situation (manually simulating hover over), I might be wrong on this, but it might be best to control this via the dataProvider data. So have a field named currState, and somehow make the renderer automatically change its state if that data field changes, then you simply programmatically change the currState data field for the desired item.
    As far as how to change the state of the item renderer based on changes to a data field, maybe ChangeWatcher?
    If this post answers your question or helps, please mark it as such.
    Greg Lafrance - Flex 2 and 3 ACE certified
    www.ChikaraDev.com
    Flex / AIR Development, Training, and Support Services

  • Issue when scrolling a pdf - There was a problem reading this document (135)

    This is when the PDF is created and rendered/previewed from Acrobat Reader and the issue is there for latest acrobat version too.
    When you open the PDF in Acrobat Reader and then when you scroll it and if you have more that one page in the PDF, it gives an error saying "There was a problem reading this document (135)".
    Is this a known issue in Acobat? Any resolution? Reinstalling acrobat version didn't help.
    Thank you in advance...!
    /Manu

    It's hard to tell for me as they are files such bank statement or other document from websites...how can i know?
    Thanks,
    Date: Wed, 9 May 2012 01:29:45 -0600
    From: [email protected]
    To: [email protected]
    Subject: Issue when scrolling a pdf - There was a problem reading this document (135)
        Re: Issue when scrolling a pdf - There was a problem reading this document (135)
        created by Nikhil.Gupta in Adobe Reader - View the full discussion
    Hi Manulak_Tech,
    As you are able to view PDF I had provided, the issue seems to be PDF specific.
    So when you scroll the PDF and reach to a page where Adobe Reader cannot read it, the error comes. I am sure the problem lies the way PDF was created. Can you describe how the PDF was created?
         Replies to this message go to everyone subscribed to this thread, not directly to the person who posted the message. To post a reply, either reply to this email or visit the message page: http://forums.adobe.com/message/4390058#4390058
         To unsubscribe from this thread, please visit the message page at http://forums.adobe.com/message/4390058#4390058. In the Actions box on the right, click the Stop Email Notifications link.
         Start a new discussion in Adobe Reader by email or at Adobe Forums
      For more information about maintaining your forum email notifications please go to http://forums.adobe.com/message/2936746#2936746.

  • Why does my iPod Classic keep trying to sync items from my iTunes library that are no longer there?

    I have an iPod classic, 160GB model, that keeps trying to sync items that are no longer in my iTunes library, is there a way to stop it from doing this? My iTunes library is on my MacBook Pro (17-inch, Late 2011), 2.4 GHz Intel Core i7, 8 GB 1333 MHz DDR3, AMD Radeon HD 6770M 1024 MB.

    Clarification needed
    Does your iPod clears  your iTunes library or the music in the iPod itself disappears, when your sync the iPod?

  • How Front End pool deals with fail over to keep user state?

         Hello to all, I searched a lot of articles to understand how Lync 2010 keeps user state if a fail happens in a Front Pool node, but didn't find anything clear.
         I found a MS info. about ths topic : " The Front End Servers maintain transient information—such as logged-on state and control information for an IM, Web, or audio/video (A/V) conference—only for the duration of a user’s session.
    This configuration
    is an advantage because in the event of a Front End Server failure, the clients connected to that server can quickly reconnect to another Front End Server that belongs to the same Front End pool. "
        As I read, the client uses DNS to reconnect to another Front End in the pool. When it reconnects to an available server, does he lose what he/she was doing at Lync client? Can the server that is now hosting his section recover all
    "user's session data"? Is positive, how?
       Regards, EEOC.

    The presence information and other dynamic user data is stored in the RTCDYN database on the backend SQL database in a 2010 pool:
    http://blog.insidelync.com/2011/04/the-lync-server-databases/  If you fail over to another pool member, this pool member has access to the same data.
    Ongoing conversations and the like are cached at the workstation.
    Please remember, if you see a post that helped you please click "Vote As Helpful" and if it answered your question please click "Mark As Answer".
    SWC Unified Communications

  • How do I create a header that reappears when scrolling up?

    Hi there,
    It's my first time using Adobe Muse and I starting to get the hang of it. I'm trying to work out how to get this header effect, Hide header on scroll down, show on scroll up — Medium.
    I'm sure it's fairly simple but I really don't have time for trial and error. I'm designing a functioning site for a branding project in my graphic design portfolio and need to get it done so I can send it off to agencies (I'm a recent graduate). A year ago I would've designed it in Photoshop and animated is in AE but I'm pushing myself to actually make it and get the hang of more web design/UI sort of stuff.
    At the moment it stays at the top of my one-page design, but I really want it to reappear when scrolling up as it's a very long design, and seems like it's needed. Any help would be greatly appreciated!

    Hi Richard,
    The function that you are referring to is not possible in Muse out of the box. I will recommend that you post this as an idea to our ideas section, Ideas for features in Adobe Muse
    - Abhishek Maurya

  • My iphone 5S is stuck on a screen displaying the itunes symbol and a charging cable. I tried connecting it to itunes and updating it to the new software, and backing it up but it keeps saying unknown error 4005, Also when I first tried backing up my

    My iphone 5S is stuck on a screen displaying the itunes symbol and a charging cable. I tried connecting it to itunes and updating it to the new software, and backing it up but it keeps saying unknown error 4005, Also when I first tried backing up my phone on my computer it would begin the processes then half way through it would say IPHONE has been disconnected, now it won't recognize it or anything. what can i do? This is a brand new phone!!!

    Hello jraff21,
    I was able to locate a support article for the error you mentioned. The following steps may help you get your device back to working order:
    iOS: Restore errors 4005, 4013, and 4014 - Apple Support
    You may see one of these messages if the device unexpectedly disconnects during the update or restore or iTunes couldn't tell the device to go to the restore state.
    The iPhone [device name] could not be restored. An unknown error occurred (4005).
    The iPhone [device name] could not be restored. An unknown error occurred (4013).
    The iPhone [device name] could not be restored. An unknown error occurred (4014).
    Try these steps to resolve the issue:
    Install the latest version of iTunes.
    Restart your computer.
    Make sure your computer is up to date. If an update requires a restart, check for updates again after you restart.
    Restore using another USB cable.
    Learn more about updating OS X.
    Learn more about updating Windows.
    Restore your device on another computer.
    If you continue to see error 4005, 4013, or 4014 when you restore your device,contact Apple for support.
    Learn more about other update and restore errors.
    Thank you for contributing to Apple Support Communities.
    Cheers,
    BobbyD

Maybe you are looking for