org.eclipse.ui.actions
Class WorkspaceModifyOperation
java.lang.Object
org.eclipse.ui.actions.WorkspaceModifyOperation
-
All Implemented Interfaces:
-
IRunnableWithProgress,
IThreadListener
-
Direct Known Subclasses:
-
ImportOperation,
WorkspaceModifyDelegatingOperation
-
public abstract class WorkspaceModifyOperation
- extends
Object
- implements
IRunnableWithProgress,
IThreadListener
An operation which potentially makes changes to the workspace. All resource
modification should be performed using this operation. The primary
consequence of using this operation is that events which typically occur as a
result of workspace changes (such as the firing of resource deltas,
performance of autobuilds, etc.) are generally deferred until the outermost operation
has successfully completed. The platform may still decide to broadcast
periodic resource change notifications during the scope of the operation
if the operation runs for a long time or another thread modifies the workspace
concurrently.
If a scheduling rule is provided, the operation will obtain that scheduling
rule for the duration of its execute
method. If no scheduling
rule is provided, the operation will obtain a scheduling rule that locks
the entire workspace for the duration of the operation.
Subclasses must implement execute
to do the work of the
operation.
-
See Also:
-
ISchedulingRule
,
IWorkspace.run(IWorkspaceRunnable, IProgressMonitor)
Method Summary
|
protected abstract void
|
execute
(
IProgressMonitor monitor)
Performs the steps that are to be treated as a single logical workspace
change. |
ISchedulingRule
|
getRule
()
The scheduling rule. |
void
|
run
(
IProgressMonitor monitor)
The WorkspaceModifyOperation implementation of this
IRunnableWithProgress method initiates a batch of changes by
invoking the execute method as a workspace runnable
(IWorkspaceRunnable ). |
void
|
threadChange
(
Thread thread)
Notification that a thread change is occurring. |
Methods inherited from class java.lang.
Object
|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
|
WorkspaceModifyOperation
protected WorkspaceModifyOperation()
- Creates a new operation.
WorkspaceModifyOperation
protected WorkspaceModifyOperation(
ISchedulingRule rule)
- Creates a new operation that will run using the provided
scheduling rule.
-
Parameters:
-
rule
- The ISchedulingRule to use or null
. -
Since:
- 3.0
execute
protected abstract void execute(
IProgressMonitor monitor)
throws
CoreException,
InvocationTargetException,
InterruptedException
- Performs the steps that are to be treated as a single logical workspace
change.
Subclasses must implement this method.
-
-
-
Parameters:
-
monitor
- the progress monitor to use to display progress and field
user requests to cancel
-
Throws:
-
CoreException
- if the operation fails due to a CoreException
-
InvocationTargetException
- if the operation fails due to an exception other than CoreException
-
InterruptedException
- if the operation detects a request to cancel,
using IProgressMonitor.isCanceled()
, it should exit by throwing
InterruptedException
. It is also possible to throw
OperationCanceledException
, which gets mapped to InterruptedException
by the run
method.
run
public final void run(
IProgressMonitor monitor)
throws
InvocationTargetException,
InterruptedException
- The
WorkspaceModifyOperation
implementation of this
IRunnableWithProgress
method initiates a batch of changes by
invoking the execute
method as a workspace runnable
(IWorkspaceRunnable
).
-
-
Specified by:
-
run
in interface
IRunnableWithProgress
-
-
Parameters:
-
monitor
- the progress monitor to use to display progress and receive
requests for cancelation
-
Throws:
-
InvocationTargetException
- if the run method must propagate a checked exception,
it should wrap it inside an InvocationTargetException
; runtime exceptions are automatically
wrapped in an InvocationTargetException
by the calling context
-
InterruptedException
- if the operation detects a request to cancel,
using IProgressMonitor.isCanceled()
, it should exit by throwing
InterruptedException
-
See Also:
-
IRunnableContext.run(boolean, boolean, org.eclipse.jface.operation.IRunnableWithProgress)
threadChange
public void threadChange(
Thread thread)
-
Description copied from interface:
IThreadListener
- Notification that a thread change is occurring.
-
-
Specified by:
-
threadChange
in interface
IThreadListener
-
-
Parameters:
-
thread
- The new thread
getRule
public
ISchedulingRule getRule()
- The scheduling rule. Should not be modified.
-
-
-
Returns:
- the scheduling rule, or
null
. -
Since:
- 3.4
Guidelines for using Eclipse APIs.
Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.