public abstract class

TableView

extends BoxView
java.lang.Object
   ↳ javax.swing.text.View
     ↳ javax.swing.text.CompositeView
       ↳ javax.swing.text.BoxView
         ↳ javax.swing.text.TableView

Class Overview

Implements View interface for a table, that is composed of an element structure where the child elements of the element this view is responsible for represent rows and the child elements of the row elements are cells. The cell elements can have an arbitrary element structure under them, which will be built with the ViewFactory returned by the getViewFactory method.


    TABLE
      ROW
        CELL
        CELL
      ROW
        CELL
        CELL

 

This is implemented as a hierarchy of boxes, the table itself is a vertical box, the rows are horizontal boxes, and the cells are vertical boxes. The cells are allowed to span multiple columns and rows. By default, the table can be thought of as being formed over a grid (i.e. somewhat like one would find in gridbag layout), where table cells can request to span more than one grid cell. The default horizontal span of table cells will be based upon this grid, but can be changed by reimplementing the requested span of the cell (i.e. table cells can have independant spans if desired).

See Also

Summary

Nested Classes
class TableView.TableCell This class is deprecated. A table cell can now be any View implementation.  
class TableView.TableRow View of a row in a row-centric table. 
[Expand]
Inherited Constants
From class javax.swing.text.View
From interface javax.swing.SwingConstants
Public Constructors
TableView(Element elem)
Constructs a TableView for the given element.
Public Methods
void replace(int offset, int length, View[] views)
Change the child views.
Protected Methods
SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements r)
Calculate the requirements for the minor axis.
TableView.TableCell createTableCell(Element elem)
This method is deprecated. Table cells can now be any arbitrary View implementation and should be produced by the ViewFactory rather than the table.
TableView.TableRow createTableRow(Element elem)
Creates a new table row.
void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
Forwards the given DocumentEvent to the child views that need to be notified of the change to the model.
View getViewAtPosition(int pos, Rectangle a)
Fetches the child view that represents the given position in the model.
void layoutColumns(int targetSpan, int[] offsets, int[] spans, SizeRequirements[] reqs)
Lays out the columns to fit within the given target span.
void layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
Perform layout for the minor axis of the box (i.e.
[Expand]
Inherited Methods
From class javax.swing.text.BoxView
From class javax.swing.text.CompositeView
From class javax.swing.text.View
From class java.lang.Object

Public Constructors

public TableView (Element elem)

Constructs a TableView for the given element.

Parameters
elem the element that this view is responsible for

Public Methods

public void replace (int offset, int length, View[] views)

Change the child views. This is implemented to provide the superclass behavior and invalidate the grid so that rows and columns will be recalculated.

Parameters
offset the starting index into the child views to insert the new views; this should be a value >= 0 and <= getViewCount
length the number of existing child views to remove; This should be a value >= 0 and <= (getViewCount() - offset)
views the child views to add; this value can be nullto indicate no children are being added (useful to remove)

Protected Methods

protected SizeRequirements calculateMinorAxisRequirements (int axis, SizeRequirements r)

Calculate the requirements for the minor axis. This is called by the superclass whenever the requirements need to be updated (i.e. a preferenceChanged was messaged through this view).

This is implemented to calculate the requirements as the sum of the requirements of the columns.

Parameters
axis the axis being studied
r the SizeRequirements object; if null one will be created
Returns
  • the newly initialized SizeRequirements object

protected TableView.TableCell createTableCell (Element elem)

This method is deprecated.
Table cells can now be any arbitrary View implementation and should be produced by the ViewFactory rather than the table.

Parameters
elem an element
Returns
  • the cell

protected TableView.TableRow createTableRow (Element elem)

Creates a new table row.

Parameters
elem an element
Returns
  • the row

protected void forwardUpdate (DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)

Forwards the given DocumentEvent to the child views that need to be notified of the change to the model. If a child changed its requirements and the allocation was valid prior to forwarding the portion of the box from the starting child to the end of the box will be repainted.

Parameters
ec changes to the element this view is responsible for (may be null if there were no changes)
e the change information from the associated document
a the current allocation of the view
f the factory to use to rebuild if the view has children

protected View getViewAtPosition (int pos, Rectangle a)

Fetches the child view that represents the given position in the model. This is implemented to walk through the children looking for a range that contains the given position. In this view the children do not necessarily have a one to one mapping with the child elements.

Parameters
pos the search position >= 0
a the allocation to the table on entry, and the allocation of the view containing the position on exit
Returns
  • the view representing the given position, or null if there isn't one

protected void layoutColumns (int targetSpan, int[] offsets, int[] spans, SizeRequirements[] reqs)

Lays out the columns to fit within the given target span. Returns the results through offsets and spans.

Parameters
targetSpan the given span for total of all the table columns
offsets the return value of the offset from the origin for each column
spans the return value of how much to allocated to each column
reqs the requirements desired for each column. This is the column maximum of the cells minimum, preferred, and maximum requested span

protected void layoutMinorAxis (int targetSpan, int axis, int[] offsets, int[] spans)

Perform layout for the minor axis of the box (i.e. the axis orthoginal to the axis that it represents). The results of the layout should be placed in the given arrays which represent the allocations to the children along the minor axis. This is called by the superclass whenever the layout needs to be updated along the minor axis.

This is implemented to call the layoutColumns method, and then forward to the superclass to actually carry out the layout of the tables rows.

Parameters
targetSpan the total span given to the view, which whould be used to layout the children.
axis the axis being layed out.
offsets the offsets from the origin of the view for each of the child views. This is a return value and is filled in by the implementation of this method.
spans the span of each child view. This is a return value and is filled in by the implementation of this method.