Package ghidra.framework.project.tool

# Class ToolManagerImpl

java.lang.Object
ghidra.framework.project.tool.ToolManagerImpl

All Implemented Interfaces:
  `ToolManager`, `PropertyChangeListener`, `EventListener`

public class ToolManagerImpl extends Object implements ToolManager, PropertyChangeListener
Tool manager that knows about all the running tools for each workspace in the project; the tool manager is responsible for launching new tools, and managing connections among tools.

- ## Field Summary

  ### Fields inherited from interface ghidra.framework.model.ToolManager

  `DEFAULT_WORKSPACE_NAME, WORKSPACE_NAME_PROPERTY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ToolManagerImpl(Project project)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addWorkspaceChangeListener(WorkspaceChangeListener l)`
  Add the listener that will be notified when a tool is added or removed.
  `boolean`
  `canAutoSave(PluginTool tool)`
  `void`
  `clearWorkspaceChanged()`
  Clear the flag so the user does not get prompted to save the project; flag gets set to true when a workspace is created, and a workspace is created when a new project is created.
  `Workspace`
  `createWorkspace(String name)`
  Create a workspace with the given name.
  `void`
  `disconnectTool(PluginTool tool)`
  Removes all connections involving tool
  `void`
  `dispose()`
  `void`
  `dumpConnectionList()`
  Debug method for printing out the list of connections.
  `Workspace`
  `getActiveWorkspace()`
  Get the active workspace
  `ToolConnection`
  `getConnection(PluginTool producer, PluginTool consumer)`
  Get the connection object for the producer and consumer tools
  `PluginTool[]`
  `getConsumerTools()`
  Get a list of tools that consume at least one tool event.
  `PluginTool[]`
  `getProducerTools()`
  Get a list of tools that produce at least one tool event.
  `PluginTool[]`
  `getRunningTools()`
  Get a list running tools across all workspaces.
  `PluginTool`
  `getTool(String toolName)`
  Called by WorkspaceImpl when it is restoring its state.
  `ToolServices`
  `getToolServices()`
  Get any tool services available from this tool
  `Workspace[]`
  `getWorkspaces()`
  Get list of known workspaces.
  `boolean`
  `hasChanged()`
  Return whether any tools have changed, or if any tools were added or removed from any of the workspaces.
  `void`
  `propertyChange(PropertyChangeEvent evt)`
  `void`
  `removeWorkspace(Workspace ws)`
  Remove the workspace.
  `void`
  `removeWorkspaceChangeListener(WorkspaceChangeListener l)`
  Remove the workspace listener.
  `void`
  `restoreFromXml(org.jdom.Element root)`
  restores the object from an XML element
  `boolean`
  `saveSessionTools()`
  Save the tools that are opened and changed, that will be brought back up when the project is reopened
  `org.jdom.Element`
  `saveToXml()`
  Saves this object to an XML element
  `void`
  `toolChanged(PluginTool tool)`
  A configuration change was made to the tool; a plugin was added or removed.
  `void`
  `toolSaved(PluginTool tool, boolean toolChanged)`

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

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

- ## Constructor Details

  - ### ToolManagerImpl

    public ToolManagerImpl(Project project)

- ## Method Details

  - ### getActiveWorkspace

    public Workspace getActiveWorkspace()
    Description copied from interface: `ToolManager`
    Get the active workspace
    Specified by:
      `getActiveWorkspace` in interface `ToolManager`
    Returns:
      the active workspace

  - ### getConsumerTools

    public PluginTool[] getConsumerTools()
    Description copied from interface: `ToolManager`
    Get a list of tools that consume at least one tool event.
    Specified by:
      `getConsumerTools` in interface `ToolManager`
    Returns:
      zero-length array if no tool consumes any events

  - ### getProducerTools

    public PluginTool[] getProducerTools()
    Description copied from interface: `ToolManager`
    Get a list of tools that produce at least one tool event.
    Specified by:
      `getProducerTools` in interface `ToolManager`
    Returns:
      zero-length array if no tool produces any events

  - ### getRunningTools

    public PluginTool[] getRunningTools()
    Description copied from interface: `ToolManager`
    Get a list running tools across all workspaces.
    Specified by:
      `getRunningTools` in interface `ToolManager`
    Returns:
      zero-length array if there are no running tools.

  - ### getConnection

    public ToolConnection getConnection(PluginTool producer, PluginTool consumer)
    Description copied from interface: `ToolManager`
    Get the connection object for the producer and consumer tools
    Specified by:
      `getConnection` in interface `ToolManager`
    Parameters:
      `producer` - tool that is producing the tool event
      `consumer` - tool that is consuming the tool event
    Returns:
      the connection

  - ### createWorkspace

    public Workspace createWorkspace(String name) throws DuplicateNameException
    Description copied from interface: `ToolManager`
    Create a workspace with the given name.
    Specified by:
      `createWorkspace` in interface `ToolManager`
    Parameters:
      `name` - name of workspace
    Returns:
      the workspace
    Throws:
      `DuplicateNameException` - if a workspace with this name already exists

  - ### removeWorkspace

    public void removeWorkspace(Workspace ws)
    Description copied from interface: `ToolManager`
    Remove the workspace.
    Specified by:
      `removeWorkspace` in interface `ToolManager`
    Parameters:
      `ws` - workspace to remove

  - ### getWorkspaces

    public Workspace[] getWorkspaces()
    Description copied from interface: `ToolManager`
    Get list of known workspaces.
    Specified by:
      `getWorkspaces` in interface `ToolManager`
    Returns:
      an array of known workspaces

  - ### saveToXml

    public org.jdom.Element saveToXml()
    Saves this object to an XML element
    Returns:
      the element containing the tool XML

  - ### restoreFromXml

    public void restoreFromXml(org.jdom.Element root)
    restores the object from an XML element
    Parameters:
      `root` - root element of saved XML state

  - ### hasChanged

    public boolean hasChanged()
    Return whether any tools have changed, or if any tools were added or removed from any of the workspaces.
    Returns:
      true if any tools in this workspace have changed

  - ### saveSessionTools

    public boolean saveSessionTools()
    Save the tools that are opened and changed, that will be brought back up when the project is reopened
    Returns:
      true if the session was saved

  - ### dispose

    public void dispose()

  - ### dumpConnectionList

    public void dumpConnectionList()
    Debug method for printing out the list of connections.

  - ### propertyChange

    public void propertyChange(PropertyChangeEvent evt)
    Specified by:
      `propertyChange` in interface `PropertyChangeListener`

  - ### addWorkspaceChangeListener

    public void addWorkspaceChangeListener(WorkspaceChangeListener l)
    Description copied from interface: `ToolManager`
    Add the listener that will be notified when a tool is added or removed.
    Specified by:
      `addWorkspaceChangeListener` in interface `ToolManager`
    Parameters:
      `l` - workspace listener to add

  - ### removeWorkspaceChangeListener

    public void removeWorkspaceChangeListener(WorkspaceChangeListener l)
    Description copied from interface: `ToolManager`
    Remove the workspace listener.
    Specified by:
      `removeWorkspaceChangeListener` in interface `ToolManager`
    Parameters:
      `l` - workspace listener to remove

  - ### clearWorkspaceChanged

    public void clearWorkspaceChanged()
    Clear the flag so the user does not get prompted to save the project; flag gets set to true when a workspace is created, and a workspace is created when a new project is created.

  - ### getToolServices

    public ToolServices getToolServices()
    Get any tool services available from this tool
    Returns:
      ToolServices list of tool services this tool can provide.

  - ### toolChanged

    public void toolChanged(PluginTool tool)
    Description copied from interface: `ToolManager`
    A configuration change was made to the tool; a plugin was added or removed.
    Specified by:
      `toolChanged` in interface `ToolManager`
    Parameters:
      `tool` - tool that changed

  - ### getTool

    public PluginTool getTool(String toolName)
    Called by WorkspaceImpl when it is restoring its state.
    Parameters:
      `toolName` - the name of the tool
    Returns:
      the tool

  - ### disconnectTool

    public void disconnectTool(PluginTool tool)
    Description copied from interface: `ToolManager`
    Removes all connections involving tool
    Specified by:
      `disconnectTool` in interface `ToolManager`
    Parameters:
      `tool` - tool for which to remove all connections

  - ### canAutoSave

    public boolean canAutoSave(PluginTool tool)

  - ### toolSaved

    public void toolSaved(PluginTool tool, boolean toolChanged)