Package org.exbin.bined.swing.extended
Class ExtendedCodeAreaPainter
- java.lang.Object
-
- org.exbin.bined.swing.extended.ExtendedCodeAreaPainter
-
- All Implemented Interfaces:
org.exbin.bined.swing.CodeAreaPainter
,CaretsProfileCapableCodeAreaPainter
,ColorsProfileCapableCodeAreaPainter
,LayoutProfileCapableCodeAreaPainter
,ThemeProfileCapableCodeAreaPainter
- Direct Known Subclasses:
DiffHighlightCodeAreaPainter
@ParametersAreNonnullByDefault public class ExtendedCodeAreaPainter extends java.lang.Object implements org.exbin.bined.swing.CodeAreaPainter, ColorsProfileCapableCodeAreaPainter, LayoutProfileCapableCodeAreaPainter, ThemeProfileCapableCodeAreaPainter, CaretsProfileCapableCodeAreaPainter
Extended code area component default painter.
-
-
Field Summary
Fields Modifier and Type Field Description protected org.exbin.bined.swing.CodeAreaCore
codeArea
protected java.util.Map<java.lang.Character,java.lang.Character>
unprintableCharactersMapping
-
Constructor Summary
Constructors Constructor Description ExtendedCodeAreaPainter(org.exbin.bined.swing.CodeAreaCore codeArea)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
attach()
java.util.Optional<org.exbin.bined.basic.CodeAreaScrollPosition>
computeCenterOnScrollPosition(org.exbin.bined.CodeAreaCaretPosition caretPosition)
org.exbin.bined.CodeAreaCaretPosition
computeMovePosition(org.exbin.bined.CodeAreaCaretPosition position, org.exbin.bined.basic.MovementDirection direction)
org.exbin.bined.basic.PositionScrollVisibility
computePositionScrollVisibility(org.exbin.bined.CodeAreaCaretPosition caretPosition)
java.util.Optional<org.exbin.bined.basic.CodeAreaScrollPosition>
computeRevealScrollPosition(org.exbin.bined.CodeAreaCaretPosition caretPosition)
org.exbin.bined.basic.CodeAreaScrollPosition
computeScrolling(org.exbin.bined.basic.CodeAreaScrollPosition startPosition, org.exbin.bined.basic.ScrollingDirection direction)
void
detach()
protected void
drawCenteredChars(java.awt.Graphics g, char[] drawnChars, int charOffset, int length, int cellWidth, int positionX, int positionY)
Draws characters centering it to cells of the same width.protected void
drawShiftedChars(java.awt.Graphics g, char[] drawnChars, int charOffset, int length, int positionX, int positionY)
void
fontChanged(java.awt.Graphics g)
int
getBytesPerRow()
ExtendedCodeAreaCaretsProfile
getCaretsProfile()
org.exbin.bined.swing.basic.color.CodeAreaColorsProfile
getColorsProfile()
java.awt.Rectangle
getCursorPositionRect(long dataPosition, int codeOffset, org.exbin.bined.CodeAreaSection section)
Returns cursor rectangle.protected int
getCharactersPerRow()
org.exbin.bined.extended.layout.ExtendedCodeAreaLayoutProfile
getLayoutProfile()
int
getMouseCursorShape(int positionX, int positionY)
java.awt.Color
getPositionBackgroundColor(long rowDataPosition, int byteOnRow, int halfCharOnRow, org.exbin.bined.CodeAreaSection section, boolean unprintable)
Returns background color for particular code.java.awt.Point
getPositionPoint(long dataPosition, int codeOffset, org.exbin.bined.CodeAreaSection section)
Returns relative cursor position in code area or null if cursor is not visible.java.awt.Color
getPositionTextColor(long rowDataPosition, int byteOnRow, int halfCharOnRow, org.exbin.bined.CodeAreaSection section, boolean unprintable)
Returns background color for particular code.org.exbin.bined.basic.BasicCodeAreaZone
getPositionZone(int positionX, int positionY)
int
getRowHeight()
ExtendedCodeAreaThemeProfile
getThemeProfile()
boolean
isInitialized()
org.exbin.bined.CodeAreaCaretPosition
mousePositionToClosestCaretPosition(int positionX, int positionY, org.exbin.bined.CaretOverlapMode overflowMode)
void
paintBackground(java.awt.Graphics g)
Paints main area background.void
paintComponent(java.awt.Graphics g)
void
paintCursor(java.awt.Graphics g)
void
paintHeader(java.awt.Graphics g)
void
paintMainArea(java.awt.Graphics g)
void
paintOutsideArea(java.awt.Graphics g)
void
paintRowBackground(java.awt.Graphics g, long rowDataPosition, int rowPositionX, int rowPositionY)
Paints row background.void
paintRowPosition(java.awt.Graphics g)
void
paintRows(java.awt.Graphics g)
void
paintRowText(java.awt.Graphics g, long rowDataPosition, int rowPositionX, int rowPositionY)
Paints row text.void
rebuildColors()
void
recomputeCharPositions()
void
reset()
void
resetCaret()
void
resetColors()
void
resetFont()
void
resetLayout()
void
scrollPositionChanged()
void
scrollPositionModified()
void
setCaretsProfile(ExtendedCodeAreaCaretsProfile caretsProfile)
void
setColorsProfile(org.exbin.bined.swing.basic.color.CodeAreaColorsProfile colorsProfile)
void
setLayoutProfile(org.exbin.bined.extended.layout.ExtendedCodeAreaLayoutProfile layoutProfile)
void
setThemeProfile(ExtendedCodeAreaThemeProfile themeProfile)
protected void
updateCache()
protected void
updateRectToCursorPosition(java.awt.Rectangle rect, long dataPosition, int codeOffset, org.exbin.bined.CodeAreaSection section)
void
updateScrollBars()
-
-
-
Method Detail
-
attach
public void attach()
- Specified by:
attach
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
detach
public void detach()
- Specified by:
detach
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
reset
public void reset()
- Specified by:
reset
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
resetColors
public void resetColors()
- Specified by:
resetColors
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
resetFont
public void resetFont()
- Specified by:
resetFont
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
resetLayout
public void resetLayout()
- Specified by:
resetLayout
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
resetCaret
public void resetCaret()
- Specified by:
resetCaret
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
rebuildColors
public void rebuildColors()
- Specified by:
rebuildColors
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
recomputeCharPositions
public void recomputeCharPositions()
-
fontChanged
public void fontChanged(java.awt.Graphics g)
-
isInitialized
public boolean isInitialized()
- Specified by:
isInitialized
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
paintComponent
public void paintComponent(java.awt.Graphics g)
- Specified by:
paintComponent
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
updateCache
protected void updateCache()
-
paintOutsideArea
public void paintOutsideArea(java.awt.Graphics g)
-
paintHeader
public void paintHeader(java.awt.Graphics g)
-
paintRowPosition
public void paintRowPosition(java.awt.Graphics g)
-
paintMainArea
public void paintMainArea(java.awt.Graphics g)
- Specified by:
paintMainArea
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
paintBackground
public void paintBackground(java.awt.Graphics g)
Paints main area background.- Parameters:
g
- graphics
-
paintRows
public void paintRows(java.awt.Graphics g)
-
paintRowBackground
public void paintRowBackground(java.awt.Graphics g, long rowDataPosition, int rowPositionX, int rowPositionY)
Paints row background.- Parameters:
g
- graphicsrowDataPosition
- row data positionrowPositionX
- row position XrowPositionY
- row position Y
-
getPositionBackgroundColor
@Nullable public java.awt.Color getPositionBackgroundColor(long rowDataPosition, int byteOnRow, int halfCharOnRow, org.exbin.bined.CodeAreaSection section, boolean unprintable)
Returns background color for particular code.- Parameters:
rowDataPosition
- row data positionbyteOnRow
- byte on current rowhalfCharOnRow
- character on current rowsection
- current sectionunprintable
- flag for unprintable characters- Returns:
- color or null for default color
-
computePositionScrollVisibility
@Nonnull public org.exbin.bined.basic.PositionScrollVisibility computePositionScrollVisibility(org.exbin.bined.CodeAreaCaretPosition caretPosition)
- Specified by:
computePositionScrollVisibility
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
computeRevealScrollPosition
@Nonnull public java.util.Optional<org.exbin.bined.basic.CodeAreaScrollPosition> computeRevealScrollPosition(org.exbin.bined.CodeAreaCaretPosition caretPosition)
- Specified by:
computeRevealScrollPosition
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
computeCenterOnScrollPosition
@Nonnull public java.util.Optional<org.exbin.bined.basic.CodeAreaScrollPosition> computeCenterOnScrollPosition(org.exbin.bined.CodeAreaCaretPosition caretPosition)
- Specified by:
computeCenterOnScrollPosition
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
paintRowText
public void paintRowText(java.awt.Graphics g, long rowDataPosition, int rowPositionX, int rowPositionY)
Paints row text.- Parameters:
g
- graphicsrowDataPosition
- row data positionrowPositionX
- row position XrowPositionY
- row position Y
-
getPositionTextColor
@Nullable public java.awt.Color getPositionTextColor(long rowDataPosition, int byteOnRow, int halfCharOnRow, org.exbin.bined.CodeAreaSection section, boolean unprintable)
Returns background color for particular code.- Parameters:
rowDataPosition
- row data positionbyteOnRow
- byte on current rowhalfCharOnRow
- character on current rowsection
- current sectionunprintable
- flag for unprintable characters- Returns:
- color or null for default color
-
paintCursor
public void paintCursor(java.awt.Graphics g)
- Specified by:
paintCursor
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
mousePositionToClosestCaretPosition
@Nonnull public org.exbin.bined.CodeAreaCaretPosition mousePositionToClosestCaretPosition(int positionX, int positionY, org.exbin.bined.CaretOverlapMode overflowMode)
- Specified by:
mousePositionToClosestCaretPosition
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
computeMovePosition
@Nonnull public org.exbin.bined.CodeAreaCaretPosition computeMovePosition(org.exbin.bined.CodeAreaCaretPosition position, org.exbin.bined.basic.MovementDirection direction)
- Specified by:
computeMovePosition
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
computeScrolling
@Nonnull public org.exbin.bined.basic.CodeAreaScrollPosition computeScrolling(org.exbin.bined.basic.CodeAreaScrollPosition startPosition, org.exbin.bined.basic.ScrollingDirection direction)
- Specified by:
computeScrolling
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
getPositionPoint
@Nullable public java.awt.Point getPositionPoint(long dataPosition, int codeOffset, org.exbin.bined.CodeAreaSection section)
Returns relative cursor position in code area or null if cursor is not visible.- Parameters:
dataPosition
- data positioncodeOffset
- code offsetsection
- section- Returns:
- cursor position or null
-
getMouseCursorShape
public int getMouseCursorShape(int positionX, int positionY)
- Specified by:
getMouseCursorShape
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
getPositionZone
@Nonnull public org.exbin.bined.basic.BasicCodeAreaZone getPositionZone(int positionX, int positionY)
- Specified by:
getPositionZone
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
getColorsProfile
@Nonnull public org.exbin.bined.swing.basic.color.CodeAreaColorsProfile getColorsProfile()
- Specified by:
getColorsProfile
in interfaceColorsProfileCapableCodeAreaPainter
-
setColorsProfile
public void setColorsProfile(org.exbin.bined.swing.basic.color.CodeAreaColorsProfile colorsProfile)
- Specified by:
setColorsProfile
in interfaceColorsProfileCapableCodeAreaPainter
-
getLayoutProfile
@Nonnull public org.exbin.bined.extended.layout.ExtendedCodeAreaLayoutProfile getLayoutProfile()
- Specified by:
getLayoutProfile
in interfaceLayoutProfileCapableCodeAreaPainter
-
setLayoutProfile
public void setLayoutProfile(org.exbin.bined.extended.layout.ExtendedCodeAreaLayoutProfile layoutProfile)
- Specified by:
setLayoutProfile
in interfaceLayoutProfileCapableCodeAreaPainter
-
getThemeProfile
@Nonnull public ExtendedCodeAreaThemeProfile getThemeProfile()
- Specified by:
getThemeProfile
in interfaceThemeProfileCapableCodeAreaPainter
-
setThemeProfile
public void setThemeProfile(ExtendedCodeAreaThemeProfile themeProfile)
- Specified by:
setThemeProfile
in interfaceThemeProfileCapableCodeAreaPainter
-
getCaretsProfile
@Nonnull public ExtendedCodeAreaCaretsProfile getCaretsProfile()
- Specified by:
getCaretsProfile
in interfaceCaretsProfileCapableCodeAreaPainter
-
setCaretsProfile
public void setCaretsProfile(ExtendedCodeAreaCaretsProfile caretsProfile)
- Specified by:
setCaretsProfile
in interfaceCaretsProfileCapableCodeAreaPainter
-
drawCenteredChars
protected void drawCenteredChars(java.awt.Graphics g, char[] drawnChars, int charOffset, int length, int cellWidth, int positionX, int positionY)
Draws characters centering it to cells of the same width.- Parameters:
g
- graphicsdrawnChars
- array of charscharOffset
- index of target character in arraylength
- number of characters to drawcellWidth
- width of cell to center intopositionX
- X position of drawing area startpositionY
- Y position of drawing area start
-
drawShiftedChars
protected void drawShiftedChars(java.awt.Graphics g, char[] drawnChars, int charOffset, int length, int positionX, int positionY)
-
getCursorPositionRect
@Nonnull public java.awt.Rectangle getCursorPositionRect(long dataPosition, int codeOffset, org.exbin.bined.CodeAreaSection section)
Returns cursor rectangle.- Parameters:
dataPosition
- data positioncodeOffset
- code offsetsection
- section- Returns:
- cursor rectangle or empty rectangle
-
updateRectToCursorPosition
protected void updateRectToCursorPosition(java.awt.Rectangle rect, long dataPosition, int codeOffset, org.exbin.bined.CodeAreaSection section)
-
updateScrollBars
public void updateScrollBars()
- Specified by:
updateScrollBars
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
scrollPositionModified
public void scrollPositionModified()
- Specified by:
scrollPositionModified
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
scrollPositionChanged
public void scrollPositionChanged()
- Specified by:
scrollPositionChanged
in interfaceorg.exbin.bined.swing.CodeAreaPainter
-
getCharactersPerRow
protected int getCharactersPerRow()
-
getBytesPerRow
public int getBytesPerRow()
-
getRowHeight
public int getRowHeight()
-
-