Package ghidra.framework.main.datatree

# Class ProjectDataTreePanel

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
ghidra.framework.main.datatree.ProjectDataTreePanel

All Implemented Interfaces:
  `ImageObserver`, `MenuContainer`, `Serializable`, `Accessible`

public class ProjectDataTreePanel extends JPanel
Panel that contains a DataTree for showing project data. Controls whether the data tree supports drag and drop operations.

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class javax.swing.JPanel

  `JPanel.AccessibleJPanel`

  ## Nested classes/interfaces inherited from class javax.swing.JComponent

  `JComponent.AccessibleJComponent`

  ## Nested classes/interfaces inherited from class java.awt.Container

  `Container.AccessibleAWTContainer`

  ## Nested classes/interfaces inherited from class java.awt.Component

  `Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

- ## Field Summary

  ### Fields inherited from class javax.swing.JComponent

  `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

  ### Fields inherited from class java.awt.Component

  `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

  ### Fields inherited from interface java.awt.image.ImageObserver

  `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ProjectDataTreePanel(FrontEndPlugin plugin)`
  Construct an empty data tree panel that is going to be used for the active project tree within the frontend tool.
  `ProjectDataTreePanel(String projectName, boolean isActiveProject, FrontEndPlugin plugin, DomainFileFilter filter)`
  Constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addTreeMouseListener(MouseListener l)`
  `void`
  `addTreeSelectionListener(GTreeSelectionListener l)`
  Add the tree selection listener to the data tree.
  `void`
  `checkOpen(MouseEvent e)`
  `void`
  `closeRootFolder()`
  Close the root folder for this data tree.
  `void`
  `dispose()`
  `void`
  `findAndSelect(String s)`
  Find a node that has the given name and select it.
  `ActionContext`
  `getActionContext(ComponentProvider provider, MouseEvent e)`
  Get the data tree node that is selected
  `DataTree`
  `getDataTree()`
  `String[]`
  `getExpandedPathsByNodeName()`
  `Component`
  `getFilterField()`
  `ProjectData`
  `getProjectData()`
  `DomainFile`
  `getSelectedDomainFile()`
  Get the last selected domain file.
  `DomainFolder`
  `getSelectedDomainFolder()`
  Get the last selected domain folder.
  `int`
  `getSelectedItemCount()`
  Get the number of selected items in the tree.
  `TreeSelectionModel`
  `getTreeSelectionModel()`
  `void`
  `projectRenamed(String newName)`
  Notification that the project was renamed; update the root node name and reload the node
  `void`
  `removeTreeMouseListener(MouseListener l)`
  `void`
  `removeTreeSelectionListener(GTreeSelectionListener l)`
  Remove the tree selection listener from the data tree.
  `void`
  `selectDomainFile(DomainFile domainFile)`
  Select the specified domainFile if it exists in the tree.
  `void`
  `selectDomainFiles(Set<DomainFile> files)`
  `void`
  `selectDomainFolder(DomainFolder domainFolder)`
  `void`
  `selectRootDataFolder()`
  Select the root data folder (not root node in the tree which shows the project name).
  `void`
  `setDomainFileFilter(DomainFileFilter filter)`
  Set the filter on this data tree.
  `void`
  `setExpandedPathsByNodeName(String[] stringPaths)`
  `void`
  `setHelpLocation(HelpLocation helpLocation)`
  `void`
  `setPreferredTreePanelSize(Dimension d)`
  `void`
  `setProjectData(String projectName, ProjectData projectData)`
  Set the project data for this data tree and populate it with nodes for the users in the project.
  `void`
  `setTreeFilterEnabled(boolean enabled)`
  Adds or removes the filter from the tree.
  `void`
  `updateProjectName(String newName)`
  Update the project name

  ### Methods inherited from class javax.swing.JPanel

  `getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

  ### Methods inherited from class javax.swing.JComponent

  `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

  ### Methods inherited from class java.awt.Container

  `add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

  ### Methods inherited from class java.awt.Component

  `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### ProjectDataTreePanel

    public ProjectDataTreePanel(FrontEndPlugin plugin)
    Construct an empty data tree panel that is going to be used for the active project tree within the frontend tool.
    Parameters:
      `plugin` - front end plugin

  - ### ProjectDataTreePanel

    public ProjectDataTreePanel(String projectName, boolean isActiveProject, FrontEndPlugin plugin, DomainFileFilter filter)
    Constructor
    Parameters:
      `projectName` - name of project
      `isActiveProject` - true if the project is active, and the data tree may be modified
      `plugin` - front end plugin; will be null if the panel is used in a dialog
      `filter` - optional filter that is used to hide programs from view. If null is specified a default filter is employed which shows all domain files and link-files.

- ## Method Details

  - ### getTreeSelectionModel

    public TreeSelectionModel getTreeSelectionModel()

  - ### setProjectData

    public void setProjectData(String projectName, ProjectData projectData)
    Set the project data for this data tree and populate it with nodes for the users in the project.
    Parameters:
      `projectName` - name of project
      `projectData` - data that has the root folder for the project

  - ### updateProjectName

    public void updateProjectName(String newName)
    Update the project name
    Parameters:
      `newName` - the new name

  - ### closeRootFolder

    public void closeRootFolder()
    Close the root folder for this data tree.

  - ### selectRootDataFolder

    public void selectRootDataFolder()
    Select the root data folder (not root node in the tree which shows the project name).

  - ### selectDomainFolder

    public void selectDomainFolder(DomainFolder domainFolder)

  - ### selectDomainFiles

    public void selectDomainFiles(Set<DomainFile> files)

  - ### selectDomainFile

    public void selectDomainFile(DomainFile domainFile)
    Select the specified domainFile if it exists in the tree.

    NOTE: The selection is performed in a delayed non-blocking fashion.

    Parameters:
      `domainFile` - domain file

  - ### setHelpLocation

    public void setHelpLocation(HelpLocation helpLocation)

  - ### setDomainFileFilter

    public void setDomainFileFilter(DomainFileFilter filter)
    Set the filter on this data tree.
    Parameters:
      `filter` - determines what should be included in the data tree

  - ### getSelectedItemCount

    public int getSelectedItemCount()
    Get the number of selected items in the tree. These could be either files or folders.
    Returns:
      the number of selected items in the tree.

  - ### getSelectedDomainFolder

    public DomainFolder getSelectedDomainFolder()
    Get the last selected domain folder.
    Returns:
      null if no domain folder is selected.

  - ### getSelectedDomainFile

    public DomainFile getSelectedDomainFile()
    Get the last selected domain file.
    Returns:
      null if no domain file is selected.

  - ### addTreeSelectionListener

    public void addTreeSelectionListener(GTreeSelectionListener l)
    Add the tree selection listener to the data tree. When the listener is notified of the selection change, it should call `getSelectedDomainFolder()` and `getSelectedDomainFile()` to get the last selected object.
    Parameters:
      `l` - listener to add

  - ### removeTreeSelectionListener

    public void removeTreeSelectionListener(GTreeSelectionListener l)
    Remove the tree selection listener from the data tree.
    Parameters:
      `l` - listener to remove

  - ### addTreeMouseListener

    public void addTreeMouseListener(MouseListener l)

  - ### removeTreeMouseListener

    public void removeTreeMouseListener(MouseListener l)

  - ### setPreferredTreePanelSize

    public void setPreferredTreePanelSize(Dimension d)

  - ### getProjectData

    public ProjectData getProjectData()

  - ### projectRenamed

    public void projectRenamed(String newName)
    Notification that the project was renamed; update the root node name and reload the node
    Parameters:
      `newName` - the new project name

  - ### dispose

    public void dispose()

  - ### getActionContext

    public ActionContext getActionContext(ComponentProvider provider, MouseEvent e)
    Get the data tree node that is selected
    Parameters:
      `provider` - the provider with which to construct the new context
      `e` - mouse event for the popup; may be null if this is being called as a result of the key binding pressed
    Returns:
      the new context; null if there is no selection

  - ### getDataTree

    public DataTree getDataTree()

  - ### setTreeFilterEnabled

    public void setTreeFilterEnabled(boolean enabled)
    Adds or removes the filter from the tree.
    Parameters:
      `enabled` - Tree adds the filter; false removes it

  - ### getFilterField

    public Component getFilterField()

  - ### getExpandedPathsByNodeName

    public String[] getExpandedPathsByNodeName()

  - ### setExpandedPathsByNodeName

    public void setExpandedPathsByNodeName(String[] stringPaths)

  - ### checkOpen

    public void checkOpen(MouseEvent e)

  - ### findAndSelect

    public void findAndSelect(String s)
    Find a node that has the given name and select it.
    Parameters:
      `s` - node name