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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      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​(HighlightProvider leftHighlightProvider, HighlightProvider 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​(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()
      Returns the actions for this panel
      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.
      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.
      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 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, 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.
      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​(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

      • ListingCodeComparisonPanel

        public ListingCodeComparisonPanel​(java.lang.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 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()
      • 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.
      • 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