Marking a view as "busy" in Cocoa
I'm writing a Cocoa app, and I need to indicate to the user that a view is invalid and can't respond until a background job is completed.  

Longer version:

A view in my app contains some data fetched from a server.  When the app determines that the data is invalid, it fetches fresh information and displays it.  Usually the update happens too quickly to see, but if server or network problems cause the background job to take more than a second or two, I need to make sure the user 

1. Cannot interact with the view until the job is finished;
2. Can tell that the view is awaiting an update; and
3. Can continue to interact with other parts of the application until the job is finished.

1) is important because any operation initiated with the stale data will fail, and if the network or the server is slow, I don't want the user to waste his time with futile attempts to interact with that part of the application.  (It's fine if the user can still _see_ the data.  That could conceivably be helpful, actually, but it isn't crucial.)

What is the standard way to do this in Cocoa?  For what it's worth, in the Eclipse framework I think I used the `showBusy` method on `ViewPart`.  

If there isn't a standard way, does anyone have any suggestions for tackling it?  I haven't been using OS X very long, so I'm not even sure how an app is supposed to look and behave in this situtaion.  (The screenshots on this page looking promising, but it's iOS, not OS X:  http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html)

Right now I'm working on replacing the whole view with an `NSProgressIndicator` and restoring the view after the task finishes, but removing the view means my app could end up in a funky state if something goes wrong.  Also, I'd like to be able to factor this functionality out into its own class or category(?) since I will have this issue with several different view classes in my application.  Ideally I'd like to end up with something as simple as Eclipse's view.showBusy(true)/view.showBusy(false).

Any and all help would be appreciated.
Thanks!
Marking a view as "busy" in Cocoa
===

I'm writing a Cocoa app, and I need to indicate to the user that a view is invalid and can't respond until a background job is completed.  

Longer version:

A view in my app contains some data fetched from a server.  When the app determines that the data is invalid, it fetches fresh information and displays it.  Usually the update happens too quickly to see, but if server or network problems cause the background job to take more than a second or two, I need to make sure the user 

1. Cannot interact with the view until the job is finished;
2. Can tell that the view is awaiting an update; and
3. Can continue to interact with other parts of the application until the job is finished.

1) is important because any operation initiated with the stale data will fail, and if the network or the server is slow, I don't want the user to waste his time with futile attempts to interact with that part of the application.  (It's fine if the user can still _see_ the data.  That could conceivably be helpful, actually, but it isn't crucial.)

What is the standard way to do this in Cocoa?  For what it's worth, in the Eclipse framework I think I used the `showBusy` method on `ViewPart`.  

If there isn't a standard way, does anyone have any suggestions for tackling it?  I haven't been using OS X very long, so I'm not even sure how an app is supposed to look and behave in this situtaion.  (The screenshots on this page looking promising, but it's iOS, not OS X:  http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html)

Right now I'm working on replacing the whole view with an `NSProgressIndicator` and restoring the view after the task finishes, but removing the view means my app could end up in a funky state if something goes wrong.  Also, I'd like to be able to factor this functionality out into its own class or category(?) since I will have this issue with several different view classes in my application.  Ideally I'd like to end up with something as simple as Eclipse's view.showBusy(true)/view.showBusy(false).

Any and all help would be appreciated.
Thanks!