javax.swing.text
Class ZoneView

java.lang.Object
  extended by javax.swing.text.View
      extended by javax.swing.text.CompositeView
          extended by javax.swing.text.BoxView
              extended by javax.swing.text.ZoneView
All Implemented Interfaces:
SwingConstants

public class ZoneView
extends BoxView

A View implementation that delays loading of sub views until they are needed for display or internal transformations. This can be used for editors that need to handle large documents more effectivly than the standard BoxView.

Since:
1.3

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
ZoneView(Element element, int axis)
          Creates a new ZoneView for the specified element and axis.
 
Method Summary
protected  View createZone(int p0, int p1)
          Creates a zone for the specified range.
 int getMaximumZoneSize()
          Returns the maximum zone size.
 int getMaxZonesLoaded()
          Returns the number of zones that are allowed to be loaded.
protected  int getViewIndexAtPosition(int pos)
          Returns the index of the child view at the document position pos.
 void insertUpdate(DocumentEvent e, Shape a, ViewFactory vf)
          Receive notification about an insert update to the text model.
protected  boolean isZoneLoaded(View zone)
          Returns true when the specified zone is loaded, false otherwise.
protected  void loadChildren(ViewFactory vf)
          Overridden to not load all the child views.
 void removeUpdate(DocumentEvent e, Shape a, ViewFactory vf)
          Receive notification about a remove update to the text model.
 void setMaximumZoneSize(int size)
          Sets the maximum zone size.
 void setMaxZonesLoaded(int num)
          Sets the maximum number of zones that are allowed to be loaded at the same time.
protected  void unloadZone(View zone)
          This unloads the specified zone.
protected  boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory vf)
          Updates the list of children that is returned by View.getView(int) and View.getViewCount().
protected  void zoneWasLoaded(View zone)
          Gets called after a zone has been loaded.
 
Methods inherited from class javax.swing.text.BoxView
baselineLayout, baselineRequirements, calculateMajorAxisRequirements, calculateMinorAxisRequirements, childAllocation, flipEastAndWestAtEnds, forwardUpdate, getAlignment, getAxis, getChildAllocation, getHeight, getMaximumSpan, getMinimumSpan, getOffset, getPreferredSpan, getResizeWeight, getSpan, getViewAtPoint, getWidth, isAfter, isAllocationValid, isBefore, isLayoutValid, layout, layoutChanged, layoutMajorAxis, layoutMinorAxis, modelToView, paint, paintChild, preferenceChanged, replace, setAxis, setSize, viewToModel
 
Methods inherited from class javax.swing.text.CompositeView
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets, setParent
 
Methods inherited from class javax.swing.text.View
append, breakView, changedUpdate, createFragment, dump, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateLayout, viewToModel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ZoneView

public ZoneView(Element element,
                int axis)
Creates a new ZoneView for the specified element and axis.

Parameters:
element - the element for which to create a ZoneView
axis - the major layout axis for the box
Method Detail

setMaximumZoneSize

public void setMaximumZoneSize(int size)
Sets the maximum zone size. Note that zones might still become larger then the size specified when a singe child view is larger for itself, because zones are formed on child view boundaries.

Parameters:
size - the maximum zone size to set
See Also:
getMaximumZoneSize()

getMaximumZoneSize

public int getMaximumZoneSize()
Returns the maximum zone size. Note that zones might still become larger then the size specified when a singe child view is larger for itself, because zones are formed on child view boundaries.

Returns:
the maximum zone size
See Also:
setMaximumZoneSize(int)

setMaxZonesLoaded

public void setMaxZonesLoaded(int num)
Sets the maximum number of zones that are allowed to be loaded at the same time. If the new number of allowed zones is smaller then the previous settings, this unloads all zones the aren't allowed to be loaded anymore.

Parameters:
num - the number of zones allowed to be loaded at the same time
Throws:
IllegalArgumentException - if num <= 0
See Also:
getMaxZonesLoaded()

getMaxZonesLoaded

public int getMaxZonesLoaded()
Returns the number of zones that are allowed to be loaded.

Returns:
the number of zones that are allowed to be loaded
See Also:
setMaxZonesLoaded(int)

zoneWasLoaded

protected void zoneWasLoaded(View zone)
Gets called after a zone has been loaded. This unloads the oldest zone(s) when the maximum number of zones is reached.

Parameters:
zone - the zone that has been loaded

unloadZone

protected void unloadZone(View zone)
This unloads the specified zone. This is implemented to simply remove all child views from that zone.

Parameters:
zone - the zone to be unloaded

isZoneLoaded

protected boolean isZoneLoaded(View zone)
Returns true when the specified zone is loaded, false otherwise. The default implementation checks if the zone view has child elements.

Parameters:
zone - the zone view to check
Returns:
true when the specified zone is loaded, false otherwise

createZone

protected View createZone(int p0,
                          int p1)
Creates a zone for the specified range. Subclasses can override this to provide a custom implementation for the zones.

Parameters:
p0 - the start of the range
p1 - the end of the range
Returns:
the zone

loadChildren

protected void loadChildren(ViewFactory vf)
Overridden to not load all the child views. This methods creates initial zones without actually loading them.

Overrides:
loadChildren in class CompositeView
Parameters:
vf - not used
See Also:
CompositeView.setParent(javax.swing.text.View)

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos)
Returns the index of the child view at the document position pos. This overrides the CompositeView implementation because the ZoneView does not provide a one to one mapping from Elements to Views.

Overrides:
getViewIndexAtPosition in class CompositeView
Parameters:
pos - the document position
Returns:
the index of the child view at the document position pos

insertUpdate

public void insertUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory vf)
Description copied from class: View
Receive notification about an insert update to the text model. The default implementation of this method does the following:

Overrides:
insertUpdate in class View
Parameters:
e - the DocumentEvent that describes the change
a - the shape of the view
vf - the ViewFactory for creating child views

removeUpdate

public void removeUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory vf)
Description copied from class: View
Receive notification about a remove update to the text model. The default implementation of this method does the following:

Overrides:
removeUpdate in class View
Parameters:
e - the DocumentEvent that describes the change
a - the shape of the view
vf - the ViewFactory for creating child views

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec,
                                 DocumentEvent e,
                                 ViewFactory vf)
Description copied from class: View
Updates the list of children that is returned by View.getView(int) and View.getViewCount(). Element that are specified as beeing added in the ElementChange record are assigned a view for using the ViewFactory. Views of Elements that are specified as beeing removed are removed from the list.

Overrides:
updateChildren in class View
Parameters:
ec - the ElementChange record that describes the change of the element
e - the DocumentEvent describing the change of the document model
vf - the ViewFactory to use for creating new views
Returns:
whether or not the child views represent the child elements of the element that this view is responsible for. Some views may create views that are responsible only for parts of the element that they are responsible for and should then return false.