public class SynchronizationStateTester extends Object
There are two different types of elements being decorated: those that have a one-to-one mapping to a resource and those that do not. Those that do should adapt to their corresponding resource. Doing so will ensure that label updates occur when the state of that resource changes (i.e. the team provider will generate label updates for those resources and the model can translate them to appropriate label updates of their model elements).
For those elements that do not have a one-to-one mapping to resources, the model must do extra work. The purpose of this class is to allow the model to decide when a label update for a logical model element is required and to communicate the dirty state of their logical model elements to the team decorator.
Model providers need to re-evaluate the state of a
model element whenever a change in the resources occurs by listening
to both resource deltas and change events from the team state provider
(getTeamStateProvider()
.
Decoration enablement changes and decoration configuration changes
are handled by the IDecoratorManager.update(String)
API.
A call to this method will result in label changes to all elements.
The isDecorationEnabled(Object)
API on this class can
be used to determine if an element will receive team decorations.
If decoration is disabled. team state changes on the element can
be ignored.
Clients may subclass this class.
Modifier and Type | Field and Description |
---|---|
static String |
PROP_TESTER
Constant that is used as the property key on an
IDecorationContext . |
Constructor and Description |
---|
SynchronizationStateTester()
Create a synchronization state tester.
|
Modifier and Type | Method and Description |
---|---|
void |
elementDecorated(Object element,
ITeamStateDescription description)
A callback to the tester made from the team decorator to notify the
tester that the given element has been decorated with the given state.
|
int |
getState(Object element,
int stateMask,
IProgressMonitor monitor)
Return the synchronization state of the given element.
|
ITeamStateProvider |
getTeamStateProvider()
Return a team state provider that delegates to the appropriate team
provider.
|
boolean |
isDecorationEnabled(Object element)
Return whether decoration is enabled for the given model element in the
context to which this tester is associated.
|
boolean |
isStateDecorationEnabled()
Return whether state decoration is enabled for the context
to which this tester is associated.
|
public static final String PROP_TESTER
IDecorationContext
. Model based views can assign their state
test to this property in the decoration context. If a context passed to a
team decorator has this property, the associated state tester will be
used by the decorator to determine the team state of the elements being
decorated.public SynchronizationStateTester()
public boolean isStateDecorationEnabled()
true
is returned, a team decorator will use the state methods provided
on this class to calculate the synchronization state of model
elements for the purpose of decoration. If false
is returned, a team decorator will not decorate the elements with any
synchronization related decorations. Subclasses will want to disable
state decoration if state decoration is being provided another way
(e.g. by a SynchronizationLabelProvider
). By default,
true
is returned. Subclasses may override.public boolean isDecorationEnabled(Object element)
isStateDecorationEnabled()
is used but subclasses
may override to disable decoration of particular elements.
A team decorator should call this method before decorating a model
element. If the method returns true
, no team state
decorations should be applied to the model element. Otherwise, the
getState(Object, int, IProgressMonitor)
should be consulted in
order to determine what state to decorate.
element
- the model elementpublic int getState(Object element, int stateMask, IProgressMonitor monitor) throws CoreException
stateMask
is
returned. By default, this method calls
Subscriber.getState(ResourceMapping, int, IProgressMonitor)
.
A team decorator will use this method to determine how to decorate the
provided element. The ITeamStateProvider.getDecoratedStateMask(Object)
returns the
state that the corresponding team decorator is capable of decorating but
the decorator may be configured to decorate only a portion of that state.
When the team decorator invokes this method, it will pass the stateMask that
it is currently configured to show. If a mask of zero is provided, this indicates
that the team decorator is not configured to decorate the synchronization state
of model elements.
Subclasses may want to override this method in the following cases:
element
- the model elementstateMask
- the mask that identifies which state flags are desired if
presentmonitor
- a progress monitorCoreException
public final ITeamStateProvider getTeamStateProvider()
public void elementDecorated(Object element, ITeamStateDescription description)
element
- the element that was decorateddescription
- a description of the decorated state of the element
Copyright (c) 2000, 2015 Eclipse Contributors and others. All rights reserved.Guidelines for using Eclipse APIs.