Package org.eclipse.compare.structuremergeviewer

## Class StructureDiffViewer

- java.lang.Object
- - org.eclipse.jface.viewers.Viewer
  - - org.eclipse.jface.viewers.ContentViewer
    - - org.eclipse.jface.viewers.StructuredViewer
      - - org.eclipse.jface.viewers.ColumnViewer
        - - org.eclipse.jface.viewers.AbstractTreeViewer
          - - org.eclipse.jface.viewers.TreeViewer
            - - org.eclipse.compare.structuremergeviewer.DiffTreeViewer
              - - org.eclipse.compare.structuremergeviewer.StructureDiffViewer

All Implemented Interfaces:
  `IInputProvider`, `IInputSelectionProvider`, `IPostSelectionProvider`, `ISelectionProvider`

    public class StructureDiffViewer
    extends DiffTreeViewer

A diff tree viewer that can be configured with a `IStructureCreator` to retrieve a hierarchical structure from the input object (an `ICompareInput`) and perform a two-way or three-way compare on it.

This class may be instantiated; it is not intended to be subclassed outside this package.

See Also:
  `IStructureCreator`, `ICompareInput`
Restriction:
  This class is not intended to be subclassed by clients.

### Nested Class Summary

### Nested classes/interfaces inherited from class org.eclipse.jface.viewers.StructuredViewer

`StructuredViewer.ColorAndFontCollector, StructuredViewer.ColorAndFontCollectorWithProviders`

### Field Summary

### Fields inherited from class org.eclipse.jface.viewers.AbstractTreeViewer

`ALL_LEVELS`

### Fields inherited from class org.eclipse.jface.viewers.Viewer

`WIDGET_DATA_KEY`

### Constructor Summary

Constructors
`StructureDiffViewer​(Composite parent, CompareConfiguration configuration)` Creates a new viewer under the given SWT parent with the specified configuration.
`StructureDiffViewer​(Tree tree, CompareConfiguration configuration)` Creates a new viewer for the given SWT tree control with the specified configuration.

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`protected void` `compareInputChanged​(ICompareInput input)` Recreates the comparable structures for the input sides.
`protected void` `contentChanged​(IContentChangeNotifier changed)` Calls `diff` whenever the byte contents changes.
`protected void` `copySelected​(boolean leftToRight)` Overridden to call the `save` method on the structure creator after nodes have been copied from one side to the other side of an input object.
`protected void` `diff()` Runs the difference engine and refreshes the tree.
`protected void` `diff​(IProgressMonitor monitor)` Runs the difference engine and refreshes the tree.
`protected Object` `getRoot()` Overridden because the input of this viewer is not identical to the root of the tree.
`IStructureCreator` `getStructureCreator()` Returns the structure creator or `null` if no structure creator has been set with `setStructureCreator`.
`String` `getTitle()` Reimplemented to get the descriptive title for this viewer from the `IStructureCreator`.
`protected void` `handleDispose​(DisposeEvent event)` Called on the viewer disposal.
`protected void` `initialSelection()` This hook method is called from within `inputChanged` after a new input has been set but before any controls are updated.
`protected void` `inputChanged​(Object input, Object oldInput)` Internal hook method called when the input to this viewer is initially set or subsequently changed.
`protected void` `postDiffHook​(Differencer differencer, IDiffContainer root)` Deprecated. Subclasses should override `postDiffHook(Differencer, IDiffContainer, IProgressMonitor)` instead
`protected void` `postDiffHook​(Differencer differencer, IDiffContainer root, IProgressMonitor monitor)` This method is called from within `diff(IProgressMonitor)` after the difference tree has been built.
`protected void` `preDiffHook​(IStructureComparator ancestor, IStructureComparator left, IStructureComparator right)` Deprecated. Clients should override `preDiffHook(IStructureComparator, IStructureComparator, IStructureComparator, IProgressMonitor)`
`protected void` `preDiffHook​(IStructureComparator ancestor, IStructureComparator left, IStructureComparator right, IProgressMonitor monitor)` This method is called from within `diff(IProgressMonitor)` before the difference tree is being built.
`protected void` `propertyChange​(PropertyChangeEvent event)` Tracks property changes of the configuration object.
`void` `setStructureCreator​(IStructureCreator structureCreator)` Configures the `StructureDiffViewer` with a structure creator.

### Methods inherited from class org.eclipse.compare.structuremergeviewer.DiffTreeViewer

`copyOne, createToolItems, dontExpand, expandSelection, fillContextMenu, getBundle, getCompareConfiguration, internalExpandToLevel, navigate`

### Methods inherited from class org.eclipse.jface.viewers.TreeViewer

`addTreeListener, assertContentProviderType, createViewerEditor, disassociate, doGetColumnCount, editElement, getChild, getChildren, getColumnViewerOwner, getControl, getExpanded, getItemAt, getItemCount, getItemCount, getItems, getLabelProvider, getParentElement, getParentItem, getRawChildren, getSelection, getTree, getViewerRowFromItem, handleTreeCollapse, handleTreeExpand, hookControl, internalAdd, internalInitializeTree, internalRefreshStruct, isExpandable, mapElement, newItem, remove, removeAll, replace, setChildCount, setContentProvider, setExpanded, setHasChildren, setSelection, setSelection, showItem, updatePlus`

### Methods inherited from class org.eclipse.jface.viewers.AbstractTreeViewer

`add, add, addSelectionListener, addTreeListener, associate, buildLabel, collapseAll, collapseToLevel, createChildren, createTreeItem, doFindInputItem, doFindItem, doUpdateItem, doUpdateItem, expandAll, expandAll, expandToLevel, expandToLevel, expandToLevel, expandToLevel, fireTreeCollapsed, fireTreeExpanded, getAutoExpandLevel, getChildren, getExpandedElements, getExpandedState, getExpandedTreePaths, getNextItem, getPreviousItem, getSelection, getSelectionFromWidget, getSortedChildren, getStructuredSelection, getTreePathFromItem, getVisibleExpandedElements, handleDoubleSelect, indexForElement, insert, internalCollapseToLevel, internalExpand, internalFindItems, internalGetWidgetToSelect, internalIsInputOrEmptyPath, internalRefresh, internalRefresh, internalRefresh, internalRemove, internalRemove, isSameSelection, labelProviderChanged, remove, remove, remove, removeTreeListener, reveal, scrollDown, scrollUp, setAutoExpandLevel, setExpandedElements, setExpandedState, setExpandedTreePaths, setExpandPreCheckFilters, setSelectionToWidget, setSelectionToWidget, updateChildren`

### Methods inherited from class org.eclipse.jface.viewers.ColumnViewer

`applyEditorValue, cancelEditing, checkBusy, getCell, getCellEditors, getCellModifier, getColumnProperties, getColumnViewerEditor, getItem, getLabelProvider, getViewerRow, hookEditingSupport, isBusy, isCellEditorActive, refresh, refresh, setBusy, setCellEditors, setCellModifier, setColumnProperties, setColumnViewerEditor, setLabelProvider, triggerEditorActivationEvent, update`

### Methods inherited from class org.eclipse.jface.viewers.StructuredViewer

`addDoubleClickListener, addDragSupport, addDropSupport, addFilter, addOpenListener, addPostSelectionChangedListener, assertElementsNotNull, equals, filter, findItem, findItems, fireDoubleClick, fireOpen, firePostSelectionChanged, getColorAndFontCollector, getComparator, getComparer, getFilteredChildren, getFilters, getSorter, handleInvalidSelection, handleLabelProviderChanged, handleOpen, handlePostSelect, handleSelect, hasFilters, internalUpdate, needsRefilter, preservingSelection, refresh, refresh, refreshItem, removeDoubleClickListener, removeFilter, removeOpenListener, removePostSelectionChangedListener, resetFilters, setComparator, setComparer, setFilters, setInput, setSorter, setUseHashlookup, testFindItem, testFindItems, unmapAllElements, unmapElement, unmapElement, update, updateItem, updateSelection, usingElementMap`

### Methods inherited from class org.eclipse.jface.viewers.ContentViewer

`getContentProvider, getInput`

### Methods inherited from class org.eclipse.jface.viewers.Viewer

`addHelpListener, addSelectionChangedListener, fireHelpRequested, fireSelectionChanged, getData, handleHelpRequest, removeHelpListener, removeSelectionChangedListener, setData, setSelection`

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

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

### Methods inherited from interface org.eclipse.jface.viewers.ISelectionProvider

`addSelectionChangedListener, removeSelectionChangedListener, setSelection`

### Constructor Detail

#### StructureDiffViewer

    public StructureDiffViewer​(Tree tree,
                               CompareConfiguration configuration)

Creates a new viewer for the given SWT tree control with the specified configuration.

Parameters:
  `tree` - the tree control
  `configuration` - the configuration for this viewer

#### StructureDiffViewer

    public StructureDiffViewer​(Composite parent,
                               CompareConfiguration configuration)

Creates a new viewer under the given SWT parent with the specified configuration.

Parameters:
  `parent` - the SWT control under which to create the viewer
  `configuration` - the configuration for this viewer

### Method Detail

#### setStructureCreator

    public void setStructureCreator​(IStructureCreator structureCreator)

Configures the `StructureDiffViewer` with a structure creator. The structure creator is used to create a hierarchical structure for each side of the viewer's input element of type `ICompareInput`.

Parameters:
  `structureCreator` - the new structure creator

#### getStructureCreator

    public IStructureCreator getStructureCreator()

Returns the structure creator or `null` if no structure creator has been set with `setStructureCreator`.

Returns:
  the structure creator or `null`

#### getTitle

    public String getTitle()

Reimplemented to get the descriptive title for this viewer from the `IStructureCreator`.

Overrides:
  `getTitle` in class `DiffTreeViewer`
Returns:
  the viewer's name

#### getRoot

    protected Object getRoot()

Overridden because the input of this viewer is not identical to the root of the tree. The tree's root is a IDiffContainer that was returned from the method `diff`.

Overrides:
  `getRoot` in class `StructuredViewer`
Returns:
  the root of the diff tree produced by method `diff`

#### inputChanged

    protected void inputChanged​(Object input,
                                Object oldInput)

Description copied from class: `Viewer`
Internal hook method called when the input to this viewer is initially set or subsequently changed.

The default implementation does nothing. Subclassers may override this method to do something when a viewer's input is set. A typical use is populate the viewer.

Overrides:
  `inputChanged` in class `DiffTreeViewer`
Parameters:
  `input` - the new input of this viewer, or `null` if none
  `oldInput` - the old input element or `null` if there was previously no input

#### initialSelection

    protected void initialSelection()

Description copied from class: `DiffTreeViewer`
This hook method is called from within `inputChanged` after a new input has been set but before any controls are updated. This default implementation calls `navigate(true)` to select and expand the first leaf node. Clients can override this method and are free to decide whether they want to call the inherited method.

Overrides:
  `initialSelection` in class `DiffTreeViewer`

#### handleDispose

    protected void handleDispose​(DisposeEvent event)

Description copied from class: `DiffTreeViewer`
Called on the viewer disposal. Unregisters from the compare configuration. Clients may extend if they have to do additional cleanup.

Overrides:
  `handleDispose` in class `DiffTreeViewer`
Parameters:
  `event` - dispose event that triggered call to this method

#### compareInputChanged

    protected void compareInputChanged​(ICompareInput input)

Recreates the comparable structures for the input sides.

Parameters:
  `input` - this viewer's new input

#### contentChanged

    protected void contentChanged​(IContentChangeNotifier changed)

Calls `diff` whenever the byte contents changes.

Parameters:
  `changed` - the object that sent out the notification

#### preDiffHook

    @Deprecated
    protected void preDiffHook​(IStructureComparator ancestor,
                               IStructureComparator left,
                               IStructureComparator right)

Deprecated.
Clients should override `preDiffHook(IStructureComparator, IStructureComparator, IStructureComparator, IProgressMonitor)`
This method is called from within `diff()` before the difference tree is being built. Clients may override this method to perform their own pre-processing. This default implementation does nothing.

Parameters:
  `ancestor` - the ancestor input to the differencing operation
  `left` - the left input to the differencing operation
  `right` - the right input to the differencing operation
Since:
  2.0

#### preDiffHook

    protected void preDiffHook​(IStructureComparator ancestor,
                               IStructureComparator left,
                               IStructureComparator right,
                               IProgressMonitor monitor)

This method is called from within `diff(IProgressMonitor)` before the difference tree is being built. This method may be called from a background (non-UI) thread).

For backwards compatibility, this default implementation calls `preDiffHook(IStructureComparator, IStructureComparator, IStructureComparator)` from the UI thread. Clients should override this method even if they don't perform pre-processing to avoid the call to the UI thread.

Parameters:
  `ancestor` - the ancestor input to the differencing operation
  `left` - the left input to the differencing operation
  `right` - the right input to the differencing operation
  `monitor` - a progress monitor or null if progress is not required
Since:
  3.3

#### diff

    protected void diff​(IProgressMonitor monitor)

Runs the difference engine and refreshes the tree. This method may be called from a background (non-UI) thread).

Parameters:
  `monitor` - a progress monitor or `null` if progress in not required

#### diff

    protected void diff()

Runs the difference engine and refreshes the tree.

#### postDiffHook

    @Deprecated
    protected void postDiffHook​(Differencer differencer,
                                IDiffContainer root)

Deprecated.
Subclasses should override `postDiffHook(Differencer, IDiffContainer, IProgressMonitor)` instead
This method is called from within `diff()` after the difference tree has been built. Clients may override this method to perform their own post-processing. This default implementation does nothing.

Parameters:
  `differencer` - the differencer used to perform the differencing
  `root` - the non-`null` root node of the difference tree
Since:
  2.0

#### postDiffHook

    protected void postDiffHook​(Differencer differencer,
                                IDiffContainer root,
                                IProgressMonitor monitor)

This method is called from within `diff(IProgressMonitor)` after the difference tree has been built. This method may be called from a background (non-UI) thread).

For backwards compatibility, this default implementation calls `postDiffHook(Differencer, IDiffContainer)` from the UI thread. Clients should override this method even if they don't perform post processing to avoid the call to the UI thread.

Parameters:
  `differencer` - the differencer used to perform the differencing
  `root` - the non-`null` root node of the difference tree
  `monitor` - a progress monitor or `null` if progress is not required
Since:
  3.3

#### propertyChange

    protected void propertyChange​(PropertyChangeEvent event)

Tracks property changes of the configuration object. Clients may override to track their own property changes. In this case they must call the inherited method.

Overrides:
  `propertyChange` in class `DiffTreeViewer`
Parameters:
  `event` - the property changed event that triggered the call to this method

#### copySelected

    protected void copySelected​(boolean leftToRight)

Overridden to call the `save` method on the structure creator after nodes have been copied from one side to the other side of an input object.

Overrides:
  `copySelected` in class `DiffTreeViewer`
Parameters:
  `leftToRight` - if `true` the left side is copied to the right side. If `false` the right side is copied to the left side