Class ResourceNode

java.lang.Object
org.eclipse.compare.BufferedContent
org.eclipse.compare.ResourceNode
All Implemented Interfaces:
IContentChangeNotifier, IEditableContent, IEditableContentExtension, IEncodedStreamContentAccessor, IModificationDate, IResourceProvider, IStreamContentAccessor, ITypedElement, IStructureComparator

A ResourceNode wraps an IResources so that it can be used as input for the differencing engine (interfaces IStructureComparator and ITypedElement) and the ReplaceWithEditionDialog (interfaces ITypedElement and IModificationDate).

Clients may instantiate this class; it is not intended to be subclassed.

Restriction:
This class is not intended to be subclassed by clients.
  • Constructor Details

    • ResourceNode

      public ResourceNode(IResource resource)
      Creates a ResourceNode for the given resource.
      Parameters:
      resource - the resource
  • Method Details

    • getResource

      public IResource getResource()
      Returns the corresponding resource for this object.
      Specified by:
      getResource in interface IResourceProvider
      Returns:
      the corresponding resource
    • getContents

      public InputStream getContents() throws CoreException
      Description copied from interface: IStreamContentAccessor
      Returns an open 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.
      Specified by:
      getContents in interface IStreamContentAccessor
      Overrides:
      getContents in class BufferedContent
      Returns:
      an input stream containing the contents of this object
      Throws:
      CoreException - if the contents of this object could not be accessed
    • getModificationDate

      public long getModificationDate()
      Description copied from interface: IModificationDate
      Returns the modification time of this object.

      Note that this value should only be used to give the user a general idea of how old the object is.

      Specified by:
      getModificationDate in interface IModificationDate
      Returns:
      the time of last modification, in milliseconds since January 1, 1970, 00:00:00 GMT
    • getName

      public String getName()
      Description copied from interface: ITypedElement
      Returns the name of this object. The name is used when displaying this object in the UI.
      Specified by:
      getName in interface ITypedElement
      Returns:
      the name of this object
    • 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
      Returns:
      the type 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
      Returns:
      the image of this object or null if this type of input has no image
    • equals

      public boolean equals(Object other)
      Description copied from interface: IStructureComparator
      Returns whether some other object is "equal to" this one with respect to a structural comparison. For example, when comparing Java class methods, equals would return true if two methods have the same signature (the argument names and the method body might differ).
      Specified by:
      equals in interface IStructureComparator
      Overrides:
      equals in class Object
      Parameters:
      other - the reference object with which to compare
      Returns:
      true if this object is the same as the other argument; false otherwise
      See Also:
    • hashCode

      public int hashCode()
      Returns the hash code of the name.
      Overrides:
      hashCode in class Object
      Returns:
      a hash code value for this object.
    • getChildren

      public Object[] getChildren()
      Description copied from interface: IStructureComparator
      Returns an iterator for all children of this object or null if there are no children.
      Specified by:
      getChildren in interface IStructureComparator
      Returns:
      an array with all children of this object, or an empty array if there are no children
    • createChild

      protected IStructureComparator createChild(IResource child)
      This hook method is called from getChildren once for every member of a container resource. This implementation creates a new ResourceNode for the given child resource. Clients may override this method to create a different type of IStructureComparator or to filter children by returning null.
      Parameters:
      child - the child resource for which a IStructureComparator must be returned
      Returns:
      a ResourceNode for the given child or null
    • createStream

      protected InputStream createStream() throws CoreException
      Returns an open stream if the corresponding resource implements the IStorage interface. Otherwise the value null is returned.
      Specified by:
      createStream in class BufferedContent
      Returns:
      a buffered input stream containing the contents of this storage
      Throws:
      CoreException - if the contents of this storage could not be accessed
    • isEditable

      public boolean isEditable()
      Description copied from interface: IEditableContent
      Returns true if this object can be modified. If it returns false the other methods of this API must not be called.
      Specified by:
      isEditable in interface IEditableContent
      Returns:
      true if this object can be modified
    • replace

      public ITypedElement replace(ITypedElement child, ITypedElement other)
      Description copied from interface: IEditableContent
      This method is called on a parent to add or remove a child, or to copy the contents of a child. What to do is encoded in the two arguments as follows:
      add: dest == null src != null
      remove: dest != null src == null
      copy: dest != null src != null
      Specified by:
      replace in interface IEditableContent
      Parameters:
      child - the existing child of this object to be replaced; if null a new child can be added.
      other - the new child to be added or replaced; if null an existing child can be removed.
      Returns:
      the argument dest
    • getCharset

      public String getCharset()
      Description copied from interface: IEncodedStreamContentAccessor
      Returns the name of a charset encoding to be used when decoding this stream accessor's contents into characters. Returns null if a proper encoding cannot be determined.

      Note: this method does not check whether the result is a supported charset name. Callers should be prepared to handle UnsupportedEncodingException where this charset is used.

      Specified by:
      getCharset in interface IEncodedStreamContentAccessor
      Returns:
      the name of a charset, or null
      See Also:
    • isReadOnly

      public boolean isReadOnly()
      Description copied from interface: IEditableContentExtension
      Return whether the typed element being displayed is read-only. a read-only element will require a call to validateEdit before the element can be modified on disk.
      Specified by:
      isReadOnly in interface IEditableContentExtension
      Returns:
      whether the typed element is read-only
    • validateEdit

      public IStatus validateEdit(Shell shell)
      Description copied from interface: IEditableContentExtension
      If the element is read-only, this method should be called to attempt to make it writable.
      Specified by:
      validateEdit in interface IEditableContentExtension
      Parameters:
      shell - a shell used to prompt the user if required.
      Returns:
      a status object that is OK if things are fine, otherwise a status describing reasons why modifying the given files is not reasonable. A status with a severity of CANCEL is returned if the validation was canceled, indicating the edit should not proceed.