# Class SynchronizeModelAction

java.lang.Object
org.eclipse.core.commands.common.EventManager
org.eclipse.jface.action.AbstractAction
org.eclipse.jface.action.Action
org.eclipse.ui.actions.BaseSelectionListenerAction
org.eclipse.team.ui.synchronize.SynchronizeModelAction

All Implemented Interfaces:
  `IAction, ISelectionChangedListener`

public abstract class SynchronizeModelAction extends BaseSelectionListenerAction
This action provides utilities for performing operations on selections that contain `ISynchronizeModelElement` instances. Subclasses can use this support to filter the selection in order to determine action enablement and generate the input for a `SynchronizeModelOperation`.

Since:
  3.0
See Also:
  - `SyncInfo`
  - `SyncInfoSet`
  - `SynchronizeModelOperation`

## Field Summary

### Fields inherited from interface IAction

`AS_CHECK_BOX, AS_DROP_DOWN_MENU, AS_PUSH_BUTTON, AS_RADIO_BUTTON, AS_UNSPECIFIED, CHECKED, DESCRIPTION, ENABLED, HANDLED, IMAGE, RESULT, TEXT, TOOL_TIP_TEXT`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`SynchronizeModelAction(String text, ISynchronizePageConfiguration configuration)`
Create an action with the given text and configuration.
`protected`
`SynchronizeModelAction(String text, ISynchronizePageConfiguration configuration, ISelectionProvider selectionProvider)`
Create an action with the given text and configuration.

## Method Summary

Modifier and Type
Method
Description
`protected boolean`
`confirmSaveOfDirtyEditor()`
Returns whether the user should be prompted to save dirty editors.
`ISynchronizePageConfiguration`
`getConfiguration()`
Returns the configuration showing this action.
`protected final IDiffElement[]`
`getFilteredDiffElements()`
Return the selected diff element for which this action is enabled.
`protected final IDiffElement[]`
`getSelectedDiffElements()`
This method returns all instances of IDiffElement that are in the current selection.
`protected abstract SynchronizeModelOperation`
`getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements)`
Return the subscriber operation associated with this action.
`protected FastSyncInfoFilter`
`getSyncInfoFilter()`
Filter uses to filter the user selection to contain only those elements for which this action is enabled.
`protected void`
`handle(Exception e)`
Generic error handling code that uses an error dialog to show the error to the user.
`protected void`
`initialize(ISynchronizePageConfiguration configuration, ISelectionProvider selectionProvider)`
Method invoked from the constructor.
`protected boolean`
`needsToSaveDirtyEditors()`
Return whether dirty editor should be saved before this action is run.
`void`
`run()`
The default implementation of this `IAction` method does nothing.
`protected void`
`runOperation()`
Create and run the operation for this action.
`final boolean`
`saveAllEditors(boolean confirm)`
Save all dirty editors in the workbench that are open on files that may be affected by this operation.
`void`
`selectionChanged(ISelection selection)`
Set the selection of this action to the given selection
`protected boolean`
`updateSelection(IStructuredSelection selection)`
Updates this action in response to the given selection.

### Methods inherited from class BaseSelectionListenerAction

`clearCache, getStructuredSelection, runWithEvent, selectionChanged, selectionChanged`

### Methods inherited from class Action

`convertAccelerator, convertAccelerator, findKeyCode, findKeyString, findModifier, findModifierString, getAccelerator, getActionDefinitionId, getDescription, getDisabledImageDescriptor, getHelpListener, getHoverImageDescriptor, getId, getImageDescriptor, getMenuCreator, getStyle, getText, getToolTipText, isChecked, isEnabled, isHandled, notifyResult, removeAcceleratorText, removeMnemonics, setAccelerator, setActionDefinitionId, setChecked, setDescription, setDisabledImageDescriptor, setEnabled, setHelpListener, setHoverImageDescriptor, setId, setImageDescriptor, setMenuCreator, setText, setToolTipText`

### Methods inherited from class AbstractAction

`addPropertyChangeListener, firePropertyChange, firePropertyChange, removePropertyChangeListener`

### Methods inherited from class EventManager

`addListenerObject, clearListeners, getListeners, isListenerAttached, removeListenerObject`

### Methods inherited from class Object

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

## Constructor Details

### SynchronizeModelAction

protected SynchronizeModelAction(String text, ISynchronizePageConfiguration configuration)
Create an action with the given text and configuration. By default, the action registers for selection change with the selection provider from the configuration's site.

Parameters:
  `text` - the action's text
  `configuration` - the actions synchronize page configuration

### SynchronizeModelAction

protected SynchronizeModelAction(String text, ISynchronizePageConfiguration configuration, ISelectionProvider selectionProvider)
Create an action with the given text and configuration. By default, the action registers for selection change with the given selection provider.

Parameters:
  `text` - the action's text
  `configuration` - the actions synchronize page configuration
  `selectionProvider` - a selection provider

## Method Details

### initialize

protected void initialize(ISynchronizePageConfiguration configuration, ISelectionProvider selectionProvider)
Method invoked from the constructor. The default implementation registers the action as a selection change listener. Subclasses may override.

Parameters:
  `configuration` - the synchronize page configuration
  `selectionProvider` - a selection provider

### run

public void run()
Description copied from class: `Action`
The default implementation of this `IAction` method does nothing. Subclasses should override this method if they do not need information from the triggering event, or override `runWithEvent(Event)` if they do.

Specified by:
  `run` in interface `IAction`
Overrides:
  `run` in class `Action`
See Also:
  - How radio buttons are handled
  - How check boxes are handled

### runOperation

protected void runOperation() throws InvocationTargetException, InterruptedException
Create and run the operation for this action. By default, the operation is created by calling `getSubscriberOperation` and then run. Subclasses may override.

Throws:
  `InvocationTargetException` - if an error occurs
  `InterruptedException` - if operation is interrupted
Since:
  3.1

### needsToSaveDirtyEditors

protected boolean needsToSaveDirtyEditors()
Return whether dirty editor should be saved before this action is run. Default is `true`.

Returns:
  whether dirty editor should be saved before this action is run

### confirmSaveOfDirtyEditor

protected boolean confirmSaveOfDirtyEditor()
Returns whether the user should be prompted to save dirty editors. The default is `true`.

Returns:
  whether the user should be prompted to save dirty editors

### getSubscriberOperation

protected abstract SynchronizeModelOperation getSubscriberOperation(ISynchronizePageConfiguration configuration, IDiffElement[] elements)
Return the subscriber operation associated with this action. This operation will be run when the action is run. Subclass may implement this method and provide an operation subclass or may override the `run(IAction)` method directly if they choose not to implement a `SynchronizeModelOperation`.

Parameters:
  `configuration` - the synchronize page configuration for the page to which this action is associated
  `elements` - the selected diff element for which this action is enabled.
Returns:
  the subscriber operation to be run by this action.

### handle

protected void handle(Exception e)
Generic error handling code that uses an error dialog to show the error to the user. Subclasses can use this method and/or override it.

Parameters:
  `e` - the exception that occurred.

### updateSelection

protected boolean updateSelection(IStructuredSelection selection)
Description copied from class: `BaseSelectionListenerAction`
Updates this action in response to the given selection.

The `BaseSelectionListenerAction` implementation of this method returns `true`. Subclasses may extend to react to selection changes; however, if the super method returns `false`, the overriding method must also return `false`.

Overrides:
  `updateSelection` in class `BaseSelectionListenerAction`
Parameters:
  `selection` - the new selection
Returns:
  `true` if the action should be enabled for this selection, and `false` otherwise

### getSelectedDiffElements

protected final IDiffElement[] getSelectedDiffElements()
This method returns all instances of IDiffElement that are in the current selection.

Returns:
  the selected elements

### getSyncInfoFilter

protected FastSyncInfoFilter getSyncInfoFilter()
Filter uses to filter the user selection to contain only those elements for which this action is enabled. Default filter includes all out-of-sync elements in the current selection. Subclasses may override.

Returns:
  a sync info filter which selects all out-of-sync resources.

### getFilteredDiffElements

protected final IDiffElement[] getFilteredDiffElements()
Return the selected diff element for which this action is enabled.

Returns:
  the list of selected diff elements for which this action is enabled.

### selectionChanged

public void selectionChanged(ISelection selection)
Set the selection of this action to the given selection

Parameters:
  `selection` - the selection

### getConfiguration

public ISynchronizePageConfiguration getConfiguration()
Returns the configuration showing this action.

Returns:
  the configuration showing this action.

### saveAllEditors

public final boolean saveAllEditors(boolean confirm)
Save all dirty editors in the workbench that are open on files that may be affected by this operation. Opens a dialog to prompt the user if `confirm` is true. Return true if successful. Return false if the user has canceled the command. Must be called from the UI thread.

Parameters:
  `confirm` - prompt the user if true
Returns:
  boolean false if the operation was canceled.