Package ghidra.framework.main.datatree

# Class DataTreeNode

java.lang.Object
docking.widgets.tree.GTreeNode
docking.widgets.tree.GTreeLazyNode
docking.widgets.tree.GTreeSlowLoadingNode
ghidra.framework.main.datatree.DataTreeNode

All Implemented Interfaces:
  `Cuttable`, `Cloneable`, `Comparable<GTreeNode>`

Direct Known Subclasses:
  `DomainFileNode`, `DomainFolderNode`

public abstract class DataTreeNode extends GTreeSlowLoadingNode implements Cuttable
`DataTreeNode` provides the base implementation for all node types contained within a `DataTree`.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DataTreeNode()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addNode(GTreeNode newNode)`
  Adds the given node as a child to this node.
  `protected final List<GTreeNode>`
  `children()`
  `GTreeNode`
  `clone()`
  Creates a clone of this node.
  `abstract int`
  `compareTo(GTreeNode node)`
  `void`
  `dispose()`
  `protected void`
  `doAddNode(int index, GTreeNode node)`
  Adds a node to this node's children at the given index and notifies the tree.
  `protected void`
  `doAddNode(GTreeNode node)`
  Adds a node to this node's children.
  `protected void`
  `doAddNodes(List<GTreeNode> nodes)`
  Adds the given nodes to this node's children.
  `protected void`
  `doFireNodeAdded(GTreeNode newNode)`
  `protected void`
  `doFireNodeChanged()`
  `protected void`
  `doFireNodeRemoved(GTreeNode removedNode, int index)`
  `protected void`
  `doFireNodeStructureChanged()`
  `protected void`
  `doRemoveNode(GTreeNode node)`
  Removes the node from this node's children and notifies the tree.
  `protected void`
  `doSetChildren(List<GTreeNode> childList)`
  Sets the children of this node to the given list of child nodes, but does not notify the tree.
  `protected void`
  `doSetChildrenAndFireEvent(List<GTreeNode> childList)`
  Sets the children of this node to the given list of child nodes and fires the appropriate tree event to kick the tree to update the display.
  `abstract boolean`
  `equals(Object obj)`
  `abstract GTreeNode`
  `getChild(String name, ghidra.framework.main.datatree.DataTreeNode.NodeType type)`
  Find a child using a binary-search approach.
  `final GTreeNode`
  `getParent()`
  Returns the parent of this node.
  `abstract String`
  `getPathname()`
  Returns domain folder/file pathname within project.
  `abstract ProjectData`
  `getProjectData()`
  Get the project data instance to which this file or folder belongs.
  `GTree`
  `getTree()`
  Returns the GTree that this node is attached to
  `abstract int`
  `hashCode()`
  `final boolean`
  `isCut()`
  Returns true if node will be cut and moved.
  `final boolean`
  `isInProgress()`
  Returns true if the node is in the process of loading its children.
  `boolean`
  `isLoaded()`
  True if the children for this node have been loaded yet.
  `final boolean`
  `isRoot()`
  Returns true if this is a root node of a GTree
  `void`
  `removeNode(GTreeNode node)`
  Remove the given node from this node
  `final void`
  `setIsCut(boolean isCut)`
  Set this node to be deleted so that it can be rendered as such.

  ### Methods inherited from class docking.widgets.tree.GTreeSlowLoadingNode

  `generateChildren, generateChildren, iterator, loadAll`

  ### Methods inherited from class docking.widgets.tree.GTreeLazyNode

  `addNode, addNodes, removeAll, unloadChildren`

  ### Methods inherited from class docking.widgets.tree.GTreeNode

  `collapse, expand, filter, fireNodeChanged, fireNodeStructureChanged, getChild, getChild, getChild, getChildCount, getChildren, getChildren, getDisplayText, getIcon, getIndexInParent, getIndexOfChild, getLeafCount, getName, getNodeCount, getRoot, getToolTip, getTreePath, isAncestor, isAutoExpandPermitted, isEditable, isExpanded, isLeaf, setChildren, stream, toString, valueChanged`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### DataTreeNode

    public DataTreeNode()

- ## Method Details

  - ### setIsCut

    public final void setIsCut(boolean isCut)
    Description copied from interface: `Cuttable`
    Set this node to be deleted so that it can be rendered as such.
    Specified by:
      `setIsCut` in interface `Cuttable`
    Parameters:
      `isCut` - true if node will be cut and moved

  - ### isCut

    public final boolean isCut()
    Description copied from interface: `Cuttable`
    Returns true if node will be cut and moved.
    Specified by:
      `isCut` in interface `Cuttable`
    Returns:
      true if node will be cut and moved

  - ### getProjectData

    public abstract ProjectData getProjectData()
    Get the project data instance to which this file or folder belongs.
    Returns:
      project data instance

  - ### getPathname

    public abstract String getPathname()
    Returns domain folder/file pathname within project.
    Returns:
      domain folder/file pathname within project

  - ### compareTo

    public abstract int compareTo(GTreeNode node)
    Specified by:
      `compareTo` in interface `Comparable<GTreeNode>`
    Overrides:
      `compareTo` in class `GTreeNode`

  - ### equals

    public abstract boolean equals(Object obj)
    Overrides:
      `equals` in class `GTreeNode`

  - ### hashCode

    public abstract int hashCode()
    Overrides:
      `hashCode` in class `GTreeNode`

  - ### addNode

    public void addNode(GTreeNode newNode)
    Description copied from class: `GTreeNode`
    Adds the given node as a child to this node. Note: this method may be inefficient so if you have many nodes to add, you should use either `GTreeNode.addNodes(List)` or `GTreeNode.setChildren(List)`
    Overrides:
      `addNode` in class `GTreeLazyNode`
    Parameters:
      `newNode` - the node to add as a child

  - ### removeNode

    public void removeNode(GTreeNode node)
    Description copied from class: `GTreeNode`
    Remove the given node from this node
    Overrides:
      `removeNode` in class `GTreeLazyNode`
    Parameters:
      `node` - the to be removed

  - ### getChild

    public abstract GTreeNode getChild(String name, ghidra.framework.main.datatree.DataTreeNode.NodeType type)
    Find a child using a binary-search approach.
    Parameters:
      `name` - name of child to find
      `type` - node type
    Returns:
      matching tree node or null if not found

  - ### getParent

    public final GTreeNode getParent()
    Returns the parent of this node. Note: this method is deliberately not synchronized (See comments above)
    Returns:
      the parent of this node.

  - ### isRoot

    public final boolean isRoot()
    Returns true if this is a root node of a GTree
    Returns:
      true if this is a root node of a GTree

  - ### children

    protected final List<GTreeNode> children()

  - ### doSetChildrenAndFireEvent

    protected void doSetChildrenAndFireEvent(List<GTreeNode> childList)
    Sets the children of this node to the given list of child nodes and fires the appropriate tree event to kick the tree to update the display. Note: This method must be called from the swing thread because it will notify the underlying JTree.
    Parameters:
      `childList` - the list of child nodes to assign as children to this node
    See Also:
      - `if calling from a background thread.`

  - ### doSetChildren

    protected void doSetChildren(List<GTreeNode> childList)
    Sets the children of this node to the given list of child nodes, but does not notify the tree. This method does not have to be called from the swing thread. It is intended to be used by background threads that want to populate all or part of the tree, but wait until the bulk operations are completed before notifying the tree.
    Parameters:
      `childList` - the list of child nodes to assign as children to this node

  - ### doAddNode

    protected void doAddNode(GTreeNode node)
    Adds a node to this node's children. Must be called from the swing thread.
    Parameters:
      `node` - the node to add as a child to this node

  - ### doAddNode

    protected void doAddNode(int index, GTreeNode node)
    Adds a node to this node's children at the given index and notifies the tree. Must be called from the swing thread.
    Parameters:
      `index` - the index at which to add the new node
      `node` - the node to add as a child to this node

  - ### doRemoveNode

    protected void doRemoveNode(GTreeNode node)
    Removes the node from this node's children and notifies the tree. Must be called from the swing thread.
    Parameters:
      `node` - the node to remove

  - ### doAddNodes

    protected void doAddNodes(List<GTreeNode> nodes)
    Adds the given nodes to this node's children. Must be called from the swing thread.
    Parameters:
      `nodes` - the nodes to add to the children this node

  - ### clone

    public GTreeNode clone() throws CloneNotSupportedException
    Creates a clone of this node. The clone should contain a shallow copy of all the node's attributes except that the parent and children are null.
    Overrides:
      `clone` in class `Object`
    Returns:
      the clone of this object.
    Throws:
      `CloneNotSupportedException` - if some implementation prevents itself from being cloned.

  - ### dispose

    public void dispose()

  - ### isInProgress

    public final boolean isInProgress()
    Returns true if the node is in the process of loading its children. See `GTreeSlowLoadingNode`
    Returns:
      true if the node is in the process of loading its children.

  - ### isLoaded

    public boolean isLoaded()
    True if the children for this node have been loaded yet. Some GTree nodes are lazy in that they don't load their children until needed. Nodes that have the IN_PROGRESS node as it child is considered loaded if in the swing thread, otherwise they are considered not loaded.
    Returns:
      true if the children for this node have been loaded.

  - ### getTree

    public GTree getTree()
    Returns the GTree that this node is attached to
    Returns:
      the GTree that this node is attached to

  - ### doFireNodeAdded

    protected void doFireNodeAdded(GTreeNode newNode)

  - ### doFireNodeRemoved

    protected void doFireNodeRemoved(GTreeNode removedNode, int index)

  - ### doFireNodeStructureChanged

    protected void doFireNodeStructureChanged()

  - ### doFireNodeChanged

    protected void doFireNodeChanged()