Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.eclipse.compare.structuremergeviewer
Interface IStructureCreator

All Known Implementing Classes:
  ZipFileStructureCreator

public interface IStructureCreator

Interface used to create a hierarchical structure of `IStructureComparator`s for a given input object. In addition, it provides methods for locating a path in the hierarchical structure and to map a node of this structure back to the corresponding input object.

Structure creators are used in the following contexts:

- the `StructureDiffViewer` uses an `IStructureCreator` to build two (or three) tree structures of its input elements (method `getStructure`). These trees are then compared with each other by means of the differencing engine and displayed with the `DiffTreeViewer`,
- the `ReplaceWithEditionDialog` uses an `IStructureCreator` to map a path back to a range of characters in the textual representation.

A `IStructureCreator` provides methods for rewriting the tree produced by the differencing engine to support "smart" structural differencing. E.g. certain patterns of pairs of "addition" and "deletion" nodes can be detected as renames and merged into a single node.

Clients may implement this interface; there is no standard implementation.

See Also:
  `StructureDiffViewer`, `EditionSelectionDialog`, `Differencer`

Method Summary
`String` | `getContents(Object node, boolean ignoreWhitespace)` Returns the contents of the given node as a string for the purpose of performing a content comparison only (that is the string will not be visible in the UI).
`String` | `getName()` Returns a descriptive name which can be used in the UI of the `StructureDiffViewer`.
`IStructureComparator` | `getStructure(Object input)` Creates a tree structure consisting of `IStructureComparator`s from the given object and returns its root object.
`IStructureComparator` | `locate(Object path, Object input)` Creates the single node specified by path from the given input object.
`void` | `save(IStructureComparator node, Object input)` Called whenever a copy operation has been performed on a tree node.

Method Detail

### getName

    public String getName()

  Returns a descriptive name which can be used in the UI of the `StructureDiffViewer`.

  Returns:
    a descriptive name for this `IStructureCreator`

### getStructure

    public IStructureComparator getStructure(Object input)

  Creates a tree structure consisting of `IStructureComparator`s from the given object and returns its root object. Implementing this method typically involves parsing the input object. In case of an error (e.g. a parsing error) the value `null` is returned.

  Parameters:
    `input` - the object from which to create the tree of `IStructureComparator`
  Returns:
    the root node of the structure or `null` in case of error

### locate

    public IStructureComparator locate(Object path,
                                       Object input)

  Creates the single node specified by path from the given input object. In case of an error (e.g. a parsing error) the value `null` is returned. This method is similar to `getStructure` but in contrast to `getStructure` only a single node without any children must be returned. This method is used in the `ReplaceWithEditionDialog` to locate a sub element (e.g. a method) within an input object (e.g. a file containing source code).

  One (not optimized) approach to implement this method is calling `getStructure(input)` to build the full tree, and then finding that node within the tree that is specified by `path`.

  The syntax of `path` is not specified, because it is treated by the compare subsystem as an opaque entity and is not further interpreted. Clients using this functionality will pass a value of `path` to the `selectEdition` method of `ReplaceWithEditionDialog` and will receive this value unchanged as an argument to `locate`.

  Parameters:
    `path` - specifies a sub object within the input object
    `input` - the object from which to create the `IStructureComparator`
  Returns:
    the single node specified by `path` or `null`
  See Also:
    `EditionSelectionDialog.selectEdition(org.eclipse.compare.ITypedElement, org.eclipse.compare.ITypedElement[], java.lang.Object)`

### getContents

    public String getContents(Object node,
                              boolean ignoreWhitespace)

  Returns the contents of the given node as a string for the purpose of performing a content comparison only (that is the string will not be visible in the UI). If `ignoreWhitespace` is `true` all character sequences considered whitespace should be removed from the returned string.

  Parameters:
    `node` - the node for which to return a string representation
    `ignoreWhitespace` - if `true` the returned string should not contain whitespace
  Returns:
    the string contents of the given node

### save

    public void save(IStructureComparator node,
                     Object input)

  Called whenever a copy operation has been performed on a tree node.

  Parameters:
    `node` - the node for which to save the new content
    `input` - the object from which the structure tree was created in `getStructure`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Eclipse Platform Release 3.0
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp. and others 2000, 2004. All rights reserved.