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 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 the `convert(EditPartViewer, EditPart)` method.

## Constructor Summary

Constructors
Constructor
Description
`SelectionSynchronizer()`

## Method Summary

Modifier and Type
Method
Description
`void`
`addViewer(EditPartViewer viewer)`
Adds a viewer to the set of synchronized viewers
`protected 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 viewers
`void`
`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 to `applySelection(EditPartViewer, ISelection)`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SelectionSynchronizer

public SelectionSynchronizer()

## Method Details

### 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 returns `null` if there is no corresponding part. This method can be overridden to provide custom mapping.

Parameters:
  `viewer` - the viewer being mapped to
  `part` - 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 interface `ISelectionChangedListener`
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 to `applySelection(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 of `EditPart`s for the given viewer by searching those that control the same model elements as the `EditPart`s in the given selection (via `convert(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 an `IStructuredSelection` of `EditPart`s of another viewer.
Since:
  3.10