Class ProgramMergeManagerPlugin

All Implemented Interfaces:
ProgramManager, ProgramaticUseOnly, DomainObjectListener, PluginEventListener, ServiceListener, ExtensionPoint, EventListener

public class ProgramMergeManagerPlugin extends MergeManagerPlugin implements ProgramManager
Plugin that provides a merge component provider.
  • Constructor Details

    • ProgramMergeManagerPlugin

      public ProgramMergeManagerPlugin(PluginTool tool, ProgramMultiUserMergeManager mergeManager, Program program)
      Constructor for plugin that handles multi-user merge of programs.
      Parameters:
      tool - the tool with the active program to be merged
      mergeManager - the merge manager that will control the merge process
      program - the current program
  • Method Details

    • createProvider

      public ghidra.app.merge.MergeManagerProvider createProvider()
      Description copied from class: MergeManagerPlugin
      Creates the provider that will be displayed in the merge tool. This shows the merge progress to the user and lets the user resolve conflicts. Any class that extends this plugin must provide its own MergeManagerProvider here that will be shown to the user for the merge.
      Specified by:
      createProvider in class MergeManagerPlugin
      Returns:
      the merge provider associated with this plugin.
    • processEvent

      public void processEvent(PluginEvent event)
      Description copied from class: Plugin
      Method called to process a plugin event. Plugins should override this method if the plugin processes PluginEvents;
      Specified by:
      processEvent in class MergeManagerPlugin
      Parameters:
      event - plugin to process
    • dispose

      protected void dispose()
      Description copied from class: Plugin
      Tells a plugin that it is no longer needed. The plugin should release any resources that it has. All actions, components, services will automatically be cleaned up.
      Overrides:
      dispose in class MergeManagerPlugin
    • closeOtherPrograms

      public boolean closeOtherPrograms(boolean ignoreChanges)
      Description copied from interface: ProgramManager
      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)
      Specified by:
      closeOtherPrograms in interface ProgramManager
      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

      public boolean closeAllPrograms(boolean ignoreChanges)
      Description copied from interface: ProgramManager
      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)
      Specified by:
      closeAllPrograms in interface ProgramManager
      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.
    • closeProgram

      public boolean closeProgram()
      Description copied from interface: ProgramManager
      Closes the currently active program
      Specified by:
      closeProgram in interface ProgramManager
      Returns:
      true if the close is successful. false if the close fails or if there is no program currently active.
    • closeProgram

      public boolean closeProgram(Program program, boolean ignoreChanges)
      Description copied from interface: ProgramManager
      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.
      Specified by:
      closeProgram in interface ProgramManager
      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.
    • getAllOpenPrograms

      public Program[] getAllOpenPrograms()
      Description copied from interface: ProgramManager
      Returns a list of all open program.
      Specified by:
      getAllOpenPrograms in interface ProgramManager
      Returns:
      the programs
    • getCurrentProgram

      public Program getCurrentProgram()
      Description copied from interface: ProgramManager
      Return the program that is currently active.
      Specified by:
      getCurrentProgram in interface ProgramManager
      Returns:
      may return null if no program is open
    • getProgram

      public Program getProgram(Address addr)
      Description copied from interface: ProgramManager
      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.
      Specified by:
      getProgram in interface ProgramManager
      Parameters:
      addr - the address for which to search.
      Returns:
      the first program that can be found to contain the given address.
    • getSearchPriority

      public int getSearchPriority(Program p)
    • isVisible

      public boolean isVisible(Program program)
      Description copied from interface: ProgramManager
      Returns true if the specified program is open and considered visible to the user.
      Specified by:
      isVisible in interface ProgramManager
      Parameters:
      program - the program
      Returns:
      true if the specified program is open and considered visible to the user
    • openProgram

      public Program openProgram(URL ghidraURL, int state)
      Description copied from interface: ProgramManager
      Open the program corresponding to the given url.
      Specified by:
      openProgram in interface ProgramManager
      Parameters:
      ghidraURL - valid server-based program URL
      state - initial open state (OPEN_HIDDEN, OPEN_CURRENT, OPEN_VISIBLE). The visibility states will be ignored if the program is already open.
      Returns:
      the opened program or null if the user canceled the "open" or an error occurred
      See Also:
    • openCachedProgram

      public Program openCachedProgram(URL ghidraURL, Object consumer)
      Description copied from interface: ProgramManager
      Opens a program or retrieves it from a cache. If the program is in the cache, the consumer will be added the program before returning it. Otherwise, the program will be opened with the consumer. In addition, opening or accessing a cached program, will guarantee that it will remain open for period of time, even if the caller of this method releases it from the consumer that was passed in. If the program isn't accessed again, it will be eventually be released from the cache. If the program is still in use when the timer expires, the program will remain in the cache with a new full expiration time. Calling this method does not open the program in the tool.
      Specified by:
      openCachedProgram in interface ProgramManager
      Parameters:
      ghidraURL - the ghidra URL from which to open a program.
      consumer - the consumer that is using the program. The caller is responsible for releasing (See DomainObject.release(Object)) the consumer when done with the program.
      Returns:
      the program for the given URL or null if unable to open the program
    • openProgram

      public Program openProgram(DomainFile domainFile)
      Description copied from interface: ProgramManager
      Open the program for the given domainFile. Once open it will become the active program.
      Specified by:
      openProgram in interface ProgramManager
      Parameters:
      domainFile - domain file that has the program
      Returns:
      the opened program or null if the user canceled the "open" or an error occurred
    • openCachedProgram

      public Program openCachedProgram(DomainFile domainFile, Object consumer)
      Description copied from interface: ProgramManager
      Opens a program or retrieves it from a cache. If the program is in the cache, the consumer will be added the program before returning it. Otherwise, the program will be opened with the consumer. In addition, opening or accessing a cached program, will guarantee that it will remain open for period of time, even if the caller of this method releases it from the consumer that was passed in. If the program isn't accessed again, it will be eventually be released from the cache. If the program is still in use when the timer expires, the program will remain in the cache with a new full expiration time. Calling this method does not open the program in the tool.
      Specified by:
      openCachedProgram in interface ProgramManager
      Parameters:
      domainFile - the DomainFile from which to open a program.
      consumer - the consumer that is using the program. The caller is responsible for releasing (See DomainObject.release(Object)) the consumer when done with the program.
      Returns:
      the program for the given domainFile or null if unable to open the program
    • openProgram

      public Program openProgram(DomainFile df, int version)
      Description copied from interface: ProgramManager
      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.
      Specified by:
      openProgram in interface ProgramManager
      Parameters:
      df - the DomainFile to open
      version - the version of the Program to open
      Returns:
      the opened program or null if the user canceled the "open" or an error occurred
    • openProgram

      public Program openProgram(DomainFile domainFile, int version, int state)
      Description copied from interface: ProgramManager
      Open the program for the given domainFile
      Specified by:
      openProgram in interface ProgramManager
      Parameters:
      domainFile - domain file that has the program
      version - 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:
      the opened program or null if the user canceled the "open" or an error occurred
    • openProgram

      public void openProgram(Program program)
      Description copied from interface: ProgramManager
      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.
      Specified by:
      openProgram in interface ProgramManager
      Parameters:
      program - the program to register as open with the tool.
    • openProgram

      public void openProgram(Program program, int state)
      Description copied from interface: ProgramManager
      Open the specified program in the tool.
      Specified by:
      openProgram in interface ProgramManager
      Parameters:
      program - the program
      state - initial open state (OPEN_HIDDEN, OPEN_CURRENT, OPEN_VISIBLE). The visibility states will be ignored if the program is already open.
    • releaseProgram

      public void releaseProgram(Program program, Object persistentOwner)
      Description copied from interface: ProgramManager
      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.

      Specified by:
      releaseProgram in interface ProgramManager
      Parameters:
      program - the program
      persistentOwner - the owner defined by ProgramManager.setPersistentOwner(Program, Object)
    • saveProgram

      public void saveProgram()
      Description copied from interface: ProgramManager
      Saves the current program, possibly prompting the user for a new name.
      Specified by:
      saveProgram in interface ProgramManager
    • saveProgram

      public void saveProgram(Program program)
      Description copied from interface: ProgramManager
      Saves the specified program, possibly prompting the user for a new name.
      Specified by:
      saveProgram in interface ProgramManager
      Parameters:
      program - the program
    • saveProgramAs

      public void saveProgramAs()
      Description copied from interface: ProgramManager
      Prompts the user to save the current program to a selected file.
      Specified by:
      saveProgramAs in interface ProgramManager
    • saveProgramAs

      public void saveProgramAs(Program program)
      Description copied from interface: ProgramManager
      Prompts the user to save the specified program to a selected file.
      Specified by:
      saveProgramAs in interface ProgramManager
      Parameters:
      program - the program
    • setCurrentProgram

      public void setCurrentProgram(Program p)
      Description copied from interface: ProgramManager
      Sets the given program to be the current active program in the tool.
      Specified by:
      setCurrentProgram in interface ProgramManager
      Parameters:
      p - the program to make active.
    • setPersistentOwner

      public boolean setPersistentOwner(Program program, Object owner)
      Description copied from interface: ProgramManager
      Establish a persistent owner on an open program. This will cause the program manager to imply make a program hidden if it is closed.
      Specified by:
      setPersistentOwner in interface ProgramManager
      Parameters:
      program - the program
      owner - the 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:
    • setSearchPriority

      public void setSearchPriority(Program p, int priority)