classes
Class TextLineNumber

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by classes.TextLineNumber
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.CaretListener, javax.swing.event.DocumentListener

public class TextLineNumber
extends javax.swing.JPanel
implements javax.swing.event.CaretListener, javax.swing.event.DocumentListener, java.beans.PropertyChangeListener

Kuvab redaktorile reanumbrid

See Also:
Serialized Form

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
 
Field Summary
private  int borderGap
           
static float CENTER
           
private  javax.swing.text.JTextComponent component
           
private  java.awt.Color currentLineForeground
           
private  float digitAlignment
           
private  java.util.HashMap<java.lang.String,java.awt.FontMetrics> fonts
           
private static int HEIGHT
           
private  int lastDigits
           
private  int lastHeight
           
private  int lastLine
           
static float LEFT
           
private  int minimumDisplayDigits
           
private static javax.swing.border.Border OUTER
           
static float RIGHT
           
private  boolean updateFont
           
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
TextLineNumber(javax.swing.text.JTextComponent component)
          Create a line number component for a text component.
TextLineNumber(javax.swing.text.JTextComponent component, int minimumDisplayDigits)
          Create a line number component for a text component.
 
Method Summary
 void caretUpdate(javax.swing.event.CaretEvent e)
           
 void changedUpdate(javax.swing.event.DocumentEvent e)
           
private  void documentChanged()
           
 int getBorderGap()
          Gets the border gap
 java.awt.Color getCurrentLineForeground()
          Gets the current line rendering Color
 float getDigitAlignment()
          Gets the digit alignment
 int getMinimumDisplayDigits()
          Gets the minimum display digits
private  int getOffsetX(int availableWidth, int stringWidth)
           
private  int getOffsetY(int rowStartOffset, java.awt.FontMetrics fontMetrics)
           
protected  java.lang.String getTextLineNumber(int rowStartOffset)
           
 boolean getUpdateFont()
          Gets the update font property
 void insertUpdate(javax.swing.event.DocumentEvent e)
           
private  boolean isCurrentLine(int rowStartOffset)
           
 void paintComponent(java.awt.Graphics g)
          Draw the line numbers
 void propertyChange(java.beans.PropertyChangeEvent evt)
           
 void removeUpdate(javax.swing.event.DocumentEvent e)
           
 void setBorderGap(int borderGap)
          The border gap is used in calculating the left and right insets of the border.
 void setCurrentLineForeground(java.awt.Color currentLineForeground)
          The Color used to render the current line digits.
 void setDigitAlignment(float digitAlignment)
          Specify the horizontal alignment of the digits within the component.
 void setMinimumDisplayDigits(int minimumDisplayDigits)
          Specify the mimimum number of digits used to calculate the preferred width of the component.
private  void setPreferredWidth()
          Calculate the width needed to display the maximum line number
 void setUpdateFont(boolean updateFont)
          Set the update font property.
 
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, getWidth, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, 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, transferFocusBackward, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LEFT

public static final float LEFT
See Also:
Constant Field Values

CENTER

public static final float CENTER
See Also:
Constant Field Values

RIGHT

public static final float RIGHT
See Also:
Constant Field Values

OUTER

private static final javax.swing.border.Border OUTER

HEIGHT

private static final int HEIGHT
See Also:
Constant Field Values

component

private javax.swing.text.JTextComponent component

updateFont

private boolean updateFont

borderGap

private int borderGap

currentLineForeground

private java.awt.Color currentLineForeground

digitAlignment

private float digitAlignment

minimumDisplayDigits

private int minimumDisplayDigits

lastDigits

private int lastDigits

lastHeight

private int lastHeight

lastLine

private int lastLine

fonts

private java.util.HashMap<java.lang.String,java.awt.FontMetrics> fonts
Constructor Detail

TextLineNumber

public TextLineNumber(javax.swing.text.JTextComponent component)
Create a line number component for a text component. This minimum display width will be based on 3 digits.

Parameters:
component - the related text component

TextLineNumber

public TextLineNumber(javax.swing.text.JTextComponent component,
                      int minimumDisplayDigits)
Create a line number component for a text component.

Parameters:
component - the related text component
minimumDisplayDigits - the number of digits used to calculate the minimum width of the component
Method Detail

getUpdateFont

public boolean getUpdateFont()
Gets the update font property

Returns:
the update font property

setUpdateFont

public void setUpdateFont(boolean updateFont)
Set the update font property. Indicates whether this Font should be updated automatically when the Font of the related text component is changed.

Parameters:
updateFont - when true update the Font and repaint the line numbers, otherwise just repaint the line numbers.

getBorderGap

public int getBorderGap()
Gets the border gap

Returns:
the border gap in pixels

setBorderGap

public void setBorderGap(int borderGap)
The border gap is used in calculating the left and right insets of the border. Default value is 5.

Parameters:
borderGap - the gap in pixels

getCurrentLineForeground

public java.awt.Color getCurrentLineForeground()
Gets the current line rendering Color

Returns:
the Color used to render the current line number

setCurrentLineForeground

public void setCurrentLineForeground(java.awt.Color currentLineForeground)
The Color used to render the current line digits. Default is Coolor.RED.

Parameters:
currentLineForeground - the Color used to render the current line

getDigitAlignment

public float getDigitAlignment()
Gets the digit alignment

Returns:
the alignment of the painted digits

setDigitAlignment

public void setDigitAlignment(float digitAlignment)
Specify the horizontal alignment of the digits within the component. Common values would be:

Parameters:
digitAlignment -

getMinimumDisplayDigits

public int getMinimumDisplayDigits()
Gets the minimum display digits

Returns:
the minimum display digits

setMinimumDisplayDigits

public void setMinimumDisplayDigits(int minimumDisplayDigits)
Specify the mimimum number of digits used to calculate the preferred width of the component. Default is 3.

Parameters:
minimumDisplayDigits - the number digits used in the preferred width calculation

setPreferredWidth

private void setPreferredWidth()
Calculate the width needed to display the maximum line number


paintComponent

public void paintComponent(java.awt.Graphics g)
Draw the line numbers

Overrides:
paintComponent in class javax.swing.JComponent

isCurrentLine

private boolean isCurrentLine(int rowStartOffset)

getTextLineNumber

protected java.lang.String getTextLineNumber(int rowStartOffset)

getOffsetX

private int getOffsetX(int availableWidth,
                       int stringWidth)

getOffsetY

private int getOffsetY(int rowStartOffset,
                       java.awt.FontMetrics fontMetrics)
                throws javax.swing.text.BadLocationException
Throws:
javax.swing.text.BadLocationException

caretUpdate

public void caretUpdate(javax.swing.event.CaretEvent e)
Specified by:
caretUpdate in interface javax.swing.event.CaretListener

changedUpdate

public void changedUpdate(javax.swing.event.DocumentEvent e)
Specified by:
changedUpdate in interface javax.swing.event.DocumentListener

insertUpdate

public void insertUpdate(javax.swing.event.DocumentEvent e)
Specified by:
insertUpdate in interface javax.swing.event.DocumentListener

removeUpdate

public void removeUpdate(javax.swing.event.DocumentEvent e)
Specified by:
removeUpdate in interface javax.swing.event.DocumentListener

documentChanged

private void documentChanged()

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent evt)
Specified by:
propertyChange in interface java.beans.PropertyChangeListener