| A long-running PlugIn that keeps the GUI responsive (but only partially so,
as a modal progress dialog will be in the way).
First, #execute is called on the AWT event dispatch thread (the "GUI
thread"). Here, the user can be prompted with a dialog.
Then, #run(TaskMonitor) is called, on a new thread. Here, a long operation
can be performed. The TaskMonitor can be used to report progress (messages
will appear on a modal progress dialog). Because the thread is not the GUI
thread, the GUI will remain responsive.
Thus, to run a PlugIn on a separate thread with progress reporting:
- implement ThreadedPlugIn
- put any GUI prompting in #execute. If the user chooses to cancel,
return false.
- put the time-consuming task in #run(TaskMonitor)
- add the ThreadedPlugIn using FeatureInstaller
|