Class ListingCodeComparisonPanel

    • Nested Class Summary

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

        javax.swing.JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Constructor Summary

      Constructors 
      ChangeConstructor Description
      ListingCodeComparisonPanel​(java.lang.String owner, PluginTool tool)
      Creates a comparison panel with two listings.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      ChangeModifier 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​(HighlightProvider leftHighlightProvider, HighlightProvider rightHighlightProvider)
      Adds the indicated highlight providers for the left and right listing panels.
      NEWprotected 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​(java.awt.event.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, java.awt.event.MouseEvent event)
      Returns the context object which corresponds to the area of focus within this provider's component.
      ActionContext getActionContext​(java.awt.event.MouseEvent event, ComponentProvider provider)  
      DockingAction[] getActions()
      Get the actions for this CodeComparisonPanel.
      javax.swing.JComponent getComponent()
      The GUI component for this CodeComparisonPanel.
      java.lang.Object getContextObjectForMarginPanels​(ListingPanel lp, java.awt.event.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.
      NEWprotected 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.
      java.lang.Class<? extends CodeComparisonPanel<ListingComparisonFieldPanelCoordinator>> getPanelThisSupersedes()
      Determines if this panel is intended to take the place of another and if so it returns the class of the panel to be superseded.
      AddressSetView getRightAddresses()
      Gets the addresses in the right listing panel.
      Data getRightData()
      Gets the data loaded in the right listing panel.
      NEWprotected 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.
      java.lang.String getTitle()
      The title for this code comparison component.
      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()
      Returns true if the listings are showing the entire program.
      boolean isHeaderShowing()
      Determines if the listing's layout field header is currently showing.
      boolean isSideBySide()
      Returns true if the listings are being displayed side by side.
      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, java.lang.String optionName, java.lang.Object oldValue, java.lang.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​(java.lang.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​(HighlightProvider leftHighlightProvider, HighlightProvider rightHighlightProvider)
      Removes the indicated highlight providers from the left and right listing panels.
      void setBottomComponent​(javax.swing.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​(java.lang.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.
      NEWprotected 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​(java.lang.String rightTitle)
      Sets the title for the right side's listing.
      void setScrollingSyncState​(boolean syncScrolling)
      Sets whether or not scrolling is synchronized.
      void setTitlePrefixes​(java.lang.String leftTitlePrefix, java.lang.String rightTitlePrefix)
      A CodeComparisonPanel should provide a title based on what the code comparison panel is displaying.
      void setTopComponent​(javax.swing.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​(java.lang.String prefix, SaveState saveState)
      Saves the current configuration state of this panel.
      • 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

Constructor Detail

  • Method Detail

    • optionsChanged

      public void optionsChanged​(ToolOptions options,
                                 java.lang.String optionName,
                                 java.lang.Object oldValue,
                                 java.lang.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
    • setVisible

      public void setVisible​(boolean aFlag)
      Overrides:
      setVisible in class javax.swing.JComponent
    • addHighlightProviders

      public void addHighlightProviders​(HighlightProvider leftHighlightProvider,
                                        HighlightProvider 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​(HighlightProvider leftHighlightProvider,
                                           HighlightProvider 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.
    • 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
    • isEntireListingShowing

      public boolean isEntireListingShowing()
      Returns true if the listings are showing the entire program.
    • 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()
      Returns true if the listings are being displayed side by side.
    • 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.
    • 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​(java.lang.String leftTitle)
      Sets the title for the left side's listing.
      Parameters:
      leftTitle - the title
    • setRightTitle

      public void setRightTitle​(java.lang.String rightTitle)
      Sets the title for the right side's listing.
      Parameters:
      rightTitle - the title
    • setTopComponent

      public void setTopComponent​(javax.swing.JComponent comp)
      Sets the component displayed in the top of this panel.
      Parameters:
      comp - the component.
    • setBottomComponent

      public void setBottomComponent​(javax.swing.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
    • 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
    • focusGained

      public void focusGained​(java.awt.event.FocusEvent e)
      Specified by:
      focusGained in interface java.awt.event.FocusListener
    • getActionContext

      public ActionContext getActionContext​(ComponentProvider provider,
                                            java.awt.event.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.
    • 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.
    • setTitlePrefixes

      public void setTitlePrefixes​(java.lang.String leftTitlePrefix,
                                   java.lang.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.
    • getContextObjectForMarginPanels

      public java.lang.Object getContextObjectForMarginPanels​(ListingPanel lp,
                                                              java.awt.event.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.
    • readConfigState

      public void readConfigState​(java.lang.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​(java.lang.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