/**
  * Creates a JavaNode for a CU. It represents the root of a JavaNode tree, so its parent is null.
  *
  * @param document the document which contains the Java element
  */
 public JavaNode(IDocument document) {
   super(
       CU,
       JavaCompareUtilities.buildID(CU, "root"),
       document,
       0,
       document.getLength()); // $NON-NLS-1$
 }
 /**
  * Creates a JavaNode under the given parent.
  *
  * @param parent the parent node
  * @param type the Java elements type. Legal values are from the range CU to METHOD of this class.
  * @param name the name of the Java element
  * @param start the starting position of the java element in the underlying document
  * @param length the number of characters of the java element in the underlying document
  */
 public JavaNode(JavaNode parent, int type, String name, int start, int length) {
   super(
       parent,
       type,
       JavaCompareUtilities.buildID(type, name),
       parent.getDocument(),
       start,
       length);
   parent.addChild(this);
 }
 /**
  * Creates a place holder ASTNode for the given element.
  *
  * @param rewriter
  * @param element
  * @param delimiter the line delimiter
  * @param project
  * @return a ASTNode or null
  * @throws CoreException
  */
 private ASTNode createASTNode(
     ASTRewrite rewriter, ITypedElement element, String delimiter, IJavaProject project)
     throws CoreException {
   if (element instanceof IStreamContentAccessor) {
     String content = JavaCompareUtilities.readString((IStreamContentAccessor) element);
     if (content != null) {
       content = trimTextBlock(content, delimiter, project);
       if (content != null) {
         int type = getPlaceHolderType(element);
         if (type != -1) return rewriter.createStringPlaceholder(content, type);
       }
     }
   }
   return null;
 }
  /**
   * Returns a shared image for this Java element.
   *
   * <p>see ITypedInput.getImage
   */
  public Image getImage() {

    ImageDescriptor id = null;

    switch (getTypeCode()) {
      case CU:
        id = JavaCompareUtilities.getImageDescriptor(IJavaElement.COMPILATION_UNIT);
        break;
      case PACKAGE:
        id = JavaCompareUtilities.getImageDescriptor(IJavaElement.PACKAGE_DECLARATION);
        break;
      case IMPORT:
        id = JavaCompareUtilities.getImageDescriptor(IJavaElement.IMPORT_DECLARATION);
        break;
      case IMPORT_CONTAINER:
        id = JavaCompareUtilities.getImageDescriptor(IJavaElement.IMPORT_CONTAINER);
        break;
      case CLASS:
        id = JavaCompareUtilities.getTypeImageDescriptor(true);
        break;
      case INTERFACE:
        id = JavaCompareUtilities.getTypeImageDescriptor(false);
        break;
      case INIT:
        id = JavaCompareUtilities.getImageDescriptor(IJavaElement.INITIALIZER);
        break;
      case CONSTRUCTOR:
      case METHOD:
        id = JavaCompareUtilities.getImageDescriptor(IJavaElement.METHOD);
        break;
      case FIELD:
        id = JavaCompareUtilities.getImageDescriptor(IJavaElement.FIELD);
        break;
      case ENUM:
        id = JavaCompareUtilities.getEnumImageDescriptor();
        break;
      case ANNOTATION:
        id = JavaCompareUtilities.getAnnotationImageDescriptor();
        break;
    }
    return JavaPlugin.getImageDescriptorRegistry().get(id);
  }