I will start with stating that anytime I see Application.application in code my colon and spine tense up a bit. Yeah, that's a big red flag with the words "You better know why" on it :) :) Thus Application.application.doLater scares me. doLater() scares me in a similar way.
Now, likely I'd do the following for this, hoping it'd work, seems like it would 1) in the onChangeHandler() set a dirty flag and call invalidateProperties() 2) override commitProperties, look for the dirty flag and do the work there. This should allow the checkbox to re-draw itself before your taxing work occurs. Just call enabled=false on it in commitProperties at the top of your work block. I suspect service calls may mess with your call to CursorManager.setBusyCursor() if making any in the work block. Another approach is to make this chunk of work happen asynchronously ala a green thread approach. Check out Charlie's talk on this a ways back and also Huyen Due Tao's 360 talk on the same topic for more. Douglas Knudsen http://www.cubicleman.com this is my signature, like it? On Mon, Feb 28, 2011 at 12:51 PM, Marty Blood <marty.bl...@gmail.com> wrote: > Dale, > > I've run in to similar problems to this in the past. For us it came down > to how Flex / Flash handles the rendering lifecycle. In particular it won't > show any UI updates (e.g. the busy cursor or the checkbox being clicked) > until it gets another chance to render a frame. So what might work is to > use doLater to queue up the processing call to allow the runtime to hit a > render cycle. Something like this (syntax should be close, I don't have > access to Flash Builder right now): > > private function onCheckboxClick(): void > { > chkBox.enabled = false; //whatever your checkbox reference is unless the > Application.application.enabled = false disables that too. > (Application.application as MinervaApplication).mouseChildren = false; > Application.application.enabled = false; > CursorManager.setBusyCursor(); > > Application.application.doLater( { > //run your processing > (Application.application as MinervaApplication).mouseChildren = true; > Application.application.enabled = true; > CursorManager.removeBusyCursor(); > chkBox.enabled = true; //see above > }); > } > > The chkBox.enabled setting may be unnecessary depending on what your > Application.application.enabled = false disables. > > Hope that helps. > > -Marty > > On Mon, Feb 28, 2011 at 12:11 PM, Dale Bronk <dbr...@windscape.com> wrote: > >> We're having an issue hopefully someone smarter than me can help with. We >> have the following in a function (just a snippet): >> >> Private function onCheckboxClick() : void >> { >> (Application.application as MinervaApplication).mouseChildren = false; >> Application.application.enabled = false; >> CursorManager.setBusyCursor(); >> >> // Do a bunch of processing that takes a second or two where we >> // want the user to be able to do anything. >> // This logic does include some UI modification. >> >> (Application.application as MinervaApplication).mouseChildren = true; >> Application.application.enabled = true; >> CursorManager.removeBusyCursor(); >> } >> >> We actually have the blocking/cursor logic abstracted out into a function, >> but it is easier to show what we are doing this way. >> >> Our issue: >> The blocking logic doesn't take affect. We do see the app "kind of >> freeze" >> but with no visual and it just queues up the user actions. The checkbox >> does not check immediately. It waits until all the logic has executed. >> The >> problem is that during that 1 to 2 seconds of processing the user sees the >> checkbox not checked, so they check it again. That second click will >> queue >> up so that once the initial check processing is done, it then processes >> the >> second check creating a vicious cycle between app and user. There are a >> couple places in our app where it is critical that they wait for several >> calculations to be done before moving on and it seems to work just fine in >> other places. Other places the cursor goes to a wait, app is disabled and >> clicks are turned off so the user go click happy all they want and nothing >> will happen. We have the app styled so that disabled app does not change >> visually. >> >> Thanks, >> Dale >> >> >> >> ------------------------------------------------------------- >> To unsubscribe from this list, simply email the list with unsubscribe in >> the subject line >> >> For more info, see http://www.affug.com >> Archive @ http://www.mail-archive.com/discussion%40affug.com/ >> List hosted by http://www.fusionlink.com >> ------------------------------------------------------------- >> >> >> >