Package ghidra.framework.model

# Interface Project

All Known Implementing Classes:
  `DefaultProject`

public interface Project
Interface to define methods to manage data and tools for users working on a particular effort. Project represents the container object for users, data, and tools to work together.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ProjectData`
  `addProjectView(URL projectURL, boolean visible)`
  Add the given project URL to this project's list project views.
  `void`
  `addProjectViewListener(ProjectViewListener listener)`
  Add a listener to be notified when a visible project view is added or removed.
  `void`
  `close()`
  Close the project.
  `ToolChest`
  `getLocalToolChest()`
  Return the local tool chest for the user logged in.
  `String`
  `getName()`
  Convenience method to get the name of this project.
  `List<DomainFile>`
  `getOpenData()`
  Get list of domain files that are open.
  `ProjectData`
  `getProjectData()`
  Get the root domain data folder in the project.
  `ProjectData`
  `getProjectData(ProjectLocator projectLocator)`
  Returns the Project Data for the given Project locator.
  `ProjectLocator`
  `getProjectLocator()`
  Get the project locator for this project.
  `ProjectManager`
  `getProjectManager()`
  Returns the project manager of this project.
  `ProjectLocator[]`
  `getProjectViews()`
  Return the list of visible project views in this project.
  `RepositoryAdapter`
  `getRepository()`
  Get the repository that this project is associated with.
  `SaveState`
  `getSaveableData(String key)`
  The analog for `setSaveableData(String, SaveState)`.
  `ToolManager`
  `getToolManager()`
  Return the tool manager for this project.
  `ToolServices`
  `getToolServices()`
  Return the tool services for this project.
  `ToolTemplate`
  `getToolTemplate(String tag)`
  Get the tool template with the given tag.
  `ProjectData[]`
  `getViewedProjectData()`
  Get the project data for visible viewed projects that are managed by this project.
  `boolean`
  `hasChanged()`
  Return whether the project configuration has changed.
  `boolean`
  `isClosed()`
  Returns whether this project instance has been closed
  `void`
  `releaseFiles(Object consumer)`
  Releases all DomainObjects used by the given consumer
  `void`
  `removeProjectView(URL projectURL)`
  Remove the project view from this project.
  `void`
  `removeProjectViewListener(ProjectViewListener listener)`
  Remove a project view listener previously added.
  `void`
  `restore()`
  Restore this project's state.
  `void`
  `save()`
  Save the project and the list of project views.
  `boolean`
  `saveSessionTools()`
  Saves any tools that are associated with the opened project when the project is closed.
  `void`
  `saveToolTemplate(String tag, ToolTemplate template)`
  Save the given tool template as part of the project.
  `void`
  `setSaveableData(String key, SaveState saveState)`
  Allows the user to store data related to the project.

- ## Method Details

  - ### getName

    String getName()
    Convenience method to get the name of this project.

  - ### getProjectLocator

    ProjectLocator getProjectLocator()
    Get the project locator for this project.

  - ### getProjectManager

    ProjectManager getProjectManager()
    Returns the project manager of this project.
    Returns:
      the project manager of this project.

  - ### getToolManager

    ToolManager getToolManager()
    Return the tool manager for this project.

  - ### getToolServices

    ToolServices getToolServices()
    Return the tool services for this project.

  - ### hasChanged

    boolean hasChanged()
    Return whether the project configuration has changed.

  - ### isClosed

    boolean isClosed()
    Returns whether this project instance has been closed

  - ### getLocalToolChest

    ToolChest getLocalToolChest()
    Return the local tool chest for the user logged in.

  - ### getRepository

    RepositoryAdapter getRepository()
    Get the repository that this project is associated with.
    Returns:
      null if the project is not associated with a remote repository

  - ### addProjectView

    ProjectData addProjectView(URL projectURL, boolean visible) throws IOException
    Add the given project URL to this project's list project views. The project view allows users to look at data files from another project.
    Parameters:
      `projectURL` - identifier for the project view (ghidra protocol only).
      `visible` - true if project may be made visible or false if hidden. Hidden viewed projects are used when only life-cycle management is required (e.g., close view project when this project is closed).
    Returns:
      project data for this view
    Throws:
      `IOException` - if I/O error occurs or if project/repository not found

  - ### removeProjectView

    void removeProjectView(URL projectURL)
    Remove the project view from this project.
    Parameters:
      `projectURL` - identifier for the project

  - ### getProjectViews

    ProjectLocator[] getProjectViews()
    Return the list of visible project views in this project.

  - ### close

    void close()
    Close the project.

  - ### save

    void save()
    Save the project and the list of project views.

  - ### saveSessionTools

    boolean saveSessionTools()
    Saves any tools that are associated with the opened project when the project is closed.
    Returns:
      True if the save was not cancelled.

  - ### restore

    void restore()
    Restore this project's state.

  - ### saveToolTemplate

    void saveToolTemplate(String tag, ToolTemplate template)
    Save the given tool template as part of the project.
    Parameters:
      `tag` - ID or name for the tool template
      `template` - template to save

  - ### getToolTemplate

    ToolTemplate getToolTemplate(String tag)
    Get the tool template with the given tag.
    Parameters:
      `tag` - ID or name for the tool template to get
    Returns:
      tool template

  - ### setSaveableData

    void setSaveableData(String key, SaveState saveState)
    Allows the user to store data related to the project.
    Parameters:
      `key` - A value used to store and lookup saved data
      `saveState` - a container of data that will be written out when persisted

  - ### getSaveableData

    SaveState getSaveableData(String key)
    The analog for `setSaveableData(String, SaveState)`.

  - ### getOpenData

    List<DomainFile> getOpenData()
    Get list of domain files that are open.
    Returns:
      the files; empty if no files

  - ### getProjectData

    ProjectData getProjectData()
    Get the root domain data folder in the project.

  - ### getProjectData

    ProjectData getProjectData(ProjectLocator projectLocator)
    Returns the Project Data for the given Project locator. The Project locator must be either the current active project or an currently open project view.

  - ### getViewedProjectData

    ProjectData[] getViewedProjectData()
    Get the project data for visible viewed projects that are managed by this project.
    Returns:
      zero length array if there are no visible viewed projects open

  - ### releaseFiles

    void releaseFiles(Object consumer)
    Releases all DomainObjects used by the given consumer
    Parameters:
      `consumer` - object no longer using any DomainObjects.

  - ### addProjectViewListener

    void addProjectViewListener(ProjectViewListener listener)
    Add a listener to be notified when a visible project view is added or removed.
    Parameters:
      `listener` - project view listener

  - ### removeProjectViewListener

    void removeProjectViewListener(ProjectViewListener listener)
    Remove a project view listener previously added.
    Parameters:
      `listener` - project view listener