Hi Scott,
Have a look at TaskAdapter:
http://pivot.apache.org/1.4/docs/api/org/apache/pivot/wtk/TaskAdapter.html
So at the end of the startup method after the UI is initialised and hooked
up create a Task to do your data loading and execute it with a TaskListener.
If you pass your task listener in to an instance of TaskAdapter the methods
of your listener are called on the UI thread at which point you can change
the UI state without problem.
So here is a 'cheap' example using anonymous inner classes:
> public void startup(...) {
> // ... initialise the app ...
> new Task<V>() {
public V execute() {
// do your data loading here
}
}.execute(new TaskAdapter(new TaskListener<V>() {
public void executeFailed(Task<V> task) {
// e.g. display a message to the user
}
> public void taskExecuted(Task<V> task) {
// change the ui state
}
> }));
> }
Note that V is a generic type - I recommend using Void if you don't want to
use a return type and just return null from the execute method.
Let us know how you get on. :)
Cheers,
Chris
On 22 March 2010 00:41, Scott Lanham <[email protected]> wrote:
> In my case a thread other than the UI thread will be closing the dialog (
> or
> other object ), will this cause a problem?
>
> On Fri, 19 Mar 2010 07:35:37 pm Christopher Brind wrote:
> > I perhaps shouldn't have said 'when Pivot has finished' loading. :)
> >
> > So typically in the startup method you'll call window.open() to show the
> > UI, just after that open your modal dialog and then kick off your data
> > loading threads. Once your data loading threads have finished, close
> the
> > dialog.
> >
> > Hope that helps.
> >
> > Cheers,
> > Chris
> >
> > On 19 March 2010 09:12, Scott Lanham <[email protected]> wrote:
> > > That is a good idea but I don't know how to tell when Pivot has
> finished
> > > loading.
> > >
> > > On Fri, 19 Mar 2010 05:52:39 pm Christopher Brind wrote:
> > > > How about just before you start your data loading, after Pivot has
> > >
> > > loaded,
> > >
> > > > but before the user has chance to start clicking, popup a *modal
> dialog
> > > > *with just a progress indicator in it (and maybe a label which you
> > > > could use to show status messages). Then when your data loading has
> > > > finished, close the dialog programatically.
> > > >
> > > > Cheers,
> > > > Chris
> > > >
> > > > On 19 March 2010 04:14, Scott Lanham <[email protected]> wrote:
> > > > > Hi Guys,
> > > > >
> > > > > It has been a while since I have asked a question on this list :-)
> > > > >
> > > > > When my application starts up it loads a heap of data into various
> > > > > components.
> > > > > This was fine for a while but now it is taking a long time and
> while
> > >
> > > the
> > >
> > > > > seconds tick away I just see a blank window. It looks like the
> > > > > program has hung which is not a good thing.
> > > > >
> > > > > I can offload the data loading into separate threads and all the
> > > > > components will
> > > > > appear quickly but I don't want the user to start trying to use
> those
> > > > > components until they are populated with data.
> > > > >
> > > > > Is there a way that I can have a progress indicator take over the
> > >
> > > screen
> > >
> > > > > (after the components have displayed) until my data loading threads
> > >
> > > have
> > >
> > > > > finished?
> > > > >
> > > > > Thanks heaps,
> > > > >
> > > > > Scott.
> >
>