javax.swing.text

Class CompositeView

Implemented Interfaces:
SwingConstants
Known Direct Subclasses:
BoxView

public abstract class CompositeView
extends View

An abstract base implementation of View that manages child Views.

Field Summary

Fields inherited from class javax.swing.text.View

BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS

Fields inherited from interface javax.swing.SwingConstants

BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST

Constructor Summary

CompositeView(Element element)
Creates a new CompositeView for the given Element.

Method Summary

protected abstract void
childAllocation(int index, Rectangle a)
Computes the allocation for a child View.
protected boolean
flipEastAndWestAtEnds(int pos, Position.Bias bias)
Determines if the next view in horinzontal direction is located to the east or west of the view at position pos.
protected short
getBottomInset()
Returns the bottom inset of this CompositeView.
Shape
getChildAllocation(int index, Shape a)
Returns the allocation for the specified child View.
protected Rectangle
getInsideAllocation(Shape a)
Returns the allocation that is given to this CompositeView minus this CompositeView's insets.
protected short
getLeftInset()
Returns the left inset of this CompositeView.
protected int
getNextEastWestVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
Returns the next model location that is visible in east or west direction.
protected int
getNextNorthSouthVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
Returns the next model location that is visible in north or south direction.
int
getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
Returns the next model location that is visible in eiter north / south direction or east / west direction.
protected short
getRightInset()
Returns the right inset of this CompositeView.
protected short
getTopInset()
Returns the top inset of this CompositeView.
View
getView(int n)
Returns the child view at index n.
protected abstract View
getViewAtPoint(int x, int y, Rectangle r)
Returns the child View at the specified location.
protected View
getViewAtPosition(int pos, Rectangle a)
Returns the child View that contains the given model position.
int
getViewCount()
Returns the number of child views.
int
getViewIndex(int pos, Position.Bias b)
Returns the index of the child view that represents the specified model location.
protected int
getViewIndexAtPosition(int pos)
Returns the index of the child View for the given model position.
protected abstract boolean
isAfter(int x, int y, Rectangle r)
Returns true if the specified point lies after the given Rectangle, false otherwise.
protected abstract boolean
isBefore(int x, int y, Rectangle r)
Returns true if the specified point lies before the given Rectangle, false otherwise.
protected void
loadChildren(ViewFactory f)
Loads the child views of this CompositeView.
Shape
modelToView(int pos, Shape a, Position.Bias bias)
Maps a position in the document into the coordinate space of the View.
Shape
modelToView(int p1, Position.Bias b1, int p2, Position.Bias b2, Shape a)
Maps a region in the document into the coordinate space of the View.
void
replace(int offset, int length, View[] views)
Replaces child views by some other child views.
protected void
setInsets(short t, short l, short b, short r)
Sets the insets of this CompositeView.
protected void
setParagraphInsets(AttributeSet attributes)
Sets the insets defined by attributes in attributes.
void
setParent(View parent)
Sets the parent of this View.
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.

Methods inherited from class javax.swing.text.View

append, breakView, changedUpdate, createFragment, dump, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getChildAllocation, getContainer, getDocument, getElement, getEndOffset, getGraphics, getMaximumSpan, getMinimumSpan, getNextVisualPositionFrom, getParent, getPreferredSpan, getResizeWeight, getStartOffset, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, insertUpdate, isVisible, modelToView, modelToView, modelToView, paint, preferenceChanged, remove, removeAll, removeUpdate, replace, setParent, setSize, updateChildren, updateLayout, viewToModel, viewToModel

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

CompositeView

public CompositeView(Element element)
Creates a new CompositeView for the given Element.
Parameters:
element - the element that is rendered by this CompositeView

Method Details

childAllocation

protected abstract void childAllocation(int index,
                                        Rectangle a)
Computes the allocation for a child View. The parameter a stores the allocation of this CompositeView and is then adjusted to hold the allocation of the child view.
Parameters:
index - the index of the child View
a - the allocation of this CompositeView before the call, the allocation of the child on exit

flipEastAndWestAtEnds

protected boolean flipEastAndWestAtEnds(int pos,
                                        Position.Bias bias)
Determines if the next view in horinzontal direction is located to the east or west of the view at position pos. Usually the Views are laid out from the east to the west, so we unconditionally return false here. Subclasses that support bidirectional text may wish to override this method.
Parameters:
pos - the position in the document
bias - the bias to be applied to pos
Returns:
true if the next View is located to the EAST, false otherwise

getBottomInset

protected short getBottomInset()
Returns the bottom inset of this CompositeView.
Returns:
the bottom inset of this CompositeView

getChildAllocation

public Shape getChildAllocation(int index,
                                Shape a)
Returns the allocation for the specified child View.
Overrides:
getChildAllocation in interface View
Parameters:
index - the index of the child view
a - the allocation for this view
Returns:
the allocation for the specified child View

getInsideAllocation

protected Rectangle getInsideAllocation(Shape a)
Returns the allocation that is given to this CompositeView minus this CompositeView's insets. Also this translates from an immutable allocation to a mutable allocation that is typically reused and further narrowed, like in childAllocation(int,Rectangle).
Parameters:
a - the allocation given to this CompositeView
Returns:
the allocation that is given to this CompositeView minus this CompositeView's insets or null if a was null

getLeftInset

protected short getLeftInset()
Returns the left inset of this CompositeView.
Returns:
the left inset of this CompositeView

getNextEastWestVisualPositionFrom

protected int getNextEastWestVisualPositionFrom(int pos,
                                                Position.Bias b,
                                                Shape a,
                                                int direction,
                                                Position.Bias[] biasRet)
            throws BadLocationException
Returns the next model location that is visible in east or west direction. This is used to determine the placement of the caret when navigating around the document with the arrow keys.
Parameters:
pos - the model position to start search from
b - the bias for pos
a - the allocated region for this view
direction - the direction from the current position, can be one of the following:
biasRet - the bias of the return value gets stored here
Returns:
the position inside the model that represents the next visual location
Throws:
BadLocationException - if pos is not a valid location inside the document model
IllegalArgumentException - if direction is invalid

getNextNorthSouthVisualPositionFrom

protected int getNextNorthSouthVisualPositionFrom(int pos,
                                                  Position.Bias b,
                                                  Shape a,
                                                  int direction,
                                                  Position.Bias[] biasRet)
            throws BadLocationException
Returns the next model location that is visible in north or south direction. This is used to determine the placement of the caret when navigating around the document with the arrow keys.
Parameters:
pos - the model position to start search from
b - the bias for pos
a - the allocated region for this view
direction - the direction from the current position, can be one of the following:
biasRet - the bias of the return value gets stored here
Returns:
the position inside the model that represents the next visual location
Throws:
BadLocationException - if pos is not a valid location inside the document model
IllegalArgumentException - if direction is invalid

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos,
                                     Position.Bias b,
                                     Shape a,
                                     int direction,
                                     Position.Bias[] biasRet)
            throws BadLocationException
Returns the next model location that is visible in eiter north / south direction or east / west direction. This is used to determine the placement of the caret when navigating around the document with the arrow keys. This is a convenience method for getNextNorthSouthVisualPositionFrom(int,Position.Bias,Shape,int,Position.Bias[]) and getNextEastWestVisualPositionFrom(int,Position.Bias,Shape,int,Position.Bias[]).
Overrides:
getNextVisualPositionFrom in interface View
Parameters:
pos - the model position to start search from
b - the bias for pos
a - the allocated region for this view
direction - the direction from the current position, can be one of the following:
biasRet - the bias of the return value gets stored here
Returns:
the position inside the model that represents the next visual location
Throws:
BadLocationException - if pos is not a valid location inside the document model
IllegalArgumentException - if direction is invalid

getRightInset

protected short getRightInset()
Returns the right inset of this CompositeView.
Returns:
the right inset of this CompositeView

getTopInset

protected short getTopInset()
Returns the top inset of this CompositeView.
Returns:
the top inset of this CompositeView

getView

public View getView(int n)
Returns the child view at index n.
Overrides:
getView in interface View
Parameters:
n - the index of the requested child view
Returns:
the child view at index n

getViewAtPoint

protected abstract View getViewAtPoint(int x,
                                       int y,
                                       Rectangle r)
Returns the child View at the specified location.
Parameters:
x - the X coordinate
y - the Y coordinate
r - the inner allocation of this BoxView on entry, the allocation of the found child on exit
Returns:
the child View at the specified location

getViewAtPosition

protected View getViewAtPosition(int pos,
                                 Rectangle a)
Returns the child View that contains the given model position. The given Rectangle gives the parent's allocation and is changed to the child's allocation on exit.
Parameters:
pos - the model position to query the child View for
a - the parent allocation on entry and the child allocation on exit
Returns:
the child view at the given model position

getViewCount

public int getViewCount()
Returns the number of child views.
Overrides:
getViewCount in interface View
Returns:
the number of child views

getViewIndex

public int getViewIndex(int pos,
                        Position.Bias b)
Returns the index of the child view that represents the specified model location.
Overrides:
getViewIndex in interface View
Parameters:
pos - the model location for which to determine the child view index
b - the bias to be applied to pos
Returns:
the index of the child view that represents the specified model location

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos)
Returns the index of the child View for the given model position.
Parameters:
pos - the model position for whicht the child View is queried
Returns:
the index of the child View for the given model position

isAfter

protected abstract boolean isAfter(int x,
                                   int y,
                                   Rectangle r)
Returns true if the specified point lies after the given Rectangle, false otherwise. "After" is typically defined as being to the right or below.
Parameters:
x - the X coordinate of the point
y - the Y coordinate of the point
r - the rectangle to test the point against
Returns:
true if the specified point lies after the given Rectangle, false otherwise

isBefore

protected abstract boolean isBefore(int x,
                                    int y,
                                    Rectangle r)
Returns true if the specified point lies before the given Rectangle, false otherwise. "Before" is typically defined as being to the left or above.
Parameters:
x - the X coordinate of the point
y - the Y coordinate of the point
r - the rectangle to test the point against
Returns:
true if the specified point lies before the given Rectangle, false otherwise

loadChildren

protected void loadChildren(ViewFactory f)
Loads the child views of this CompositeView. This method is called from setParent(View) to initialize the child views of this composite view.
Parameters:
f - the view factory to use for creating new child views

modelToView

public Shape modelToView(int pos,
                         Shape a,
                         Position.Bias bias)
            throws BadLocationException
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.
Overrides:
modelToView in interface View
Parameters:
pos - the position of the character in the model
a - the area that is occupied by the view
bias - either Position.Bias.Forward or 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

modelToView

public Shape modelToView(int p1,
                         Position.Bias b1,
                         int p2,
                         Position.Bias b2,
                         Shape a)
            throws BadLocationException
Maps a region in the document into the coordinate space of the View.
Overrides:
modelToView in interface View
Parameters:
p1 - the beginning position inside the document
b1 - the direction bias for the beginning position
p2 - the end position inside the document
b2 - the direction bias for the end position
a - the area that is occupied by the view
Returns:
a rectangle that gives the span of the document region inside the view coordinate space
Throws:
BadLocationException - if p1 or p2 are invalid
IllegalArgumentException - if b1 or b2 is not one of the above listed valid values

replace

public void replace(int offset,
                    int length,
                    View[] views)
Replaces child views by some other child views. If there are no views to remove (length == 0), the result is a simple insert, if there are no children to add (view == null) the result is a simple removal.
Overrides:
replace in interface View
Parameters:
offset - the start offset from where to remove children
length - the number of children to remove
views - the views that replace the removed children

setInsets

protected void setInsets(short t,
                         short l,
                         short b,
                         short r)
Sets the insets of this CompositeView.
Parameters:
t - the top inset
l - the left inset
b - the bottom inset
r - the right inset

setParagraphInsets

protected void setParagraphInsets(AttributeSet attributes)
Sets the insets defined by attributes in attributes. This queries the attribute keys StyleConstants.SpaceAbove, StyleConstants.SpaceBelow, StyleConstants.LeftIndent and StyleConstants.RightIndent and calls setInsets(short,short,short,short) to actually set the insets on this CompositeView.
Parameters:
attributes - the attributes from which to query the insets

setParent

public void setParent(View parent)
Sets the parent of this View. In addition to setting the parent, this calls loadChildren(ViewFactory), if this View does not already have its children initialized.
Overrides:
setParent in interface View
Parameters:
parent - the parent to set

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.
Overrides:
viewToModel in interface View
Parameters:
x - the x coordinate in the view space, x >= 0
y - the y coordinate in the view space, y >= 0
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 >= 0

CompositeView.java -- An abstract view that manages child views Copyright (C) 2005, 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.