Package ghidra.app.services
Interface ProgramManager
-
- All Known Implementing Classes:
ProgramMergeManagerPlugin
public interface ProgramManager
Service for managing programs. Multiple programs may be open in a tool, but only one is active at any given time.
-
-
Field Summary
Fields Modifier and Type Field Description static int
OPEN_CURRENT
Program will be open as the currently active program within the tool.static int
OPEN_HIDDEN
Program will be open in a Hidden state if not already open.static int
OPEN_VISIBLE
Program will be open within the tool but no change will be made to the currently active program.
-
Method Summary
All Methods Instance Methods Abstract Methods Deprecated Methods Modifier and Type Method Description boolean
closeAllPrograms(boolean ignoreChanges)
Closes all open programs in this tool.boolean
closeOtherPrograms(boolean ignoreChanges)
Closes all open programs in this tool except the current program.boolean
closeProgram()
Closes the currently active programboolean
closeProgram(Program program, boolean ignoreChanges)
Closes the given program with the option of saving any changes.Program[]
getAllOpenPrograms()
Returns a list of all open program.sProgram
getCurrentProgram()
Return the program that is currently active.Program
getProgram(Address addr)
Returns the first program in the list of open programs that contains the given address.boolean
isLocked()
Returns true if program managerboolean
isVisible(Program program)
Returns true if the specified program is open and considiered visible to the user.void
lockDown(boolean state)
Allows program manager state to be locked/unlocked.Program
openProgram(DomainFile domainFile)
Open the program for the given domainFile.Program
openProgram(DomainFile df, int version)
Opens the specified version of the program represented by the given DomainFile.Program
openProgram(DomainFile domainFile, int version, int state)
Open the program for the given domainFileProgram
openProgram(DomainFile domainFile, java.awt.Component dialogParent)
void
openProgram(Program program)
Opens the program to the tool.void
openProgram(Program program, boolean current)
Deprecated.use openProgram(Program program, int state) instead.void
openProgram(Program program, int state)
Open the specified program in te tool.Program
openProgram(java.net.URL ghidraURL, int state)
Open the program corresponding to the given url.void
releaseProgram(Program program, java.lang.Object persistentOwner)
Release the persistent ownership of a program.void
setCurrentProgram(Program p)
Sets the given program to be the current active program in the tool.boolean
setPersistentOwner(Program program, java.lang.Object owner)
Establish a persistent owner on an open program.
-
-
-
Field Detail
-
OPEN_HIDDEN
static final int OPEN_HIDDEN
Program will be open in a Hidden state if not already open. This mode is generally used in conjunction with a persistent program owner.- See Also:
- Constant Field Values
-
OPEN_CURRENT
static final int OPEN_CURRENT
Program will be open as the currently active program within the tool.- See Also:
- Constant Field Values
-
OPEN_VISIBLE
static final int OPEN_VISIBLE
Program will be open within the tool but no change will be made to the currently active program. If this is the only program open, it will become the currently active program.- See Also:
- Constant Field Values
-
-
Method Detail
-
getCurrentProgram
Program getCurrentProgram()
Return the program that is currently active.- Returns:
- may return null if no program is open
-
isVisible
boolean isVisible(Program program)
Returns true if the specified program is open and considiered visible to the user.- Parameters:
program
-- Returns:
- true if the specified program is open and considiered visible to the user
-
closeProgram
boolean closeProgram()
Closes the currently active program- Returns:
- true if the close is successful. false if the close fails or if there is no program currently active.
-
openProgram
Program openProgram(java.net.URL ghidraURL, int state)
Open the program corresponding to the given url. Once open it will become- Parameters:
ghidraURL
- valid server-based program URLstate
- initial open state (OPEN_HIDDEN, OPEN_CURRENT, OPEN_VISIBLE). The visibility states will be ignored if the program is already open.- Returns:
- null if the user canceled the "open" for the new program or an error occurred and was displayed.
- See Also:
GhidraURL
-
openProgram
Program openProgram(DomainFile domainFile)
Open the program for the given domainFile. Once open it will become the active program.- Parameters:
domainFile
- domain file that has the program- Returns:
- null if the user canceled the "open" for the new program
-
openProgram
Program openProgram(DomainFile domainFile, java.awt.Component dialogParent)
-
openProgram
Program openProgram(DomainFile df, int version)
Opens the specified version of the program represented by the given DomainFile. This method should be used for shared DomainFiles. The newly opened file will be made the active program.- Parameters:
df
- the DomainFile to openversion
- the version of the Program to open- Returns:
- the opened program or null if the given version does not exist.
-
openProgram
Program openProgram(DomainFile domainFile, int version, int state)
Open the program for the given domainFile- Parameters:
domainFile
- domain file that has the programversion
- the version of the Program to open. Specify DomainFile.DEFAULT_VERSION for file update mode.state
- initial open state (OPEN_HIDDEN, OPEN_CURRENT, OPEN_VISIBLE). The visibility states will be ignored if the program is already open.- Returns:
- null if the user canceled the "open" for the new program or an error occurred and was displayed.
-
openProgram
void openProgram(Program program)
Opens the program to the tool. In this case the program is already open, but this tool may not have it registered as open. The program is made the active program.- Parameters:
program
- the program to register as open with the tool.
-
openProgram
@Deprecated void openProgram(Program program, boolean current)
Deprecated.use openProgram(Program program, int state) instead.Opens the program to the tool. In this case the program is already open, but this tool may not have it registered as open. The program is made the active program.- Parameters:
program
- the program to register as open with the tool.current
- if true, the program is made the current active program. If false, then the program is made active only if it the first open program in the tool.
-
openProgram
void openProgram(Program program, int state)
Open the specified program in te tool.- Parameters:
program
-state
- initial open state (OPEN_HIDDEN, OPEN_CURRENT, OPEN_VISIBLE). The visibility states will be ignored if the program is already open.
-
setPersistentOwner
boolean setPersistentOwner(Program program, java.lang.Object owner)
Establish a persistent owner on an open program. This will cause the program manager to simply make a program hidden if it is closed.- Parameters:
program
-owner
-- Returns:
- true if program is open and another object is not already the owner, or the specified owner is already the owner.
- See Also:
releaseProgram(Program, Object)
-
releaseProgram
void releaseProgram(Program program, java.lang.Object persistentOwner)
Release the persistent ownership of a program. The program will automatically be closed if it is hidden or was marked as temporary. If any of these closures corresponds to a program with changes the user will be given an opportunity to save or keep the program open. If persistentOwner is not the correct owner, the method will have no affect.- Parameters:
program
-persistentOwner
-
-
closeProgram
boolean closeProgram(Program program, boolean ignoreChanges)
Closes the given program with the option of saving any changes. The exact behavior of this method depends on several factors. First of all, if any other tool has this program open, then the program is closed for this tool only and the user is not prompted to save the program regardless of the ignoreChanges flag. Otherwise, if ignoreChanges is false and changes have been made, the user is prompted to save the program.- Parameters:
program
- the program to close.ignoreChanges
- if true, the program is closed without saving any changes.- Returns:
- true if the program was closed. Returns false if the user canceled the close while being prompted to save. Also returns false if the program passed in as a parameter is null.
-
closeOtherPrograms
boolean closeOtherPrograms(boolean ignoreChanges)
Closes all open programs in this tool except the current program. If this tool is the only tool with a program open and that program has changes, then the user will be prompted to close each such file. (Providing the ignoreChanges flag is false)- Parameters:
ignoreChanges
- if true, the programs will be closed without saving changes.- Returns:
- true if all other programs were closed. Returns false if the user canceled the close while being prompted to save.
-
closeAllPrograms
boolean closeAllPrograms(boolean ignoreChanges)
Closes all open programs in this tool. If this tool is the only tool with a program open and that program has changes, then the user will be prompted to close each such file. (Providing the ignoreChanges flag is false)- Parameters:
ignoreChanges
- if true, the programs will be closed without saving changes.- Returns:
- true if all programs were closed. Returns false if the user canceled the close while being prompted to save.
-
setCurrentProgram
void setCurrentProgram(Program p)
Sets the given program to be the current active program in the tool.- Parameters:
p
- the program to make active.
-
getProgram
Program getProgram(Address addr)
Returns the first program in the list of open programs that contains the given address. Programs are searched in the order they were opened within a given priority. Program are initially opened with the PRIORITY_NORMAL priority, but can be set to have PRIORITY_HIGH or PRIORITY_LOW.- Parameters:
addr
- the address for which to search.- Returns:
- the first program that can be found to contain the given address.
-
getAllOpenPrograms
Program[] getAllOpenPrograms()
Returns a list of all open program.s
-
lockDown
void lockDown(boolean state)
Allows program manager state to be locked/unlocked. While locked, the program manager will not support opening additional programs.- Parameters:
state
- locked if true, unlocked if false
-
isLocked
boolean isLocked()
Returns true if program manager- Returns:
-
-