Package ghidra.framework.project
Class DefaultProject
java.lang.Object
ghidra.framework.project.DefaultProject
- All Implemented Interfaces:
Project,AutoCloseable,Iterable<DomainFile>
Implementation for a Project.
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDefaultProject(DefaultProjectManager projectManager, DefaultProjectData projectData) Construct a project with specific project manager and dataprotectedDefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, boolean resetOwner) Constructor for opening a project.protectedDefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, RepositoryAdapter repository) Constructor for creating a New project -
Method Summary
Modifier and TypeMethodDescriptionaddProjectView(URL url, boolean visible) Add the given project URL to this project's list project views.voidaddProjectViewListener(ProjectViewListener listener) Add a listener to be notified when a visible project view is added or removed.voidclose()Close the project.Get the local tool chest for the user logged in.getName()Convenience method to get the name of this project.Get list of domain files that are open.Get the root domain data folder in the project.getProjectData(ProjectLocator locator) Returns the Project Data for the given Project locator.Get the project URL for this project.Returns the project manager of this project.Return the list of visible project views in this project.Get the repository that this project is associated with.getSaveableData(String key) The analog forProject.setSaveableData(String, SaveState).Return the tool manager for this project.Get the tool services for this project.getToolTemplate(String tag) Get the tool template with the given tag.Get the project data for visible viewed projects that are managed by this project.booleanReturn whether the project configuration has changed.booleanisClosed()Returns whether this project instance has been closedvoidreleaseFiles(Object consumer) Releases all DomainObjects used by the given consumervoidremoveProjectView(URL url) Remove the view from this project.voidremoveProjectViewListener(ProjectViewListener listener) Remove a project view listener previously added.voidrestore()Restore this project's state.voidsave()Save the project and the list of project views.booleanSaves any tools that are associated with the opened project when the project is closed.voidsaveToolTemplate(String tag, ToolTemplate template) Save the given tool template as part of the project.voidsetSaveableData(String key, SaveState saveState) Allows the user to store data related to the project.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
DefaultProject
protected DefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, RepositoryAdapter repository) throws IOException, LockException Constructor for creating a New project- Parameters:
projectManager- the manager of this projectprojectLocator- location and name of projectrepository- shared repository associated with the new project. Can be null for non-shared projects- Throws:
IOException- if I/O error occurs.LockException- if unable to establish project lock
-
DefaultProject
protected DefaultProject(DefaultProjectManager projectManager, ProjectLocator projectLocator, boolean resetOwner) throws IOException, NotOwnerException, LockException Constructor for opening a project.- Parameters:
projectManager- the manager of this projectprojectLocator- location and name of projectresetOwner- if true, set the owner to the current user- Throws:
FileNotFoundException- project directory not foundIOException- if I/O error occurs.NotOwnerException- if userName is not the owner of the project.LockException- if unable to establish project lock
-
DefaultProject
Construct a project with specific project manager and data- Parameters:
projectManager- the manager of this projectprojectData- the project data
-
-
Method Details
-
getProjectManager
Description copied from interface:ProjectReturns the project manager of this project.- Specified by:
getProjectManagerin interfaceProject- Returns:
- the project manager of this project.
-
getProjectLocator
Get the project URL for this project.- Specified by:
getProjectLocatorin interfaceProject
-
addProjectViewListener
Description copied from interface:ProjectAdd a listener to be notified when a visible project view is added or removed.- Specified by:
addProjectViewListenerin interfaceProject- Parameters:
listener- project view listener
-
removeProjectViewListener
Description copied from interface:ProjectRemove a project view listener previously added.- Specified by:
removeProjectViewListenerin interfaceProject- Parameters:
listener- project view listener
-
addProjectView
Description copied from interface:ProjectAdd the given project URL to this project's list project views. The project view allows users to look at data files from another project.- Specified by:
addProjectViewin interfaceProject- Parameters:
url- 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
Remove the view from this project.- Specified by:
removeProjectViewin interfaceProject- Parameters:
url- identifier for the project
-
getToolServices
Get the tool services for this project.- Specified by:
getToolServicesin interfaceProject
-
getLocalToolChest
Get the local tool chest for the user logged in.- Specified by:
getLocalToolChestin interfaceProject- Returns:
- the tool chest
-
getName
Description copied from interface:ProjectConvenience method to get the name of this project. -
getToolManager
Description copied from interface:ProjectReturn the tool manager for this project.- Specified by:
getToolManagerin interfaceProject
-
hasChanged
public boolean hasChanged()Description copied from interface:ProjectReturn whether the project configuration has changed.- Specified by:
hasChangedin interfaceProject
-
getProjectViews
Description copied from interface:ProjectReturn the list of visible project views in this project.- Specified by:
getProjectViewsin interfaceProject
-
getRepository
Description copied from interface:ProjectGet the repository that this project is associated with.- Specified by:
getRepositoryin interfaceProject- Returns:
- null if the project is not associated with a remote repository
-
close
public void close()Description copied from interface:ProjectClose the project.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceProject
-
isClosed
public boolean isClosed()Description copied from interface:ProjectReturns whether this project instance has been closed -
saveSessionTools
public boolean saveSessionTools()Description copied from interface:ProjectSaves any tools that are associated with the opened project when the project is closed.- Specified by:
saveSessionToolsin interfaceProject- Returns:
- True if the save was not cancelled.
-
restore
public void restore()Description copied from interface:ProjectRestore this project's state. -
save
public void save()Description copied from interface:ProjectSave the project and the list of project views. -
toString
-
saveToolTemplate
Description copied from interface:ProjectSave the given tool template as part of the project.- Specified by:
saveToolTemplatein interfaceProject- Parameters:
tag- ID or name for the tool templatetemplate- template to save
-
getToolTemplate
Description copied from interface:ProjectGet the tool template with the given tag.- Specified by:
getToolTemplatein interfaceProject- Parameters:
tag- ID or name for the tool template to get- Returns:
- tool template
-
getOpenData
Description copied from interface:ProjectGet list of domain files that are open.- Specified by:
getOpenDatain interfaceProject- Returns:
- the files; empty if no files
-
getProjectData
Description copied from interface:ProjectGet the root domain data folder in the project.- Specified by:
getProjectDatain interfaceProject
-
setSaveableData
Description copied from interface:ProjectAllows the user to store data related to the project.- Specified by:
setSaveableDatain interfaceProject- Parameters:
key- A value used to store and lookup saved datasaveState- a container of data that will be written out when persisted
-
getSaveableData
Description copied from interface:ProjectThe analog forProject.setSaveableData(String, SaveState).- Specified by:
getSaveableDatain interfaceProject
-
getProjectData
Description copied from interface:ProjectReturns the Project Data for the given Project locator. The Project locator must be either the current active project or an currently open project view.- Specified by:
getProjectDatain interfaceProject
-
getViewedProjectData
Description copied from interface:ProjectGet the project data for visible viewed projects that are managed by this project.- Specified by:
getViewedProjectDatain interfaceProject- Returns:
- zero length array if there are no visible viewed projects open
-
releaseFiles
Description copied from interface:ProjectReleases all DomainObjects used by the given consumer- Specified by:
releaseFilesin interfaceProject- Parameters:
consumer- object no longer using any DomainObjects.
-