Package org.eclipse.gef.ui.parts
Class SelectionSynchronizer
- java.lang.Object
-
- org.eclipse.gef.ui.parts.SelectionSynchronizer
-
- All Implemented Interfaces:
ISelectionChangedListener
public class SelectionSynchronizer extends java.lang.Object implements ISelectionChangedListener
A utility for synchronizing the selection of multiple EditPartViewers. This class performs selection synchronization by taking the selection from one viewer, and mapping it to the selection in another viewer. The mapping is performed by matching the models of the selected EditParts from one viewer to the EditParts with the same models in another. It can be customized by overriding theconvert(EditPartViewer, EditPart)
method.
-
-
Constructor Summary
Constructors Constructor Description SelectionSynchronizer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addViewer(EditPartViewer viewer)
Adds a viewer to the set of synchronized viewersprotected void
applySelection(EditPartViewer viewer, ISelection selection)
Applies the given EditPart selection from another viewer to the given viewer.protected EditPart
convert(EditPartViewer viewer, EditPart part)
Maps the given editpart from one viewer to an editpart in another viewer.void
removeViewer(EditPartViewer viewer)
Removes the viewer from the set of synchronized viewersvoid
selectionChanged(SelectionChangedEvent event)
Receives notification from one viewer, and maps selection to all other members.void
setEnabled(boolean value)
Enables or disabled synchronization between viewers.protected void
syncSelection(EditPartViewer selectionSource, ISelection selection)
Synchronizes the given selection to all registered viewers except the one serving as selectionSource, by delegating toapplySelection(EditPartViewer, ISelection)
.
-
-
-
Method Detail
-
addViewer
public void addViewer(EditPartViewer viewer)
Adds a viewer to the set of synchronized viewers- Parameters:
viewer
- the viewer
-
convert
protected EditPart convert(EditPartViewer viewer, EditPart part)
Maps the given editpart from one viewer to an editpart in another viewer. It returnsnull
if there is no corresponding part. This method can be overridden to provide custom mapping.- Parameters:
viewer
- the viewer being mapped topart
- a part from another viewer- Returns:
null
or a corresponding editpart
-
removeViewer
public void removeViewer(EditPartViewer viewer)
Removes the viewer from the set of synchronized viewers- Parameters:
viewer
- the viewer to remove
-
selectionChanged
public void selectionChanged(SelectionChangedEvent event)
Receives notification from one viewer, and maps selection to all other members.- Specified by:
selectionChanged
in interfaceISelectionChangedListener
- Parameters:
event
- the selection event
-
syncSelection
protected void syncSelection(EditPartViewer selectionSource, ISelection selection)
Synchronizes the given selection to all registered viewers except the one serving as selectionSource, by delegating toapplySelection(EditPartViewer, ISelection)
.- Parameters:
selectionSource
- The viewer from which the selection originated.selection
- The selection to apply to the other viewers.- Since:
- 3.10
-
setEnabled
public void setEnabled(boolean value)
Enables or disabled synchronization between viewers.- Parameters:
value
-true
if synchronization should occur- Since:
- 3.1
-
applySelection
protected void applySelection(EditPartViewer viewer, ISelection selection)
Applies the given EditPart selection from another viewer to the given viewer. It will first compute a new selection ofEditPart
s for the given viewer by searching those that control the same model elements as theEditPart
s in the given selection (viaconvert(EditPartViewer, EditPart)
), apply this new selection to the given viewer, and reveal the last part in the new selection.- Parameters:
viewer
- The viewer to apply the given selection to.selection
- The selection to apply, which has to be anIStructuredSelection
ofEditPart
s of another viewer.- Since:
- 3.10
-
-