Interface ThreadedPlugIn
-
- All Superinterfaces:
PlugIn
- All Known Implementing Classes:
BufferPlugIn
,GeometryFunctionPlugIn
,LoadDatasetPlugIn
,LoadDatasetPlugIn
,LoadDatasetToCategoryPlugIn
,MainButtonPlugIn
,OpenProjectPlugIn
,OverlayPlugIn
,ProgressReportingPlugIn
,SaveDatasetAsPlugIn
,SaveDatasetAsPlugIn
,ThreadedBasePlugIn
,UnionPlugIn
,ValidateSelectedLayersPlugIn
public interface ThreadedPlugIn extends PlugIn
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
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
run(TaskMonitor monitor, PlugInContext context)
Runs the task.-
Methods inherited from interface org.locationtech.jts.jump.workbench.plugin.PlugIn
execute, getName, initialize
-
-
-
-
Method Detail
-
run
void run(TaskMonitor monitor, PlugInContext context) throws Exception
Runs the task. This method will be executed in a separate thread, so that the GUI remains responsive (but only partially so, as a modal progress dialog will be in the way). Don't call GUI classes in this method as it is not executed on the GUI thread.- Parameters:
monitor
- context to which this task can report its progress and check whether a party has requested its cancellation- Throws:
Exception
-
-