Eclipse Platform
2.0

org.eclipse.compare.structuremergeviewer
Class DiffNode

java.lang.Object
  |
  +--org.eclipse.compare.structuremergeviewer.DiffElement
        |
        +--org.eclipse.compare.structuremergeviewer.DiffContainer
              |
              +--org.eclipse.compare.structuremergeviewer.DiffNode
All Implemented Interfaces:
ICompareInput, IDiffContainer, IDiffElement, ITypedElement

public class DiffNode
extends DiffContainer
implements ITypedElement, ICompareInput

Diff node are used as the compare result of the differencing engine. Since it implements the ITypedElement and ICompareInput interfaces it can be used directly to display the compare result in a DiffTreeViewer and as the input to any other compare/merge viewer.

DiffNodes are typically created as the result of performing a compare with the Differencer.

Clients typically use this class as is, but may subclass if required.

See Also:
DiffTreeViewer, Differencer

Field Summary
 
Fields inherited from interface org.eclipse.compare.ITypedElement
FOLDER_TYPE, TEXT_TYPE, UNKNOWN_TYPE
 
Constructor Summary
DiffNode(IDiffContainer parent, int kind)
          Creates a new DiffNode and initializes with the given values.
DiffNode(IDiffContainer parent, int kind, ITypedElement ancestor, ITypedElement left, ITypedElement right)
          Creates a new DiffNode and initializes with the given values.
DiffNode(int kind)
          Creates a new DiffNode with the given diff kind.
DiffNode(int kind, ITypedElement ancestor, ITypedElement left, ITypedElement right)
          Creates a new DiffNode and initializes with the given values.
DiffNode(ITypedElement left, ITypedElement right)
          Creates a new DiffNode with diff kind Differencer.CHANGE and initializes with the given values.
 
Method Summary
 void addCompareInputChangeListener(ICompareInputChangeListener listener)
          Registers a listener for changes of this ICompareInput.
 void copy(boolean leftToRight)
          Copy one side (source) to the other side (destination) depending on the value of leftToRight.
 boolean dontExpand()
          Returns true if this node shouldn't automatically be expanded in a DiffTreeViewer.
 boolean equals(Object other)
           
protected  void fireChange()
          Sends out notification that a change has occured on the ICompareInput.
 ITypedElement getAncestor()
          Returns the ancestor side of this input.
 ITypedElement getId()
          Returns the first not-null input of this node.
 Image getImage()
          Returns an image for this object.
 ITypedElement getLeft()
          Returns the left side of this input.
 String getName()
          Returns the (non-null) name of the left or right side if they are identical.
 ITypedElement getRight()
          Returns the right side of this input.
 String getType()
          Returns the type of this object.
 int hashCode()
           
 void removeCompareInputChangeListener(ICompareInputChangeListener listener)
          Unregisters a ICompareInput listener.
 void setDontExpand(boolean dontExpand)
          Controls whether this node is not automatically expanded when displayed in a DiffTreeViewer.
 void setLeft(ITypedElement left)
          Sets the left input to the given value.
 void setRight(ITypedElement right)
          Sets the right input to the given value.
 
Methods inherited from class org.eclipse.compare.structuremergeviewer.DiffContainer
add, findChild, getChildren, hasChildren, remove, removeToRoot
 
Methods inherited from class org.eclipse.compare.structuremergeviewer.DiffElement
getKind, getParent, setKind, setParent
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.eclipse.compare.structuremergeviewer.ICompareInput
getKind
 
Methods inherited from interface org.eclipse.compare.structuremergeviewer.IDiffElement
getKind, getParent, setParent
 

Constructor Detail

DiffNode

public DiffNode(IDiffContainer parent,
                int kind,
                ITypedElement ancestor,
                ITypedElement left,
                ITypedElement right)
Creates a new DiffNode and initializes with the given values.

Parameters:
parent - under which the new container is added as a child or null
kind - of difference (defined in Differencer)
ancestor - the common ancestor input to a compare
left - the left input to a compare
right - the right input to a compare

DiffNode

public DiffNode(ITypedElement left,
                ITypedElement right)
Creates a new DiffNode with diff kind Differencer.CHANGE and initializes with the given values.

Parameters:
left - the left input to a compare
right - the right input to a compare

DiffNode

public DiffNode(int kind,
                ITypedElement ancestor,
                ITypedElement left,
                ITypedElement right)
Creates a new DiffNode and initializes with the given values.

Parameters:
kind - of difference (defined in Differencer)
ancestor - the common ancestor input to a compare
left - the left input to a compare
right - the right input to a compare

DiffNode

public DiffNode(int kind)
Creates a new DiffNode with the given diff kind.

Parameters:
kind - of difference (defined in Differencer)

DiffNode

public DiffNode(IDiffContainer parent,
                int kind)
Creates a new DiffNode and initializes with the given values.

Parameters:
parent - under which the new container is added as a child or null
kind - of difference (defined in Differencer)
Method Detail

addCompareInputChangeListener

public void addCompareInputChangeListener(ICompareInputChangeListener listener)
Registers a listener for changes of this ICompareInput. Has no effect if an identical listener is already registered.

Specified by:
addCompareInputChangeListener in interface ICompareInput
Parameters:
listener - the listener to add

removeCompareInputChangeListener

public void removeCompareInputChangeListener(ICompareInputChangeListener listener)
Unregisters a ICompareInput listener. Has no effect if listener is not registered.

Specified by:
removeCompareInputChangeListener in interface ICompareInput
Parameters:
listener - the listener to remove

fireChange

protected void fireChange()
Sends out notification that a change has occured on the ICompareInput.


dontExpand

public boolean dontExpand()
Returns true if this node shouldn't automatically be expanded in a DiffTreeViewer.

Returns:
true if node shouldn't automatically be expanded

setDontExpand

public void setDontExpand(boolean dontExpand)
Controls whether this node is not automatically expanded when displayed in a DiffTreeViewer.

Parameters:
dontExpand - if true this node is not automatically expanded in DiffTreeViewer

getId

public ITypedElement getId()
Returns the first not-null input of this node. Method checks the three inputs in the order: ancestor, right, left.

Returns:
the first not-null input of this node

getName

public String getName()
Returns the (non-null) name of the left or right side if they are identical. Otherwise both names are concatenated (separated with a slash ('/')).

Subclasses may re-implement to provide a different name for this node.

Specified by:
getName in interface ITypedElement
Returns:
the name of this object

getImage

public Image getImage()
Description copied from interface: ITypedElement
Returns an image for this object. This image is used when displaying this object in the UI.

Specified by:
getImage in interface ITypedElement
Overrides:
getImage in class DiffElement
Returns:
the image of this object or null if this type of input has no image

getType

public String getType()
Description copied from interface: ITypedElement
Returns the type of this object. For objects with a file name this is typically the file extension. For folders its the constant FOLDER_TYPE. The type is used for determining a suitable viewer for this object.

Specified by:
getType in interface ITypedElement
Overrides:
getType in class DiffElement
Returns:
the type of this object

getAncestor

public ITypedElement getAncestor()
Description copied from interface: ICompareInput
Returns the ancestor side of this input. Returns null if this input has no ancestor or in the two-way compare case.

Specified by:
getAncestor in interface ICompareInput
Returns:
the ancestor of this input, or null

setLeft

public void setLeft(ITypedElement left)
Sets the left input to the given value.

Parameters:
left - the new value for the left input

getLeft

public ITypedElement getLeft()
Description copied from interface: ICompareInput
Returns the left side of this input. Returns null if there is no left side (deletion or addition).

Specified by:
getLeft in interface ICompareInput
Returns:
the left side of this input, or null

setRight

public void setRight(ITypedElement right)
Sets the right input to the given value.

Parameters:
right - the new value for the right input

getRight

public ITypedElement getRight()
Description copied from interface: ICompareInput
Returns the right side of this input. Returns null if there is no right side (deletion or addition).

Specified by:
getRight in interface ICompareInput
Returns:
the right side of this input, or null

copy

public void copy(boolean leftToRight)
Description copied from interface: ICompareInput
Copy one side (source) to the other side (destination) depending on the value of leftToRight. This method is called from a merge viewer if a corresponding action ("take left" or "take right") has been pressed.

The implementation should handle the following cases:

In addition the implementation should send out notification to the registered ICompareInputChangeListener.

Specified by:
copy in interface ICompareInput
Parameters:
leftToRight - if true the left side is copied to the right side. If false the right side is copied to the left side

hashCode

public int hashCode()
Overrides:
hashCode in class Object

equals

public boolean equals(Object other)
Overrides:
equals in class Object

Eclipse Platform
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.