javax.swing.text

Class GlyphView

public class GlyphView extends View implements TabableView, Cloneable

Renders a run of styled text. This {@link View} subclass paints the characters of the Element it is responsible for using the style information from that Element.
Nested Class Summary
abstract static classGlyphView.GlyphPainter
An abstract base implementation for a glyph painter for GlyphView.
Constructor Summary
GlyphView(Element element)
Creates a new GlyphView for the given Element.
Method Summary
ViewbreakView(int axis, int p0, float pos, float len)
Tries to break the view near the specified view span len.
voidchangedUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receives notification that some text attributes have changed within the text fragment that this view is responsible for.
protected voidcheckPainter()
Checks if a GlyphPainer is installed.
protected Objectclone()
Creates and returns a shallow clone of this GlyphView.
ViewcreateFragment(int p0, int p1)
Creates a fragment view of this view that starts at p0 and ends at p1.
floatgetAlignment(int axis)
Returns the alignment of this view along the specified axis.
ColorgetBackground()
Returns the background color which should be used to paint the text.
intgetBreakWeight(int axis, float pos, float len)
Determines how well the specified view location is suitable for inserting a line break.
intgetEndOffset()
Returns the end offset in the document model of the portion of text that this view is responsible for.
FontgetFont()
Returns the font for the text run for which this GlyphView is responsible.
ColorgetForeground()
Returns the foreground color which should be used to paint the text.
GlyphView.GlyphPaintergetGlyphPainter()
Returns the GlyphPainter that is used by this GlyphView.
intgetNextVisualPositionFrom(int pos, Position.Bias bias, Shape a, int direction, Position.Bias[] biasRet)
Returns the model location that should be used to place a caret when moving the caret through the document.
floatgetPartialSpan(int p0, int p1)
Returns the span of a portion of the view.
floatgetPreferredSpan(int axis)
Returns the preferred span of the content managed by this View along the specified axis.
intgetStartOffset()
Returns the start offset in the document model of the portion of text that this view is responsible for.
floatgetTabbedSpan(float x, TabExpander te)
Returns the preferred span of this view for tab expansion.
TabExpandergetTabExpander()
Return the {@link TabExpander} to use.
SegmentgetText(int p0, int p1)
Returns the text segment that this view is responsible for.
voidinsertUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receives notification that some text has been inserted within the text fragment that this view is responsible for.
booleanisStrikeThrough()
Determines whether the text should be rendered strike-through or not.
booleanisSubscript()
Determines whether the text should be rendered as subscript or not.
booleanisSuperscript()
Determines whether the text should be rendered as superscript or not.
booleanisUnderline()
Determines whether the text should be rendered as underlined or not.
ShapemodelToView(int pos, Shape a, Position.Bias b)
Maps a position in the document into the coordinate space of the View.
voidpaint(Graphics g, Shape a)
Renders the Element that is associated with this View.
voidremoveUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receives notification that some text has been removed within the text fragment that this view is responsible for.
voidsetGlyphPainter(GlyphView.GlyphPainter painter)
Sets the {@link GlyphPainter} to be used for this GlyphView.
intviewToModel(float x, float y, Shape a, Position.Bias[] b)
Maps coordinates from the View's space into a position in the document model.

Constructor Detail

GlyphView

public GlyphView(Element element)
Creates a new GlyphView for the given Element.

Parameters: element the element that is rendered by this GlyphView

Method Detail

breakView

public View breakView(int axis, int p0, float pos, float len)
Tries to break the view near the specified view span len. The glyph view can only be broken in the X direction. For Y direction it returns itself.

Parameters: axis the axis for breaking, may be {@link View#X_AXIS} or {@link View#Y_AXIS} p0 the model location where the fragment should start pos the view position along the axis where the fragment starts len the desired length of the fragment view

Returns: the fragment view, or this if breaking was not possible

changedUpdate

public void changedUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receives notification that some text attributes have changed within the text fragment that this view is responsible for. This calls {@link View#preferenceChanged(View, boolean, boolean)} on the parent for both width and height.

Parameters: e the document event describing the change; not used here a the view allocation on screen; not used here vf the view factory; not used here

checkPainter

protected void checkPainter()
Checks if a GlyphPainer is installed. If this is not the case, a default painter is installed.

clone

protected final Object clone()
Creates and returns a shallow clone of this GlyphView. This is used by the {@link #createFragment} and {@link #breakView} methods.

Returns: a shallow clone of this GlyphView

createFragment

public View createFragment(int p0, int p1)
Creates a fragment view of this view that starts at p0 and ends at p1.

Parameters: p0 the start location for the fragment view p1 the end location for the fragment view

Returns: the fragment view

getAlignment

public float getAlignment(int axis)
Returns the alignment of this view along the specified axis. For the Y axis this is (height - descent) / height for the used font, so that it is aligned along the baseline. For the X axis the superclass is called.

getBackground

public Color getBackground()
Returns the background color which should be used to paint the text. This is fetched from the associated element's text attributes using {@link StyleConstants#getBackground}.

Returns: the background color which should be used to paint the text

getBreakWeight

public int getBreakWeight(int axis, float pos, float len)
Determines how well the specified view location is suitable for inserting a line break. If axis is View.Y_AXIS, then this method forwards to the superclass, if axis is View.X_AXIS then this method returns {@link View#ExcellentBreakWeight} if there is a suitable break location (usually whitespace) within the specified view span, or {@link View#GoodBreakWeight} if not.

Parameters: axis the axis along which the break weight is requested pos the starting view location len the length of the span at which the view should be broken

Returns: the break weight

getEndOffset

public int getEndOffset()
Returns the end offset in the document model of the portion of text that this view is responsible for.

Returns: the end offset in the document model of the portion of text that this view is responsible for

getFont

public Font getFont()
Returns the font for the text run for which this GlyphView is responsible.

Returns: the font for the text run for which this GlyphView is responsible

getForeground

public Color getForeground()
Returns the foreground color which should be used to paint the text. This is fetched from the associated element's text attributes using {@link StyleConstants#getForeground}.

Returns: the foreground color which should be used to paint the text

getGlyphPainter

public GlyphView.GlyphPainter getGlyphPainter()
Returns the GlyphPainter that is used by this GlyphView. If no GlyphPainer has been installed null is returned.

Returns: the glyph painter that is used by this glyph view or null if no glyph painter has been installed

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos, Position.Bias bias, Shape a, int direction, Position.Bias[] biasRet)
Returns the model location that should be used to place a caret when moving the caret through the document.

Parameters: pos the current model location bias the bias for p a the allocated region for the glyph view direction the direction from the current position; Must be one of {@link SwingConstants#EAST}, {@link SwingConstants#WEST}, {@link SwingConstants#NORTH} or {@link SwingConstants#SOUTH} biasRet filled with the bias of the resulting location when method returns

Returns: the location within the document that should be used to place the caret when moving the caret around the document

Throws: BadLocationException if pos is an invalid model location IllegalArgumentException if d is invalid

getPartialSpan

public float getPartialSpan(int p0, int p1)
Returns the span of a portion of the view. This is used in TAB expansion for fragments that don't contain TABs.

Parameters: p0 the start index p1 the end index

Returns: the span of the specified portion of the view

getPreferredSpan

public float getPreferredSpan(int axis)
Returns the preferred span of the content managed by this View along the specified axis.

Parameters: axis the axis

Returns: the preferred span of this View.

getStartOffset

public int getStartOffset()
Returns the start offset in the document model of the portion of text that this view is responsible for.

Returns: the start offset in the document model of the portion of text that this view is responsible for

getTabbedSpan

public float getTabbedSpan(float x, TabExpander te)
Returns the preferred span of this view for tab expansion.

Parameters: x the location of the view te the tab expander to use

Returns: the preferred span of this view for tab expansion

getTabExpander

public TabExpander getTabExpander()
Return the {@link TabExpander} to use.

Returns: the {@link TabExpander} to use

getText

public Segment getText(int p0, int p1)
Returns the text segment that this view is responsible for.

Parameters: p0 the start index in the document model p1 the end index in the document model

Returns: the text segment that this view is responsible for

insertUpdate

public void insertUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receives notification that some text has been inserted within the text fragment that this view is responsible for. This calls {@link View#preferenceChanged(View, boolean, boolean)} for the direction in which the glyphs are rendered.

Parameters: e the document event describing the change; not used here a the view allocation on screen; not used here vf the view factory; not used here

isStrikeThrough

public boolean isStrikeThrough()
Determines whether the text should be rendered strike-through or not. This is determined using the method {@link StyleConstants#isStrikeThrough(AttributeSet)} on the element of this view.

Returns: whether the text should be rendered strike-through or not

isSubscript

public boolean isSubscript()
Determines whether the text should be rendered as subscript or not. This is determined using the method {@link StyleConstants#isSubscript(AttributeSet)} on the element of this view.

Returns: whether the text should be rendered as subscript or not

isSuperscript

public boolean isSuperscript()
Determines whether the text should be rendered as superscript or not. This is determined using the method {@link StyleConstants#isSuperscript(AttributeSet)} on the element of this view.

Returns: whether the text should be rendered as superscript or not

isUnderline

public boolean isUnderline()
Determines whether the text should be rendered as underlined or not. This is determined using the method {@link StyleConstants#isUnderline(AttributeSet)} on the element of this view.

Returns: whether the text should be rendered as underlined or not

modelToView

public Shape modelToView(int pos, Shape a, Position.Bias b)
Maps a position in the document into the coordinate space of the View. The output rectangle usually reflects the font height but has a width of zero.

Parameters: pos the position of the character in the model a the area that is occupied by the view b either {@link Position.Bias#Forward} or {@link Position.Bias#Backward} depending on the preferred direction bias. If null this defaults to Position.Bias.Forward

Returns: a rectangle that gives the location of the document position inside the view coordinate space

Throws: BadLocationException if pos is invalid IllegalArgumentException if b is not one of the above listed valid values

paint

public void paint(Graphics g, Shape a)
Renders the Element that is associated with this View.

Parameters: g the Graphics context to render to a the allocated region for the Element

removeUpdate

public void removeUpdate(DocumentEvent e, Shape a, ViewFactory vf)
Receives notification that some text has been removed within the text fragment that this view is responsible for. This calls {@link View#preferenceChanged(View, boolean, boolean)} on the parent for width.

Parameters: e the document event describing the change; not used here a the view allocation on screen; not used here vf the view factory; not used here

setGlyphPainter

public void setGlyphPainter(GlyphView.GlyphPainter painter)
Sets the {@link GlyphPainter} to be used for this GlyphView.

Parameters: painter the glyph painter to be used for this glyph view

viewToModel

public int viewToModel(float x, float y, Shape a, Position.Bias[] b)
Maps coordinates from the View's space into a position in the document model.

Parameters: x the x coordinate in the view space y the y coordinate in the view space a the allocation of this View b the bias to use

Returns: the position in the document that corresponds to the screen coordinates x, y