|
Eclipse Platform 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.eclipse.compare.structuremergeviewer.DocumentRangeNode
A document range node represents a structural element
when performing a structure compare of documents.
DocumentRangeNodes
are created while parsing the document and represent
a semantic entity (e.g. a Java class or method).
As a consequence of the parsing a DocumentRangeNode
maps to a range
of characters in the document.
Since a DocumentRangeNode
implements the IStructureComparator
and IStreamContentAccessor
interfaces it can be used as input to the
differencing engine. This makes it possible to perform
a structural diff on a document and have the nodes and leaves of the compare easily map
to character ranges within the document.
Subclasses may add additional state collected while parsing the document.
Differencer
Field Summary |
Fields inherited from interface org.eclipse.compare.contentmergeviewer.IDocumentRange |
RANGE_CATEGORY |
Constructor Summary | |
DocumentRangeNode(int typeCode,
String id,
IDocument document,
int start,
int length)
Creates a new DocumentRangeNode for the given range within the specified
document. |
Method Summary | |
void |
addChild(DocumentRangeNode node)
Adds the given node as a child. |
boolean |
equals(Object other)
Implementation based on getID . |
Position |
getAppendPosition()
Returns the position that has been set with setAppendPosition . |
Object[] |
getChildren()
Returns an iterator for all children of this object or null
if there are no children. |
InputStream |
getContents()
Returns an open InputStream for this object which can be used to retrieve the object's content. |
IDocument |
getDocument()
Returns the underlying document. |
String |
getId()
Returns this node's id. |
Position |
getRange()
Returns a position that specifies a subrange in the underlying document, or null if this document range spans the whole underlying document. |
int |
getTypeCode()
Returns the type code of this node. |
int |
hashCode()
Implementation based on getID . |
boolean |
isEditable()
Returns true if this object can be modified. |
ITypedElement |
replace(ITypedElement child,
ITypedElement other)
This method is called on a parent to add a child, remove a child, copy the contents of a child What to do is encoded in the two arguments as follows: add: child == null other != null remove: child != null other == null copy: child != null other != null |
void |
setAppendPosition(int pos)
Sets a position within the document range that can be used to (legally) insert text without breaking the syntax of the document. |
void |
setContent(byte[] content)
Replaces the current content with the given new bytes. |
void |
setId(String id)
Sets this node's id. |
void |
setLength(int length)
Sets the length of the range of this node. |
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public DocumentRangeNode(int typeCode, String id, IDocument document, int start, int length)
DocumentRangeNode
for the given range within the specified
document. The typeCode
is uninterpreted client data. The ID is used when comparing
two nodes with each other: i.e. the differencing engine performs a content compare
on two nodes if their IDs are equal.
typeCode
- a type code for this nodeid
- an identifier for this nodedocument
- document on which this node is based onstart
- start position of range within documentlength
- length of rangeMethod Detail |
public IDocument getDocument()
IDocumentRange
getDocument
in interface IDocumentRange
public Position getRange()
IDocumentRange
null
if this document range spans the whole underlying document.
getRange
in interface IDocumentRange
null
public int getTypeCode()
public String getId()
equals
and hashcode
.
public void setId(String id)
equals
and hashcode
.
id
- the new id for this nodepublic void addChild(DocumentRangeNode node)
node
- the node to add as a childpublic Object[] getChildren()
IStructureComparator
null
if there are no children.
getChildren
in interface IStructureComparator
public void setLength(int length)
length
- the length of the rangepublic void setAppendPosition(int pos)
E.g. when parsing a Java document the "append position" of a DocumentRangeNode
representating a Java class could be the character position just before the closing bracket.
Inserting the text of a new method there would not disturb the syntax of the class.
pos
- the character position within the underlying document where text can be legally insertedpublic Position getAppendPosition()
setAppendPosition
.
If setAppendPosition
hasn't been called, the position after the last character
of this range is returned.
public boolean equals(Object other)
getID
.
equals
in interface IStructureComparator
equals
in class Object
other
- the reference object with which to compare
true
if this object is the same as the other argument; false
otherwiseObject.equals(java.lang.Object)
public int hashCode()
getID
.
hashCode
in class Object
public InputStream getContents()
IStreamContentAccessor
InputStream
for this object which can be used to retrieve the object's content.
The client is responsible for closing the stream when finished.
Returns null
if this object has no streamable contents.
getContents
in interface IStreamContentAccessor
public boolean isEditable()
IEditableContent
true
if this object can be modified.
If it returns false
the other methods of this API must not be called.
isEditable
in interface IEditableContent
true
if this object can be modifiedpublic ITypedElement replace(ITypedElement child, ITypedElement other)
IEditableContent
add: | child == null | other != null |
remove: | child != null | other == null |
copy: | child != null | other != null |
replace
in interface IEditableContent
public void setContent(byte[] content)
IEditableContent
setContent
in interface IEditableContent
content
- this new contents replaces the old contents
|
Eclipse Platform 2.0 |
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |