Class ProgramMultiUserMergeManager

java.lang.Object
ghidra.app.merge.MergeManager
ghidra.app.merge.ProgramMultiUserMergeManager
All Implemented Interfaces:
MergeProgressModifier, DomainObjectMergeManager

public class ProgramMultiUserMergeManager extends MergeManager
Top level object that manages each step of the merge/resolve conflicts process.
  • Constructor Details

  • Method Details

    • createMergeResolvers

      protected void createMergeResolvers()
      Specified by:
      createMergeResolvers in class MergeManager
    • getProgram

      public Program getProgram(int version)
      Returns one of the four programs involved in the merge as indicated by the version.
      Parameters:
      version - the program version to return. (LATEST, MY, ORIGINAL, or RESULT).
      Returns:
      the indicated program version or null if a valid version isn't specified.
      See Also:
    • createMergeManagerPlugin

      protected MergeManagerPlugin createMergeManagerPlugin(ModalPluginTool mergePluginTool, MergeManager multiUserMergeManager, DomainObject modifiableDomainObject)
      Specified by:
      createMergeManagerPlugin in class MergeManager
    • initializeMerge

      protected void initializeMerge()
      Specified by:
      initializeMerge in class MergeManager
    • cleanupMerge

      protected void cleanupMerge()
      Specified by:
      cleanupMerge in class MergeManager
    • showDefaultMergePanel

      public void showDefaultMergePanel(String description)
      Show the default merge panel. The default merge panel now shows the status of each phase of the merge and also the progress in the current phase.
      Overrides:
      showDefaultMergePanel in class MergeManager
      Parameters:
      description - description of current merge process near the top of the merge tool.
    • showComponent

      public void showComponent(JComponent comp, String componentID, HelpLocation helpLoc)
      Show the component that is used to resolve conflicts. This method is called by the MergeResolvers when user input is required. If the component is not null, this method blocks until the user either cancels the merge process or resolves a conflict. If comp is null, then the default component is displayed, and the method does not wait for user input.
      Specified by:
      showComponent in interface DomainObjectMergeManager
      Overrides:
      showComponent in class MergeManager
      Parameters:
      comp - component to show; if component is null, show the default component and do not block
      componentID - id or name for the component
    • showListingMergePanel

      public void showListingMergePanel(Address goToAddress)
      Show the listing merge panel.
      Parameters:
      goToAddress - the address to goto.
    • refreshListingMergePanel

      public void refreshListingMergePanel(Address resultAddress, Address latestAddress, Address myAddress, Address originalAddress)
      Show the listing merge panel with each listing positioned to the indicated address. A null can be passed for any address to indicate that listing should be empty.
      Parameters:
      resultAddress - the address for positioning the Result program's listing.
      latestAddress - the address for positioning the Latest program's listing.
      myAddress - the address for positioning the My program's listing.
      originalAddress - the address for positioning the Original program's listing.
    • showListingMergePanel

      public void showListingMergePanel(Address resultAddress, Address latestAddress, Address myAddress, Address originalAddress)
      Show the listing merge panel with each listing positioned to the indicated address. A null can be passed for any address to indicate that listing should be empty.
      Parameters:
      resultAddress - the address for positioning the Result program's listing.
      latestAddress - the address for positioning the Latest program's listing.
      myAddress - the address for positioning the My program's listing.
      originalAddress - the address for positioning the Original program's listing.
    • removeListingMergePanel

      public void removeListingMergePanel()
      Remove the listing merge panel from the merge manager.
    • getListingMergePanel

      public ListingMergePanel getListingMergePanel()
      Returns the listing merge panel. This is the panel containing the four listing windows: result, latest, my, and original. The four listings are the center component of JPanel with a BorderLayout.
    • isMergeToolVisible

      public boolean isMergeToolVisible()
      Determines if the modal merge tool is currently displayed on the screen.
      Overrides:
      isMergeToolVisible in class MergeManager
      Returns:
      true if the merge tool is displayed.
    • isShowingListingMergePanel

      public boolean isShowingListingMergePanel()
      Determines if the four program Listing merge panel is currently displayed in the merge tool.
      Returns:
      true if the Listing merge panel is displayed.