com.vividsolutions.jump.workbench.plugin
Interface ThreadedPlugIn
- All Superinterfaces:
- PlugIn
- All Known Implementing Classes:
- AbstractAddDatastoreLayerPlugIn, AbstractLoadDatasetPlugIn, AbstractLoadSaveDatasetPlugIn, AbstractSaveDatasetAsPlugIn, AbstractThreadedUiPlugIn, AbstractWizardPlugin, AddDatastoreLayerPlugIn, AddWMSQueryPlugIn, AffineTransformationPlugIn, AttributeQueryPlugIn, BufferPlugIn, ClipToFencePlugIn, ConvexHullPlugIn, CreateThiessenPolygonsPlugIn, DeleteDuplicateGeometriesPlugIn, DiffGeometryPlugIn, DiffSegmentsPlugIn, ExtensionManagerPlugIn, ExtractCommonBoundaryBetweenPolysPlugIn, ExtractPointsPlugIn, ExtractSegmentsPlugIn, FirstTaskFramePlugIn, GeometryFunctionPlugIn, IntersectPolygonLayersPlugIn, JoinAttributesSpatiallyPlugIn, JoinTablePlugIn, LineNoderPlugIn, LineSimplifyJTS15AlgorithmPlugIn, LoadDatasetPlugIn, MainButtonPlugIn, MultiRingBufferSelectedPlugIn, OpenFilePlugIn, OpenProjectPlugIn, OpenProjectPlugIn, OpenWizardPlugIn, OverlayPlugIn, PlanarGraphPlugIn, PolygonizerPlugIn, PrecisionReducerPlugIn, ProgressReportingPlugIn, ReplaceValuePlugIn, ReplicateSelectedItemsPlugIn, RunDatastoreQueryPlugIn, SaveDatasetAsPlugIn, SaveImageAsSVGPlugIn, SimplifyPolygonCoveragePlugIn, SpatialJoinPlugIn, SpatialJoinPlugIn, SpatialQueryPlugIn, SplitPolygonPlugIn, ThreadedBasePlugIn, UnionByAttributePlugIn, 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
run
void run(TaskMonitor monitor,
PlugInContext context)
throws java.lang.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:
java.lang.Exception