Class ListingPanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
ghidra.app.util.viewer.listingpanel.ListingPanel
- All Implemented Interfaces:
FieldLocationListener
,FieldMouseListener
,FieldSelectionListener
,LayoutListener
,ImageObserver
,MenuContainer
,Serializable
,Accessible
public class ListingPanel
extends JPanel
implements FieldMouseListener, FieldLocationListener, FieldSelectionListener, LayoutListener
- See Also:
-
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 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
ConstructorDescriptionListingPanel
(FormatManager manager) Constructs a new ListingPanel using the given FormatManager and ServiceProvider.ListingPanel
(FormatManager mgr, ListingModel model) Constructs a new ListingPanel with the given FormatManager and ListingLayoutModelListingPanel
(FormatManager mgr, Program program) Constructs a new ListingPanel for the given program. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a ButtonPressedListener to be notified when the user presses the mouse button while over this panelvoid
addDisplayListener
(AddressSetDisplayListener listener) void
void
addHighlightProvider
(ListingHighlightProvider highlightProvider) Adds aListingHighlightProvider
to this listing.void
addHoverService
(ghidra.app.plugin.core.codebrowser.hover.ListingHoverService hoverService) void
addIndexMapChangeListener
(ChangeListener listener) Add a change listener to be notified whenever the indexMap changes.void
addMarginProvider
(MarginProvider provider) Adds the MarginProvider to this panelvoid
addOverviewProvider
(OverviewProvider provider) Adds the given OverviewProvider with will be displayed in this panels right margin area.void
buttonPressed
(FieldLocation fieldLocation, Field field, MouseEvent mouseEvent) Called whenever the mouse button is pressed.void
center
(ProgramLocation location) Center the view of the listing around the given location.protected FieldPanel
createFieldPanel
(LayoutModel model) protected ListingModelAdapter
createLayoutModel
(ListingModel model) protected ListingModel
createListingModel
(Program program) void
dispose()
void
enablePropertyBasedColorModel
(boolean b) void
fieldLocationChanged
(FieldLocation location, Field field, EventTrigger trigger) Called whenever the cursor position changes.Returns the AddressIndexMap currently used by this listing panel.int
Returns the divider location between the left margin areas and the main display.Returns the FieldPanel used by this ListingPanel.Returns the FormatManager used by this listing panel.getHeaderActions
(String ownerName) Returns the current ListingModel used by this panel.Get the margin providers in this ListingPanel.protected int
A width for new windows that shows a reasonable amount of the ListingGet the overview providers in this ListingPanel.Returns the current program location of the cursor.getProgramLocation
(Point point) Get a program location for the given point.Returns the current program selection.getProgramSelection
(FieldSelection fieldSelection) Returns the currently selected text.Returns the vertical scrollbar used by this panel.getView()
Gets the view of this listing panel (meant to be used in conjunction withsetView(AddressSetView)
.boolean
Positions the ListingPanel to the given address.boolean
Positions the ListingPanel to the given address.boolean
goTo
(ProgramLocation loc) Moves the cursor to the given program location and repositions the scrollbar to show that location in the screen.boolean
goTo
(ProgramLocation loc, boolean centerWhenNotVisible) Moves the cursor to the given program location.boolean
isActive()
Returns true if this component has focus.boolean
Returns true if the field header component is showing.boolean
boolean
Returns true if the mouse is at a location that can be dragged.void
layoutsChanged
(List<AnchoredLayout> layouts) void
Removes the given ButtonPressedListener.void
void
void
removeHighlightProvider
(ListingHighlightProvider highlightProvider) Removes the givenListingHighlightProvider
from this listing.void
removeHoverService
(ghidra.app.plugin.core.codebrowser.hover.ListingHoverService hoverService) void
removeIndexMapChangeListener
(ChangeListener listener) Removes the change listener to be notified when the indexMap changes.void
removeMarginProvider
(MarginProvider provider) Removes the given margin provider from this panelvoid
removeOverviewProvider
(OverviewProvider provider) Removes the given OverviewProvider from this panelvoid
scrollTo
(ProgramLocation location) Scroll the view of the listing to the given location.void
Sets the selection to the entire listing view.Sets the selection to the complement of the current selection in the listing view.void
selectionChanged
(FieldSelection selection, EventTrigger trigger) Called whenever the FieldViewer selection changes.void
setBackgroundColorModel
(ListingBackgroundColorModel colorModel) Sets the externally suppliedListingBackgroundColorModel
to be blended with its ownPropertyBasedBackgroundColorModel
.void
Sets the cursor to the given program location.void
setCursorPosition
(ProgramLocation loc, EventTrigger trigger) Sets the cursor to the given program location with a given trigger This method should only be used in automated testing to programmatically simulate a user navigating within the listing panel.void
setDividerLocation
(int dividerLocation) Sets the divider location between the left margin areas and the main display.void
setFormatManager
(FormatManager formatManager) void
setHighlight
(ProgramSelection highlight) Sets the highlight.void
setHoverMode
(boolean enabled) void
void
setListingModel
(ListingModel newModel) Sets the ListingLayoutModel to use.void
Sets the ProgramSelectionListener for selection changes while dragging.void
Sets listing panel to never show scroll bars.void
setProgram
(Program program) Sets the program to be displayed by this listing panelvoid
Sets the ProgramLocationListener.void
Sets the ProgramSelectionListener.void
Sets the selection.void
setSelection
(ProgramSelection sel, EventTrigger trigger) Sets the selection.void
void
Sets the background color for the listing panel.void
setView
(AddressSetView view) Restricts the program's view to the given address setvoid
showHeader
(boolean show) Sets whether or not the field header component is visible at the top of the listing panelvoid
updateDisplay
(boolean updateImmediately) 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, 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, setVisible, 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, 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, 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
-
Field Details
-
DEFAULT_DIVIDER_LOCATION
public static final int DEFAULT_DIVIDER_LOCATION- See Also:
-
-
Constructor Details
-
ListingPanel
Constructs a new ListingPanel using the given FormatManager and ServiceProvider.- Parameters:
manager
- the FormatManager to use.
-
ListingPanel
Constructs a new ListingPanel for the given program.- Parameters:
mgr
- the FormatManager to use.program
- the program for which to create a new ListingPanel
-
ListingPanel
Constructs a new ListingPanel with the given FormatManager and ListingLayoutModel- Parameters:
mgr
- the FormatManager to usemodel
- the ListingLayoutModel to use.
-
-
Method Details
-
getPreferredSize
- Overrides:
getPreferredSize
in classJComponent
-
getNewWindowDefaultWidth
protected int getNewWindowDefaultWidth()A width for new windows that shows a reasonable amount of the Listing- Returns:
- the width
-
createFieldPanel
-
createListingModel
-
createLayoutModel
-
setProgramLocationListener
Sets the ProgramLocationListener. Only one listener is supported- Parameters:
listener
- the ProgramLocationListener to use.
-
setProgramSelectionListener
Sets the ProgramSelectionListener. Only one listener is supported- Parameters:
listener
- the ProgramSelectionListener to use.
-
setLiveProgramSelectionListener
Sets the ProgramSelectionListener for selection changes while dragging. Only one listener is supported- Parameters:
listener
- the ProgramSelectionListener to use.
-
setStringSelectionListener
-
setListingModel
Sets the ListingLayoutModel to use.- Parameters:
newModel
- the model to use.
-
getListingModel
Returns the current ListingModel used by this panel.- Returns:
- the model
-
showHeader
public void showHeader(boolean show) Sets whether or not the field header component is visible at the top of the listing panel- Parameters:
show
- if true, the header component will be show, otherwise it will be hidden.
-
getHeaderActions
-
isHeaderShowing
public boolean isHeaderShowing()Returns true if the field header component is showing.- Returns:
- true if showing
-
getFieldHeader
-
updateDisplay
public void updateDisplay(boolean updateImmediately) -
addMarginProvider
Adds the MarginProvider to this panel- Parameters:
provider
- the MarginProvider that will provide components to display in this panel's left margin area.
-
addIndexMapChangeListener
Add a change listener to be notified whenever the indexMap changes.- Parameters:
listener
- the listener to be added.
-
removeIndexMapChangeListener
Removes the change listener to be notified when the indexMap changes.- Parameters:
listener
- the listener to be removed.
-
removeMarginProvider
Removes the given margin provider from this panel- Parameters:
provider
- the MarginProvider to remove.
-
addOverviewProvider
Adds the given OverviewProvider with will be displayed in this panels right margin area.- Parameters:
provider
- the OverviewProvider to display.
-
removeOverviewProvider
Removes the given OverviewProvider from this panel- Parameters:
provider
- the OverviewProvider to remove.
-
addButtonPressedListener
Adds a ButtonPressedListener to be notified when the user presses the mouse button while over this panel- Parameters:
listener
- the ButtonPressedListener to add.
-
removeButtonPressedListener
Removes the given ButtonPressedListener.- Parameters:
listener
- the ButtonPressedListener to remove.
-
removeHighlightProvider
Removes the givenListingHighlightProvider
from this listing.- Parameters:
highlightProvider
- The provider to remove.- See Also:
-
addHighlightProvider
Adds aListingHighlightProvider
to this listing. This highlight provider will be used with any other registered providers to paint all the highlights for this listing.- Parameters:
highlightProvider
- The provider to add
-
getFieldPanel
Returns the FieldPanel used by this ListingPanel.- Returns:
- the field panel
-
layoutsChanged
- Specified by:
layoutsChanged
in interfaceLayoutListener
-
getDividerLocation
public int getDividerLocation()Returns the divider location between the left margin areas and the main display.- Returns:
- the location
-
setDividerLocation
public void setDividerLocation(int dividerLocation) Sets the divider location between the left margin areas and the main display.- Parameters:
dividerLocation
- the location to set on the divider.
-
setListingHoverHandler
-
dispose
public void dispose() -
goTo
Moves the cursor to the given program location and repositions the scrollbar to show that location in the screen.- Parameters:
loc
- the location to move to.- Returns:
- true if successful
-
goTo
Moves the cursor to the given program location. Also, repositions the scrollbar to show that location, if the location is not on the screen.- Parameters:
loc
- the location to move to.centerWhenNotVisible
- this variable only has an effect if the given location is not on the screen. In that case, when this parameter is true, then the given location will be placed in the center of the screen; when the parameter is false, then the screen will be scrolled only enough to show the cursor.- Returns:
- true if successful
-
scrollTo
Scroll the view of the listing to the given location.If the given location is not displayed, this has no effect.
- Parameters:
location
- the location
-
center
Center the view of the listing around the given location.- Parameters:
location
- the location
-
goTo
Positions the ListingPanel to the given address.- Parameters:
addr
- the address at which to position the listing.- Returns:
- true if successful
-
goTo
Positions the ListingPanel to the given address.- Parameters:
currentAddress
- used to determine which symbol to goto if the goto address has more than onegotoAddress
- the address at which to position to listing.- Returns:
- true if the address exists
-
buttonPressed
Description copied from interface:FieldMouseListener
Called whenever the mouse button is pressed.- Specified by:
buttonPressed
in interfaceFieldMouseListener
- Parameters:
fieldLocation
- the field location of the mouse pointerfield
- the Field object that was clicked onmouseEvent
- the mouse event that generated this call.
-
setProgram
Sets the program to be displayed by this listing panel- Parameters:
program
- the program to display.
-
fieldLocationChanged
Description copied from interface:FieldLocationListener
Called whenever the cursor position changes.- Specified by:
fieldLocationChanged
in interfaceFieldLocationListener
- Parameters:
location
- the new field location.field
- the Field object containing the location.trigger
- the type of the location change
-
setView
Restricts the program's view to the given address set- Parameters:
view
- the set of address to include in the view.
-
getView
Gets the view of this listing panel (meant to be used in conjunction withsetView(AddressSetView)
.- Returns:
- the addresses
-
setBackgroundColorModel
Sets the externally suppliedListingBackgroundColorModel
to be blended with its ownPropertyBasedBackgroundColorModel
.- Parameters:
colorModel
- theListingBackgroundColorModel
to use in conjunction with the built-inPropertyBasedBackgroundColorModel
-
setTextBackgroundColor
Sets the background color for the listing panel. This will set the background for the main listing display.- Parameters:
c
- the color
-
getTextBackgroundColor
-
isActive
public boolean isActive()Returns true if this component has focus.- Returns:
- true if this component has focus.
-
getProgramLocation
Returns the current program location of the cursor.- Returns:
- the location
-
getProgramLocation
Get a program location for the given point.- Parameters:
point
- the point- Returns:
- program location, or null if point does not correspond to a program location
-
getMarginProviders
Get the margin providers in this ListingPanel.- Returns:
- the providers
-
getOverviewProviders
Get the overview providers in this ListingPanel.- Returns:
- the providers
-
isStartDragOk
public boolean isStartDragOk()Returns true if the mouse is at a location that can be dragged.- Returns:
- true if the mouse is at a location that can be dragged.
-
setCursorPosition
Sets the cursor to the given program location.- Parameters:
loc
- the location at which to move the cursor.
-
setCursorPosition
Sets the cursor to the given program location with a given trigger This method should only be used in automated testing to programmatically simulate a user navigating within the listing panel.- Parameters:
loc
- the location at which to move the cursor.trigger
- the event trigger
-
getCursorLocation
-
getCursorPoint
-
getCursorBounds
-
getAddressIndexMap
Returns the AddressIndexMap currently used by this listing panel.- Returns:
- the map
-
getVerticalScrollBar
Returns the vertical scrollbar used by this panel.- Returns:
- the scroll bar
-
getFormatManager
Returns the FormatManager used by this listing panel.- Returns:
- the format manager
-
getLayout
-
addHoverService
public void addHoverService(ghidra.app.plugin.core.codebrowser.hover.ListingHoverService hoverService) -
removeHoverService
public void removeHoverService(ghidra.app.plugin.core.codebrowser.hover.ListingHoverService hoverService) -
setHoverMode
public void setHoverMode(boolean enabled) -
isHoverShowing
public boolean isHoverShowing() -
getProgram
-
getProgramSelection
Returns the current program selection.- Returns:
- the selection
-
getProgramSelection
-
selectAll
public void selectAll()Sets the selection to the entire listing view. -
selectComplement
Sets the selection to the complement of the current selection in the listing view.- Returns:
- the addresses
-
setSelection
Sets the selection.- Parameters:
sel
- the new selection
-
setSelection
Sets the selection.- Parameters:
sel
- the new selectiontrigger
- the cause of the change
-
setHighlight
Sets the highlight.- Parameters:
highlight
- the new highlight.
-
getProgramHighlight
-
selectionChanged
Description copied from interface:FieldSelectionListener
Called whenever the FieldViewer selection changes.- Specified by:
selectionChanged
in interfaceFieldSelectionListener
- Parameters:
selection
- the new selection.trigger
- indicates the cause of the selection changing
-
getTextSelection
Returns the currently selected text. The value will only be non-null for selections within a single field.- Returns:
- the selected text or null
-
enablePropertyBasedColorModel
public void enablePropertyBasedColorModel(boolean b) -
setNeverSroll
public void setNeverSroll()Sets listing panel to never show scroll bars. This is useful when you want this listing's parent to always be as big as this listing. -
setFormatManager
-
addDisplayListener
-
removeDisplayListener
-
addFocusListener
- Overrides:
addFocusListener
in classComponent
-
removeFocusListener
- Overrides:
removeFocusListener
in classComponent
-