X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMType.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMType.java
index 0ec3b3f..cc587d8 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMType.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/core/jdom/DOMType.java
@@ -27,695 +27,782 @@ import net.sourceforge.phpdt.internal.core.util.CharArrayOps;
/**
* DOMType provides an implementation of IDOMType.
- *
+ *
* @see IDOMType
* @see DOMNode
*/
-
-/* package */ class DOMType extends DOMMember implements IDOMType {
+
+/* package */class DOMType extends DOMMember implements IDOMType {
/**
- * The 'class' or 'interface' keyword if altered
- * from the documents contents, otherwise null
.
+ * The 'class' or 'interface' keyword if altered from the documents
+ * contents, otherwise null
.
*/
protected String fTypeKeyword;
/**
- * The original inclusive source range of the 'class'
- * or 'interface' keyword in the document.
+ * The original inclusive source range of the 'class' or 'interface' keyword
+ * in the document.
*/
- protected int[] fTypeRange;
+ protected int[] fTypeRange;
/**
- * The superclass name for the class declaration
- * if altered from the document's contents, otherwise
- * null
. Also null
when this
- * type represents an interface.
+ * The superclass name for the class declaration if altered from the
+ * document's contents, otherwise null
. Also
+ * null
when this type represents an interface.
*/
protected String fSuperclass;
/**
- * The original inclusive source range of the superclass
- * name in the document, or -1's of no superclass was
- * specified in the document.
+ * The original inclusive source range of the superclass name in the
+ * document, or -1's of no superclass was specified in the document.
*/
- protected int[] fSuperclassRange;
-
+ protected int[] fSuperclassRange;
/**
- * The original inclusive souce range of the 'extends' keyword
- * in the document, including surrounding whitespace, or -1's if
- * the keyword was not present in the document.
+ * The original inclusive souce range of the 'extends' keyword in the
+ * document, including surrounding whitespace, or -1's if the keyword was
+ * not present in the document.
*/
- protected int[] fExtendsRange;
+ protected int[] fExtendsRange;
/**
- * The original inclusive souce range of the 'implements' keyword
- * in the document, including surrounding whitespace, or -1's if
- * the keyword was not present in the document.
- */
- protected int[] fImplementsRange;
+ * The original inclusive souce range of the 'implements' keyword in the
+ * document, including surrounding whitespace, or -1's if the keyword was
+ * not present in the document.
+ */
+ protected int[] fImplementsRange;
/**
- * The comma delimited list of interfaces this type implements
- * or extends, if altered from the document's contents, otherwise
- * null
. Also null
if this type does
- * not implement or extend any interfaces.
+ * The comma delimited list of interfaces this type implements or extends,
+ * if altered from the document's contents, otherwise null
.
+ * Also null
if this type does not implement or extend any
+ * interfaces.
*/
protected char[] fInterfaces;
/**
- * The original inclusive source range of the list of interfaces this
- * type implements or extends, not including any surrouding whitespace.
- * If the document did not specify interfaces, this array contains -1's.
+ * The original inclusive source range of the list of interfaces this type
+ * implements or extends, not including any surrouding whitespace. If the
+ * document did not specify interfaces, this array contains -1's.
*/
- protected int[] fInterfacesRange;
-
-
+ protected int[] fInterfacesRange;
- /**
- * The original source range of the first character following the
- * type name superclass name, or interface list, up to and including
- * the first character before the first type member.
- */
- protected int[] fOpenBodyRange;
+ /**
+ * The original source range of the first character following the type name
+ * superclass name, or interface list, up to and including the first
+ * character before the first type member.
+ */
+ protected int[] fOpenBodyRange;
- /**
+ /**
* The original source range of the first new line or non whitespace
- * character preceding the close brace of the type's body, up to the
- * and including the first character before the next node (if there are
- * no following nodes, the range ends at the position of the last
- * character in the document).
- */
- protected int[] fCloseBodyRange;
+ * character preceding the close brace of the type's body, up to the and
+ * including the first character before the next node (if there are no
+ * following nodes, the range ends at the position of the last character in
+ * the document).
+ */
+ protected int[] fCloseBodyRange;
+
+ /**
+ * A list of interfaces this type extends or implements. null
+ * when this type does not extend or implement any interfaces.
+ */
+ protected String[] fSuperInterfaces = new String[0];
/**
- * A list of interfaces this type extends or implements.
- * null
when this type does not extend
- * or implement any interfaces.
+ * This position is the position of the end of the last line separator
+ * before the closing brace starting position of the receiver.
*/
- protected String[] fSuperInterfaces= new String[0];
-
+ // protected int fInsertionPosition;
/**
- * This position is the position of the end of the last line separator before the closing brace starting
- * position of the receiver.
+ * Constructs an empty type node.
*/
-// protected int fInsertionPosition;
+ DOMType() {
-/**
- * Constructs an empty type node.
- */
-DOMType() {
+ }
-}
-/**
- * Creates a new detailed TYPE document fragment on the given range of the document.
- *
- * @param document - the document containing this node's original contents
- * @param sourceRange - a two element array of integers describing the
- * entire inclusive source range of this node within its document.
- * Contents start on and include the character at the first position.
- * Contents end on and include the character at the last position.
- * An array of -1's indicates this node's contents do not exist
- * in the document.
- * @param name - the identifier portion of the name of this node, or
- * null
if this node does not have a name
- * @param nameRange - a two element array of integers describing the
- * entire inclusive source range of this node's name within its document,
- * including any array qualifiers that might immediately follow the name
- * or -1's if this node does not have a name.
- * @param commentRange - a two element array describing the comments that precede
- * the member declaration. The first matches the start of this node's
- * sourceRange, and the second is the new-line or first non-whitespace
- * character following the last comment. If no comments are present,
- * this array contains two -1's.
- * @param flags - an integer representing the modifiers for this member. The
- * integer can be analyzed with org.eclipse.jdt.core.Flags
- * @param modifierRange - a two element array describing the location of
- * modifiers for this member within its source range. The first integer
- * is the first character of the first modifier for this member, and
- * the second integer is the last whitespace character preceeding the
- * next part of this member declaration. If there are no modifiers present
- * in this node's source code (that is, package default visibility), this array
- * contains two -1's.
- * @param typeRange - a two element array describing the location of the 'class'
- * or 'interface' keyword in the type declaration - first and last character
- * positions.
- * @param superclassRange - a two element array describing the location of the
- * superclass name in the type declaration - first and last character
- * positions or two -1's if a superclass is not present in the document.
- * @param extendsRange - a two element array describing the location of the
- * 'extends' keyword in the type declaration, including any surrounding
- * whitespace, or -1's if the 'extends' keyword is not present in the document.
- * @param implementsList - an array of names of the interfaces this type implements
- * or extends, or null
if this type does not implement or extend
- * any interfaces.
- * @param implementsRange - a two element array describing the location of the
- * comment delimited list of interfaces this type implements or extends,
- * not including any surrounding whitespace, or -1's if no interface list
- * is present in the document.
- * @param implementsKeywordRange - a two element array describing the location of the
- * 'implements' keyword, including any surrounding whitespace, or -1's if no
- * 'implements' keyword is present in the document.
- * @param openBodyRange - a two element array describing the location of the
- * open brace of the type's body and whitespace following the type declaration
- * and preceeding the first member in the type.
- * @param closeBodyRange - a two element array describing the source range of the
- * first new line or non whitespace character preceeding the close brace of the
- * type's body, up to the close brace
- * @param isClass - true is the type is a class, false if it is an interface
- */
-DOMType(char[] document, int[] sourceRange, String name, int[] nameRange, int[] commentRange, int flags, int[] modifierRange, int[] typeRange, int[] superclassRange, int[] extendsRange, String[] implementsList, int[] implementsRange, int[] implementsKeywordRange, int[] openBodyRange, int[] closeBodyRange, boolean isClass) {
- super(document, sourceRange, name, nameRange, commentRange, flags, modifierRange);
-
- fTypeRange= typeRange;
- setMask(MASK_TYPE_IS_CLASS, isClass);
-
- fExtendsRange= extendsRange;
- fImplementsRange= implementsKeywordRange;
- fSuperclassRange= superclassRange;
- fInterfacesRange= implementsRange;
- fCloseBodyRange= closeBodyRange;
- setMask(MASK_TYPE_HAS_SUPERCLASS, superclassRange[0] > 0);
- setMask(MASK_TYPE_HAS_INTERFACES, implementsList != null);
- fSuperInterfaces= implementsList;
- fOpenBodyRange= openBodyRange;
- fCloseBodyRange= closeBodyRange;
- setMask(MASK_DETAILED_SOURCE_INDEXES, true);
+ /**
+ * Creates a new detailed TYPE document fragment on the given range of the
+ * document.
+ *
+ * @param document -
+ * the document containing this node's original contents
+ * @param sourceRange -
+ * a two element array of integers describing the entire
+ * inclusive source range of this node within its document.
+ * Contents start on and include the character at the first
+ * position. Contents end on and include the character at the
+ * last position. An array of -1's indicates this node's contents
+ * do not exist in the document.
+ * @param name -
+ * the identifier portion of the name of this node, or
+ * null
if this node does not have a name
+ * @param nameRange -
+ * a two element array of integers describing the entire
+ * inclusive source range of this node's name within its
+ * document, including any array qualifiers that might
+ * immediately follow the name or -1's if this node does not have
+ * a name.
+ * @param commentRange -
+ * a two element array describing the comments that precede the
+ * member declaration. The first matches the start of this node's
+ * sourceRange, and the second is the new-line or first
+ * non-whitespace character following the last comment. If no
+ * comments are present, this array contains two -1's.
+ * @param flags -
+ * an integer representing the modifiers for this member. The
+ * integer can be analyzed with net.sourceforge.phpdt.core.Flags
+ * @param modifierRange -
+ * a two element array describing the location of modifiers for
+ * this member within its source range. The first integer is the
+ * first character of the first modifier for this member, and the
+ * second integer is the last whitespace character preceeding the
+ * next part of this member declaration. If there are no
+ * modifiers present in this node's source code (that is, package
+ * default visibility), this array contains two -1's.
+ * @param typeRange -
+ * a two element array describing the location of the 'class' or
+ * 'interface' keyword in the type declaration - first and last
+ * character positions.
+ * @param superclassRange -
+ * a two element array describing the location of the superclass
+ * name in the type declaration - first and last character
+ * positions or two -1's if a superclass is not present in the
+ * document.
+ * @param extendsRange -
+ * a two element array describing the location of the 'extends'
+ * keyword in the type declaration, including any surrounding
+ * whitespace, or -1's if the 'extends' keyword is not present in
+ * the document.
+ * @param implementsList -
+ * an array of names of the interfaces this type implements or
+ * extends, or null
if this type does not
+ * implement or extend any interfaces.
+ * @param implementsRange -
+ * a two element array describing the location of the comment
+ * delimited list of interfaces this type implements or extends,
+ * not including any surrounding whitespace, or -1's if no
+ * interface list is present in the document.
+ * @param implementsKeywordRange -
+ * a two element array describing the location of the
+ * 'implements' keyword, including any surrounding whitespace, or
+ * -1's if no 'implements' keyword is present in the document.
+ * @param openBodyRange -
+ * a two element array describing the location of the open brace
+ * of the type's body and whitespace following the type
+ * declaration and preceeding the first member in the type.
+ * @param closeBodyRange -
+ * a two element array describing the source range of the first
+ * new line or non whitespace character preceeding the close
+ * brace of the type's body, up to the close brace
+ * @param isClass -
+ * true is the type is a class, false if it is an interface
+ */
+ DOMType(char[] document, int[] sourceRange, String name, int[] nameRange,
+ int[] commentRange, int flags, int[] modifierRange,
+ int[] typeRange, int[] superclassRange, int[] extendsRange,
+ String[] implementsList, int[] implementsRange,
+ int[] implementsKeywordRange, int[] openBodyRange,
+ int[] closeBodyRange, boolean isClass) {
+ super(document, sourceRange, name, nameRange, commentRange, flags,
+ modifierRange);
+
+ fTypeRange = typeRange;
+ setMask(MASK_TYPE_IS_CLASS, isClass);
+
+ fExtendsRange = extendsRange;
+ fImplementsRange = implementsKeywordRange;
+ fSuperclassRange = superclassRange;
+ fInterfacesRange = implementsRange;
+ fCloseBodyRange = closeBodyRange;
+ setMask(MASK_TYPE_HAS_SUPERCLASS, superclassRange[0] > 0);
+ setMask(MASK_TYPE_HAS_INTERFACES, implementsList != null);
+ fSuperInterfaces = implementsList;
+ fOpenBodyRange = openBodyRange;
+ fCloseBodyRange = closeBodyRange;
+ setMask(MASK_DETAILED_SOURCE_INDEXES, true);
-}
-/**
- * Creates a new simple TYPE document fragment on the given range of the document.
- *
- * @param document - the document containing this node's original contents
- * @param sourceRange - a two element array of integers describing the
- * entire inclusive source range of this node within its document.
- * Contents start on and include the character at the first position.
- * Contents end on and include the character at the last position.
- * An array of -1's indicates this node's contents do not exist
- * in the document.
- * @param name - the identifier portion of the name of this node, or
- * null
if this node does not have a name
- * @param nameRange - a two element array of integers describing the
- * entire inclusive source range of this node's name within its document,
- * including any array qualifiers that might immediately follow the name
- * or -1's if this node does not have a name.
- * @param flags - an integer representing the modifiers for this member. The
- * integer can be analyzed with org.eclipse.jdt.core.Flags
- * @param implementsList - an array of names of the interfaces this type implements
- * or extends, or null
if this type does not implement or extend
- * any interfaces.
- * @param isClass - true is the type is a class, false if it is an interface
- */
-DOMType(char[] document, int[] sourceRange, String name, int[] nameRange, int flags, String[] implementsList, boolean isClass) {
- this(document, sourceRange, name, nameRange, new int[] {-1, -1}, flags,
- new int[] {-1, -1}, new int[] {-1, -1}, new int[] {-1, -1}, new int[] {-1, -1},
- implementsList, new int[] {-1, -1}, new int[] {-1, -1}, new int[] {-1, -1}, new int[] {sourceRange[1], sourceRange[1]}, isClass);
- setMask(MASK_DETAILED_SOURCE_INDEXES, false);
-}
-/**
- * @see IDOMType#addSuperInterface(String)
- */
-public void addSuperInterface(String name) throws IllegalArgumentException {
- if (name == null) {
- throw new IllegalArgumentException(Util.bind("dom.addNullInterface")); //$NON-NLS-1$
}
- if (fSuperInterfaces == null) {
- fSuperInterfaces= new String[1];
- fSuperInterfaces[0]= name;
- } else {
- fSuperInterfaces= appendString(fSuperInterfaces, name);
+
+ /**
+ * Creates a new simple TYPE document fragment on the given range of the
+ * document.
+ *
+ * @param document -
+ * the document containing this node's original contents
+ * @param sourceRange -
+ * a two element array of integers describing the entire
+ * inclusive source range of this node within its document.
+ * Contents start on and include the character at the first
+ * position. Contents end on and include the character at the
+ * last position. An array of -1's indicates this node's contents
+ * do not exist in the document.
+ * @param name -
+ * the identifier portion of the name of this node, or
+ * null
if this node does not have a name
+ * @param nameRange -
+ * a two element array of integers describing the entire
+ * inclusive source range of this node's name within its
+ * document, including any array qualifiers that might
+ * immediately follow the name or -1's if this node does not have
+ * a name.
+ * @param flags -
+ * an integer representing the modifiers for this member. The
+ * integer can be analyzed with net.sourceforge.phpdt.core.Flags
+ * @param implementsList -
+ * an array of names of the interfaces this type implements or
+ * extends, or null
if this type does not
+ * implement or extend any interfaces.
+ * @param isClass -
+ * true is the type is a class, false if it is an interface
+ */
+ DOMType(char[] document, int[] sourceRange, String name, int[] nameRange,
+ int flags, String[] implementsList, boolean isClass) {
+ this(document, sourceRange, name, nameRange, new int[] { -1, -1 },
+ flags, new int[] { -1, -1 }, new int[] { -1, -1 }, new int[] {
+ -1, -1 }, new int[] { -1, -1 }, implementsList,
+ new int[] { -1, -1 }, new int[] { -1, -1 },
+ new int[] { -1, -1 }, new int[] { sourceRange[1],
+ sourceRange[1] }, isClass);
+ setMask(MASK_DETAILED_SOURCE_INDEXES, false);
}
- setSuperInterfaces(fSuperInterfaces);
-}
-/**
- * @see DOMMember#appendMemberBodyContents(CharArrayBuffer)
- */
-protected void appendMemberBodyContents(CharArrayBuffer buffer) {
- buffer.append(fDocument, fOpenBodyRange[0], fOpenBodyRange[1] + 1 - fOpenBodyRange[0]);
- appendContentsOfChildren(buffer);
- buffer.append(fDocument, fCloseBodyRange[0], fCloseBodyRange[1] + 1 - fCloseBodyRange[0]);
- buffer.append(fDocument, fCloseBodyRange[1] + 1, fSourceRange[1] - fCloseBodyRange[1]);
-}
-/**
- * @see DOMMember#appendMemberDeclarationContents(CharArrayBuffer )
- */
-protected void appendMemberDeclarationContents(CharArrayBuffer buffer) {
-
- if (fTypeKeyword != null) {
- buffer.append(fTypeKeyword);
- buffer.append(fDocument, fTypeRange[1], fNameRange[0] - fTypeRange[1] );
- } else {
- buffer.append(fDocument, fTypeRange[0], fTypeRange[1] + 1 - fTypeRange[0]);
+
+ /**
+ * @see IDOMType#addSuperInterface(String)
+ */
+ public void addSuperInterface(String name) throws IllegalArgumentException {
+ if (name == null) {
+ throw new IllegalArgumentException(Util
+ .bind("dom.addNullInterface")); //$NON-NLS-1$
+ }
+ if (fSuperInterfaces == null) {
+ fSuperInterfaces = new String[1];
+ fSuperInterfaces[0] = name;
+ } else {
+ fSuperInterfaces = appendString(fSuperInterfaces, name);
+ }
+ setSuperInterfaces(fSuperInterfaces);
}
- buffer.append(getName());
+ /**
+ * @see DOMMember#appendMemberBodyContents(CharArrayBuffer)
+ */
+ protected void appendMemberBodyContents(CharArrayBuffer buffer) {
+ buffer.append(fDocument, fOpenBodyRange[0], fOpenBodyRange[1] + 1
+ - fOpenBodyRange[0]);
+ appendContentsOfChildren(buffer);
+ buffer.append(fDocument, fCloseBodyRange[0], fCloseBodyRange[1] + 1
+ - fCloseBodyRange[0]);
+ buffer.append(fDocument, fCloseBodyRange[1] + 1, fSourceRange[1]
+ - fCloseBodyRange[1]);
+ }
- if (isClass()) {
- boolean hasSuperclass = false, hasInterfaces = false;
- if (getMask(MASK_TYPE_HAS_SUPERCLASS)) {
- hasSuperclass = true;
- if (fExtendsRange[0] < 0) {
- buffer.append(" extends "); //$NON-NLS-1$
- } else {
- buffer.append(fDocument, fExtendsRange[0], fExtendsRange[1] + 1 - fExtendsRange[0]);
- }
- if (fSuperclass != null) {
- buffer.append(fSuperclass);
- } else {
- buffer.append(fDocument, fSuperclassRange[0], fSuperclassRange[1] + 1 - fSuperclassRange[0]);
- }
+ /**
+ * @see DOMMember#appendMemberDeclarationContents(CharArrayBuffer )
+ */
+ protected void appendMemberDeclarationContents(CharArrayBuffer buffer) {
+
+ if (fTypeKeyword != null) {
+ buffer.append(fTypeKeyword);
+ buffer.append(fDocument, fTypeRange[1], fNameRange[0]
+ - fTypeRange[1]);
+ } else {
+ buffer.append(fDocument, fTypeRange[0], fTypeRange[1] + 1
+ - fTypeRange[0]);
}
- if (getMask(MASK_TYPE_HAS_INTERFACES)) {
- hasInterfaces = true;
- if (fImplementsRange[0] < 0) {
- buffer.append(" implements "); //$NON-NLS-1$
- } else {
- buffer.append(fDocument, fImplementsRange[0], fImplementsRange[1] + 1 - fImplementsRange[0]);
+
+ buffer.append(getName());
+
+ if (isClass()) {
+ boolean hasSuperclass = false, hasInterfaces = false;
+ if (getMask(MASK_TYPE_HAS_SUPERCLASS)) {
+ hasSuperclass = true;
+ if (fExtendsRange[0] < 0) {
+ buffer.append(" extends "); //$NON-NLS-1$
+ } else {
+ buffer.append(fDocument, fExtendsRange[0], fExtendsRange[1]
+ + 1 - fExtendsRange[0]);
+ }
+ if (fSuperclass != null) {
+ buffer.append(fSuperclass);
+ } else {
+ buffer.append(fDocument, fSuperclassRange[0],
+ fSuperclassRange[1] + 1 - fSuperclassRange[0]);
+ }
}
- if (fInterfaces != null) {
- buffer.append(fInterfaces);
- } else {
- buffer.append(fDocument, fInterfacesRange[0], fInterfacesRange[1] + 1 - fInterfacesRange[0]);
+ if (getMask(MASK_TYPE_HAS_INTERFACES)) {
+ hasInterfaces = true;
+ if (fImplementsRange[0] < 0) {
+ buffer.append(" implements "); //$NON-NLS-1$
+ } else {
+ buffer.append(fDocument, fImplementsRange[0],
+ fImplementsRange[1] + 1 - fImplementsRange[0]);
+ }
+ if (fInterfaces != null) {
+ buffer.append(fInterfaces);
+ } else {
+ buffer.append(fDocument, fInterfacesRange[0],
+ fInterfacesRange[1] + 1 - fInterfacesRange[0]);
+ }
}
- }
- if (hasInterfaces) {
- if (fImplementsRange[0] < 0) {
- buffer.append(' ');
+ if (hasInterfaces) {
+ if (fImplementsRange[0] < 0) {
+ buffer.append(' ');
+ } else {
+ buffer.append(fDocument, fInterfacesRange[1] + 1,
+ fOpenBodyRange[0] - fInterfacesRange[1] - 1);
+ }
} else {
- buffer.append(fDocument, fInterfacesRange[1] + 1, fOpenBodyRange[0] - fInterfacesRange[1] - 1);
+ if (hasSuperclass) {
+ if (fSuperclassRange[0] < 0) {
+ buffer.append(' ');
+ } else {
+ buffer.append(fDocument, fSuperclassRange[1] + 1,
+ fOpenBodyRange[0] - fSuperclassRange[1] - 1);
+ }
+ } else {
+ buffer.append(fDocument, fNameRange[1] + 1,
+ fOpenBodyRange[0] - fNameRange[1] - 1);
+ }
}
} else {
- if (hasSuperclass) {
- if (fSuperclassRange[0] < 0) {
+ if (getMask(MASK_TYPE_HAS_INTERFACES)) {
+ if (fExtendsRange[0] < 0) {
+ buffer.append(" extends "); //$NON-NLS-1$
+ } else {
+ buffer.append(fDocument, fExtendsRange[0], fExtendsRange[1]
+ + 1 - fExtendsRange[0]);
+ }
+ if (fInterfaces != null) {
+ buffer.append(fInterfaces);
buffer.append(' ');
} else {
- buffer.append(fDocument, fSuperclassRange[1] + 1, fOpenBodyRange[0] - fSuperclassRange[1] - 1);
+ buffer.append(fDocument, fInterfacesRange[0],
+ fInterfacesRange[1] + 1 - fInterfacesRange[0]);
}
} else {
- buffer.append(fDocument, fNameRange[1] + 1, fOpenBodyRange[0] - fNameRange[1] - 1);
- }
- }
- } else {
- if (getMask(MASK_TYPE_HAS_INTERFACES)) {
- if (fExtendsRange[0] < 0) {
- buffer.append(" extends "); //$NON-NLS-1$
- } else {
- buffer.append(fDocument, fExtendsRange[0], fExtendsRange[1] + 1 - fExtendsRange[0]);
+ buffer.append(fDocument, fNameRange[1] + 1, fOpenBodyRange[0]
+ - fNameRange[1] - 1);
}
- if (fInterfaces != null) {
- buffer.append(fInterfaces);
- buffer.append(' ');
- } else {
- buffer.append(fDocument, fInterfacesRange[0], fInterfacesRange[1] + 1 - fInterfacesRange[0]);
- }
- } else {
- buffer.append(fDocument, fNameRange[1] + 1, fOpenBodyRange[0] - fNameRange[1] - 1);
}
+
}
-
-}
-/**
- * @see DOMNode#appendSimpleContents(CharArrayBuffer)
- */
-protected void appendSimpleContents(CharArrayBuffer buffer) {
- // append eveything before my name
- buffer.append(fDocument, fSourceRange[0], fNameRange[0] - fSourceRange[0]);
- // append my name
- buffer.append(fName);
-
- // append everything after my name and before my first child
- buffer.append(fDocument, fNameRange[1] + 1, fOpenBodyRange[1] - fNameRange[1]);
- // append my children
- appendContentsOfChildren(buffer);
- // append from my last child to my end
- buffer.append(fDocument, fCloseBodyRange[0], fSourceRange[1] - fCloseBodyRange[0] + 1);
+ /**
+ * @see DOMNode#appendSimpleContents(CharArrayBuffer)
+ */
+ protected void appendSimpleContents(CharArrayBuffer buffer) {
+ // append eveything before my name
+ buffer.append(fDocument, fSourceRange[0], fNameRange[0]
+ - fSourceRange[0]);
+ // append my name
+ buffer.append(fName);
+ // append everything after my name and before my first child
+ buffer.append(fDocument, fNameRange[1] + 1, fOpenBodyRange[1]
+ - fNameRange[1]);
+ // append my children
+ appendContentsOfChildren(buffer);
+ // append from my last child to my end
+ buffer.append(fDocument, fCloseBodyRange[0], fSourceRange[1]
+ - fCloseBodyRange[0] + 1);
-}
-/**
- * @see IDOMNode#canHaveChildren()
- */
-public boolean canHaveChildren() {
- return true;
-}
-/**
- * Returns the position of the closing brace for the body of this type.
- * This value this method returns is only valid before the type has
- * been normalized and is present only for normalization.
- */
-int getCloseBodyPosition() {
- return fCloseBodyRange[0];
-}
-/**
- * @see DOMNode#getDetailedNode()
- */
-//protected DOMNode getDetailedNode() {
-// return (DOMNode)getFactory().createType(getContents());
-//}
-/**
- * @see DOMNode#getInsertionPosition()
- */
-public int getInsertionPosition() {
- // this should return the position of the end of the last line separator before the closing brace of the type
- // See PR 1GELSDQ: ITPJUI:WINNT - JDOM: IType.createMethod does not insert nicely for inner types
- return fInsertionPosition;
-}
-/**
- * @see IDOMNode#getJavaElement
- */
-public IJavaElement getJavaElement(IJavaElement parent) throws IllegalArgumentException {
- if (parent.getElementType() == IJavaElement.TYPE) {
- return ((IType)parent).getType(getName());
- } else if (parent.getElementType() == IJavaElement.COMPILATION_UNIT) {
- return ((ICompilationUnit)parent).getType(getName());
- } else {
- throw new IllegalArgumentException(Util.bind("element.illegalParent")); //$NON-NLS-1$
}
-}
-/**
- * @see DOMMember#getMemberDeclarationStartPosition()
- */
-protected int getMemberDeclarationStartPosition() {
- return fTypeRange[0];
-}
-/**
- * @see IDOMNode#getNodeType()
- */
-public int getNodeType() {
- return IDOMNode.TYPE;
-}
-/**
- * Answers the open body range end position.
- */
-int getOpenBodyEnd() {
- return fOpenBodyRange[1];
-}
-/**
- * @see IDOMType#getSuperclass()
- */
-public String getSuperclass() {
- becomeDetailed();
- if (getMask(MASK_TYPE_HAS_SUPERCLASS)) {
- if (fSuperclass != null) {
- return fSuperclass;
+
+ /**
+ * @see IDOMNode#canHaveChildren()
+ */
+ public boolean canHaveChildren() {
+ return true;
+ }
+
+ /**
+ * Returns the position of the closing brace for the body of this type. This
+ * value this method returns is only valid before the type has been
+ * normalized and is present only for normalization.
+ */
+ int getCloseBodyPosition() {
+ return fCloseBodyRange[0];
+ }
+
+ /**
+ * @see DOMNode#getDetailedNode()
+ */
+ // protected DOMNode getDetailedNode() {
+ // return (DOMNode)getFactory().createType(getContents());
+ // }
+ /**
+ * @see DOMNode#getInsertionPosition()
+ */
+ public int getInsertionPosition() {
+ // this should return the position of the end of the last line separator
+ // before the closing brace of the type
+ // See PR 1GELSDQ: ITPJUI:WINNT - JDOM: IType.createMethod does not
+ // insert nicely for inner types
+ return fInsertionPosition;
+ }
+
+ /**
+ * @see IDOMNode#getJavaElement
+ */
+ public IJavaElement getJavaElement(IJavaElement parent)
+ throws IllegalArgumentException {
+ if (parent.getElementType() == IJavaElement.TYPE) {
+ return ((IType) parent).getType(getName());
+ } else if (parent.getElementType() == IJavaElement.COMPILATION_UNIT) {
+ return ((ICompilationUnit) parent).getType(getName());
} else {
- return CharArrayOps.substring(fDocument, fSuperclassRange[0], fSuperclassRange[1] + 1 - fSuperclassRange[0]);
+ throw new IllegalArgumentException(Util
+ .bind("element.illegalParent")); //$NON-NLS-1$
}
- } else {
- return null;
}
-}
-/**
- * @see IDOMType#getSuperInterfaces()
- */
-public String[] getSuperInterfaces() {
- return fSuperInterfaces;
-}
-/**
- * @see IDOMNode
- */
-public boolean isAllowableChild(IDOMNode node) {
- if (node != null) {
- int type= node.getNodeType();
- return type == IDOMNode.TYPE || type == IDOMNode.FIELD|| type == IDOMNode.METHOD ||
- type == IDOMNode.INITIALIZER;
- } else {
- return false;
- }
-
-}
-/**
- * @see IDOMType#isClass()
- */
-public boolean isClass() {
- return getMask(MASK_TYPE_IS_CLASS);
-}
-/**
- * @see DOMNode
- */
-protected DOMNode newDOMNode() {
- return new DOMType();
-}
-/**
- * Normalizes this DOMNode
's source positions to include whitespace preceeding
- * the node on the line on which the node starts, and all whitespace after the node up to
- * the next node's start
- */
-void normalize(ILineStartFinder finder) {
- // perform final changes to the open and close body ranges
- int openBodyEnd, openBodyStart, closeBodyStart, closeBodyEnd;
- DOMNode first = (DOMNode) getFirstChild();
- DOMNode lastNode = null;
- // look for the open body
- Scanner scanner = new Scanner();
- scanner.setSource(fDocument);
- scanner.resetTo(fNameRange[1] + 1, fDocument.length);
-
- try {
- int currentToken = scanner.getNextToken();
- while(currentToken != ITerminalSymbols.TokenNameLBRACE &&
- currentToken != ITerminalSymbols.TokenNameEOF) {
- currentToken = scanner.getNextToken();
- }
- if(currentToken == ITerminalSymbols.TokenNameLBRACE) {
- openBodyEnd = scanner.currentPosition - 1;
- openBodyStart = scanner.startPosition;
+
+ /**
+ * @see DOMMember#getMemberDeclarationStartPosition()
+ */
+ protected int getMemberDeclarationStartPosition() {
+ return fTypeRange[0];
+ }
+
+ /**
+ * @see IDOMNode#getNodeType()
+ */
+ public int getNodeType() {
+ return IDOMNode.TYPE;
+ }
+
+ /**
+ * Answers the open body range end position.
+ */
+ int getOpenBodyEnd() {
+ return fOpenBodyRange[1];
+ }
+
+ /**
+ * @see IDOMType#getSuperclass()
+ */
+ public String getSuperclass() {
+ becomeDetailed();
+ if (getMask(MASK_TYPE_HAS_SUPERCLASS)) {
+ if (fSuperclass != null) {
+ return fSuperclass;
+ } else {
+ return CharArrayOps.substring(fDocument, fSuperclassRange[0],
+ fSuperclassRange[1] + 1 - fSuperclassRange[0]);
+ }
} else {
- openBodyEnd = fDocument.length;
- openBodyStart = fDocument.length;
+ return null;
}
- } catch(InvalidInputException e) {
- openBodyEnd = fDocument.length;
- openBodyStart = fDocument.length;
- }
- if (first != null) {
- int lineStart = finder.getLineStart(first.getStartPosition());
- if (lineStart > openBodyEnd) {
- openBodyEnd = lineStart - 1;
- } else {
- openBodyEnd = first.getStartPosition() - 1;
- }
- lastNode = (DOMNode) first.getNextNode();
- if (lastNode == null) {
- lastNode = first;
+ }
+
+ /**
+ * @see IDOMType#getSuperInterfaces()
+ */
+ public String[] getSuperInterfaces() {
+ return fSuperInterfaces;
+ }
+
+ /**
+ * @see IDOMNode
+ */
+ public boolean isAllowableChild(IDOMNode node) {
+ if (node != null) {
+ int type = node.getNodeType();
+ return type == IDOMNode.TYPE || type == IDOMNode.FIELD
+ || type == IDOMNode.METHOD || type == IDOMNode.INITIALIZER;
} else {
- while (lastNode.getNextNode() != null) {
- lastNode = (DOMNode) lastNode.getNextNode();
- }
+ return false;
}
+
+ }
+
+ /**
+ * @see IDOMType#isClass()
+ */
+ public boolean isClass() {
+ return getMask(MASK_TYPE_IS_CLASS);
+ }
+
+ /**
+ * @see DOMNode
+ */
+ protected DOMNode newDOMNode() {
+ return new DOMType();
+ }
+
+ /**
+ * Normalizes this DOMNode
's source positions to include
+ * whitespace preceeding the node on the line on which the node starts, and
+ * all whitespace after the node up to the next node's start
+ */
+ void normalize(ILineStartFinder finder) {
+ // perform final changes to the open and close body ranges
+ int openBodyEnd, openBodyStart, closeBodyStart, closeBodyEnd;
+ DOMNode first = (DOMNode) getFirstChild();
+ DOMNode lastNode = null;
+ // look for the open body
+ Scanner scanner = new Scanner();
scanner.setSource(fDocument);
- scanner.resetTo(lastNode.getEndPosition() + 1, fDocument.length);
+ scanner.resetTo(fNameRange[1] + 1, fDocument.length);
+
try {
int currentToken = scanner.getNextToken();
- while(currentToken != ITerminalSymbols.TokenNameRBRACE &&
- currentToken != ITerminalSymbols.TokenNameEOF) {
+ while (currentToken != ITerminalSymbols.TokenNameLBRACE
+ && currentToken != ITerminalSymbols.TokenNameEOF) {
currentToken = scanner.getNextToken();
}
- if(currentToken == ITerminalSymbols.TokenNameRBRACE) {
- closeBodyStart = scanner.startPosition;
- closeBodyEnd = scanner.currentPosition - 1;
+ if (currentToken == ITerminalSymbols.TokenNameLBRACE) {
+ openBodyEnd = scanner.currentPosition - 1;
+ openBodyStart = scanner.startPosition;
} else {
- closeBodyStart = fDocument.length;
- closeBodyEnd = fDocument.length;
+ openBodyEnd = fDocument.length;
+ openBodyStart = fDocument.length;
}
- } catch(InvalidInputException e) {
- closeBodyStart = fDocument.length;
- closeBodyEnd = fDocument.length;
+ } catch (InvalidInputException e) {
+ openBodyEnd = fDocument.length;
+ openBodyStart = fDocument.length;
}
- } else {
- scanner.resetTo(openBodyEnd, fDocument.length);
- try {
- int currentToken = scanner.getNextToken();
- while(currentToken != ITerminalSymbols.TokenNameRBRACE &&
- currentToken != ITerminalSymbols.TokenNameEOF) {
- currentToken = scanner.getNextToken();
+ if (first != null) {
+ int lineStart = finder.getLineStart(first.getStartPosition());
+ if (lineStart > openBodyEnd) {
+ openBodyEnd = lineStart - 1;
+ } else {
+ openBodyEnd = first.getStartPosition() - 1;
}
- if(currentToken == ITerminalSymbols.TokenNameRBRACE) {
- closeBodyStart = scanner.startPosition;
- closeBodyEnd = scanner.currentPosition - 1;
+ lastNode = (DOMNode) first.getNextNode();
+ if (lastNode == null) {
+ lastNode = first;
} else {
+ while (lastNode.getNextNode() != null) {
+ lastNode = (DOMNode) lastNode.getNextNode();
+ }
+ }
+ scanner.setSource(fDocument);
+ scanner.resetTo(lastNode.getEndPosition() + 1, fDocument.length);
+ try {
+ int currentToken = scanner.getNextToken();
+ while (currentToken != ITerminalSymbols.TokenNameRBRACE
+ && currentToken != ITerminalSymbols.TokenNameEOF) {
+ currentToken = scanner.getNextToken();
+ }
+ if (currentToken == ITerminalSymbols.TokenNameRBRACE) {
+ closeBodyStart = scanner.startPosition;
+ closeBodyEnd = scanner.currentPosition - 1;
+ } else {
+ closeBodyStart = fDocument.length;
+ closeBodyEnd = fDocument.length;
+ }
+ } catch (InvalidInputException e) {
+ closeBodyStart = fDocument.length;
+ closeBodyEnd = fDocument.length;
+ }
+ } else {
+ scanner.resetTo(openBodyEnd, fDocument.length);
+ try {
+ int currentToken = scanner.getNextToken();
+ while (currentToken != ITerminalSymbols.TokenNameRBRACE
+ && currentToken != ITerminalSymbols.TokenNameEOF) {
+ currentToken = scanner.getNextToken();
+ }
+ if (currentToken == ITerminalSymbols.TokenNameRBRACE) {
+ closeBodyStart = scanner.startPosition;
+ closeBodyEnd = scanner.currentPosition - 1;
+ } else {
+ closeBodyStart = fDocument.length;
+ closeBodyEnd = fDocument.length;
+ }
+ } catch (InvalidInputException e) {
closeBodyStart = fDocument.length;
closeBodyEnd = fDocument.length;
}
- } catch(InvalidInputException e) {
- closeBodyStart = fDocument.length;
- closeBodyEnd = fDocument.length;
+ openBodyEnd = closeBodyEnd - 1;
+ }
+ setOpenBodyRangeEnd(openBodyEnd);
+ setOpenBodyRangeStart(openBodyStart);
+ setCloseBodyRangeStart(closeBodyStart);
+ setCloseBodyRangeEnd(closeBodyEnd);
+ fInsertionPosition = finder.getLineStart(closeBodyStart);
+ if (lastNode != null && fInsertionPosition < lastNode.getEndPosition()) {
+ fInsertionPosition = getCloseBodyPosition();
+ }
+ if (fInsertionPosition <= openBodyEnd) {
+ fInsertionPosition = getCloseBodyPosition();
}
- openBodyEnd = closeBodyEnd - 1;
+ super.normalize(finder);
}
- setOpenBodyRangeEnd(openBodyEnd);
- setOpenBodyRangeStart(openBodyStart);
- setCloseBodyRangeStart(closeBodyStart);
- setCloseBodyRangeEnd(closeBodyEnd);
- fInsertionPosition = finder.getLineStart(closeBodyStart);
- if (lastNode != null && fInsertionPosition < lastNode.getEndPosition()) {
- fInsertionPosition = getCloseBodyPosition();
+
+ /**
+ * Normalizes this DOMNode
's end position.
+ */
+ void normalizeEndPosition(ILineStartFinder finder, DOMNode next) {
+ if (next == null) {
+ // this node's end position includes all of the characters up
+ // to the end of the enclosing node
+ DOMNode parent = (DOMNode) getParent();
+ if (parent == null || parent instanceof DOMCompilationUnit) {
+ setSourceRangeEnd(fDocument.length - 1);
+ } else {
+ // parent is a type
+ setSourceRangeEnd(((DOMType) parent).getCloseBodyPosition() - 1);
+ }
+ } else {
+ // this node's end position is just before the start of the next
+ // node
+ next.normalizeStartPosition(getEndPosition(), finder);
+ setSourceRangeEnd(next.getStartPosition() - 1);
+ }
}
- if (fInsertionPosition <= openBodyEnd) {
- fInsertionPosition = getCloseBodyPosition();
+
+ /**
+ * Offsets all the source indexes in this node by the given amount.
+ */
+ protected void offset(int offset) {
+ super.offset(offset);
+ offsetRange(fCloseBodyRange, offset);
+ offsetRange(fExtendsRange, offset);
+ offsetRange(fImplementsRange, offset);
+ offsetRange(fInterfacesRange, offset);
+ offsetRange(fOpenBodyRange, offset);
+ offsetRange(fSuperclassRange, offset);
+ offsetRange(fTypeRange, offset);
}
- super.normalize(finder);
-}
-/**
- * Normalizes this DOMNode
's end position.
- */
-void normalizeEndPosition(ILineStartFinder finder, DOMNode next) {
- if (next == null) {
- // this node's end position includes all of the characters up
- // to the end of the enclosing node
- DOMNode parent = (DOMNode) getParent();
- if (parent == null || parent instanceof DOMCompilationUnit) {
- setSourceRangeEnd(fDocument.length - 1);
+ /**
+ * @see IDOMType#setClass(boolean)
+ */
+ public void setClass(boolean b) {
+ becomeDetailed();
+ fragment();
+ setMask(MASK_TYPE_IS_CLASS, b);
+ if (b) {
+ fTypeKeyword = "class"; //$NON-NLS-1$
} else {
- // parent is a type
- setSourceRangeEnd(((DOMType)parent).getCloseBodyPosition() - 1);
+ fTypeKeyword = "interface"; //$NON-NLS-1$
+ setSuperclass(null);
}
- } else {
- // this node's end position is just before the start of the next node
- next.normalizeStartPosition(getEndPosition(), finder);
- setSourceRangeEnd(next.getStartPosition() - 1);
}
-}
-/**
- * Offsets all the source indexes in this node by the given amount.
- */
-protected void offset(int offset) {
- super.offset(offset);
- offsetRange(fCloseBodyRange, offset);
- offsetRange(fExtendsRange, offset);
- offsetRange(fImplementsRange, offset);
- offsetRange(fInterfacesRange, offset);
- offsetRange(fOpenBodyRange, offset);
- offsetRange(fSuperclassRange, offset);
- offsetRange(fTypeRange, offset);
-}
-/**
- * @see IDOMType#setClass(boolean)
- */
-public void setClass(boolean b) {
- becomeDetailed();
- fragment();
- setMask(MASK_TYPE_IS_CLASS, b);
- if (b) {
- fTypeKeyword= "class"; //$NON-NLS-1$
- } else {
- fTypeKeyword= "interface"; //$NON-NLS-1$
- setSuperclass(null);
+ /**
+ * Sets the end of the close body range
+ */
+ void setCloseBodyRangeEnd(int end) {
+ fCloseBodyRange[1] = end;
}
-}
-/**
- * Sets the end of the close body range
- */
-void setCloseBodyRangeEnd(int end) {
- fCloseBodyRange[1] = end;
-}
-/**
- * Sets the start of the close body range
- */
-void setCloseBodyRangeStart(int start) {
- fCloseBodyRange[0] = start;
-}
-/**
- * Sets the name of this node.
- *
- *
When the name of a type is set, all of its constructors must be marked - * as fragmented, since the names of the constructors must reflect the name - * of this type. - * - * @see IDOMNode#setName(char[]) - */ -public void setName(String name) throws IllegalArgumentException { - if (name == null) { - throw new IllegalArgumentException(Util.bind("element.nullName")); //$NON-NLS-1$ - } - super.setName(name); - Enumeration children= getChildren(); - while (children.hasMoreElements()) { - IDOMNode child= (IDOMNode)children.nextElement(); - if (child.getNodeType() == IDOMNode.METHOD && ((IDOMMethod)child).isConstructor()) { - ((DOMNode)child).fragment(); + + /** + * Sets the start of the close body range + */ + void setCloseBodyRangeStart(int start) { + fCloseBodyRange[0] = start; + } + + /** + * Sets the name of this node. + * + *
+ * When the name of a type is set, all of its constructors must be marked as + * fragmented, since the names of the constructors must reflect the name of + * this type. + * + * @see IDOMNode#setName(char[]) + */ + public void setName(String name) throws IllegalArgumentException { + if (name == null) { + throw new IllegalArgumentException(Util.bind("element.nullName")); //$NON-NLS-1$ + } + super.setName(name); + Enumeration children = getChildren(); + while (children.hasMoreElements()) { + IDOMNode child = (IDOMNode) children.nextElement(); + if (child.getNodeType() == IDOMNode.METHOD + && ((IDOMMethod) child).isConstructor()) { + ((DOMNode) child).fragment(); + } } } -} -/** - * Sets the end of the open body range - */ -void setOpenBodyRangeEnd(int end) { - fOpenBodyRange[1] = end; -} -/** - * Sets the start of the open body range - */ -void setOpenBodyRangeStart(int start) { - fOpenBodyRange[0] = start; -} -/** - * @see IDOMType#setSuperclass(char[]) - */ -public void setSuperclass(String superclassName) { - becomeDetailed(); - fragment(); - fSuperclass= superclassName; - setMask(MASK_TYPE_HAS_SUPERCLASS, superclassName != null); -} -/** - * @see IDOMType#setSuperInterfaces(String[]) - */ -public void setSuperInterfaces(String[] names) { - becomeDetailed(); - if (names == null) { - throw new IllegalArgumentException(Util.bind("dom.nullInterfaces")); //$NON-NLS-1$ - } - fragment(); - fSuperInterfaces= names; - if (names == null || names.length == 0) { - fInterfaces= null; - fSuperInterfaces= null; - setMask(MASK_TYPE_HAS_INTERFACES, false); - } else { - setMask(MASK_TYPE_HAS_INTERFACES, true); - CharArrayBuffer buffer = new CharArrayBuffer(); - for (int i = 0; i < names.length; i++) { - if (i > 0) { - buffer.append(", "); //$NON-NLS-1$ + + /** + * Sets the end of the open body range + */ + void setOpenBodyRangeEnd(int end) { + fOpenBodyRange[1] = end; + } + + /** + * Sets the start of the open body range + */ + void setOpenBodyRangeStart(int start) { + fOpenBodyRange[0] = start; + } + + /** + * @see IDOMType#setSuperclass(char[]) + */ + public void setSuperclass(String superclassName) { + becomeDetailed(); + fragment(); + fSuperclass = superclassName; + setMask(MASK_TYPE_HAS_SUPERCLASS, superclassName != null); + } + + /** + * @see IDOMType#setSuperInterfaces(String[]) + */ + public void setSuperInterfaces(String[] names) { + becomeDetailed(); + if (names == null) { + throw new IllegalArgumentException(Util.bind("dom.nullInterfaces")); //$NON-NLS-1$ + } + fragment(); + fSuperInterfaces = names; + if (names == null || names.length == 0) { + fInterfaces = null; + fSuperInterfaces = null; + setMask(MASK_TYPE_HAS_INTERFACES, false); + } else { + setMask(MASK_TYPE_HAS_INTERFACES, true); + CharArrayBuffer buffer = new CharArrayBuffer(); + for (int i = 0; i < names.length; i++) { + if (i > 0) { + buffer.append(", "); //$NON-NLS-1$ + } + buffer.append(names[i]); } - buffer.append(names[i]); + fInterfaces = buffer.getContents(); } - fInterfaces = buffer.getContents(); } -} -/** - * Sets the type keyword - */ -void setTypeKeyword(String keyword) { - fTypeKeyword = keyword; -} -/** - * @see DOMNode#shareContents(DOMNode) - */ -protected void shareContents(DOMNode node) { - super.shareContents(node); - DOMType type= (DOMType)node; - fCloseBodyRange= rangeCopy(type.fCloseBodyRange); - fExtendsRange= type.fExtendsRange; - fImplementsRange= rangeCopy(type.fImplementsRange); - fInterfaces= type.fInterfaces; - fInterfacesRange= rangeCopy(type.fInterfacesRange); - fOpenBodyRange= rangeCopy(type.fOpenBodyRange); - fSuperclass= type.fSuperclass; - fSuperclassRange= rangeCopy(type.fSuperclassRange); - fSuperInterfaces= type.fSuperInterfaces; - fTypeKeyword= type.fTypeKeyword; - fTypeRange= rangeCopy(type.fTypeRange); -} -/** - * @see IDOMNode#toString() - */ -public String toString() { - return "TYPE: " + getName(); //$NON-NLS-1$ -} + + /** + * Sets the type keyword + */ + void setTypeKeyword(String keyword) { + fTypeKeyword = keyword; + } + + /** + * @see DOMNode#shareContents(DOMNode) + */ + protected void shareContents(DOMNode node) { + super.shareContents(node); + DOMType type = (DOMType) node; + fCloseBodyRange = rangeCopy(type.fCloseBodyRange); + fExtendsRange = type.fExtendsRange; + fImplementsRange = rangeCopy(type.fImplementsRange); + fInterfaces = type.fInterfaces; + fInterfacesRange = rangeCopy(type.fInterfacesRange); + fOpenBodyRange = rangeCopy(type.fOpenBodyRange); + fSuperclass = type.fSuperclass; + fSuperclassRange = rangeCopy(type.fSuperclassRange); + fSuperInterfaces = type.fSuperInterfaces; + fTypeKeyword = type.fTypeKeyword; + fTypeRange = rangeCopy(type.fTypeRange); + } + + /** + * @see IDOMNode#toString() + */ + public String toString() { + return "TYPE: " + getName(); //$NON-NLS-1$ + } }