Class StructureRootNode

java.lang.Object
org.eclipse.compare.structuremergeviewer.DocumentRangeNode
org.eclipse.compare.structuremergeviewer.StructureRootNode
All Implemented Interfaces:
IDocumentRange, IEditableContent, IEditableContentExtension, IEncodedStreamContentAccessor, IStreamContentAccessor, ITypedElement, IStructureComparator, IAdaptable, IDisposable

public class StructureRootNode extends DocumentRangeNode implements IDisposable, ITypedElement
A node that acts as the root of the tree returned from a StructureCreator. This node performs the following tasks tasks:
  1. It adapts to an ISharedDocumentAdapter that provides the proper document key (see getAdapter(Class)).
  2. It invokes IStructureCreator.save(IStructureComparator, Object) when nodeChanged(DocumentRangeNode) is called.
  3. It disposes of the IDisposable provided in the constructor when dispose() is called.

This class may be subclassed by clients.

Since:
3.3
  • Field Details

  • Constructor Details

    • StructureRootNode

      public StructureRootNode(IDocument document, Object input, StructureCreator creator, ISharedDocumentAdapter adapter)
      Create the structure root node.
      Parameters:
      document - the document
      input - the input associated with the document
      creator - the structure creator that is creating the node
      adapter - the shared document adapter from which the document was obtained or null if the document was not obtained from an ISharedDocumentAdapter
  • Method Details

    • dispose

      public void dispose()
      Description copied from interface: IDisposable
      Disposes of this service. All resources must be freed. All listeners must be detached. Dispose will only be called once during the life cycle of a service.
      Specified by:
      dispose in interface IDisposable
    • getAdapter

      public <T> T getAdapter(Class<T> adapter)
      Override IAdaptable.getAdapter(Class) in order to provide an ISharedDocumentAdapter that provides the proper look up key based on the input from which this structure node was created.
      Specified by:
      getAdapter in interface IAdaptable
      Overrides:
      getAdapter in class DocumentRangeNode
      Type Parameters:
      T - the class type
      Parameters:
      adapter - the adapter class to look up
      Returns:
      the object adapted to the given class or null
      See Also:
    • nodeChanged

      protected void nodeChanged(DocumentRangeNode node)
      Override in order to invoke IStructureCreator.save(IStructureComparator, Object) when the contents of a node have changed.
      Overrides:
      nodeChanged in class DocumentRangeNode
      Parameters:
      node - the changed node
    • 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
      Overrides:
      replace in class DocumentRangeNode
      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
    • 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
    • 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
    • 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
      Overrides:
      isReadOnly in class DocumentRangeNode
      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
      Overrides:
      validateEdit in class DocumentRangeNode
      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.