Package ghidra.app.util.viewer.listingpanel

# Class ListingCodeComparisonPanel

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
ghidra.app.util.viewer.util.CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>
ghidra.app.util.viewer.listingpanel.ListingCodeComparisonPanel

All Implemented Interfaces:
  `CodeFormatService`, `FormatModelListener`, `ListingDiffChangeListener`, `OptionsChangeListener`, `ExtensionPoint`, `FocusListener`, `ImageObserver`, `MenuContainer`, `Serializable`, `EventListener`, `Accessible`

public class ListingCodeComparisonPanel extends CodeComparisonPanel<ListingComparisonFieldPanelCoordinator> implements FormatModelListener, CodeFormatService, ListingDiffChangeListener, OptionsChangeListener
Panel that displays two listings for comparison.

See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class javax.swing.JPanel

  `JPanel.AccessibleJPanel`

  ## Nested classes/interfaces inherited from class javax.swing.JComponent

  `JComponent.AccessibleJComponent`

  ## Nested classes/interfaces inherited from class java.awt.Container

  `Container.AccessibleAWTContainer`

  ## Nested classes/interfaces inherited from class java.awt.Component

  `Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static final HelpService`
  `help`
  `static final String`
  `NAME`
  `static final String`
  `TITLE`

  ### Fields inherited from class ghidra.app.util.viewer.util.CodeComparisonPanel

  `bottomComp, currProgramIndex, data, EMPTY_ADDRESS_SET, FOCUS_BORDER, functions, LEFT, leftTitlePrefix, MINIMUM_PANEL_WIDTH, NON_FOCUS_BORDER, owner, programs, RIGHT, rightTitlePrefix, titlePanels, tool, topComp`

  ### Fields inherited from class javax.swing.JComponent

  `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

  ### Fields inherited from class java.awt.Component

  `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

  ### Fields inherited from interface java.awt.image.ImageObserver

  `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ListingCodeComparisonPanel(String owner, PluginTool tool)`
  Creates a comparison panel with two listings.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addButtonPressedListener(ButtonPressedListener listener)`
  Adds the indicated button press listener to both listing panels in this code comparison panel.
  `void`
  `addHighlightProviders(ListingHighlightProvider leftHighlightProvider, ListingHighlightProvider rightHighlightProvider)`
  Adds the indicated highlight providers for the left and right listing panels.
  `protected ListingComparisonFieldPanelCoordinator`
  `createFieldPanelCoordinator()`
  Creates a new FieldPanelCoordinator used to synchronize scrolling between the left and right view for this CodeComparisonPanel.
  `void`
  `dispose()`
  Cleans up resources when this panel is no longer needed
  `void`
  `focusGained(FocusEvent e)`
  `void`
  `formatModelAdded(FieldFormatModel model)`
  Notifies that a new format model was added to the format manager.
  `void`
  `formatModelChanged(FieldFormatModel model)`
  Notifies that the given format model was changed.
  `void`
  `formatModelRemoved(FieldFormatModel model)`
  Notifies that a format model was removed.
  `ActionContext`
  `getActionContext(ComponentProvider provider, MouseEvent event)`
  Returns the context object which corresponds to the area of focus within this provider's component.
  `ActionContext`
  `getActionContext(MouseEvent event, ComponentProvider provider)`
  `DockingAction[]`
  `getActions()`
  Returns the actions for this panel
  `JComponent`
  `getComponent()`
  The GUI component for this CodeComparisonPanel
  `Object`
  `getContextObjectForMarginPanels(ListingPanel lp, MouseEvent event)`
  Gets a marker margin or overview margin context object if the mouse event occurred on one of the GUI components for the indicated listing panel's marker margin (left edge of listing) or overview margin (right edge of listing).
  `ListingPanel`
  `getFocusedListingPanel()`
  Get the left or right listing panel that has or last had focus.
  `Program`
  `getFocusedProgram()`
  Gets the program from the left or right side that has or last had focus.
  `FormatManager`
  `getFormatManager()`
  `AddressSetView`
  `getLeftAddresses()`
  Gets the addresses in the left listing panel.
  `Data`
  `getLeftData()`
  Gets the data loaded in the left listing panel.
  `FieldPanel`
  `getLeftFieldPanel()`
  Gets the left field panel for this CodeComparisonPanel.
  `Function`
  `getLeftFunction()`
  Gets the function loaded in the left listing panel.
  `ListingPanel`
  `getLeftPanel()`
  Get the left side's listing panel.
  `Program`
  `getLeftProgram()`
  Gets the program in the left listing panel.
  `ListingPanel`
  `getListingPanel(FieldPanel fieldPanel)`
  Gets the left or right listing panel that contains the indicated field panel.
  `AddressSetView`
  `getRightAddresses()`
  Gets the addresses in the right listing panel.
  `Data`
  `getRightData()`
  Gets the data loaded in the right listing panel.
  `FieldPanel`
  `getRightFieldPanel()`
  Gets the right field panel for this CodeComparisonPanel.
  `Function`
  `getRightFunction()`
  Gets the function loaded in the right listing panel.
  `ListingPanel`
  `getRightPanel()`
  Get the right side's listing panel.
  `Program`
  `getRightProgram()`
  Gets the program in the right listing panel.
  `String`
  `getTitle()`
  The title for this code comparison panel
  `boolean`
  `goTo(Address addr)`
  Go to the indicated address in the listing that last had focus.
  `boolean`
  `goTo(ProgramLocation loc, boolean centerOnScreen)`
  Go to the indicated location in the listing that last had focus.
  `boolean`
  `isEntireListingShowing()`
  `boolean`
  `isHeaderShowing()`
  Determines if the listing's layout field header is currently showing.
  `boolean`
  `isSideBySide()`
  `boolean`
  `leftPanelHasFocus()`
  Determines if the left code panel currently has focus.
  `void`
  `listingDiffChanged()`
  Called when the ListingDiff's set of differences and unmatched addresses has changed.
  `void`
  `loadAddresses(Program leftProgram, Program rightProgram, AddressSetView leftAddresses, AddressSetView rightAddresses)`
  Displays program information for a particular set of addresses in the two programs being compared
  `void`
  `loadData(Data leftData, Data rightData)`
  Displays a comparison of two program's data items
  `void`
  `loadFunctions(Function leftFunction, Function rightFunction)`
  Displays a comparison of two program's functions
  `void`
  `optionsChanged(ToolOptions options, String optionName, Object oldValue, Object newValue)`
  Notification that an option changed.
  `void`
  `programRestored(Program program)`
  Called when the indicated program has been restored because of an Undo/Redo.
  `void`
  `readConfigState(String prefix, SaveState saveState)`
  Restores this panel to the indicated saved configuration state.
  `void`
  `refreshLeftPanel()`
  Refreshes the left side of this panel.
  `void`
  `refreshRightPanel()`
  Refreshes the right side of this panel.
  `void`
  `removeHighlightProviders(ListingHighlightProvider leftHighlightProvider, ListingHighlightProvider rightHighlightProvider)`
  Removes the indicated highlight providers from the left and right listing panels.
  `void`
  `setBottomComponent(JComponent comp)`
  Sets the component displayed in the bottom of this panel.
  `void`
  `setFieldPanelCoordinator(ListingComparisonFieldPanelCoordinator listingFieldPanelCoordinator)`
  Sets the coordinator for the two listings within this code comparison panel.
  `void`
  `setHeaderShowing(boolean show)`
  Shows or hides the listing's layout field header.
  `void`
  `setLeftLocation(Program program, ProgramLocation location)`
  Sets the cursor in the left side's listing to the specified location.
  `void`
  `setLeftProgramLocationListener(ProgramLocationListener programLocationListener)`
  Sets a listener for program location changes for the left side's listing panel.
  `void`
  `setLeftTitle(String leftTitle)`
  Sets the title for the left side's listing.
  `void`
  `setLocation(Function leftFunction, Function rightFunction)`
  Sets the cursor location in the left and right listing at the specified functions.
  `void`
  `setMouseNavigationEnabled(boolean enabled)`
  Disable mouse navigation from within this dual listing panel.
  `protected void`
  `setPrograms(Program leftProgram, Program rightProgram)`
  Specifies the two programs to be compared by this panel
  `void`
  `setRightLocation(Program program, ProgramLocation location)`
  Sets the cursor in the right side's listing to the specified location.
  `void`
  `setRightProgramLocationListener(ProgramLocationListener programLocationListener)`
  Sets a listener for program location changes for the right side's listing panel.
  `void`
  `setRightTitle(String rightTitle)`
  Sets the title for the right side's listing.
  `void`
  `setScrollingSyncState(boolean syncScrolling)`
  Sets whether or not scrolling is synchronized.
  `void`
  `setTitlePrefixes(String leftTitlePrefix, String rightTitlePrefix)`
  A CodeComparisonPanel should provide a title based on what the code comparison panel is displaying.
  `void`
  `setTopComponent(JComponent comp)`
  Sets the component displayed in the top of this panel.
  `void`
  `setVisible(boolean aFlag)`
  `void`
  `showEntireListing(boolean show)`
  Sets whether or not the entire programs are displayed in the listings or only the addresses in the limited set.
  `void`
  `showSideBySide(boolean sideBySide)`
  Sets whether or not the listings are displayed side by side.
  `void`
  `updateActionEnablement()`
  Updates the enablement for all actions provided by this panel.
  `void`
  `updateListings()`
  Repaints both the left and right listing panels if they are visible.
  `void`
  `writeConfigState(String prefix, SaveState saveState)`
  Saves the current configuration state of this panel.

  ### Methods inherited from class ghidra.app.util.viewer.util.CodeComparisonPanel

  `focusLost, getFieldPanelCoordinator, getShowTitles, isScrollingSynced, setShowTitles`

  ### Methods inherited from class javax.swing.JPanel

  `getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

  ### Methods inherited from class javax.swing.JComponent

  `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, unregisterKeyboardAction, update`

  ### Methods inherited from class java.awt.Container

  `add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

  ### Methods inherited from class java.awt.Component

  `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### NAME

    public static final String NAME
    See Also:
      - Constant Field Values

  - ### TITLE

    public static final String TITLE
    See Also:
      - Constant Field Values

  - ### help

    protected static final HelpService help

- ## Constructor Details

  - ### ListingCodeComparisonPanel

    public ListingCodeComparisonPanel(String owner, PluginTool tool)
    Creates a comparison panel with two listings.
    Parameters:
      `owner` - the owner of this panel
      `tool` - the tool displaying this panel

- ## Method Details

  - ### optionsChanged

    public void optionsChanged(ToolOptions options, String optionName, Object oldValue, Object newValue)
    Description copied from interface: `OptionsChangeListener`
    Notification that an option changed.

    Note: to reject an options change, you can throw a `OptionsVetoException`.

    Specified by:
      `optionsChanged` in interface `OptionsChangeListener`
    Parameters:
      `options` - options object containing the property that changed
      `optionName` - name of option that changed
      `oldValue` - old value of the option
      `newValue` - new value of the option

  - ### getComponent

    public JComponent getComponent()
    Description copied from class: `CodeComparisonPanel`
    The GUI component for this CodeComparisonPanel
    Specified by:
      `getComponent` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the component

  - ### getTitle

    public String getTitle()
    Description copied from class: `CodeComparisonPanel`
    The title for this code comparison panel
    Specified by:
      `getTitle` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the title

  - ### setVisible

    public void setVisible(boolean aFlag)
    Overrides:
      `setVisible` in class `JComponent`

  - ### setFieldPanelCoordinator

    public void setFieldPanelCoordinator(ListingComparisonFieldPanelCoordinator listingFieldPanelCoordinator)
    Sets the coordinator for the two listings within this code comparison panel. It coordinates their scrolling and location synchronization.
    Overrides:
      `setFieldPanelCoordinator` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `listingFieldPanelCoordinator` - the coordinator for the two listings

  - ### addHighlightProviders

    public void addHighlightProviders(ListingHighlightProvider leftHighlightProvider, ListingHighlightProvider rightHighlightProvider)
    Adds the indicated highlight providers for the left and right listing panels.
    Parameters:
      `leftHighlightProvider` - the highlight provider for the left side's listing.
      `rightHighlightProvider` - the highlight provider for the right side's listing.

  - ### removeHighlightProviders

    public void removeHighlightProviders(ListingHighlightProvider leftHighlightProvider, ListingHighlightProvider rightHighlightProvider)
    Removes the indicated highlight providers from the left and right listing panels.
    Parameters:
      `leftHighlightProvider` - the highlight provider for the left side's listing.
      `rightHighlightProvider` - the highlight provider for the right side's listing.

  - ### setPrograms

    protected void setPrograms(Program leftProgram, Program rightProgram)
    Description copied from class: `CodeComparisonPanel`
    Specifies the two programs to be compared by this panel
    Specified by:
      `setPrograms` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `leftProgram` - the program for the left side
      `rightProgram` - the program for the right side

  - ### setLeftProgramLocationListener

    public void setLeftProgramLocationListener(ProgramLocationListener programLocationListener)
    Sets a listener for program location changes for the left side's listing panel.
    Parameters:
      `programLocationListener` - the listener

  - ### setRightProgramLocationListener

    public void setRightProgramLocationListener(ProgramLocationListener programLocationListener)
    Sets a listener for program location changes for the right side's listing panel.
    Parameters:
      `programLocationListener` - the listener

  - ### getActions

    public DockingAction[] getActions()
    Description copied from class: `CodeComparisonPanel`
    Returns the actions for this panel
    Overrides:
      `getActions` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      an array of docking actions

  - ### updateActionEnablement

    public void updateActionEnablement()
    Updates the enablement for all actions provided by this panel.
    Specified by:
      `updateActionEnablement` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`

  - ### isEntireListingShowing

    public boolean isEntireListingShowing()

  - ### showEntireListing

    public void showEntireListing(boolean show)
    Sets whether or not the entire programs are displayed in the listings or only the addresses in the limited set.
    Parameters:
      `show` - if true, the entire program will be shown. Otherwise the listings will only show the limited addresses.

  - ### isHeaderShowing

    public boolean isHeaderShowing()
    Determines if the listing's layout field header is currently showing.
    Returns:
      true if the header is showing.

  - ### setHeaderShowing

    public void setHeaderShowing(boolean show)
    Shows or hides the listing's layout field header.
    Parameters:
      `show` - true means show the field header. false means hide the header.

  - ### isSideBySide

    public boolean isSideBySide()

  - ### showSideBySide

    public void showSideBySide(boolean sideBySide)
    Sets whether or not the listings are displayed side by side.
    Parameters:
      `sideBySide` - if true, the listings are side by side, otherwise one is above the other.

  - ### loadFunctions

    public void loadFunctions(Function leftFunction, Function rightFunction)
    Description copied from class: `CodeComparisonPanel`
    Displays a comparison of two program's functions
    Specified by:
      `loadFunctions` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `leftFunction` - the function to show in the left side of the code comparison view
      `rightFunction` - the function to show in the right side of the code comparison view

  - ### getLeftFunction

    public Function getLeftFunction()
    Gets the function loaded in the left listing panel.
    Overrides:
      `getLeftFunction` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the function or null

  - ### getRightFunction

    public Function getRightFunction()
    Gets the function loaded in the right listing panel.
    Overrides:
      `getRightFunction` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the function or null

  - ### loadAddresses

    public void loadAddresses(Program leftProgram, Program rightProgram, AddressSetView leftAddresses, AddressSetView rightAddresses)
    Description copied from class: `CodeComparisonPanel`
    Displays program information for a particular set of addresses in the two programs being compared
    Specified by:
      `loadAddresses` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `leftProgram` - the program in the left side of the code comparison view
      `rightProgram` - the program in the right side of the code comparison view
      `leftAddresses` - the addresses of the program info to show in the left side
      `rightAddresses` - the addresses of the program info to show in the right side

  - ### setLocation

    public void setLocation(Function leftFunction, Function rightFunction)
    Sets the cursor location in the left and right listing at the specified functions.
    Parameters:
      `leftFunction` - the function in the left listing panel.
      `rightFunction` - the function in the right listing panel.

  - ### setLeftLocation

    public void setLeftLocation(Program program, ProgramLocation location)
    Sets the cursor in the left side's listing to the specified location.
    Parameters:
      `program` - the left side's program
      `location` - the location

  - ### setRightLocation

    public void setRightLocation(Program program, ProgramLocation location)
    Sets the cursor in the right side's listing to the specified location.
    Parameters:
      `program` - the right side's program
      `location` - the location

  - ### setLeftTitle

    public void setLeftTitle(String leftTitle)
    Sets the title for the left side's listing.
    Parameters:
      `leftTitle` - the title

  - ### setRightTitle

    public void setRightTitle(String rightTitle)
    Sets the title for the right side's listing.
    Parameters:
      `rightTitle` - the title

  - ### setTopComponent

    public void setTopComponent(JComponent comp)
    Sets the component displayed in the top of this panel.
    Parameters:
      `comp` - the component.

  - ### setBottomComponent

    public void setBottomComponent(JComponent comp)
    Sets the component displayed in the bottom of this panel.
    Parameters:
      `comp` - the component.

  - ### getFocusedProgram

    public Program getFocusedProgram()
    Gets the program from the left or right side that has or last had focus.
    Returns:
      the program from the side of this panel with focus or null

  - ### getLeftProgram

    public Program getLeftProgram()
    Gets the program in the left listing panel.
    Overrides:
      `getLeftProgram` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the left program or null

  - ### getRightProgram

    public Program getRightProgram()
    Gets the program in the right listing panel.
    Overrides:
      `getRightProgram` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the right program or null

  - ### getLeftAddresses

    public AddressSetView getLeftAddresses()
    Gets the addresses in the left listing panel.
    Specified by:
      `getLeftAddresses` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the addresses

  - ### getRightAddresses

    public AddressSetView getRightAddresses()
    Gets the addresses in the right listing panel.
    Specified by:
      `getRightAddresses` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the addresses

  - ### getFocusedListingPanel

    public ListingPanel getFocusedListingPanel()
    Get the left or right listing panel that has or last had focus.
    Returns:
      the listing panel with focus.

  - ### getLeftPanel

    public ListingPanel getLeftPanel()
    Get the left side's listing panel.
    Returns:
      the left panel

  - ### getRightPanel

    public ListingPanel getRightPanel()
    Get the right side's listing panel.
    Returns:
      the right panel

  - ### goTo

    public boolean goTo(Address addr)
    Go to the indicated address in the listing that last had focus.
    Parameters:
      `addr` - the cursor should go to this address
    Returns:
      true if the location changed

  - ### goTo

    public boolean goTo(ProgramLocation loc, boolean centerOnScreen)
    Go to the indicated location in the listing that last had focus.
    Parameters:
      `loc` - the cursor should go to this location.
      `centerOnScreen` - true indicates that the location should be centered in the listing's viewport.
    Returns:
      true if the location changed

  - ### dispose

    public void dispose()
    Description copied from class: `CodeComparisonPanel`
    Cleans up resources when this panel is no longer needed
    Specified by:
      `dispose` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`

  - ### focusGained

    public void focusGained(FocusEvent e)
    Specified by:
      `focusGained` in interface `FocusListener`

  - ### getActionContext

    public ActionContext getActionContext(ComponentProvider provider, MouseEvent event)
    Description copied from class: `CodeComparisonPanel`
    Returns the context object which corresponds to the area of focus within this provider's component. Null is returned when there is no context.
    Specified by:
      `getActionContext` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `provider` - the provider that includes this code comparison component.
      `event` - mouse event which corresponds to this request. May be null for key-stroke or other non-mouse event.
    Returns:
      the action context for the area of focus in this component.

  - ### addButtonPressedListener

    public void addButtonPressedListener(ButtonPressedListener listener)
    Adds the indicated button press listener to both listing panels in this code comparison panel.
    Parameters:
      `listener` - the listener

  - ### updateListings

    public void updateListings()
    Repaints both the left and right listing panels if they are visible.

  - ### formatModelAdded

    public void formatModelAdded(FieldFormatModel model)
    Description copied from interface: `FormatModelListener`
    Notifies that a new format model was added to the format manager.
    Specified by:
      `formatModelAdded` in interface `FormatModelListener`
    Parameters:
      `model` - the new model.

  - ### formatModelChanged

    public void formatModelChanged(FieldFormatModel model)
    Description copied from interface: `FormatModelListener`
    Notifies that the given format model was changed.
    Specified by:
      `formatModelChanged` in interface `FormatModelListener`
    Parameters:
      `model` - the model that was changed.

  - ### formatModelRemoved

    public void formatModelRemoved(FieldFormatModel model)
    Description copied from interface: `FormatModelListener`
    Notifies that a format model was removed.
    Specified by:
      `formatModelRemoved` in interface `FormatModelListener`
    Parameters:
      `model` - the model that was removed.

  - ### getListingPanel

    public ListingPanel getListingPanel(FieldPanel fieldPanel)
    Gets the left or right listing panel that contains the indicated field panel.
    Parameters:
      `fieldPanel` - the field panel
    Returns:
      the listing panel or null.

  - ### getFormatManager

    public FormatManager getFormatManager()
    Specified by:
      `getFormatManager` in interface `CodeFormatService`

  - ### setMouseNavigationEnabled

    public void setMouseNavigationEnabled(boolean enabled)
    Disable mouse navigation from within this dual listing panel.
    Specified by:
      `setMouseNavigationEnabled` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `enabled` - false disables navigation

  - ### loadData

    public void loadData(Data leftData, Data rightData)
    Description copied from class: `CodeComparisonPanel`
    Displays a comparison of two program's data items
    Specified by:
      `loadData` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `leftData` - the data item to show in the left side of the code comparison view
      `rightData` - the data item to show in the right side of the code comparison view

  - ### getLeftData

    public Data getLeftData()
    Gets the data loaded in the left listing panel.
    Overrides:
      `getLeftData` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the data or null

  - ### getRightData

    public Data getRightData()
    Gets the data loaded in the right listing panel.
    Overrides:
      `getRightData` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the data or null

  - ### listingDiffChanged

    public void listingDiffChanged()
    Description copied from interface: `ListingDiffChangeListener`
    Called when the ListingDiff's set of differences and unmatched addresses has changed.
    Specified by:
      `listingDiffChanged` in interface `ListingDiffChangeListener`

  - ### refreshLeftPanel

    public void refreshLeftPanel()
    Description copied from class: `CodeComparisonPanel`
    Refreshes the left side of this panel.
    Specified by:
      `refreshLeftPanel` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`

  - ### refreshRightPanel

    public void refreshRightPanel()
    Description copied from class: `CodeComparisonPanel`
    Refreshes the right side of this panel.
    Specified by:
      `refreshRightPanel` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`

  - ### programRestored

    public void programRestored(Program program)
    Description copied from class: `CodeComparisonPanel`
    Called when the indicated program has been restored because of an Undo/Redo. This method allows this CodeComparisonPanel to take an appropriate action (such as refreshing itself) to respond to the program changing.
    Specified by:
      `programRestored` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `program` - the program that was restored.

  - ### leftPanelHasFocus

    public boolean leftPanelHasFocus()
    Description copied from class: `CodeComparisonPanel`
    Determines if the left code panel currently has focus.
    Specified by:
      `leftPanelHasFocus` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      true if the left side of the code comparison has focus.

  - ### setTitlePrefixes

    public void setTitlePrefixes(String leftTitlePrefix, String rightTitlePrefix)
    Description copied from class: `CodeComparisonPanel`
    A CodeComparisonPanel should provide a title based on what the code comparison panel is displaying. This method sets a prefix string that should be prepended to each of the code comparison panel's titles.
    Specified by:
      `setTitlePrefixes` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `leftTitlePrefix` - the prefix string to prepend to the left panel's title.
      `rightTitlePrefix` - the prefix string to prepend to the right panel's title.

  - ### getActionContext

    public ActionContext getActionContext(MouseEvent event, ComponentProvider provider)

  - ### getContextObjectForMarginPanels

    public Object getContextObjectForMarginPanels(ListingPanel lp, MouseEvent event)
    Gets a marker margin or overview margin context object if the mouse event occurred on one of the GUI components for the indicated listing panel's marker margin (left edge of listing) or overview margin (right edge of listing).
    Parameters:
      `lp` - The listing panel to check
      `event` - the mouse event
    Returns:
      a marker margin context object if the event was on a margin.

  - ### getLeftFieldPanel

    public FieldPanel getLeftFieldPanel()
    Description copied from class: `CodeComparisonPanel`
    Gets the left field panel for this CodeComparisonPanel.
    Specified by:
      `getLeftFieldPanel` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the left FieldPanel.

  - ### getRightFieldPanel

    public FieldPanel getRightFieldPanel()
    Description copied from class: `CodeComparisonPanel`
    Gets the right field panel for this CodeComparisonPanel.
    Specified by:
      `getRightFieldPanel` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      the right FieldPanel.

  - ### createFieldPanelCoordinator

    protected ListingComparisonFieldPanelCoordinator createFieldPanelCoordinator()
    Description copied from class: `CodeComparisonPanel`
    Creates a new FieldPanelCoordinator used to synchronize scrolling between the left and right view for this CodeComparisonPanel.
    Specified by:
      `createFieldPanelCoordinator` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Returns:
      a new FieldPanelCoordinator

  - ### readConfigState

    public void readConfigState(String prefix, SaveState saveState)
    Restores this panel to the indicated saved configuration state.
    Parameters:
      `prefix` - identifier to prepend to any save state names to make them unique.
      `saveState` - the configuration state to restore

  - ### writeConfigState

    public void writeConfigState(String prefix, SaveState saveState)
    Saves the current configuration state of this panel.
    Parameters:
      `prefix` - identifier to prepend to any save state names to make them unique.
      `saveState` - the new configuration state

  - ### setScrollingSyncState

    public void setScrollingSyncState(boolean syncScrolling)
    Description copied from class: `CodeComparisonPanel`
    Sets whether or not scrolling is synchronized.
    Overrides:
      `setScrollingSyncState` in class `CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>`
    Parameters:
      `syncScrolling` - true means synchronize scrolling and location between the two views.