Class LineNumberDecompilerMarginProvider
- All Implemented Interfaces:
LayoutModelListener
,DecompilerMarginProvider
,ImageObserver
,MenuContainer
,Serializable
,Accessible
- 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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
dataChanged
(BigInteger start, BigInteger end) Called when the data at an index or range of indexes changes.Get the Swing component implementing the actual margin, oftenthis
void
modelSizeChanged
(IndexMapper indexMapper) Called whenever the number of indexes changedvoid
void
setOptions
(DecompileOptions options) Set the options for the marginvoid
setProgram
(Program program, LayoutModel model, LayoutPixelIndexMap pixmap) Called whenever the program, function, or layout changesMethods 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, 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, 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
-
Constructor Details
-
LineNumberDecompilerMarginProvider
public LineNumberDecompilerMarginProvider()
-
-
Method Details
-
setProgram
Description copied from interface:DecompilerMarginProvider
Called whenever the program, function, or layout changesThe implementation should keep a reference at least to the
model
and thepixmap
for later use during painting. The model provides access to the lines of decompiler C code. Each layout corresponds to a single line of C code. For example, the first line of code is rendered by the layout at index 0. The tenth is rendered by the layout at index 9. Rarely, a line may be wrapped by the renderer, leading to a non-uniform layout. Thepixmap
can map from a pixel's vertical position to the layout index at the same position in the main panel. It accounts for scrolling an non-uniformity. It is safe to assume the layouts render contiguous lines of C code. The recommended strategy for painting is thus:- Compute the visible part of the margin needing repainting. See
JComponent.getVisibleRect()
- Compute the layout indices for the vertical bounds of that part. See
LayoutPixelIndexMap.getIndex(int)
- Iterate over the layouts within those bounds, inclusively.
- Compute the vertical position of each layout and paint something appropriate for its
corresponding line. See
LayoutPixelIndexMap.getPixel(BigInteger)
A call to this method should cause the component to be repainted.
- Specified by:
setProgram
in interfaceDecompilerMarginProvider
- Parameters:
program
- the program for the current functionmodel
- the line/token modelpixmap
- a map from pixels' y coordinates to layout index, i.e, line number
- Compute the visible part of the margin needing repainting. See
-
setOptions
Description copied from interface:DecompilerMarginProvider
Set the options for the marginThis is called at least once when the provider is added to the margin service. See
DecompilerMarginService.addMarginProvider(DecompilerMarginProvider)
. It subsequently called whenever a decompiler option changes. To receive other options, the provider will need to listen using its own mechanism.A call to this method should cause the component to be repainted. Implementors may choose to repaint only when certain options change.
- Specified by:
setOptions
in interfaceDecompilerMarginProvider
-
getComponent
Description copied from interface:DecompilerMarginProvider
Get the Swing component implementing the actual margin, oftenthis
- Specified by:
getComponent
in interfaceDecompilerMarginProvider
- Returns:
- the component
-
modelSizeChanged
Description copied from interface:LayoutModelListener
Called whenever the number of indexes changed- Specified by:
modelSizeChanged
in interfaceLayoutModelListener
- Parameters:
indexMapper
- Maps indexes from before the model size change to indexes after the model size changed.
-
dataChanged
Description copied from interface:LayoutModelListener
Called when the data at an index or range of indexes changes.- Specified by:
dataChanged
in interfaceLayoutModelListener
- Parameters:
start
- the starting index for the region of data changes.end
- the ending index (inclusive) for the region of data changes.
-
paint
- Overrides:
paint
in classJComponent
-