javax.swing.text

Class ComponentView

Implemented Interfaces:
SwingConstants
Known Direct Subclasses:
FormView, ObjectView

public class ComponentView
extends View

A View implementation that is able to render arbitrary Components. This uses the attribute StyleConstants.ComponentAttribute to determine the Component that should be rendered. This Component becomes a direct child of the JTextComponent that contains this ComponentView, so this view must not be shared between multiple JTextComponents.

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

ComponentView(Element elem)
Creates a new instance of ComponentView for the specified Element.

Method Summary

protected Component
createComponent()
Creates the Component that this View is rendering.
float
getAlignment(int axis)
Returns the alignment of this View along the specified axis.
Component
getComponent()
Returns the Component that is rendered by this ComponentView.
float
getMaximumSpan(int axis)
Returns the maximum span of this View along the specified axis.
float
getMinimumSpan(int axis)
Returns the minimum span along the specified axis.
float
getPreferredSpan(int axis)
Returns the preferred span along the specified axis.
Shape
modelToView(int pos, Shape a, Position.Bias b)
Maps a position in the document into the coordinate space of the View.
void
paint(Graphics g, Shape a)
The real painting behavour is performed by normal component painting, triggered by the text component that hosts this view.
void
setParent(View p)
This sets up the component when the view is added to its parent, or cleans up the view when it is removed from its parent.
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

ComponentView

public ComponentView(Element elem)
Creates a new instance of ComponentView for the specified Element.
Parameters:
elem - the element that this View is rendering

Method Details

createComponent

protected Component createComponent()
Creates the Component that this View is rendering. The Component is determined using the StyleConstants.ComponentAttribute of the associated Element.
Returns:
the component that is rendered

getAlignment

public float getAlignment(int axis)
Returns the alignment of this View along the specified axis.
Overrides:
getAlignment in interface View
Parameters:
axis - either View.X_AXIS or View.Y_AXIS
Returns:
the alignment of this View along the specified axis

getComponent

public final Component getComponent()
Returns the Component that is rendered by this ComponentView.
Returns:
the Component that is rendered by this ComponentView

getMaximumSpan

public float getMaximumSpan(int axis)
Returns the maximum span of this View along the specified axis. This will return Component.getMaximumSize() for the specified axis.
Overrides:
getMaximumSpan in interface View
Returns:
the maximum span of this View along the specified axis

getMinimumSpan

public float getMinimumSpan(int axis)
Returns the minimum span along the specified axis. The default implementation will forward to View.getPreferredSpan(int) unless View.getResizeWeight(int) returns a value > 0, in which case this returns 0.
Overrides:
getMinimumSpan in interface View
Parameters:
axis - the axis
Returns:
the minimum span along the specified axis

getPreferredSpan

public float getPreferredSpan(int axis)
Returns the preferred span along the specified axis. Normally the view is rendered with the span returned here if that is possible.
Overrides:
getPreferredSpan in interface View
Parameters:
axis - the axis
Returns:
the preferred span along the specified axis

modelToView

public Shape modelToView(int pos,
                         Shape a,
                         Position.Bias b)
            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
b - 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

paint

public void paint(Graphics g,
                  Shape a)
The real painting behavour is performed by normal component painting, triggered by the text component that hosts this view. This method does not paint by itself. However, it sets the size of the component according to the allocation that is passed here.
Overrides:
paint in interface View
Parameters:
g - the graphics context
a - the allocation of the child

setParent

public void setParent(View p)
This sets up the component when the view is added to its parent, or cleans up the view when it is removed from its parent. When this view is added to a parent view, the component of this view is added to the container that hosts this view. When p is null, then the view is removed from it's parent and we have to also remove the component from it's parent container.
Overrides:
setParent in interface View
Parameters:
p - the parent view or null if this view is removed from it's parent

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
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

ComponentView.java -- Copyright (C) 2002, 2004, 2005 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.